X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=bacula%2Fsrc%2Flib%2Futil.c;h=0ef5a59c29f8f552ebf47d0005448416694a388d;hb=28b98a207e5834c4066b6565c4210220957452e4;hp=4433febb4f2e559190200a67100d50aeff7c6774;hpb=eab20270e130f6628f6fe44f5c86c687e54461bd;p=bacula%2Fbacula diff --git a/bacula/src/lib/util.c b/bacula/src/lib/util.c index 4433febb4f..0ef5a59c29 100644 --- a/bacula/src/lib/util.c +++ b/bacula/src/lib/util.c @@ -95,96 +95,6 @@ unbash_spaces(char *str) } } -/* Strip any trailing junk from the command */ -void strip_trailing_junk(char *cmd) -{ - char *p; - p = cmd + strlen(cmd) - 1; - - /* strip trailing junk from command */ - while ((p >= cmd) && (*p == '\n' || *p == '\r' || *p == ' ')) - *p-- = 0; -} - -/* Strip any trailing slashes from a directory path */ -void strip_trailing_slashes(char *dir) -{ - char *p; - p = dir + strlen(dir) - 1; - - /* strip trailing slashes */ - while ((p >= dir) && (*p == '/')) - *p-- = 0; -} - -/* - * Skip spaces - * Returns: 0 on failure (EOF) - * 1 on success - * new address in passed parameter - */ -int skip_spaces(char **msg) -{ - char *p = *msg; - if (!p) { - return 0; - } - while (*p && *p == ' ') { - p++; - } - *msg = p; - return *p ? 1 : 0; -} - -/* - * Skip nonspaces - * Returns: 0 on failure (EOF) - * 1 on success - * new address in passed parameter - */ -int skip_nonspaces(char **msg) -{ - char *p = *msg; - - if (!p) { - return 0; - } - while (*p && *p != ' ') { - p++; - } - *msg = p; - return *p ? 1 : 0; -} - -/* folded search for string - case insensitive */ -int -fstrsch(char *a, char *b) /* folded case search */ -{ - register char *s1,*s2; - register char c1, c2; - - s1=a; - s2=b; - while (*s1) { /* do it the fast way */ - if ((*s1++ | 0x20) != (*s2++ | 0x20)) - return 0; /* failed */ - } - while (*a) { /* do it over the correct slow way */ - if (B_ISUPPER(c1 = *a)) { - c1 = tolower((int)c1); - } - if (B_ISUPPER(c2 = *b)) { - c2 = tolower((int)c2); - } - if (c1 != c2) { - return 0; - } - a++; - b++; - } - return 1; -} - char *encode_time(time_t time, char *buf) { @@ -440,12 +350,6 @@ int do_shell_expansion(char *name, int name_len) if ((shellcmd = getenv("SHELL")) == NULL) { shellcmd = "/bin/sh"; } -#ifdef xxx - close(1); dup(pfd[1]); /* attach pipes to stdout and stderr */ - close(2); dup(pfd[1]); - for (i = 3; i < 32; i++) /* close everything else */ - close(i); -#endif close(pfd[0]); /* close stdin */ dup2(pfd[1], 1); /* attach to stdout */ dup2(pfd[1], 2); /* and stderr */ @@ -513,7 +417,7 @@ int do_shell_expansion(char *name, int name_len) from SpeakFreely by John Walker */ -void makeSessionKey(char *key, char *seed, int mode) +void make_session_key(char *key, char *seed, int mode) { int j, k; struct MD5Context md5c; @@ -623,7 +527,7 @@ POOLMEM *edit_job_codes(JCR *jcr, char *omsg, char *imsg, char *to) str = job_status_to_str(jcr->JobStatus); break; case 'i': - sprintf(add, "%d", jcr->JobId); + bsnprintf(add, sizeof(add), "%d", jcr->JobId); str = add; break; case 'j': /* Job name */ @@ -657,123 +561,6 @@ POOLMEM *edit_job_codes(JCR *jcr, char *omsg, char *imsg, char *to) return omsg; } -/* - * Return next argument from command line. Note, this - * routine is destructive. - */ -char *next_arg(char **s) -{ - char *p, *q, *n; - int in_quote = 0; - - /* skip past spaces to next arg */ - for (p=*s; *p && *p == ' '; ) { - p++; - } - Dmsg1(400, "Next arg=%s\n", p); - for (n = q = p; *p ; ) { - if (*p == '\\') { - p++; - if (*p) { - *q++ = *p++; - } else { - *q++ = *p; - } - continue; - } - if (*p == '"') { /* start or end of quote */ - if (in_quote) { - p++; /* skip quote */ - in_quote = 0; - continue; - } - in_quote = 1; - p++; - continue; - } - if (!in_quote && *p == ' ') { /* end of field */ - p++; - break; - } - *q++ = *p++; - } - *q = 0; - *s = p; - Dmsg2(400, "End arg=%s next=%s\n", n, p); - return n; -} - -/* - * This routine parses the input command line. - * It makes a copy in args, then builds an - * argc, argv like list where - * - * argc = count of arguments - * argk[i] = argument keyword (part preceding =) - * argv[i] = argument value (part after =) - * - * example: arg1 arg2=abc arg3= - * - * argc = c - * argk[0] = arg1 - * argv[0] = NULL - * argk[1] = arg2 - * argv[1] = abc - * argk[2] = arg3 - * argv[2] = - */ - -void parse_command_args(POOLMEM *cmd, POOLMEM *args, int *argc, - char **argk, char **argv) -{ - char *p, *q, *n; - int len; - - len = strlen(cmd) + 1; - args = check_pool_memory_size(args, len); - bstrncpy(args, cmd, len); - strip_trailing_junk(args); - *argc = 0; - p = args; - /* Pick up all arguments */ - while (*argc < MAX_CMD_ARGS) { - n = next_arg(&p); - if (*n) { - argk[*argc] = n; - argv[(*argc)++] = NULL; - } else { - break; - } - } - /* Separate keyword and value */ - for (int i=0; i < *argc; i++) { - p = strchr(argk[i], '='); - if (p) { - *p++ = 0; /* terminate keyword and point to value */ - /* Unquote quoted values */ - if (*p == '"') { - for (n = q = ++p; *p && *p != '"'; ) { - if (*p == '\\') { - p++; - } - *q++ = *p++; - } - *q = 0; /* terminate string */ - p = n; /* point to string */ - } - if (strlen(p) > MAX_NAME_LENGTH-1) { - p[MAX_NAME_LENGTH-1] = 0; /* truncate to max len */ - } - } - argv[i] = p; /* save ptr to value or NULL */ - } -#ifdef xxxx - for (i=0; i