Displaying 4 results from an estimated 4 matches for "varunset".
2020 Mar 28
0
[klibc:update-dash] dash: expand: Do not reprocess data when expanding words
...);
- STPUTC('\0', expdest);
- argbackq = saveargbackq;
startp = stackblock() + startloc;
switch (subtype) {
case VSASSIGN:
setvar(str, startp, 0);
- amount = startp - expdest;
- STADJUST(amount, expdest);
- return startp;
+
+ loc = startp;
+ goto out;
case VSQUESTION:
- varunset(p, str, startp, varflags);
+ varunset(start, str, startp, varflags);
/* NOTREACHED */
}
@@ -687,10 +671,17 @@ subevalvar(char *p, char *str, int strloc, int subtype, int startloc, int varfla
loc = startp + (str - loc) - 1;
}
*loc = '\0';
- amount = loc - expdest;
- STADJ...
2020 Mar 28
0
[klibc:update-dash] dash: expand: Eat closing brace for length parameter expansion
...pana.org.au>
Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
---
usr/dash/expand.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/usr/dash/expand.c b/usr/dash/expand.c
index 25236c09..20362cef 100644
--- a/usr/dash/expand.c
+++ b/usr/dash/expand.c
@@ -745,6 +745,7 @@ again:
varunset(p, var, 0, 0);
if (subtype == VSLENGTH) {
+ p++;
if (flag & EXP_DISCARD)
return p;
cvtnum(varlen > 0 ? varlen : 0, flag);
2020 Mar 28
0
[klibc:update-dash] dash: expand: Fix multiple issues with EXP_DISCARD in evalvar
...(discard ^ EXP_DISCARD));
- if (flag & EXP_DISCARD)
- return p;
+ if ((flag | ~discard) & EXP_DISCARD)
+ goto record;
varflags &= ~VSNUL;
+ subtype = VSNORMAL;
goto again;
}
- if (varlen < 0 && uflag)
+ if ((discard & ~flag) && uflag)
varunset(p, var, 0, 0);
if (subtype == VSLENGTH) {
if (flag & EXP_DISCARD)
return p;
cvtnum(varlen > 0 ? varlen : 0, flag);
- goto record;
+ goto really_record;
}
if (subtype == VSNORMAL)
@@ -765,7 +766,7 @@ again:
}
#endif
- flag |= varlen < 0 ? EXP_DISCARD : 0;
+ flag...
2020 Mar 28
0
[klibc:update-dash] dash: mkinit: Split reset into exitreset and reset
...uiltincmd bltin = {
#ifdef mkinit
INCLUDE "eval.h"
-RESET {
+EXITRESET {
evalskip = 0;
loopnest = 0;
if (savestatus >= 0) {
diff --git a/usr/dash/expand.c b/usr/dash/expand.c
index 59a202cb..6ea0562f 100644
--- a/usr/dash/expand.c
+++ b/usr/dash/expand.c
@@ -1780,7 +1780,7 @@ varunset(const char *end, const char *var, const char *umsg, int varflags)
INCLUDE "expand.h"
-RESET {
+EXITRESET {
ifsfree();
}
diff --git a/usr/dash/init.h b/usr/dash/init.h
index e026e868..49791a07 100644
--- a/usr/dash/init.h
+++ b/usr/dash/init.h
@@ -35,5 +35,5 @@
*/
void init(...