Small size optimization from Aaron Lehmann
[oweals/busybox.git] / test.c
diff --git a/test.c b/test.c
index 0a16e9328c2d8c86ecd0dd192d64f63b2b4c9831..9c66cbb87150544fd391c70580b04aeeb75816ab 100644 (file)
--- a/test.c
+++ b/test.c
  *     "This program is in the Public Domain."
  */
 
-#include "internal.h"
 #include <sys/types.h>
-#include <sys/stat.h>
 #include <unistd.h>
 #include <ctype.h>
 #include <errno.h>
 #include <stdlib.h>
 #include <string.h>
-#define BB_DECLARE_EXTERN
-#define bb_need_help
-#include "messages.c"
+#include "busybox.h"
 
 /* test(1) accepts the following grammar:
        oexpr   ::= aexpr | aexpr "-o" oexpr ;
@@ -111,10 +107,10 @@ enum token_types {
        PAREN
 };
 
-struct t_op {
+static const struct t_op {
        const char *op_text;
        short op_num, op_type;
-} const ops [] = {
+} ops [] = {
        {"-r",  FILRD,  UNOP},
        {"-w",  FILWR,  UNOP},
        {"-x",  FILEX,  UNOP},
@@ -157,8 +153,8 @@ struct t_op {
        {0,     0,      0}
 };
 
-char **t_wp;
-struct t_op const *t_wp_op;
+static char **t_wp;
+static struct t_op const *t_wp_op;
 static gid_t *group_array = NULL;
 static int ngroups;
 
@@ -183,21 +179,11 @@ test_main(int argc, char** argv)
 {
        int     res;
 
-       if (strcmp(argv[0], "[") == 0) {
+       if (strcmp(applet_name, "[") == 0) {
                if (strcmp(argv[--argc], "]"))
-                       fatalError("missing ]\n");
+                       error_msg_and_die("missing ]");
                argv[argc] = NULL;
        }
-       if (strcmp(argv[1], dash_dash_help) == 0) {
-               usage("test EXPRESSION\n"
-                         "or   [ EXPRESSION ]\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-                               "\nChecks file types and compares values returning an exit\n"
-                               "code determined by the value of EXPRESSION.\n"
-#endif
-                               );
-       }
-
        /* Implement special cases from POSIX.2, section 4.62.4 */
        switch (argc) {
        case 1:
@@ -235,7 +221,7 @@ test_main(int argc, char** argv)
        if (*t_wp != NULL && *++t_wp != NULL)
                syntax(*t_wp, "unknown operand");
 
-       exit( res);
+       return( res);
 }
 
 static void
@@ -244,9 +230,9 @@ syntax(op, msg)
        char    *msg;
 {
        if (op && *op)
-               fatalError("%s: %s\n", op, msg);
+               error_msg_and_die("%s: %s", op, msg);
        else
-               fatalError("%s\n", msg);
+               error_msg_and_die("%s", msg);
 }
 
 static int
@@ -372,7 +358,7 @@ filstat(nm, mode)
        enum token mode;
 {
        struct stat s;
-       int i;
+       unsigned int i;
 
        if (mode == FILSYM) {
 #ifdef S_IFLNK
@@ -481,13 +467,13 @@ getn(s)
        r = strtol(s, &p, 10);
 
        if (errno != 0)
-         fatalError("%s: out of range\n", s);
+         error_msg_and_die("%s: out of range", s);
 
        while (isspace(*p))
          p++;
        
        if (*p)
-         fatalError("%s: bad number\n", s);
+         error_msg_and_die("%s: bad number", s);
 
        return (int) r;
 }
@@ -535,7 +521,7 @@ char *path;
 int mode;
 {
        struct stat st;
-       int euid = geteuid();
+       unsigned int euid = geteuid();
 
        if (stat (path, &st) < 0)
                return (-1);
@@ -566,9 +552,7 @@ static void
 initialize_group_array ()
 {
        ngroups = getgroups(0, NULL);
-       if ((group_array = realloc(group_array, ngroups * sizeof(gid_t))) == NULL)
-               fatalError("Out of space\n");
-
+       group_array = xrealloc(group_array, ngroups * sizeof(gid_t));
        getgroups(ngroups, group_array);
 }