void xa_open_7zip (XArchive *archive) { gchar *exe; jump_header = last_line = FALSE; unsigned short int i = 0; if (sevenzr) exe = "7zr "; if (sevenza) exe = "7za "; gchar *command = g_strconcat ( exe,"l " , archive->escaped_path, NULL ); archive->has_sfx = archive->has_properties = archive->can_add = archive->can_extract = archive->has_test = TRUE; archive->dummy_size = 0; archive->nr_of_files = 0; archive->format ="7ZIP"; archive->nc = 6; archive->parse_output = xa_get_7zip_line_content; xa_spawn_async_process (archive,command); g_free ( command ); if ( archive->child_pid == 0 ) return; GType types[]= {GDK_TYPE_PIXBUF,G_TYPE_STRING,G_TYPE_UINT64,G_TYPE_UINT64,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_POINTER}; archive->column_types = g_malloc0(sizeof(types)); for (i = 0; i < 8; i++) archive->column_types[i] = types[i]; char *names[]= {(_("Original")),(_("Compressed")),(_("Attr")),(_("Time")),(_("Date")),NULL}; xa_create_liststore (archive,names); }
void xa_open_arj (XArchive *archive) { unsigned short int i; jump_header = encrypted = last_line = FALSE; arj_line = 0; gchar *command = g_strconcat (unarj ? "unarj " : "arj v ", archive->escaped_path, NULL); archive->has_properties = archive->can_extract = archive->has_test = TRUE; archive->has_sfx = archive->can_add = !unarj; archive->dummy_size = 0; archive->nr_of_files = 0; archive->nc = 8; archive->format ="ARJ"; archive->parse_output = xa_get_arj_line_content; xa_spawn_async_process (archive,command); g_free (command); if (archive->child_pid == 0) return; GType types[]= {GDK_TYPE_PIXBUF,G_TYPE_STRING,G_TYPE_UINT64,G_TYPE_UINT64,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_POINTER}; archive->column_types = g_malloc0(sizeof(types)); for (i = 0; i < 10; i++) archive->column_types[i] = types[i]; char *names[]= {(_("Original")),(_("Compressed")),(_("Ratio")),(_("Date")),(_("Time")),(_("Attributes")),("GUA"),NULL}; xa_create_liststore (archive,names); }
void xa_open_tar (XArchive *archive) { gchar *command; unsigned short int i; command = g_strconcat (tar, " tfv " , archive->escaped_path, NULL); archive->has_properties = archive->can_add = archive->can_extract = TRUE; archive->has_test = archive->has_sfx = FALSE; archive->dummy_size = 0; archive->nr_of_files = 0; archive->nc = 7; archive->parse_output = xa_get_tar_line_content; archive->format ="TAR"; xa_spawn_async_process (archive,command); g_free (command); if (archive->child_pid == 0) return; GType types[]= {GDK_TYPE_PIXBUF,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_UINT64,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_POINTER}; archive->column_types = g_malloc0(sizeof(types)); for (i = 0; i < 9; i++) archive->column_types[i] = types[i]; char *names[]= {(_("Points to")),(_("Permissions")),(_("Owner/Group")),(_("Size")),(_("Date")),(_("Time")),NULL}; xa_create_liststore (archive,names); }
void xa_tar_list (XArchive *archive) { const GType types[] = {GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_UINT64, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_POINTER}; const gchar *titles[] = {_("Points to"), _("Original Size"), _("Date"), _("Time"), _("Permissions"), _("Owner/Group")}; gchar *command; guint i; if (!archive->path[2]) archive->path[2] = g_shell_quote(archive->path[0]); archive->files = 0; archive->files_size = 0; command = g_strconcat(archiver[XARCHIVETYPE_TAR].program[0], " -tvf ", archive->path[2], NULL); archive->parse_output = xa_tar_parse_output; xa_spawn_async_process(archive, command); g_free(command); archive->columns = 9; archive->size_column = 3; archive->column_types = g_malloc0(sizeof(types)); for (i = 0; i < archive->columns; i++) archive->column_types[i] = types[i]; xa_create_liststore(archive, titles); }
void xa_open_rpm (XArchive *archive) { unsigned short int i; int response; GSList *list = NULL; FILE *stream; gboolean result; signal (SIGPIPE, SIG_IGN); stream = fopen ( archive->path , "r" ); if (stream == NULL) { gchar *msg = g_strdup_printf (_("Can't open RPM file %s:") , archive->path); response = xa_show_message_dialog (GTK_WINDOW (xa_main_window) , GTK_DIALOG_MODAL,GTK_MESSAGE_ERROR,GTK_BUTTONS_OK, msg,g_strerror(errno)); g_free (msg); return; } archive->can_extract = archive->has_properties = TRUE; archive->can_add = archive->has_sfx = archive->has_test = FALSE; archive->dummy_size = 0; archive->nr_of_files = 0; archive->nc = 8; archive->format ="RPM"; char *names[]= {(_("Points to")),(_("Size")),(_("Permission")),(_("Date")),(_("Hard Link")),(_("Owner")),(_("Group")),NULL}; GType types[]= {GDK_TYPE_PIXBUF,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_UINT64,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_POINTER}; archive->column_types = g_malloc0(sizeof(types)); for (i = 0; i < 10; i++) archive->column_types[i] = types[i]; xa_create_liststore (archive,names); /* Create a unique temp dir in /tmp */ result = xa_create_temp_directory (archive); if (!result) return; /* Now I run dd to have the bzip2 / gzip compressed cpio archive in /tmp */ gchar *command = g_strconcat ( "sh -c \"rpm2cpio ",archive->escaped_path," > ",archive->tmp, "/file.cpio\"",NULL); list = NULL; list = g_slist_append(list,command); result = xa_run_command (archive,list); if (result == FALSE) { gtk_widget_set_sensitive(Stop_button,FALSE); xa_set_button_state (1,1,1,1,archive->can_add,archive->can_extract,0,archive->has_test,archive->has_properties,archive->has_passwd,0); gtk_label_set_text(GTK_LABEL(total_label),""); return; } /* And finally cpio to receive the content */ command = g_strconcat ("sh -c \"cpio -tv < ",archive->tmp,"/file.cpio\"",NULL); archive->parse_output = xa_get_cpio_line_content; xa_spawn_async_process (archive,command); g_free(command); }
void xa_open_rpm (XArchive *archive) { int result, i; gchar *command; char *names[]= {(_("Points to")),(_("Size")),(_("Permission")),(_("Date")),(_("Hard Link")),(_("Owner")),(_("Group")),NULL}; GType types[]= {GDK_TYPE_PIXBUF,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_UINT64,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_POINTER}; result = xa_rpm2cpio(archive); if (result < 0) return; archive->can_extract = archive->has_properties = TRUE; archive->can_add = archive->has_sfx = archive->has_test = FALSE; archive->dummy_size = 0; archive->nr_of_files = 0; archive->nc = 8; archive->format ="RPM"; archive->column_types = g_malloc0(sizeof(types)); for (i = 0; i < 10; i++) archive->column_types[i] = types[i]; xa_create_liststore(archive, names); if (result == 0) { gtk_widget_set_sensitive(Stop_button,FALSE); xa_set_button_state (1,1,1,1,archive->can_add,archive->can_extract,0,archive->has_test,archive->has_properties,archive->has_passwd,0); gtk_label_set_text(GTK_LABEL(total_label),""); return; } /* list the content */ command = g_strconcat ("sh -c \"cpio -tv < ",archive->tmp,"/xa-tmp.cpio\"",NULL); archive->parse_output = xa_get_cpio_line_content; xa_spawn_async_process (archive,command); g_free(command); }
void xa_open_rar (XArchive *archive) { unsigned short int i; gchar *command = NULL; gchar *rar = NULL; jump_header = read_filename = last_line = encrypted = FALSE; if (unrar) { rar = "unrar"; archive->can_add = archive->has_sfx = FALSE; } else { rar = "rar"; archive->can_add = archive->has_sfx = TRUE; } command = g_strconcat ( rar," v " , archive->escaped_path, NULL ); archive->can_extract = archive->has_test = archive->has_properties = TRUE; archive->dummy_size = 0; archive->nr_of_files = 0; archive->nc = 10; archive->parse_output = xa_get_rar_line_content; archive->format = "RAR"; xa_spawn_async_process (archive,command); g_free ( command ); if ( archive->child_pid == 0 ) return; GType types[]= {GDK_TYPE_PIXBUF,G_TYPE_STRING,G_TYPE_UINT64,G_TYPE_UINT64,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_POINTER}; archive->column_types = g_malloc0(sizeof(types)); for (i = 0; i < 12; i++) archive->column_types[i] = types[i]; char *names[]= {(_("Original")),(_("Compressed")),(_("Ratio")),(_("Date")),(_("Time")),(_("Permissions")),(_("CRC")),(_("Method")),(_("Version")),NULL}; xa_create_liststore (archive,names); }
void xa_unar_list (XArchive *archive) { const GType types[] = {GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_UINT64, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_POINTER}; const gchar *titles[] = {_("Points to"), _("Original Size"), _("Saving"), _("Date"), _("Time"), _("Method")}; gchar *password_str, *command; guint i; if (archive->type == XARCHIVETYPE_7ZIP) { if (!archive->has_password) archive->has_password = is7zip_mhe(archive->path[0]); if (archive->has_password) if (!xa_check_password(archive)) return; } data_line = FALSE; last_line = FALSE; archive->files = 0; archive->files_size = 0; password_str = xa_unar_password_str(archive); command = g_strconcat(archiver[archive->type].program[0], " -l", password_str, " ", archive->path[1], NULL); archive->parse_output = xa_unar_parse_output; xa_spawn_async_process(archive, command); g_free(command); g_free(password_str); archive->columns = 9; archive->size_column = 3; archive->column_types = g_malloc0(sizeof(types)); for (i = 0; i < archive->columns; i++) archive->column_types[i] = types[i]; xa_create_liststore(archive, titles); }