X-Git-Url: https://git.deb.at/?a=blobdiff_plain;f=filter.c;h=25e8b4d7b60c76c10a7dae93cc7ea9efe4089fc8;hb=ca5c3086c7ff9c99645a66fd0c21167ef60ba0e9;hp=b6cb98f9ba532d4ea8ac0a583a1f52157de93c1e;hpb=6e550af8a907a680dc845c22a7d6c36d89e900c1;p=pkg%2Fabook.git diff --git a/filter.c b/filter.c index b6cb98f..25e8b4d 100644 --- a/filter.c +++ b/filter.c @@ -251,7 +251,7 @@ import_database() } if(i_read_file(filename, i_filters[filter].func )) - statusline_msg(_("Error occured while opening the file")); + statusline_msg(_("Error occurred while opening the file")); else if(tmp == db_n_items()) statusline_msg(_("File does not seem to be a valid addressbook")); @@ -397,7 +397,7 @@ export_database() } if( e_write_file(filename, e_filters[filter].func, enum_mode)) - statusline_msg(_("Error occured while exporting")); + statusline_msg(_("Error occurred while exporting")); refresh_screen(); free(filename); @@ -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,8 +2654,7 @@ 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); - while(*ft) free(ft--); + 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,29 +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 * sizeof(char*)); - enum field_types *ft = - (enum field_types *)malloc(FORMAT_STRING_MAX_FIELDS * sizeof(enum field_types *)); - - parse_custom_format(custom_format, format_string, ft); + (enum field_types *)malloc(FORMAT_STRING_MAX_FIELDS * sizeof(enum field_types)); + 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 */ -