Commit Graph

108 Commits

Author SHA1 Message Date
Paul Eggert 360b98042f (docolon): Add IF_LINT check to avoid GCC warning. 2005-09-13 22:30:56 +00:00
Paul Eggert 35155485bb * src/expr.c (docolon): 64-bit regex fixes. 2005-09-09 21:08:51 +00:00
Jim Meyering f682977c0c whoops: Adding quote(...) isn't enough :)
remove quotes from the string, too.
2005-06-16 21:41:57 +00:00
Jim Meyering f696c57a8e Don't embed `this'-style quotes in format strings.
Include "quote.h".
Rather than this: error (..., "...`%s'...", arg);
do this:          error (..., "...%s...", quote (arg));
2005-06-16 21:37:37 +00:00
Paul Eggert 6d740fd9ee Include strnumcmp.h, xstrtol.h.
(looks_like_integer): New function.
(toarith): Use it.  Also, use xstrtoimax rather than rolling our
own diagnostics.
(eval2): Don't look for trouble if !evaluate; this simplifies things.
Compare numbers using string comparison, so that overflow is
not possible.
2005-05-27 20:36:20 +00:00
Jim Meyering 6fc0ccf717 (toarith): Fix a sign error introduced on 2005-01-14. 2005-05-26 16:09:38 +00:00
Jim Meyering 44d59bb168 Update FSF postal mail address. 2005-05-14 07:58:31 +00:00
Jim Meyering c0c815af8d Update FSF postal mail address. 2005-05-14 06:57:06 +00:00
Jim Meyering eab72607cc (docolon): Use NULL, not `0'. 2005-03-28 18:17:02 +00:00
Jim Meyering f83e17f928 (tostring, printv): Use INT_BUFSIZE_BOUND in place of INT_STRLEN_BOUND + 1. 2005-03-10 08:02:24 +00:00
Jim Meyering 7eff5901c4 (toarith): Rewrite to detect/diagnose integer overflow,
rather than suffering silently.
Before, expr would silently overflow and wrap around:
  $ expr 9223372036854775808 = 0   # $(echo 2^63|bc)
  1
Now it detects the problem and exits nonzero:
  $ ./expr $(echo 2^63|bc) = 0
  ./expr: 9223372036854775808: integer is too large
2005-01-14 14:15:25 +00:00
Paul Eggert 6d988bb20d (usage): Improve documentation along the lines suggested
by Debian 5.2.1-2.
2004-11-16 20:47:28 +00:00
Paul Eggert bcae12896c (NEW, OLD): Remove, partly to avoid
reference to obsolescent macro XMALLOC.
All uses replaced by xmalloc and free.
2004-10-05 06:33:53 +00:00
Paul Eggert ae631658b0 (nextarg): Use bool for booleans. 2004-08-03 06:00:24 +00:00
Jim Meyering 1ce7b61d0e (main): Standardize on the diagnostics given when someone gives
too few operands ("missing operand after `xxx'") or
too many operands ("extra operand `xxx'").
Include "quote.h" and/or "error.h" if it wasn't already being included.
2004-06-21 15:03:35 +00:00
Jim Meyering 3c3e1584ed (nextarg): Prefer the notation STREQ (a, b)' over strcmp (a, b) == 0'. 2004-06-01 12:52:14 +00:00
Jim Meyering fdb3c26e8e (eval, eval7, eval6, eval5, eval4, eval3, eval2, eval1):
Accept a bool argument specifying whether to evaluate the
expression.  This is to allow short-circuit evaluation.  All
callers changed.
(null): Report that a string is zero even if it has
a form like "-0" or "00".
(eval1, eval): Use short-circuit evaluation for | and &.
(eval): Return 0 if both arguments are null or zero, instead
of returning the first argument.
2004-02-22 14:56:58 +00:00
Jim Meyering c2c0e244df (usage): Use EXIT_SUCCESS, not 0, for clarity.
(main): Use initialize_exit_failure rather than
setting exit_failure directly; this optimizes away redundant assignments.
(EXPR_FAILURE): Renamed from EXPR_ERROR, for
consistency with the other programs' naming conventions.
All uses changed.
2004-01-21 23:02:45 +00:00
Jim Meyering df81ab2911 Cast NULL to `(char *)' in call to variadic function,
parse_long_options, so that it works even on systems for which
sizeof char* != sizeof int.
2003-11-05 03:53:19 +00:00
Jim Meyering cf4fdf373f Most .c files (AUTHORS): Revert the WRITTEN_BY/AUTHORS change
of 2003-09-19.  Now, AUTHORS is a comma-separated list of strings.
Update the call to parse_long_options so that `AUTHORS, NULL' are the
last parameters.

