static void parse_progress_line (FrArchive *archive, const char *prefix, const char *message_format, const char *line) { int prefix_len; prefix_len = strlen (prefix); if (strncmp (line, prefix, prefix_len) == 0) { if (fr_archive_progress_get_total_files (archive) > 1) { fr_archive_progress (archive, fr_archive_progress_inc_completed_files (archive, 1)); } else { char filename[4196]; char *msg; strcpy (filename, line + prefix_len); msg = g_strdup_printf (message_format, filename, NULL); fr_archive_message (archive, msg); g_free (msg); } } }
static void begin_func__uncompress (gpointer data) { FrArchive *archive = data; fr_archive_progress (archive, -1.0); fr_archive_message (archive, _("Decompressing archive")); }
static void begin_func__delete (gpointer data) { FrArchive *archive = data; fr_archive_progress (archive, -1.0); fr_archive_message (archive, _("Deleting files from archive")); }
static void process_line__extract (char *line, gpointer data) { FrCommand *comm = FR_COMMAND (data); FrArchive *archive = FR_ARCHIVE (comm); FrCommandUnarchiver *unar_comm = FR_COMMAND_UNARCHIVER (comm); if (line == NULL) return; unar_comm->n_line++; /* the first line is the name of the archive */ if (unar_comm->n_line == 1) return; if (fr_archive_progress_get_total_files (archive) > 1) fr_archive_progress (archive, fr_archive_progress_inc_completed_files (archive, 1)); else fr_archive_message (archive, line); }
static void process_line__generic (char *line, gpointer data, char *message_format) { FrCommand *comm = FR_COMMAND (data); FrArchive *archive = FR_ARCHIVE (comm); if (line == NULL) return; if (line[strlen (line) - 1] == '/') /* ignore directories */ return; if (fr_archive_progress_get_total_files (archive) > 1) { fr_archive_progress (archive, fr_archive_progress_inc_completed_files (archive, 1)); } else { char *msg = g_strdup_printf (message_format, _g_path_get_basename (line), NULL); fr_archive_message (archive, msg); g_free (msg); } }