1
0
Fork 0
mirror of git://git.code.sf.net/p/zsh/code synced 2025-10-27 04:40:59 +01:00

zsh-workers/9937

This commit is contained in:
Tanaka Akira 2000-02-29 16:04:29 +00:00
parent 7cc67a8a37
commit dd02ad2a86

View file

@ -428,7 +428,7 @@ strcatsub(char **d, char *pb, char *pe, char *src, int l, char *s, int glbsub,
int pl = pe - pb; int pl = pe - pb;
if (!pl && (!s || !*s)) { if (!pl && (!s || !*s)) {
dest = (*d = (copied ? src : dupstring(src))); *d = dest = (copied ? src : dupstring(src));
if (glbsub) if (glbsub)
tokenize(dest); tokenize(dest);
} else { } else {
@ -701,9 +701,13 @@ get_intarg(char **s)
/* Parsing for the (e) flag. */ /* Parsing for the (e) flag. */
static int static char *
subst_parse_str(char *s, int single) subst_parse_str(char **sp, int single)
{ {
char *s;
*sp = s = dupstring(*sp);
if (!parsestr(s)) { if (!parsestr(s)) {
if (!single) { if (!single) {
for (; *s; s++) for (; *s; s++)
@ -1788,7 +1792,7 @@ paramsubst(LinkList l, LinkNode n, char **str, int qt, int ssub)
if (prenum || postnum) if (prenum || postnum)
x = dopadding(x, prenum, postnum, preone, postone, x = dopadding(x, prenum, postnum, preone, postone,
premul, postmul); premul, postmul);
if (eval && subst_parse_str(x, (qt && !nojoin))) if (eval && subst_parse_str(&x, (qt && !nojoin)))
return NULL; return NULL;
xlen = strlen(x); xlen = strlen(x);
for (tn = firstnode(&tl); for (tn = firstnode(&tl);
@ -1824,7 +1828,7 @@ paramsubst(LinkList l, LinkNode n, char **str, int qt, int ssub)
if (prenum || postnum) if (prenum || postnum)
x = dopadding(x, prenum, postnum, preone, postone, x = dopadding(x, prenum, postnum, preone, postone,
premul, postmul); premul, postmul);
if (eval && subst_parse_str(x, (qt && !nojoin))) if (eval && subst_parse_str(&x, (qt && !nojoin)))
return NULL; return NULL;
xlen = strlen(x); xlen = strlen(x);
strcatsub(&y, ostr, aptr, x, xlen, NULL, globsubst, copied); strcatsub(&y, ostr, aptr, x, xlen, NULL, globsubst, copied);
@ -1839,7 +1843,7 @@ paramsubst(LinkList l, LinkNode n, char **str, int qt, int ssub)
if (prenum || postnum) if (prenum || postnum)
x = dopadding(x, prenum, postnum, preone, postone, x = dopadding(x, prenum, postnum, preone, postone,
premul, postmul); premul, postmul);
if (eval && subst_parse_str(x, (qt && !nojoin))) if (eval && subst_parse_str(&x, (qt && !nojoin)))
return NULL; return NULL;
if (qt && !*x && isarr != 2) if (qt && !*x && isarr != 2)
y = dupstring(nulstring); y = dupstring(nulstring);
@ -1855,7 +1859,7 @@ paramsubst(LinkList l, LinkNode n, char **str, int qt, int ssub)
if (prenum || postnum) if (prenum || postnum)
x = dopadding(x, prenum, postnum, preone, postone, x = dopadding(x, prenum, postnum, preone, postone,
premul, postmul); premul, postmul);
if (eval && subst_parse_str(x, (qt && !nojoin))) if (eval && subst_parse_str(&x, (qt && !nojoin)))
return NULL; return NULL;
xlen = strlen(x); xlen = strlen(x);
*str = strcatsub(&y, aptr, aptr, x, xlen, fstr, globsubst, copied); *str = strcatsub(&y, aptr, aptr, x, xlen, fstr, globsubst, copied);
@ -1874,7 +1878,7 @@ paramsubst(LinkList l, LinkNode n, char **str, int qt, int ssub)
if (prenum || postnum) if (prenum || postnum)
x = dopadding(x, prenum, postnum, preone, postone, x = dopadding(x, prenum, postnum, preone, postone,
premul, postmul); premul, postmul);
if (eval && subst_parse_str(x, (qt && !nojoin))) if (eval && subst_parse_str(&x, (qt && !nojoin)))
return NULL; return NULL;
xlen = strlen(x); xlen = strlen(x);
*str = strcatsub(&y, ostr, aptr, x, xlen, fstr, globsubst, copied); *str = strcatsub(&y, ostr, aptr, x, xlen, fstr, globsubst, copied);