Module Name: src
Committed By: kre
Date: Wed Jun 7 09:31:30 UTC 2017
Modified Files:
src/bin/sh: expand.c
Log Message:
PR bin/52280
removescapes_nl in expari() even when not quoted,
CRTNONL's appear regardless of quoting (unlike CTLESC).
To generate a diff of this commit:
cvs rdiff -u -r1.114 -r1.115 src/bin/sh/expand.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/bin/sh/expand.c
diff -u src/bin/sh/expand.c:1.114 src/bin/sh/expand.c:1.115
--- src/bin/sh/expand.c:1.114 Wed Jun 7 08:07:50 2017
+++ src/bin/sh/expand.c Wed Jun 7 09:31:30 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: expand.c,v 1.114 2017/06/07 08:07:50 kre Exp $ */
+/* $NetBSD: expand.c,v 1.115 2017/06/07 09:31:30 kre Exp $ */
/*-
* Copyright (c) 1991, 1993
@@ -37,7 +37,7 @@
#if 0
static char sccsid[] = "@(#)expand.c 8.5 (Berkeley) 5/15/95";
#else
-__RCSID("$NetBSD: expand.c,v 1.114 2017/06/07 08:07:50 kre Exp $");
+__RCSID("$NetBSD: expand.c,v 1.115 2017/06/07 09:31:30 kre Exp $");
#endif
#endif /* not lint */
@@ -100,7 +100,7 @@ struct arglist exparg; /* holds expande
STATIC const char *argstr(const char *, int);
STATIC const char *exptilde(const char *, int);
STATIC void expbackq(union node *, int, int);
-STATIC const char *expari(const char *, int);
+STATIC const char *expari(const char *);
STATIC int subevalvar(const char *, const char *, int, int, int);
STATIC int subevalvar_trim(const char *, int, int, int, int, int);
STATIC const char *evalvar(const char *, int);
@@ -288,7 +288,7 @@ argstr(const char *p, int flag)
expdest-ed, ed, *expdest));
break;
case CTLARI:
- p = expari(p, flag);
+ p = expari(p);
VTRACE(DBG_EXPAND, ("argstr expari "
"+ \"%.*s\" to dest (fwd by: %2.2x) p=\"%.5s...\"\n",
expdest-ed, ed, *expdest, p));
@@ -435,13 +435,12 @@ removerecordregions(int endoff)
* evaluate, place result in (backed up) result, adjust string position.
*/
STATIC const char *
-expari(const char *p, int flag)
+expari(const char *p)
{
char *q, *start;
intmax_t result;
int adjustment;
int begoff;
- int quotes = flag & (EXP_GLOB | EXP_CASE);
int quoted;
#ifdef DEBUG
const char *ed = expdest;
@@ -478,16 +477,14 @@ expari(const char *p, int flag)
*/
quoted = *p++ == '"';
begoff = expdest - stackblock();
- VTRACE(DBG_EXPAND, ("expari: '%c' \"%s\" begoff %d quotes %x\n",
- p[-1],p,begoff, quotes));
+ VTRACE(DBG_EXPAND, ("expari: '%c' \"%s\" begoff %d\n", p[-1],p,begoff));
p = argstr(p, EXP_NL); /* expand $(( )) string */
STPUTC('\0', expdest);
start = stackblock() + begoff;
VTRACE(DBG_EXPAND, ("expari: argstr added: '%s' start: \"%.8s\"\n",
ed, start));
removerecordregions(begoff);
- if (quotes)
- rmescapes_nl(start); /* convert CRTNONL back into \n's */
+ rmescapes_nl(start); /* convert CRTNONL back into \n's */
q = grabstackstr(expdest);
result = arith(start, line_number);
VTRACE(DBG_EXPAND, ("expari: after arith: result=%jd '%s' q@'%.3s'\n",