}
}
-/* 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)
{
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 */
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;
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 */
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<argc; i++) {
- Dmsg3(000, "Arg %d: kw=%s val=%s\n", i, argk[i], argv[i]?argv[i]:"NULL");
- }
-#endif
-}
-
void set_working_directory(char *wd)
{
struct stat stat_buf;