diff options
| author | lufia <lufia@lufia.org> | 2025-07-21 13:36:21 +0900 |
|---|---|---|
| committer | Dan Cross <crossd@gmail.com> | 2025-07-27 09:55:45 -0400 |
| commit | 8ff39da0623dbab13c00ce25a16dda168f6ec0a0 (patch) | |
| tree | 7ad6a351cf9a0538ece73813da14872c6bd90785 /src/cmd/rc/code.c | |
| parent | cc89d242358cc777a22beefe2456d11e12e94197 (diff) | |
src/cmd/rc: import rc syntax `delim{cmd} for splitting commands from 9atom
Co-authored-by: <ori@eigenstate.org>
Diffstat (limited to 'src/cmd/rc/code.c')
| -rw-r--r-- | src/cmd/rc/code.c | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/src/cmd/rc/code.c b/src/cmd/rc/code.c index 208476ae..436e754a 100644 --- a/src/cmd/rc/code.c +++ b/src/cmd/rc/code.c @@ -94,6 +94,8 @@ outcode(tree *t, int eflag) { int p, q; tree *tt; + char *ifs; + if(t==0) return; if(t->type!=NOT && t->type!=';') @@ -141,14 +143,26 @@ outcode(tree *t, int eflag) emitf(Xconc); break; case '`': + emitf(Xmark); + if(c0){ + outcode(c0, 0); + emitf(Xglob); + }else{ + if((ifs = strdup("ifs")) == nil) + sysfatal("strdup: %r"); + emitf(Xmark); + emitf(Xword); + emits(ifs); + emitf(Xdol); + } emitf(Xbackq); if(havefork){ p = emiti(0); - outcode(c0, 0); + outcode(c1, 0); emitf(Xexit); stuffdot(p); } else - emits(fnstr(c0)); + emits(fnstr(c1)); break; case ANDAND: outcode(c0, 0); |