ash: add missing casts to match CTLfoo; add TODO comments
Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
This commit is contained in:
parent
5277a9db70
commit
6040fe88f4
18
shell/ash.c
18
shell/ash.c
@ -6008,7 +6008,7 @@ argstr(char *p, int flags, struct strlist *var_str_list)
|
||||
flags &= ~EXP_TILDE;
|
||||
tilde:
|
||||
q = p;
|
||||
if (*q == CTLESC && (flags & EXP_QWORD))
|
||||
if ((unsigned char)*q == CTLESC && (flags & EXP_QWORD))
|
||||
q++;
|
||||
if (*q == '~')
|
||||
p = exptilde(p, q, flags);
|
||||
@ -6071,8 +6071,8 @@ argstr(char *p, int flags, struct strlist *var_str_list)
|
||||
/* "$@" syntax adherence hack */
|
||||
if (!inquotes
|
||||
&& memcmp(p, dolatstr, 4) == 0
|
||||
&& ( p[4] == CTLQUOTEMARK
|
||||
|| (p[4] == CTLENDVAR && p[5] == CTLQUOTEMARK)
|
||||
&& ( p[4] == (char)CTLQUOTEMARK
|
||||
|| (p[4] == (char)CTLENDVAR && p[5] == (char)CTLQUOTEMARK)
|
||||
)
|
||||
) {
|
||||
p = evalvar(p + 1, flags, /* var_str_list: */ NULL) + 1;
|
||||
@ -6293,7 +6293,7 @@ subevalvar(char *p, char *varname, int strloc, int subtype,
|
||||
int zero;
|
||||
char *(*scan)(char*, char*, char*, char*, int, int);
|
||||
|
||||
//bb_error_msg("subevalvar(p:'%s',varname:'%s',strloc:%d,subtype:%d,startloc:%d,varflags:%x,quotes:%d",
|
||||
//bb_error_msg("subevalvar(p:'%s',varname:'%s',strloc:%d,subtype:%d,startloc:%d,varflags:%x,quotes:%d)",
|
||||
// p, varname, strloc, subtype, startloc, varflags, quotes);
|
||||
|
||||
herefd = -1;
|
||||
@ -6727,8 +6727,8 @@ evalvar(char *p, int flags, struct strlist *var_str_list)
|
||||
vsplus:
|
||||
if (varlen < 0) {
|
||||
argstr(
|
||||
p, flags | EXP_TILDE |
|
||||
(quoted ? EXP_QWORD : EXP_WORD),
|
||||
p,
|
||||
flags | (quoted ? EXP_TILDE|EXP_QWORD : EXP_TILDE|EXP_WORD),
|
||||
var_str_list
|
||||
);
|
||||
goto end;
|
||||
@ -11039,7 +11039,6 @@ readtoken1(int c, int syntax, char *eofmark, int striptabs)
|
||||
startlinno = g_parsefile->linno;
|
||||
bqlist = NULL;
|
||||
quotef = 0;
|
||||
oldstyle = 0;
|
||||
prevsyntax = 0;
|
||||
#if ENABLE_ASH_EXPAND_PRMT
|
||||
pssyntax = (syntax == PSSYNTAX);
|
||||
@ -11445,6 +11444,8 @@ parsesub: {
|
||||
c = pgetc();
|
||||
#if ENABLE_ASH_BASH_COMPAT
|
||||
if (c == ':' || c == '$' || isdigit(c)) {
|
||||
//TODO: support more general format ${v:EXPR:EXPR},
|
||||
// where EXPR follows $(()) rules
|
||||
subtype = VSSUBSTR;
|
||||
pungetc();
|
||||
break; /* "goto do_pungetc" is bigger (!) */
|
||||
@ -11472,6 +11473,9 @@ parsesub: {
|
||||
}
|
||||
#if ENABLE_ASH_BASH_COMPAT
|
||||
case '/':
|
||||
/* ${v/[/]pattern/repl} */
|
||||
//TODO: encode pattern and repl separately.
|
||||
// Currently ${v/$var_with_slash/repl} is horribly broken
|
||||
subtype = VSREPLACE;
|
||||
c = pgetc();
|
||||
if (c != '/')
|
||||
|
Loading…
Reference in New Issue
Block a user