flatpak_cp_a: Add support for skipping some source files

Closes: #136
Approved by: alexlarsson
auto
Alexander Larsson 2018-04-25 17:28:06 +02:00 committed by Atomic Bot
parent 4510aa2359
commit aa2601dbb3
3 changed files with 20 additions and 3 deletions

View File

@ -693,6 +693,7 @@ gboolean
flatpak_cp_a (GFile *src, flatpak_cp_a (GFile *src,
GFile *dest, GFile *dest,
FlatpakCpFlags flags, FlatpakCpFlags flags,
GPtrArray *skip_files,
GCancellable *cancellable, GCancellable *cancellable,
GError **error) GError **error)
{ {
@ -763,14 +764,29 @@ flatpak_cp_a (GFile *src,
{ {
const char *name = g_file_info_get_name (child_info); const char *name = g_file_info_get_name (child_info);
g_autoptr(GFile) src_child = g_file_get_child (src, name); g_autoptr(GFile) src_child = g_file_get_child (src, name);
gboolean skip = FALSE;
int i;
for (i = 0; skip_files != NULL && i < skip_files->len; i++)
{
if (g_file_equal (src_child, g_ptr_array_index (skip_files, i)))
{
skip = TRUE;
break;
}
}
if (dest_child) if (dest_child)
g_object_unref (dest_child); g_object_unref (dest_child);
dest_child = g_file_get_child (dest, name); dest_child = g_file_get_child (dest, name);
if (g_file_info_get_file_type (child_info) == G_FILE_TYPE_DIRECTORY) if (skip)
{ {
if (!flatpak_cp_a (src_child, dest_child, flags, /* skip src */
}
else if (g_file_info_get_file_type (child_info) == G_FILE_TYPE_DIRECTORY)
{
if (!flatpak_cp_a (src_child, dest_child, flags, skip_files,
cancellable, error)) cancellable, error))
goto out; goto out;
} }

View File

@ -245,6 +245,7 @@ typedef enum {
gboolean flatpak_cp_a (GFile *src, gboolean flatpak_cp_a (GFile *src,
GFile *dest, GFile *dest,
FlatpakCpFlags flags, FlatpakCpFlags flags,
GPtrArray *skip_files,
GCancellable *cancellable, GCancellable *cancellable,
GError **error); GError **error);

View File

@ -334,7 +334,7 @@ migrate_locale_dir (GFile *source_dir,
if (!flatpak_cp_a (child, locale_subdir, if (!flatpak_cp_a (child, locale_subdir,
FLATPAK_CP_FLAGS_MERGE | FLATPAK_CP_FLAGS_MOVE, FLATPAK_CP_FLAGS_MERGE | FLATPAK_CP_FLAGS_MOVE,
NULL, error)) NULL, NULL, error))
return FALSE; return FALSE;
target = g_build_filename ("../../share/runtime/locale", relative, NULL); target = g_build_filename ("../../share/runtime/locale", relative, NULL);