X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/942561da2455ee50a1eb82c8c4f2bdb5e25133d1..94187a80bd60baab4b9c4b949ad820d730578123:/sbr/arglist.c diff --git a/sbr/arglist.c b/sbr/arglist.c index 37dcec09..9425439a 100644 --- a/sbr/arglist.c +++ b/sbr/arglist.c @@ -1,6 +1,4 @@ - -/* - * arglist.c -- Routines for handling argument lists for execvp() and friends +/* arglist.c -- Routines for handling argument lists for execvp() and friends * * This code is Copyright (c) 2013, by the authors of nmh. See the * COPYRIGHT file in the root directory of the nmh distribution for @@ -52,7 +50,7 @@ argsplit(char *command, char **file, int *argp) } } - argvarray = (char **) mh_xmalloc((sizeof(char **) * (MAXARGS + 5))); + argvarray = mh_xmalloc(sizeof *argvarray * (MAXARGS + 5)); /* * The simple case - no spaces or shell metacharacters @@ -61,7 +59,7 @@ argsplit(char *command, char **file, int *argp) if (!space && !metachar) { argvarray[0] = getcpy(r1bindex(command, '/')); argvarray[1] = NULL; - *file = getcpy(command); + *file = mh_xstrdup(command); if (argp) *argp = 1; return argvarray; @@ -74,20 +72,20 @@ argsplit(char *command, char **file, int *argp) if (space && !metachar) { char **split; - p = getcpy(command); + p = mh_xstrdup(command); split = brkstring(p, " \t", NULL); if (split[0] == NULL) { adios(NULL, "Invalid blank command found"); } - argvarray[0] = getcpy(r1bindex(split[0], '/')); + argvarray[0] = mh_xstrdup(r1bindex(split[0], '/')); for (i = 1; split[i] != NULL; i++) { if (i > MAXARGS) { adios(NULL, "Command exceeded argument limit"); } - argvarray[i] = getcpy(split[i]); + argvarray[i] = mh_xstrdup(split[i]); } argvarray[i] = NULL; - *file = getcpy(split[0]); + *file = mh_xstrdup(split[0]); if (argp) *argp = i; free(p); @@ -110,12 +108,12 @@ argsplit(char *command, char **file, int *argp) * So we put in a dummy argument (we just use /bin/sh) */ - *file = getcpy("/bin/sh"); - argvarray[0] = getcpy("sh"); - argvarray[1] = getcpy("-c"); - argvarray[2] = getcpy(command); + *file = mh_xstrdup("/bin/sh"); + argvarray[0] = mh_xstrdup("sh"); + argvarray[1] = mh_xstrdup("-c"); + argvarray[2] = mh_xstrdup(command); argvarray[2] = add(" \"$@\"", argvarray[2]); - argvarray[3] = getcpy("/bin/sh"); + argvarray[3] = mh_xstrdup("/bin/sh"); argvarray[4] = NULL; if (argp) @@ -133,8 +131,7 @@ arglist_free(char *command, char **argvarray) { int i; - if (command != NULL) - free(command); + free(command); if (argvarray != NULL) { for (i = 0; argvarray[i] != NULL; i++) @@ -202,8 +199,8 @@ argsplit_insert(struct msgs_array *msgs, char *command, char **program) */ if (msgs->size + argp >= msgs->max) { - msgs->max += MAXMSGS > argp ? MAXMSGS : argp; - msgs->msgs = mh_xrealloc(msgs->msgs, msgs->max * sizeof(*msgs->msgs)); + msgs->max += max(MAXMSGS, argp); + msgs->msgs = mh_xrealloc(msgs->msgs, msgs->max * sizeof(*msgs->msgs)); } for (i = msgs->size - 1; i >= 0; i--)