version 1.66, 2006/01/02 08:11:56 |
version 1.67, 2006/01/02 08:23:39 |
|
|
{ |
{ |
size_t l; |
size_t l; |
u_int i; |
u_int i; |
int argc, err; |
int argc, error; |
char linebuf[256], qbuf[128], *lp, *cp, *arg; |
char linebuf[256], qbuf[128], *lp, *cp, *arg; |
|
|
l = strlcpy(linebuf, line, sizeof(linebuf)); |
l = strlcpy(linebuf, line, sizeof(linebuf)); |
|
|
argc = 0; |
argc = 0; |
|
|
/* build the argument vector */ |
/* build the argument vector */ |
err = 0; |
error = 0; |
for (lp = linebuf; lp != NULL;) { |
for (lp = linebuf; lp != NULL;) { |
if (*lp == '"') { |
if (*lp == '"') { |
/* double-quoted string */ |
/* double-quoted string */ |
|
|
lp++; |
lp++; |
if (*lp == '\0') { |
if (*lp == '\0') { |
cvs_log(LP_ERR, "no terminating quote"); |
cvs_log(LP_ERR, "no terminating quote"); |
err++; |
error++; |
break; |
break; |
} |
} |
|
|
qbuf[i++] = *lp++; |
qbuf[i++] = *lp++; |
if (i == sizeof(qbuf)) { |
if (i == sizeof(qbuf)) { |
err++; |
error++; |
break; |
break; |
} |
} |
} |
} |
|
|
} |
} |
|
|
if (argc == argvlen) { |
if (argc == argvlen) { |
err++; |
error++; |
break; |
break; |
} |
} |
|
|
|
|
argc++; |
argc++; |
} |
} |
|
|
if (err != 0) { |
if (error != 0) { |
/* ditch the argument vector */ |
/* ditch the argument vector */ |
for (i = 0; i < (u_int)argc; i++) |
for (i = 0; i < (u_int)argc; i++) |
xfree(argv[i]); |
xfree(argv[i]); |