=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/cvs/util.c,v retrieving revision 1.117 retrieving revision 1.118 diff -c -r1.117 -r1.118 *** src/usr.bin/cvs/util.c 2007/09/19 11:53:27 1.117 --- src/usr.bin/cvs/util.c 2007/09/19 12:04:38 1.118 *************** *** 1,4 **** ! /* $OpenBSD: util.c,v 1.117 2007/09/19 11:53:27 tobias Exp $ */ /* * Copyright (c) 2004 Jean-Francois Brousseau * Copyright (c) 2005, 2006 Joris Vink --- 1,4 ---- ! /* $OpenBSD: util.c,v 1.118 2007/09/19 12:04:38 tobias Exp $ */ /* * Copyright (c) 2004 Jean-Francois Brousseau * Copyright (c) 2005, 2006 Joris Vink *************** *** 228,234 **** { u_int i; int argc, error; ! char qbuf[128], *linebuf, *lp, *cp, *arg; linebuf = xstrdup(line); --- 228,234 ---- { u_int i; int argc, error; ! char *linebuf, *lp, *cp; linebuf = xstrdup(line); *************** *** 238,284 **** /* build the argument vector */ error = 0; for (lp = linebuf; lp != NULL;) { ! if (*lp == '"') { ! /* double-quoted string */ ! lp++; ! i = 0; ! memset(qbuf, 0, sizeof(qbuf)); ! while (*lp != '"') { ! if (*lp == '\\') ! lp++; ! if (*lp == '\0') { ! cvs_log(LP_ERR, "no terminating quote"); ! error++; ! break; ! } - qbuf[i++] = *lp++; - if (i == sizeof(qbuf) - 1) { - error++; - break; - } - } - if (error) - break; - lp++; - - arg = qbuf; - } else { - cp = strsep(&lp, " \t"); - if (cp == NULL) - break; - else if (*cp == '\0') - continue; - - arg = cp; - } - if (argc == argvlen) { error++; break; } ! argv[argc] = xstrdup(arg); argc++; } --- 238,255 ---- /* build the argument vector */ error = 0; for (lp = linebuf; lp != NULL;) { ! cp = strsep(&lp, " \t"); ! if (cp == NULL) ! break; ! else if (*cp == '\0') ! continue; if (argc == argvlen) { error++; break; } ! argv[argc] = xstrdup(cp); argc++; }