/* vi: set sw=4 ts=4: */
/*
- * echo implementation for busybox
+ * test implementation for busybox
*
* Copyright (c) by a whole pile of folks:
*
* "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>
+#include "busybox.h"
+#define BB_DECLARE_EXTERN
+#define bb_need_help
+#include "messages.c"
/* test(1) accepts the following grammar:
oexpr ::= aexpr | aexpr "-o" oexpr ;
{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;
{
int res;
- if (strcmp(argv[0], "[") == 0) {
+ if (strcmp(applet_name, "[") == 0) {
if (strcmp(argv[--argc], "]"))
- fatalError("missing ]");
+ error_msg_and_die("missing ]");
argv[argc] = NULL;
}
-
/* Implement special cases from POSIX.2, section 4.62.4 */
switch (argc) {
case 1:
if (*t_wp != NULL && *++t_wp != NULL)
syntax(*t_wp, "unknown operand");
- exit( res);
+ return( res);
}
static void
char *msg;
{
if (op && *op)
- fatalError("%s: %s", op, msg);
+ error_msg_and_die("%s: %s", op, msg);
else
- fatalError("%s", msg);
+ error_msg_and_die("%s", msg);
}
static int
enum token mode;
{
struct stat s;
- int i;
+ unsigned int i;
if (mode == FILSYM) {
#ifdef S_IFLNK
r = strtol(s, &p, 10);
if (errno != 0)
- fatalError("%s: out of range", s);
+ error_msg_and_die("%s: out of range", s);
while (isspace(*p))
p++;
if (*p)
- fatalError("%s: bad number", s);
+ error_msg_and_die("%s: bad number", s);
return (int) r;
}
int mode;
{
struct stat st;
- int euid = geteuid();
+ unsigned int euid = geteuid();
if (stat (path, &st) < 0)
return (-1);
initialize_group_array ()
{
ngroups = getgroups(0, NULL);
- if ((group_array = realloc(group_array, ngroups * sizeof(gid_t))) == NULL)
- fatalError("Out of space");
-
+ group_array = xrealloc(group_array, ngroups * sizeof(gid_t));
getgroups(ngroups, group_array);
}