diff options
Diffstat (limited to 'utils/msgids.c')
-rw-r--r-- | utils/msgids.c | 61 |
1 files changed, 39 insertions, 22 deletions
diff --git a/utils/msgids.c b/utils/msgids.c index d17f1316..81b49c59 100644 --- a/utils/msgids.c +++ b/utils/msgids.c @@ -171,6 +171,39 @@ static bool nostdinc = FALSE; #define STD_MSGIDS_DIR DATADIR "/msgids/" #define OPT_NOSTDINC -1 +error_t +msgids_scan_std (void) +{ + error_t err = 0; + + /* Insert the files from STD_MSGIDS_DIR at the beginning of the + list, so that their content can be overridden by subsequently + parsed files. */ + if (nostdinc == FALSE) + scan_msgids_dir (&msgids_files_argz, &msgids_files_argz_len, + STD_MSGIDS_DIR, FALSE); + + if (msgids_files_argz != NULL) + { + char *msgids_file = NULL; + + while (! err + && (msgids_file = argz_next (msgids_files_argz, + msgids_files_argz_len, + msgids_file))) + { + err = parse_msgid_list (msgids_file); + if (err) + error (0, err, "%s", msgids_file); + } + + free (msgids_files_argz); + msgids_files_argz = NULL; + } + + return err; +} + static const struct argp_option options[] = { {"nostdinc", OPT_NOSTDINC, 0, 0, @@ -218,29 +251,13 @@ static error_t parse_opt (int key, char *arg, struct argp_state *state) return EINVAL; case ARGP_KEY_END: - /* Insert the files from STD_MSGIDS_DIR at the beginning of the - list, so that their content can be overridden by subsequently - parsed files. */ - if (nostdinc == FALSE) - scan_msgids_dir (&msgids_files_argz, &msgids_files_argz_len, - STD_MSGIDS_DIR, FALSE); - - if (msgids_files_argz != NULL) - { - error_t err = 0; - char *msgids_file = NULL; + { + error_t err = msgids_scan_std (); - while (! err - && (msgids_file = argz_next (msgids_files_argz, - msgids_files_argz_len, - msgids_file))) - err = parse_msgid_list (msgids_file); - - free (msgids_files_argz); - if (err) - argp_failure (state, 1, err, "%s", msgids_file); - } - break; + if (err) + argp_failure (state, 1, err, "parsing msgid files"); + break; + } default: return ARGP_ERR_UNKNOWN; |