* src/true.c (main): Append NULL to version_etc argument list.
* src/sys2.h (case_GETOPT_VERSION_CHAR): Likewise.
2003-10-18 10:05:47 +00:00
Jim Meyering bafd927f03 (WRITTEN_BY): Rename from AUTHORS.
Begin each WRITTEN_BY string with `Written by ' and end it with `.'.
Mark each WRITTEN_BY string as translatable.
2003-09-18 22:19:03 +00:00
Jim Meyering c6ec144494 revert previous change 2003-09-18 19:39:12 +00:00
Jim Meyering 3280bf4b55 Update AUTHORS definition to be a comma-separated list of strings and/or update
the call to parse_long_options so that `AUTHORS, NULL' are the last parameters.
2003-09-18 18:22:23 +00:00
Jim Meyering 4f4e9aa8e1 Don't include headers already included by system.h:
Don't include closeout.h.
2003-07-23 07:29:54 +00:00
Jim Meyering 1eaf0e9870 Include "exitfail.h", "quotearg.h".
(EXPR_INVALID, EXPR_ERROR): New constants.
(nomoreargs, null, toarith, nextarg): Return bool, not int.
(syntax_error): New function, exiting with status 2.  Use it
insteading of printing "syntax error" ourselves.
(main): Initialize exit_failure to EXPR_ERROR.
Exit with EXPR_INVALID on syntax error (too few arguments).
(nextarg): Use strcmp, not strcoll; strcoll might return
an undesirable 0, or might fail.
(docolon, eval4, eval3): Exit with status 3 on invalid argument type
or other such error.
(eval2): Report an error if strcoll fails in a string comparison.
2003-07-18 07:22:38 +00:00
Jim Meyering 6bcd4b08ba (main): Call initialize_main. 2003-06-17 18:13:23 +00:00
Jim Meyering 80d799b8a2 (OLD): Don't apply cast to argument of free. 2003-05-13 14:38:40 +00:00
Jim Meyering a6a4c372c0 (main): Handle argc == 0. 2003-05-10 19:56:49 +00:00
Jim Meyering 6c93bdeeaa Remove anachronistic casts of xmalloc,
xrealloc, and xcalloc return values and of xrealloc's first argument.
2003-04-11 10:51:56 +00:00
Jim Meyering a98f67970e (usage): Use putchar, not fputs, to output a single character. 2003-03-07 23:22:14 +00:00
Jim Meyering a5f14f167e Remove all uses of `PARAMS'. 2002-12-15 20:54:29 +00:00
Jim Meyering 1f5b482124 (inttostr): Remove; use new imaxtostr library function instead. 2002-11-05 20:37:20 +00:00
Jim Meyering 4006f4e672 Change exit (0)' to exit (EXIT_SUCCESS)',
`exit (1)' to `exit (EXIT_FAILURE)', and
`usage (1)' to `usage (EXIT_FAILURE)'.
2002-08-31 08:52:10 +00:00
Jim Meyering 2ee11887cd (usage): Use the PACKAGE_BUGREPORT e-mail address, rather than hard-coding it. 2002-07-02 09:09:10 +00:00
Jim Meyering 3ca688d69a Don't include "xalloc.h", as system.h already does that via sys2.h. 2002-01-21 19:53:23 +00:00
Jim Meyering 2fae9e5d26 Use new macros, HELP_OPTION_DESCRIPTION and VERSION_OPTION_DESCRIPTION
instead of hard-coding --help and --version descriptions.
Split --help output into smaller pieces.
Use fputs, not printf.
2001-12-15 20:46:30 +00:00
Jim Meyering 9e1b4e382a (usage): Indent --help and --version strings to start in the 7th column. 2001-11-25 14:46:05 +00:00
Jim Meyering 1463ff6353 (nextarg): Use strcoll, not strcmp. 2001-08-26 05:40:46 +00:00
Jim Meyering 4bc8b66e3a (posixly_correct): Remove; no longer needed.
(main): Do not worry about POSIXLY_CORRECT, as it's OK for
expr to have options (so long as they do not begin with digits).
2001-08-24 07:56:46 +00:00
Jim Meyering 9ee54a9b3a (nextarg): Advance ARGS by one if the next token matches.
All callers changed.
2001-08-18 21:21:07 +00:00
Jim Meyering 2169593a4f (isstring): Remove.
(eval2): Do comparisons as strings first, before trying to convert to
integer.  This avoids loss of information and wrong result, e.g. for
"expr '00' '<' '0!'", where you don't want to convert '00' to '0'.
2001-08-18 20:45:59 +00:00
Jim Meyering 2dce4a36d9 Code cleanup to avoid tricky macros and old-style function declarations.
(cmpf, less_than, less_equal, equal, not_equal, greater_equal,
greater_than, arithf, arithdivf, plus, minus, multiply, divide, mod):
Remove.

(eval4, eval3, eval2): Rewrite to avoid the need for the above macros
and functions.
2001-08-18 20:23:01 +00:00
Jim Meyering a39a7f8ada (main): Handle a leading "--" option as POSIX requires. 2001-08-18 17:10:32 +00:00
Jim Meyering 92b78195a1 (toarith): Don't accept plain "-" as a valid integer. 2001-08-18 16:39:33 +00:00
Jim Meyering c6c2071280 Modify 'expr' so that it uses intmax_t, not int, to calculate
the value of integer expressions.

(struct valinfo.i): Now intmax_t, not int.
(docolon, int_value, str_value, isstring, nextarg, toarith,
freev, tostring, trace): Remove unnecessary forward decls.
(int_value, printv, tostring, toarith, arithf, arithdivf, docolon,
eval6, eval4, eval3): Do integer arithmetic using intmax_t, not int.
(docolon): Don't assume size_t fits in int.
2001-08-18 16:04:16 +00:00
Jim Meyering 1a898f0449 Include "closeout.h".
(main): Call atexit with close_stdout.
2000-05-07 14:52:16 +00:00
Jim Meyering 59339ab7e5 (NEW): Undefine to avoid warning about redefinition.
(NEW): Redefine in terms of XMALLOC.
1999-11-09 20:41:18 +00:00
Jim Meyering 1aab3474a1 Remove xstrdup declaration. 1999-09-02 21:33:00 +00:00
Jim Meyering 39090114f0 (PROGRAM_NAME, AUTHORS): Define and use. 1999-03-31 04:11:35 +00:00
Jim Meyering ff743d5451 (main): Include author name argument in call to parse_long_options. 1999-03-04 14:02:14 +00:00