From f7e59f061fe120a6e8e684a9631e3d7a9e653f89 Mon Sep 17 00:00:00 2001 From: Denis Briand Date: Mon, 28 Dec 2015 00:33:30 +0100 Subject: [PATCH] Imported Upstream version 0.6.1 --- .gitignore | 18 ------------------ abook.c | 11 +++-------- filter.c | 33 +++++++++++++++++---------------- filter.h | 2 +- 4 files changed, 21 insertions(+), 43 deletions(-) delete mode 100644 .gitignore diff --git a/.gitignore b/.gitignore deleted file mode 100644 index feca589..0000000 --- a/.gitignore +++ /dev/null @@ -1,18 +0,0 @@ -.deps -autom4te.cache -Makefile -abook.spec -config.h -config.log -config.status -config.cache -intl/Makefile -po/Makefile -po/Makefile.in -po/POTFILES -po/*.gmo -po/stamp-po -stamp-h1 -*.o -*~ -abook diff --git a/abook.c b/abook.c index 7410f6b..502aae2 100644 --- a/abook.c +++ b/abook.c @@ -52,8 +52,6 @@ static char *rcfile = NULL; // custom formatting char custom_format[FORMAT_STRING_LEN] = "{nick} ({name}): {mobile}"; -char *parsed_custom_format = NULL; -enum field_types *custom_format_fields = 0; struct abook_output_item_filter selected_item_filter; bool alternative_datafile = FALSE; @@ -342,7 +340,7 @@ parse_command_line(int argc, char **argv) { 0, 0, 0, 0 } }; - c = getopt_long(argc, argv, "hC:", + c = getopt_long(argc, argv, "hC:f:", long_options, &option_index); if(c == -1) @@ -420,9 +418,6 @@ parse_command_line(int argc, char **argv) fprintf(stderr, _("Invalid custom format string\n")); exit(EXIT_FAILURE); } - parsed_custom_format = (char *)malloc(FORMAT_STRING_LEN); - custom_format_fields = (enum field_types *)malloc(FORMAT_STRING_MAX_FIELDS * sizeof(enum field_types)); - parse_custom_format(custom_format, parsed_custom_format, custom_format_fields); } if(optind < argc) { fprintf(stderr, _("%s: unrecognized arguments on command line\n"), @@ -446,10 +441,10 @@ parse_command_line(int argc, char **argv) static void show_usage() { - puts (PACKAGE " v " VERSION "\n"); + puts (PACKAGE " v" VERSION "\n"); puts (_(" -h --help show usage")); puts (_(" -C --config use an alternative configuration file")); - puts (_(" --datafile use an alternative addressbook file")); + puts (_(" -f --datafile use an alternative addressbook file")); puts (_(" --mutt-query make a query for mutt")); puts (_(" --add-email " "read an e-mail message from stdin and\n" diff --git a/filter.c b/filter.c index 2ea5a2d..2cb145c 100644 --- a/filter.c +++ b/filter.c @@ -2562,6 +2562,14 @@ bsdcal_export_database(FILE *out, struct db_enumerator e) return 0; } +/* + * end of BSD calendar export filter + */ + +/* + * custom export filter + */ + static int find_field_enum(char *s) { int i = -1; @@ -2646,7 +2654,6 @@ parse_custom_format(char *s, char *fmt_string, enum field_types *ft) cannotparse: fprintf(stderr, _("%s: invalid format, index %ld\n"), __FUNCTION__, (start - s)); - free(fmt_string); free(ft); exit(EXIT_FAILURE); } @@ -2655,10 +2662,12 @@ static int custom_export_item(FILE *out, int item, char *s, enum field_types *ft); -// used to store the format string from --outformatstr when "custom" format is used -// default value overriden in export_file() -extern char *parsed_custom_format; -extern enum field_types *custom_format_fields; +// stores the format string generated from --outformatstr {custom_format} +// (when "custom" output format is requested) +// overrides default value of custom_format set by from abook.c +extern char custom_format[FORMAT_STRING_LEN]; +char parsed_custom_format[FORMAT_STRING_LEN]; +enum field_types *custom_format_fields = 0; /* wrapper for custom_export_item: 1) avoid messing with extern pointer @@ -2716,28 +2725,20 @@ custom_export_item(FILE *out, int item, char *fmt, enum field_types *ft) return 0; } -// used to store the format string from --outformatstr when "custom" format is used -// default value overriden from abook.c -extern char custom_format[FORMAT_STRING_LEN]; - static int custom_export_database(FILE *out, struct db_enumerator e) { - char *format_string = (char *)malloc(FORMAT_STRING_LEN); - enum field_types *ft = (enum field_types *)malloc(FORMAT_STRING_MAX_FIELDS * sizeof(enum field_types)); - parse_custom_format(custom_format, format_string, ft); - + parse_custom_format(custom_format, (char*)&parsed_custom_format, ft); db_enumerate_items(e) { - if(custom_export_item(out, e.item, format_string, ft) == 0) + if(custom_export_item(out, e.item, (char*)&parsed_custom_format, ft) == 0) fprintf(out, "\n"); } return 0; } /* - * end of BSD calendar export filter + * end of custom export filter */ - diff --git a/filter.h b/filter.h index 548bf7a..8b5513d 100644 --- a/filter.h +++ b/filter.h @@ -4,7 +4,7 @@ #include "database.h" #define FILTNAME_LEN 8 -#define FORMAT_STRING_LEN 128 +#define FORMAT_STRING_LEN 512 #define FORMAT_STRING_MAX_FIELDS 16 -- 2.39.2