1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- /*
- * argv.c
- *
- * Copyright (c) 2001 Dug Song <dugsong@monkey.org>
- *
- * $Id$
- */
- #include "config.h"
- #include <ctype.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include "argv.h"
- int
- argv_create(char *p, int argc, char *argv[])
- {
- int i;
-
- for (i = 0; i < argc - 1; i++) {
- while (*p != '\0' && isspace((int)*p))
- *p++ = '\0';
-
- if (*p == '\0')
- break;
- argv[i] = p;
-
- while (*p != '\0' && !isspace((int)*p))
- p++;
- }
- p[0] = '\0';
- argv[i] = NULL;
-
- return (i);
- }
- /* XXX - from tcpdump util.c. */
- char *
- argv_copy(char *argv[])
- {
- char **p, *buf, *src, *dst;
- int len = 0;
-
- p = argv;
- if (*p == 0)
- return (NULL);
-
- while (*p)
- len += strlen(*p++) + 1;
-
- if ((buf = (char *)malloc(len)) == NULL)
- return (NULL);
-
- p = argv;
- dst = buf;
-
- while ((src = *p++) != NULL) {
- while ((*dst++ = *src++) != '\0')
- ;
- dst[-1] = ' ';
- }
- dst[-1] = '\0';
-
- return (buf);
- }
|