static void fr_command_tar_add (FrCommand *comm, const char *from_file, GList *file_list, const char *base_dir, gboolean update, gboolean follow_links) { FrCommandTar *c_tar = FR_COMMAND_TAR (comm); GList *scan; fr_process_set_out_line_func (FR_COMMAND (comm)->process, process_line__add, comm); begin_tar_command (comm); fr_process_add_arg (comm->process, "--force-local"); fr_process_add_arg (comm->process, "--no-recursion"); fr_process_add_arg (comm->process, "--no-wildcards"); fr_process_add_arg (comm->process, "-v"); fr_process_add_arg (comm->process, "-p"); if (follow_links) fr_process_add_arg (comm->process, "-h"); if (base_dir != NULL) { fr_process_add_arg (comm->process, "-C"); fr_process_add_arg (comm->process, base_dir); } if (can_create_a_compressed_archive (comm)) { fr_process_add_arg (comm->process, "-cf"); fr_process_add_arg (comm->process, comm->filename); add_compress_arg (comm); } else { if (comm->creating_archive) fr_process_add_arg (comm->process, "-cf"); else fr_process_add_arg (comm->process, "-rf"); fr_process_add_arg (comm->process, c_tar->uncomp_filename); } if (from_file != NULL) { fr_process_add_arg (comm->process, "-T"); fr_process_add_arg (comm->process, from_file); } fr_process_add_arg (comm->process, "--"); if (from_file == NULL) for (scan = file_list; scan; scan = scan->next) fr_process_add_arg (comm->process, scan->data); fr_process_end_command (comm->process); }
static void fr_command_tar_list (FRCommand *comm) { fr_process_clear (comm->process); fr_process_begin_command (comm->process, "tar"); fr_process_add_arg (comm->process, "-tvf"); fr_process_add_arg (comm->process, comm->filename); add_compress_arg (comm); fr_process_end_command (comm->process); fr_process_start (comm->process, TRUE); }
static void fr_command_tar_list (FrCommand *comm) { fr_process_set_out_line_func (comm->process, process_line, comm); begin_tar_command (comm); fr_process_add_arg (comm->process, "--force-local"); fr_process_add_arg (comm->process, "--no-wildcards"); fr_process_add_arg (comm->process, "-tvf"); fr_process_add_arg (comm->process, comm->filename); add_compress_arg (comm); fr_process_end_command (comm->process); fr_process_start (comm->process); }
static void fr_command_tar_extract (FrCommand *comm, const char *from_file, GList *file_list, const char *dest_dir, gboolean overwrite, gboolean skip_older, gboolean junk_paths) { GList *scan; fr_process_set_out_line_func (comm->process, process_line__extract, comm); begin_tar_command (comm); fr_process_add_arg (comm->process, "--force-local"); fr_process_add_arg (comm->process, "--no-wildcards"); fr_process_add_arg (comm->process, "-v"); fr_process_add_arg (comm->process, "-p"); if (! overwrite) fr_process_add_arg (comm->process, "-k"); if (skip_older) fr_process_add_arg (comm->process, "--keep-newer-files"); fr_process_add_arg (comm->process, "-xf"); fr_process_add_arg (comm->process, comm->filename); add_compress_arg (comm); if (dest_dir != NULL) { fr_process_add_arg (comm->process, "-C"); fr_process_add_arg (comm->process, dest_dir); } if (from_file != NULL) { fr_process_add_arg (comm->process, "-T"); fr_process_add_arg (comm->process, from_file); } fr_process_add_arg (comm->process, "--"); if (from_file == NULL) for (scan = file_list; scan; scan = scan->next) fr_process_add_arg (comm->process, scan->data); fr_process_end_command (comm->process); }
static void fr_command_tar_extract (FRCommand *comm, GList *file_list, char *dest_dir, gboolean overwrite, gboolean skip_older, gboolean junk_paths) { GList *scan; fr_process_begin_command (comm->process, "tar"); fr_process_add_arg (comm->process, "-xf"); fr_process_add_arg (comm->process, comm->filename); add_compress_arg (comm); if (dest_dir != NULL) { fr_process_add_arg (comm->process, "-C"); fr_process_add_arg (comm->process, dest_dir); } /* if (! overwrite) fr_process_add_arg (comm->process, "-k"); */ for (scan = file_list; scan; scan = scan->next) { gchar *escaped = escape_path(scan->data); if (escaped) { fr_process_add_arg (comm->process, escaped); g_free(escaped); } } fr_process_end_command (comm->process); }