C99 say: "char" declaration may be signed or unsigned default
This commit is contained in:
parent
5775aa2ef6
commit
84005af7ef
20
shell/ash.c
20
shell/ash.c
@ -728,6 +728,9 @@ static const char *tokname(int tok)
|
|||||||
#define is_name(c) ((c) == '_' || isalpha((unsigned char)(c)))
|
#define is_name(c) ((c) == '_' || isalpha((unsigned char)(c)))
|
||||||
#define is_in_name(c) ((c) == '_' || isalnum((unsigned char)(c)))
|
#define is_in_name(c) ((c) == '_' || isalnum((unsigned char)(c)))
|
||||||
|
|
||||||
|
/* C99 say: "char" declaration may be signed or unsigned default */
|
||||||
|
#define SC2INT(chr2may_be_negative_int) (int)((signed char)chr2may_be_negative_int)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* is_special(c) evaluates to 1 for c in "!#$*-0123456789?@"; 0 otherwise
|
* is_special(c) evaluates to 1 for c in "!#$*-0123456789?@"; 0 otherwise
|
||||||
* (assuming ascii char codes, as the original implementation did)
|
* (assuming ascii char codes, as the original implementation did)
|
||||||
@ -5244,7 +5247,7 @@ memtodest(const char *p, size_t len, int syntax, int quotes) {
|
|||||||
q = makestrspace(len * 2, q);
|
q = makestrspace(len * 2, q);
|
||||||
|
|
||||||
while (len--) {
|
while (len--) {
|
||||||
int c = *p++;
|
int c = SC2INT(*p++);
|
||||||
if (!c)
|
if (!c)
|
||||||
continue;
|
continue;
|
||||||
if (quotes && (SIT(c, syntax) == CCTL || SIT(c, syntax) == CBACK))
|
if (quotes && (SIT(c, syntax) == CCTL || SIT(c, syntax) == CBACK))
|
||||||
@ -5318,7 +5321,7 @@ numvar:
|
|||||||
goto param;
|
goto param;
|
||||||
/* fall through */
|
/* fall through */
|
||||||
case '*':
|
case '*':
|
||||||
sep = ifsset() ? ifsval()[0] : ' ';
|
sep = ifsset() ? SC2INT(ifsval()[0]) : ' ';
|
||||||
if (quotes && (SIT(sep, syntax) == CCTL || SIT(sep, syntax) == CBACK))
|
if (quotes && (SIT(sep, syntax) == CCTL || SIT(sep, syntax) == CBACK))
|
||||||
sepq = 1;
|
sepq = 1;
|
||||||
param:
|
param:
|
||||||
@ -5920,7 +5923,8 @@ static void pushfile(void);
|
|||||||
* Nul characters in the input are silently discarded.
|
* Nul characters in the input are silently discarded.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define pgetc_as_macro() (--parsenleft >= 0? *parsenextc++ : preadbuffer())
|
|
||||||
|
#define pgetc_as_macro() (--parsenleft >= 0? SC2INT(*parsenextc++) : preadbuffer())
|
||||||
|
|
||||||
#ifdef CONFIG_ASH_OPTIMIZE_FOR_SIZE
|
#ifdef CONFIG_ASH_OPTIMIZE_FOR_SIZE
|
||||||
#define pgetc_macro() pgetc()
|
#define pgetc_macro() pgetc()
|
||||||
@ -6085,7 +6089,7 @@ preadbuffer(void)
|
|||||||
#endif
|
#endif
|
||||||
popstring();
|
popstring();
|
||||||
if (--parsenleft >= 0)
|
if (--parsenleft >= 0)
|
||||||
return (*parsenextc++);
|
return SC2INT(*parsenextc++);
|
||||||
}
|
}
|
||||||
if (parsenleft == EOF_NLEFT || parsefile->buf == NULL)
|
if (parsenleft == EOF_NLEFT || parsefile->buf == NULL)
|
||||||
return PEOF;
|
return PEOF;
|
||||||
@ -6137,7 +6141,7 @@ again:
|
|||||||
|
|
||||||
*q = savec;
|
*q = savec;
|
||||||
|
|
||||||
return *parsenextc++;
|
return SC2INT(*parsenextc++);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -10195,13 +10199,11 @@ readtoken1(int firstc, int syntax, char *eofmark, int striptabs)
|
|||||||
if (doprompt)
|
if (doprompt)
|
||||||
setprompt(2);
|
setprompt(2);
|
||||||
} else {
|
} else {
|
||||||
if (
|
if (dblquote &&
|
||||||
dblquote &&
|
|
||||||
c != '\\' && c != '`' &&
|
c != '\\' && c != '`' &&
|
||||||
c != '$' && (
|
c != '$' && (
|
||||||
c != '"' ||
|
c != '"' ||
|
||||||
eofmark != NULL
|
eofmark != NULL)
|
||||||
)
|
|
||||||
) {
|
) {
|
||||||
USTPUTC(CTLESC, out);
|
USTPUTC(CTLESC, out);
|
||||||
USTPUTC('\\', out);
|
USTPUTC('\\', out);
|
||||||
|
Loading…
Reference in New Issue
Block a user