ash: document where we accept invalid syntax. no code changes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
b618dba103
commit
4d8873f997
18
shell/ash.c
18
shell/ash.c
@ -6371,6 +6371,16 @@ subevalvar(char *p, char *str, int strloc, int subtype,
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Add the value of a specialized variable to the stack string.
|
* Add the value of a specialized variable to the stack string.
|
||||||
|
* name parameter (examples):
|
||||||
|
* ash -c 'echo $1' name:'1='
|
||||||
|
* ash -c 'echo $qwe' name:'qwe='
|
||||||
|
* ash -c 'echo $$' name:'$='
|
||||||
|
* ash -c 'echo ${$}' name:'$='
|
||||||
|
* ash -c 'echo ${$##q}' name:'$=q'
|
||||||
|
* ash -c 'echo ${#$}' name:'$='
|
||||||
|
* note: examples with bad shell syntax:
|
||||||
|
* ash -c 'echo ${#$1}' name:'$=1'
|
||||||
|
* ash -c 'echo ${#1#}' name:'1=#'
|
||||||
*/
|
*/
|
||||||
static ssize_t
|
static ssize_t
|
||||||
varvalue(char *name, int varflags, int flags, struct strlist *var_str_list)
|
varvalue(char *name, int varflags, int flags, struct strlist *var_str_list)
|
||||||
@ -6407,7 +6417,7 @@ varvalue(char *name, int varflags, int flags, struct strlist *var_str_list)
|
|||||||
return -1;
|
return -1;
|
||||||
numvar:
|
numvar:
|
||||||
len = cvtnum(num);
|
len = cvtnum(num);
|
||||||
break;
|
goto check_1char_name;
|
||||||
case '-':
|
case '-':
|
||||||
expdest = makestrspace(NOPTS, expdest);
|
expdest = makestrspace(NOPTS, expdest);
|
||||||
for (i = NOPTS - 1; i >= 0; i--) {
|
for (i = NOPTS - 1; i >= 0; i--) {
|
||||||
@ -6416,6 +6426,12 @@ varvalue(char *name, int varflags, int flags, struct strlist *var_str_list)
|
|||||||
len++;
|
len++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
check_1char_name:
|
||||||
|
#if 0
|
||||||
|
/* handles cases similar to ${#$1} */
|
||||||
|
if (name[2] != '\0')
|
||||||
|
raise_error_syntax("bad substitution");
|
||||||
|
#endif
|
||||||
break;
|
break;
|
||||||
case '@':
|
case '@':
|
||||||
if (sep)
|
if (sep)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user