Fix style, since this file has just been touched in a major way.

No actual code changes.
This commit is contained in:
Stefan Eßer 2011-07-09 12:20:15 +00:00
parent 6fbe7bf4f2
commit 69759f0829
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=223883

View File

@ -52,7 +52,7 @@ void assert_times(intmax_t, intmax_t, intmax_t);
int compare_vals(struct val *, struct val *);
void free_value(struct val *);
int is_integer(const char *);
int isstring(struct val *);
int is_string(struct val *);
int is_zero_or_null(struct val *);
struct val *make_integer(intmax_t);
struct val *make_str(const char *);
@ -115,7 +115,6 @@ expr: TOKEN
| expr ':' expr { $$ = op_colon($1, $3); }
;
%%
struct val *
@ -124,13 +123,12 @@ make_integer(intmax_t i)
struct val *vp;
vp = (struct val *)malloc(sizeof(*vp));
if (vp == NULL) {
if (vp == NULL)
errx(ERR_EXIT, "malloc() failed");
}
vp->type = integer;
vp->u.i = i;
return vp;
return (vp);
}
struct val *
@ -139,19 +137,17 @@ make_str(const char *s)
struct val *vp;
vp = (struct val *)malloc(sizeof(*vp));
if (vp == NULL || ((vp->u.s = strdup (s)) == NULL)) {
if (vp == NULL || ((vp->u.s = strdup(s)) == NULL))
errx(ERR_EXIT, "malloc() failed");
}
if (is_integer(s))
vp->type = numeric_string;
else
vp->type = string;
return vp;
return (vp);
}
void
free_value(struct val *vp)
{
@ -159,7 +155,6 @@ free_value(struct val *vp)
free(vp->u.s);
}
int
to_integer(struct val *vp)
{
@ -179,7 +174,6 @@ to_integer(struct val *vp)
return (vp->type == integer);
}
void
assert_to_integer(struct val *vp)
{
@ -212,7 +206,6 @@ to_string(struct val *vp)
vp->u.s = tmp;
}
int
is_integer(const char *s)
{
@ -231,15 +224,13 @@ is_integer(const char *s)
return (*s == '\0');
}
int
isstring(struct val *vp)
is_string(struct val *vp)
{
/* only TRUE if this string is not a valid integer */
return (vp->type == string);
}
int
yylex(void)
{
@ -268,13 +259,11 @@ yylex(void)
int
is_zero_or_null(struct val *vp)
{
if (vp->type == integer) {
if (vp->type == integer)
return (vp->u.i == 0);
} else {
return (*vp->u.s == 0 || (to_integer(vp) && vp->u.i == 0));
}
/* NOTREACHED */
}
int
main(int argc, char *argv[])
@ -287,16 +276,15 @@ main(int argc, char *argv[])
av = argv + 1;
nonposix = 1;
} else {
while ((c = getopt(argc, argv, "e")) != -1)
while ((c = getopt(argc, argv, "e")) != -1) {
switch (c) {
case 'e':
nonposix = 1;
break;
default:
fprintf(stderr,
errx(ERR_EXIT,
"usage: expr [-e] expression\n");
exit(ERR_EXIT);
}
}
av = argv + optind;
}
@ -317,7 +305,6 @@ yyerror(const char *s __unused)
errx(ERR_EXIT, "syntax error");
}
struct val *
op_or(struct val *a, struct val *b)
{
@ -350,7 +337,7 @@ compare_vals(struct val *a, struct val *b)
{
int r;
if (isstring(a) || isstring(b)) {
if (is_string(a) || is_string(b)) {
to_string(a);
to_string(b);
r = strcoll(a->u.s, b->u.s);
@ -425,19 +412,17 @@ op_plus(struct val *a, struct val *b)
assert_to_integer(a);
assert_to_integer(b);
r = make_integer(a->u.i + b->u.i);
assert_plus(a->u.i, b->u.i, r->u.i);
free_value(a);
free_value(b);
return r;
return (r);
}
void
assert_minus(intmax_t a, intmax_t b, intmax_t r)
{
/* special case subtraction of INTMAX_MIN */
if (b == INTMAX_MIN && a < 0)
errx(ERR_EXIT, "overflow");
@ -452,13 +437,12 @@ op_minus(struct val *a, struct val *b)
assert_to_integer(a);
assert_to_integer(b);
r = make_integer(a->u.i - b->u.i);
assert_minus(a->u.i, b->u.i, r->u.i);
free_value(a);
free_value(b);
return r;
return (r);
}
void
@ -479,7 +463,6 @@ op_times(struct val *a, struct val *b)
assert_to_integer(a);
assert_to_integer(b);
r = make_integer(a->u.i * b->u.i);
assert_times(a->u.i, b->u.i, r->u.i);
@ -505,14 +488,13 @@ op_div(struct val *a, struct val *b)
assert_to_integer(a);
assert_to_integer(b);
/* assert based on operands only, not on result */
assert_div(a->u.i, b->u.i);
r = make_integer(a->u.i / b->u.i);
free_value(a);
free_value(b);
return r;
return (r);
}
struct val *
@ -528,7 +510,7 @@ op_rem(struct val *a, struct val *b)
free_value(a);
free_value(b);
return r;
return (r);
}
struct val *
@ -552,26 +534,23 @@ op_colon(struct val *a, struct val *b)
/* compare string against pattern */
/* remember that patterns are anchored to the beginning of the line */
if (regexec(&rp, a->u.s, (size_t)2, rm, 0) == 0 && rm[0].rm_so == 0) {
if (regexec(&rp, a->u.s, (size_t)2, rm, 0) == 0 && rm[0].rm_so == 0)
if (rm[1].rm_so >= 0) {
*(a->u.s + rm[1].rm_eo) = '\0';
v = make_str(a->u.s + rm[1].rm_so);
} else {
} else
v = make_integer((intmax_t)(rm[0].rm_eo - rm[0].rm_so));
}
} else {
if (rp.re_nsub == 0) {
else
if (rp.re_nsub == 0)
v = make_integer((intmax_t)0);
} else {
else
v = make_str("");
}
}
/* free arguments and pattern buffer */
free_value(a);
free_value(b);
regfree(&rp);
return v;
return (v);
}