X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/92c3b05ef3e582d64b3cecfc261fdd66ef13a4ef..fe9ab00a6a507867c3ab42101c17630c1217c29f:/sbr/arglist.c?ds=sidebyside diff --git a/sbr/arglist.c b/sbr/arglist.c index 59d311b2..f771155a 100644 --- a/sbr/arglist.c +++ b/sbr/arglist.c @@ -5,8 +5,12 @@ * complete copyright information. */ -#include -#include +#include "h/mh.h" +#include "r1bindex.h" +#include "brkstring.h" +#include "error.h" +#include "arglist.h" +#include "h/utils.h" /* * Split up a command into an appropriate array to pass to execvp() @@ -39,25 +43,27 @@ char ** argsplit(char *command, char **file, int *argp) { char **argvarray, *p; - int space = 0, metachar = 0, i; + int i; + bool space = false; + bool metachar = false; for (p = command; *p; p++) { - if (*p == ' ' || *p == '\t') { - space = 1; + if (*p == ' ' || *p == '\t') { + space = true; } else if (strchr(METACHARS, *p)) { - metachar = 1; + metachar = true; break; } } - argvarray = (char **)mh_xmalloc(sizeof *argvarray * (MAXARGS + 5)); + argvarray = mh_xmalloc(sizeof *argvarray * (MAXARGS + 5)); /* * The simple case - no spaces or shell metacharacters */ if (!space && !metachar) { - argvarray[0] = getcpy(r1bindex(command, '/')); + argvarray[0] = mh_xstrdup(r1bindex(command, '/')); argvarray[1] = NULL; *file = mh_xstrdup(command); if (argp) @@ -71,16 +77,16 @@ argsplit(char *command, char **file, int *argp) */ if (space && !metachar) { - char **split; + char **split; p = mh_xstrdup(command); split = brkstring(p, " \t", NULL); if (split[0] == NULL) { - adios(NULL, "Invalid blank command found"); + die("Invalid blank command found"); } argvarray[0] = mh_xstrdup(r1bindex(split[0], '/')); for (i = 1; split[i] != NULL; i++) { if (i > MAXARGS) { - adios(NULL, "Command exceeded argument limit"); + die("Command exceeded argument limit"); } argvarray[i] = mh_xstrdup(split[i]); } @@ -117,7 +123,7 @@ argsplit(char *command, char **file, int *argp) argvarray[4] = NULL; if (argp) - *argp = 4; + *argp = 4; return argvarray; } @@ -134,7 +140,7 @@ arglist_free(char *command, char **argvarray) free(command); if (argvarray != NULL) { - for (i = 0; argvarray[i] != NULL; i++) + for (i = 0; argvarray[i] != NULL; i++) free(argvarray[i]); free(argvarray); } @@ -166,7 +172,7 @@ argsplit_msgarg(struct msgs_array *msgs, char *command, char **program) */ for (i = 0; i < argp; i++) { - app_msgarg(msgs, vec[i]); + app_msgarg(msgs, vec[i]); } free(vec); @@ -204,7 +210,7 @@ argsplit_insert(struct msgs_array *msgs, char *command, char **program) } for (i = msgs->size - 1; i >= 0; i--) - msgs->msgs[i + argp] = msgs->msgs[i]; + msgs->msgs[i + argp] = msgs->msgs[i]; msgs->size += argp; @@ -213,7 +219,7 @@ argsplit_insert(struct msgs_array *msgs, char *command, char **program) */ for (i = 0; i < argp; i++) - msgs->msgs[i] = vec[i]; + msgs->msgs[i] = vec[i]; free(vec); }