Remove C99isms from coreutils/test.c.

It now compiles successfully with ORCA/C.
This commit is contained in:
Stephen Heumann 2014-11-02 00:39:21 -05:00
parent a3d8a81bb0
commit 97e65e3480
1 changed files with 49 additions and 38 deletions

View File

@ -194,25 +194,34 @@ enum token {
#define is_file_bit(a) (((unsigned char)((a) - FILSUID)) <= 2) #define is_file_bit(a) (((unsigned char)((a) - FILSUID)) <= 2)
#if TEST_DEBUG #if TEST_DEBUG
static void debug_msg(const char *fmt, ...) {
va_list p;
va_start(p, fmt);
vfprintf(stderr, fmt, p);
va_end(p);
}
int depth; int depth;
#define nest_msg(...) do { \ #define nest_msg(x) do { \
depth++; \ depth++; \
fprintf(stderr, "%*s", depth*2, ""); \ fprintf(stderr, "%*s", depth*2, ""); \
fprintf(stderr, __VA_ARGS__); \ debug_msg x; \
} while (0) } while (0)
#define unnest_msg(...) do { \ #define unnest_msg(x) do { \
fprintf(stderr, "%*s", depth*2, ""); \ fprintf(stderr, "%*s", depth*2, ""); \
fprintf(stderr, __VA_ARGS__); \ debug_msg x; \
depth--; \ depth--; \
} while (0) } while (0)
#define dbg_msg(...) do { \ #define dbg_msg(x) do { \
fprintf(stderr, "%*s", depth*2, ""); \ fprintf(stderr, "%*s", depth*2, ""); \
fprintf(stderr, __VA_ARGS__); \ debug_msg x; \
} while (0) } while (0)
#define unnest_msg_and_return(expr, ...) do { \ #define unnest_msg_and_return(expr, x) do { \
number_t __res = (expr); \ number_t __res = (expr); \
fprintf(stderr, "%*s", depth*2, ""); \ fprintf(stderr, "%*s", depth*2, ""); \
fprintf(stderr, __VA_ARGS__, res); \ debug_msg x; \
fprintf(stderr, ":%" PRIdNUM "\n", __res); \
depth--; \ depth--; \
return __res; \ return __res; \
} while (0) } while (0)
@ -259,10 +268,10 @@ static const char *const TOKSTR[] = {
"OPERAND" "OPERAND"
}; };
#else #else
#define nest_msg(...) ((void)0) #define nest_msg(x) ((void)0)
#define unnest_msg(...) ((void)0) #define unnest_msg(x) ((void)0)
#define dbg_msg(...) ((void)0) #define dbg_msg(x) ((void)0)
#define unnest_msg_and_return(expr, ...) return expr #define unnest_msg_and_return(expr, x) return expr
#endif #endif
enum { enum {
@ -368,8 +377,10 @@ static const char ops_texts[] ALIGN1 =
#if ENABLE_FEATURE_TEST_64 #if ENABLE_FEATURE_TEST_64
typedef int64_t number_t; typedef int64_t number_t;
#define PRIdNUM PRId64
#else #else
typedef int number_t; typedef int32_t number_t;
#define PRIdNUM PRId32
#endif #endif
@ -473,8 +484,8 @@ static int equalf(const char *f1, const char *f2)
static enum token check_operator(const char *s) static enum token check_operator(const char *s)
{ {
static const struct operator_t no_op = { static const struct operator_t no_op = {
.op_num = -1, /*.op_num =*/ -1,
.op_type = -1 /*.op_type =*/ -1
}; };
int n; int n;
@ -704,22 +715,22 @@ static number_t nexpr(enum token n)
{ {
number_t res; number_t res;
nest_msg(">nexpr(%s)\n", TOKSTR[n]); nest_msg((">nexpr(%s)\n", TOKSTR[n]));
if (n == UNOT) { if (n == UNOT) {
n = check_operator(*++args); n = check_operator(*++args);
if (n == EOI) { if (n == EOI) {
/* special case: [ ! ], [ a -a ! ] are valid */ /* special case: [ ! ], [ a -a ! ] are valid */
/* IOW, "! ARG" may miss ARG */ /* IOW, "! ARG" may miss ARG */
args--; args--;
unnest_msg("<nexpr:1 (!EOI), args:%s(%p)\n", args[0], &args[0]); unnest_msg(("<nexpr:1 (!EOI), args:%s(%p)\n", args[0], &args[0]));
return 1; return 1;
} }
res = !nexpr(n); res = !nexpr(n);
unnest_msg("<nexpr:%lld\n", res); unnest_msg(("<nexpr:%" PRIdNUM "\n", res));
return res; return res;
} }
res = primary(n); res = primary(n);
unnest_msg("<nexpr:%lld\n", res); unnest_msg(("<nexpr:%" PRIdNUM "\n", res));
return res; return res;
} }
@ -728,17 +739,17 @@ static number_t aexpr(enum token n)
{ {
number_t res; number_t res;
nest_msg(">aexpr(%s)\n", TOKSTR[n]); nest_msg((">aexpr(%s)\n", TOKSTR[n]));
res = nexpr(n); res = nexpr(n);
dbg_msg("aexpr: nexpr:%lld, next args:%s(%p)\n", res, args[1], &args[1]); dbg_msg(("aexpr: nexpr:%" PRIdNUM ", next args:%s(%p)\n", res, args[1], &args[1]));
if (check_operator(*++args) == BAND) { if (check_operator(*++args) == BAND) {
dbg_msg("aexpr: arg is AND, next args:%s(%p)\n", args[1], &args[1]); dbg_msg(("aexpr: arg is AND, next args:%s(%p)\n", args[1], &args[1]));
res = aexpr(check_operator(*++args)) && res; res = aexpr(check_operator(*++args)) && res;
unnest_msg("<aexpr:%lld\n", res); unnest_msg(("<aexpr:%" PRIdNUM "\n", res));
return res; return res;
} }
args--; args--;
unnest_msg("<aexpr:%lld, args:%s(%p)\n", res, args[0], &args[0]); unnest_msg(("<aexpr:%" PRIdNUM ", args:%s(%p)\n", res, args[0], &args[0]));
return res; return res;
} }
@ -747,17 +758,17 @@ static number_t oexpr(enum token n)
{ {
number_t res; number_t res;
nest_msg(">oexpr(%s)\n", TOKSTR[n]); nest_msg((">oexpr(%s)\n", TOKSTR[n]));
res = aexpr(n); res = aexpr(n);
dbg_msg("oexpr: aexpr:%lld, next args:%s(%p)\n", res, args[1], &args[1]); dbg_msg(("oexpr: aexpr:%" PRIdNUM ", next args:%s(%p)\n", res, args[1], &args[1]));
if (check_operator(*++args) == BOR) { if (check_operator(*++args) == BOR) {
dbg_msg("oexpr: next arg is OR, next args:%s(%p)\n", args[1], &args[1]); dbg_msg(("oexpr: next arg is OR, next args:%s(%p)\n", args[1], &args[1]));
res = oexpr(check_operator(*++args)) || res; res = oexpr(check_operator(*++args)) || res;
unnest_msg("<oexpr:%lld\n", res); unnest_msg(("<oexpr:%" PRIdNUM "\n", res));
return res; return res;
} }
args--; args--;
unnest_msg("<oexpr:%lld, args:%s(%p)\n", res, args[0], &args[0]); unnest_msg(("<oexpr:%" PRIdNUM ", args:%s(%p)\n", res, args[0], &args[0]));
return res; return res;
} }
@ -771,7 +782,7 @@ static number_t primary(enum token n)
#endif #endif
const struct operator_t *args0_op; const struct operator_t *args0_op;
nest_msg(">primary(%s)\n", TOKSTR[n]); nest_msg((">primary(%s)\n", TOKSTR[n]));
if (n == EOI) { if (n == EOI) {
syntax(NULL, "argument expected"); syntax(NULL, "argument expected");
} }
@ -779,7 +790,7 @@ static number_t primary(enum token n)
res = oexpr(check_operator(*++args)); res = oexpr(check_operator(*++args));
if (check_operator(*++args) != RPAREN) if (check_operator(*++args) != RPAREN)
syntax(NULL, "closing paren expected"); syntax(NULL, "closing paren expected");
unnest_msg("<primary:%lld\n", res); unnest_msg(("<primary:%" PRIdNUM "\n", res));
return res; return res;
} }
@ -793,7 +804,7 @@ static number_t primary(enum token n)
// if (args[3] && args[0]="-l" && args[2] is BINOP) // if (args[3] && args[0]="-l" && args[2] is BINOP)
// return binop(1 /* prepended by -l */); // return binop(1 /* prepended by -l */);
if (last_operator->op_type == BINOP) if (last_operator->op_type == BINOP)
unnest_msg_and_return(binop(), "<primary: binop:%lld\n"); unnest_msg_and_return(binop(), ("<primary: binop"));
} }
} }
/* check "is args[0] unop?" second */ /* check "is args[0] unop?" second */
@ -804,21 +815,21 @@ static number_t primary(enum token n)
goto check_emptiness; goto check_emptiness;
args++; args++;
if (n == STREZ) if (n == STREZ)
unnest_msg_and_return(args[0][0] == '\0', "<primary:%lld\n"); unnest_msg_and_return(args[0][0] == '\0', ("<primary"));
if (n == STRNZ) if (n == STRNZ)
unnest_msg_and_return(args[0][0] != '\0', "<primary:%lld\n"); unnest_msg_and_return(args[0][0] != '\0', ("<primary"));
if (n == FILTT) if (n == FILTT)
unnest_msg_and_return(isatty(getn(*args)), "<primary: isatty(%s)%lld\n", *args); unnest_msg_and_return(isatty(getn(*args)), ("<primary: isatty(%s)", *args));
unnest_msg_and_return(filstat(*args, n), "<primary: filstat(%s):%lld\n", *args); unnest_msg_and_return(filstat(*args, n), ("<primary: filstat(%s)", *args));
} }
/*check_operator(args[1]); - already done */ /*check_operator(args[1]); - already done */
if (last_operator->op_type == BINOP) { if (last_operator->op_type == BINOP) {
/* args[2] is known to be NULL, isn't it bound to fail? */ /* args[2] is known to be NULL, isn't it bound to fail? */
unnest_msg_and_return(binop(), "<primary:%lld\n"); unnest_msg_and_return(binop(), ("<primary"));
} }
check_emptiness: check_emptiness:
unnest_msg_and_return(args[0][0] != '\0', "<primary:%lld\n"); unnest_msg_and_return(args[0][0] != '\0', ("<primary"));
} }