diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2016-05-15 19:10:37 +0200 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2016-05-15 19:10:37 +0200 |
commit | 7717051e3ce062fbdb8415e4befa5205d25e80bb (patch) | |
tree | 029df0be93da100936c772c5f6a83f0874930cef /sys/src/cmd/rc/lex.c | |
parent | 81f867f4fb3d7fd495be3282a01d2e4a9b1a56fd (diff) |
rc: fix inband globbing bugs, cleanup
add glob information to the word structure so we wont accidently
deglob quoted strings containing the GLOB. we store Globsize(word)
in in word->glob which avoids recalculating that values and the
check if a word should be globbed quick.
globlist() now substitutes the word inplace avoiding the copying
when all words are literals and avoids recursion.
minor cleanups: use list2str() in execeval(), move octal() to
unix.c, remove the (char*) casts to efree().
Diffstat (limited to 'sys/src/cmd/rc/lex.c')
-rw-r--r-- | sys/src/cmd/rc/lex.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/sys/src/cmd/rc/lex.c b/sys/src/cmd/rc/lex.c index fecd0ec64..fa364f18d 100644 --- a/sys/src/cmd/rc/lex.c +++ b/sys/src/cmd/rc/lex.c @@ -366,8 +366,7 @@ yylex(void) return c; } for(;;){ - /* next line should have (char)c==GLOB, but ken's compiler is broken */ - if(c=='*' || c=='[' || c=='?' || c==(unsigned char)GLOB) + if(c=='*' || c=='[' || c=='?' || c==GLOB) w = addtok(w, GLOB); w = addutf(w, c); c = nextc(); |