From a82b0028e431dbd8bb3512c3193b52985da82ec2 Mon Sep 17 00:00:00 2001 From: Andrew Gregory Date: Fri, 11 Oct 2019 20:11:51 -0700 Subject: add arg_to_string helper Converts an argc/argv pair to a string for presentation to the user. Signed-off-by: Andrew Gregory --- src/pacman/pacman.c | 26 +++++--------------------- src/pacman/util.c | 23 +++++++++++++++++++++++ src/pacman/util.h | 1 + 3 files changed, 29 insertions(+), 21 deletions(-) diff --git a/src/pacman/pacman.c b/src/pacman/pacman.c index b7406cea..c8e86b9d 100644 --- a/src/pacman/pacman.c +++ b/src/pacman/pacman.c @@ -1066,28 +1066,12 @@ static int parseargs(int argc, char *argv[]) */ static void cl_to_log(int argc, char *argv[]) { - size_t size = 0; - int i; - for(i = 0; i < argc; i++) { - size += strlen(argv[i]) + 1; + char *cl_text = arg_to_string(argc, argv); + if(cl_text) { + alpm_logaction(config->handle, PACMAN_CALLER_PREFIX, + "Running '%s'\n", cl_text); + free(cl_text); } - if(!size) { - return; - } - char *cl_text = malloc(size); - if(!cl_text) { - return; - } - char *p = cl_text; - for(i = 0; i + 1 < argc; i++) { - strcpy(p, argv[i]); - p += strlen(argv[i]); - *p++ = ' '; - } - strcpy(p, argv[i]); - alpm_logaction(config->handle, PACMAN_CALLER_PREFIX, - "Running '%s'\n", cl_text); - free(cl_text); } /** Main function. diff --git a/src/pacman/util.c b/src/pacman/util.c index 8f6290db..68cdb2e9 100644 --- a/src/pacman/util.c +++ b/src/pacman/util.c @@ -1771,3 +1771,26 @@ int pm_vfprintf(FILE *stream, alpm_loglevel_t level, const char *format, va_list ret = vfprintf(stream, format, args); return ret; } + +char *arg_to_string(int argc, char *argv[]) +{ + char *cl_text, *p; + size_t size = 0; + int i; + for(i = 0; i < argc; i++) { + size += strlen(argv[i]) + 1; + } + if(!size) { + return NULL; + } + if(!(cl_text = malloc(size))) { + return NULL; + } + for(p = cl_text, i = 0; i + 1 < argc; i++) { + strcpy(p, argv[i]); + p += strlen(argv[i]); + *p++ = ' '; + } + strcpy(p, argv[i]); + return cl_text; +} diff --git a/src/pacman/util.h b/src/pacman/util.h index a1fbef46..4b049849 100644 --- a/src/pacman/util.h +++ b/src/pacman/util.h @@ -76,6 +76,7 @@ int multiselect_question(char *array, int count); int colon_printf(const char *format, ...) __attribute__((format(printf, 1, 2))); int yesno(const char *format, ...) __attribute__((format(printf, 1, 2))); int noyes(const char *format, ...) __attribute__((format(printf, 1, 2))); +char *arg_to_string(int argc, char *argv[]); int pm_printf(alpm_loglevel_t level, const char *format, ...) __attribute__((format(printf,2,3))); int pm_asprintf(char **string, const char *format, ...) __attribute__((format(printf,2,3))); -- cgit v1.2.3-24-g4f1b