From 64977cb1bcc55bf4c7c0fc38cd3d047b1e6a25c6 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Thu, 19 Apr 2007 18:53:33 +0000 Subject: Massive code cleanup (bug #429422) svn path=/trunk/; revision=33432 --- addressbook/tools/evolution-addressbook-export.c | 113 +++++++++++++---------- 1 file changed, 62 insertions(+), 51 deletions(-) (limited to 'addressbook/tools/evolution-addressbook-export.c') diff --git a/addressbook/tools/evolution-addressbook-export.c b/addressbook/tools/evolution-addressbook-export.c index ee157b74df..b99925d279 100644 --- a/addressbook/tools/evolution-addressbook-export.c +++ b/addressbook/tools/evolution-addressbook-export.c @@ -23,7 +23,9 @@ #include +#include #include +#include #include #include #include @@ -32,62 +34,71 @@ #include "evolution-addressbook-export.h" +/* Command-Line Options */ +static gchar *opt_output_file = NULL; +static gboolean opt_list_folders_mode = FALSE; +static gchar *opt_output_format = NULL; +static gchar *opt_addressbook_folder_uri = NULL; +static gboolean opt_async_mode = FALSE; +static gint opt_file_size = 0; +static gchar **opt_remaining = NULL; + +static GOptionEntry entries[] = { + { "output", '\0', G_OPTION_FLAG_FILENAME, + G_OPTION_ARG_STRING, &opt_output_file, + N_("Specify the output file instead of standard output"), + N_("OUTPUTFILE") }, + { "list-addressbook-folders", 'l', 0, + G_OPTION_ARG_NONE, &opt_list_folders_mode, + N_("List local addressbook folders") }, + { "format", '\0', 0, + G_OPTION_ARG_STRING, &opt_output_format, + N_("Show cards as vcard or csv file"), + N_("[vcard|csv]") }, + { "async", 'a', 0, + G_OPTION_ARG_NONE, &opt_async_mode, + N_("Export in asynchronous mode") }, + { "size", '\0', 0, + G_OPTION_ARG_INT, &opt_file_size, + N_("The number of cards in out output file in asynchronous mode, " + "default size 100."), + N_("NUMBER") }, + { G_OPTION_REMAINING, '\0', 0, + G_OPTION_ARG_STRING_ARRAY, &opt_remaining }, + { NULL } +}; + int main (int argc, char **argv) { ActionContext actctx; GnomeProgram *program; - poptContext context; - const gchar **argvn; + GOptionContext *context; int current_action = ACTION_NOTHING; int IsCSV = FALSE; int IsVCard = FALSE; - /*** popttable */ - char *output_file = NULL; - int list_folders_mode = FALSE; - char *output_format = NULL; - char *addressbook_folder_uri = NULL; - int async_mode = FALSE; - int file_size = 0; - - struct poptOption options[] = { - {"output", '\0', POPT_ARG_STRING, &output_file, 0, N_("Specify the output file instead of standard output"), - N_("OUTPUTFILE")}, - {"list-addressbook-folders", 'l', POPT_ARG_NONE, &list_folders_mode, 0, N_("List local addressbook folders"), - NULL}, - {"format", '\0', POPT_ARG_STRING, &output_format, 0, N_("Show cards as vcard or csv file"), N_("[vcard|csv]")}, - {"async", 'a', POPT_ARG_NONE, &async_mode, 0, N_("Export in asynchronous mode"), NULL}, - {"size", '\0', POPT_ARG_INT, &file_size, 0, - N_("The number of cards in one output file in asynchronous mode, default size 100."), N_("NUMBER")}, - {NULL, '\0', 0, NULL, 0, NULL, NULL} - }; - /* popttable end ** */ - /*i18n-lize */ bindtextdomain (GETTEXT_PACKAGE, EVOLUTION_LOCALEDIR); bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); textdomain (GETTEXT_PACKAGE); - program = - gnome_program_init (PACKAGE, VERSION, GNOME_BONOBO_MODULE, argc, argv, GNOME_PARAM_POPT_TABLE, options, - GNOME_PARAM_NONE); + context = g_option_context_new (NULL); + g_option_context_add_main_entries (context, entries, GETTEXT_PACKAGE); + program = gnome_program_init ( + PACKAGE, VERSION, GNOME_BONOBO_MODULE, argc, argv, + GNOME_PARAM_GOPTION_CONTEXT, context, + GNOME_PARAM_NONE); /* Parsing Parameter */ - g_object_get (program, "popt-context", &context, NULL); - argvn = poptGetArgs (context); - if (!argvn) { - addressbook_folder_uri = NULL; - } else { /* there at lease is a one argument, and that should be addressbook folder uri */ - addressbook_folder_uri = g_strdup (*argvn); - } - poptFreeContext (context); + if (g_strv_length (opt_remaining) > 0) + opt_addressbook_folder_uri = g_strdup (opt_remaining[0]); - if (list_folders_mode != FALSE) { + if (opt_list_folders_mode != FALSE) { current_action = ACTION_LIST_FOLDERS; /* check there should not be addressbook-folder-uri , and async and size , output_format */ - if (addressbook_folder_uri != NULL || async_mode != FALSE || output_format != NULL || file_size != 0) { + if (opt_addressbook_folder_uri != NULL || opt_async_mode != FALSE || opt_output_format != NULL || opt_file_size != 0) { g_warning (_("Command line arguments error, please use --help option to see the usage.")); exit (-1); } @@ -96,11 +107,11 @@ main (int argc, char **argv) current_action = ACTION_LIST_CARDS; /* check the output format */ - if (output_format == NULL) { + if (opt_output_format == NULL) { IsVCard = TRUE; } else { - IsCSV = !strcmp (output_format, "csv"); - IsVCard = !strcmp (output_format, "vcard"); + IsCSV = !strcmp (opt_output_format, "csv"); + IsVCard = !strcmp (opt_output_format, "vcard"); if (IsCSV == FALSE && IsVCard == FALSE) { g_warning (_("Only support csv or vcard format.")); exit (-1); @@ -108,17 +119,17 @@ main (int argc, char **argv) } /*check async and output file */ - if (async_mode == TRUE) { + if (opt_async_mode == TRUE) { /* check have to output file , set default file_size */ - if (output_file == NULL) { + if (opt_output_file == NULL) { g_warning (_("In async mode, output must be file.")); exit (-1); } - if (file_size == 0) - file_size = DEFAULT_SIZE_NUMBER; + if (opt_file_size == 0) + opt_file_size = DEFAULT_SIZE_NUMBER; } else { /*check no file_size */ - if (file_size != 0) { + if (opt_file_size != 0) { g_warning (_("In normal mode, there is no need for the size option.")); exit (-1); } @@ -128,24 +139,24 @@ main (int argc, char **argv) /* do actions */ if (current_action == ACTION_LIST_FOLDERS) { actctx.action_type = current_action; - if (output_file == NULL) { + if (opt_output_file == NULL) { actctx.action_list_folders.output_file = NULL; } else { - actctx.action_list_folders.output_file = g_strdup (output_file); + actctx.action_list_folders.output_file = g_strdup (opt_output_file); } action_list_folders_init (&actctx); } else if (current_action == ACTION_LIST_CARDS) { actctx.action_type = current_action; - if (output_file == NULL) { + if (opt_output_file == NULL) { actctx.action_list_cards.output_file = NULL; } else { - actctx.action_list_cards.output_file = g_strdup (output_file); + actctx.action_list_cards.output_file = g_strdup (opt_output_file); } actctx.action_list_cards.IsCSV = IsCSV; actctx.action_list_cards.IsVCard = IsVCard; - actctx.action_list_cards.addressbook_folder_uri = g_strdup (addressbook_folder_uri); - actctx.action_list_cards.async_mode = async_mode; - actctx.action_list_cards.file_size = file_size; + actctx.action_list_cards.addressbook_folder_uri = g_strdup (opt_addressbook_folder_uri); + actctx.action_list_cards.async_mode = opt_async_mode; + actctx.action_list_cards.file_size = opt_file_size; action_list_cards_init (&actctx); -- cgit v1.2.3