[Extractor-gtk-cvslog] SF.net SVN: extractor-gtk:[84] trunk/extractor/extractor.c
Extract files from unusual archive formats
Brought to you by:
someone-guy
From: <som...@us...> - 2008-08-22 16:02:56
|
Revision: 84 http://extractor-gtk.svn.sourceforge.net/extractor-gtk/?rev=84&view=rev Author: someone-guy Date: 2008-08-22 16:02:52 +0000 (Fri, 22 Aug 2008) Log Message: ----------- More advanced argument parsing. Modified Paths: -------------- trunk/extractor/extractor.c Modified: trunk/extractor/extractor.c =================================================================== --- trunk/extractor/extractor.c 2008-08-22 16:02:26 UTC (rev 83) +++ trunk/extractor/extractor.c 2008-08-22 16:02:52 UTC (rev 84) @@ -161,7 +161,6 @@ fmt = &generic_fmt; cur_fmt = fmt; flist = cur_fmt->get_list(input_file); - set_treeview(flist); return 1; } @@ -186,6 +185,7 @@ goto err_out; } g_free(fname); + set_treeview(flist); return; err_out: @@ -245,6 +245,10 @@ gtk_window_present(GTK_WINDOW(preview_win)); } +static void print_help(void) { + fprintf(stderr, _("Usage: extractor [--|-h|-l] [filename]\n")); +} + int main(int argc, char *argv[]) { int i; GtkWidget *window; @@ -257,7 +261,44 @@ GtkTreeViewColumn *column; GtkCellRenderer *renderer; int row = 0, col = 0; + int list_files = 0; + if (argc > 1) { + int pos = 1; + if (argv[pos][0] == '-') { + if (strlen(argv[pos]) == 2) { + switch (argv[pos][1]) { + case 'l': + list_files = 1; + break; + case '-': + break; + case 'h': + default: + print_help(); + return argc > pos + 1 || argv[pos][1] != 'h'; + } + pos++; + } else { + print_help(); + return 1; + } + } + if (argc <= pos) { + fprintf(stderr, _("Missing filename argument\n")); + return 1; + } + if (!open_file(argv[pos], NULL)) { + fprintf(stderr, _("Could not open file %s\n"), argv[pos]); + return 1; + } + if (list_files) { + file_t *f = flist; + while(f->name) { printf("%s\n", f->name); f++; }; + return 0; + } + } + gtk_disable_setlocale(); gtk_init(&argc, &argv); @@ -365,8 +406,7 @@ gtk_window_set_default_size(GTK_WINDOW(window), -1, 400); gtk_widget_show_all(window); - if (argc > 1) - open_file(argv[1], NULL); + set_treeview(flist); gtk_main(); return 0; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |