From 02bec9a7652b981ee00c5656e9235ee0cc897f99 Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Mon, 23 Nov 2020 02:00:58 +0100 Subject: libps: support getting RPC names for WAIT output * libps/Makefile (SRCS): Add ../utils/msgids.c. (../utils/msgids-CPPFLAGS): Add DATADIR macro. * libps/spec.c: Include "../utils/msgids.h". (get_rpc_name): Implement with msgid_info. * utils/msgids.c (parse_opt): Move end code to ... (msgids_scan_std): ... new function. * utils/msgids.h (msgids_scan_std): New prototype. * utils/ps.c (main): Call msgids_scan_std. --- utils/msgids.c | 61 +++++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 39 insertions(+), 22 deletions(-) (limited to 'utils/msgids.c') 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; -- cgit v1.2.3