T_USER used in the kernel, included by <sys/param.h> -- change to
authorKeith Bostic <bostic@ucbvax.Berkeley.EDU>
Fri, 24 May 1991 09:53:30 +0000 (01:53 -0800)
committerKeith Bostic <bostic@ucbvax.Berkeley.EDU>
Fri, 24 May 1991 09:53:30 +0000 (01:53 -0800)
be N_ instead.  Make it an enum while we're there...

SCCS-vsn: usr.bin/find/option.c 5.6
SCCS-vsn: usr.bin/find/find.h 5.7
SCCS-vsn: usr.bin/find/function.c 5.15
SCCS-vsn: usr.bin/find/operator.c 5.3

usr/src/usr.bin/find/find.h
usr/src/usr.bin/find/function.c
usr/src/usr.bin/find/operator.c
usr/src/usr.bin/find/option.c

index 40f5fe5..712e058 100644 (file)
@@ -7,15 +7,24 @@
  *
  * %sccs.include.redist.c%
  *
  *
  * %sccs.include.redist.c%
  *
- *     @(#)find.h      5.6 (Berkeley) %G%
+ *     @(#)find.h      5.7 (Berkeley) %G%
  */
 
  */
 
+/* node type */
+enum ntype {
+       N_AND = 1,                              /* must start > 0 */
+       N_ATIME, N_CLOSEPAREN, N_CTIME, N_DEPTH, N_EXEC, N_EXPR, N_FOLLOW,
+       N_FSTYPE, N_GROUP, N_INUM, N_LINKS, N_LS, N_MTIME, N_NAME, N_NEWER,
+       N_NOGROUP, N_NOT, N_NOUSER, N_OK, N_OPENPAREN, N_OR, N_PERM, N_PRINT,
+       N_PRUNE, N_SIZE, N_TYPE, N_USER, N_XDEV,
+};
+
 /* node definition */
 typedef struct _plandata {
        struct _plandata *next;                 /* next node */
        int (*eval)();                          /* node evaluation function */
        int flags;                              /* private flags */
 /* node definition */
 typedef struct _plandata {
        struct _plandata *next;                 /* next node */
        int (*eval)();                          /* node evaluation function */
        int flags;                              /* private flags */
-       int type;                               /* plan node type */
+       enum ntype type;                        /* plan node type */
        union {
                gid_t _g_data;                  /* gid */
                ino_t _i_data;                  /* inode */
        union {
                gid_t _g_data;                  /* gid */
                ino_t _i_data;                  /* inode */
@@ -48,37 +57,6 @@ typedef struct _plandata {
 #define        e_len   p_un.ex._e_len
 } PLAN;
 
 #define        e_len   p_un.ex._e_len
 } PLAN;
 
-/* node types */
-#define        T_AND           1               /* must start at >0 */
-#define        T_ATIME         2
-#define        T_CLOSEPAREN    3
-#define        T_CTIME         4
-#define        T_DEPTH         5
-#define        T_EXEC          6
-#define        T_EXPR          7
-#define        T_FOLLOW        8
-#define        T_FSTYPE        9
-#define        T_GROUP         10
-#define        T_INUM          11
-#define        T_LINKS         12
-#define        T_LS            13
-#define        T_MTIME         14
-#define        T_NAME          15
-#define        T_NEWER         16
-#define        T_NOGROUP       17
-#define        T_NOT           18
-#define        T_NOUSER        19
-#define        T_OK            20
-#define        T_OPENPAREN     21
-#define        T_OR            22
-#define        T_PERM          23
-#define        T_PRINT         24
-#define        T_PRUNE         25
-#define        T_SIZE          26
-#define        T_TYPE          27
-#define        T_USER          28
-#define        T_XDEV          29
-
 #define        error(name, number) \
        (void)fprintf(stderr, "find: %s: %s\n", name, strerror(number));
 
 #define        error(name, number) \
        (void)fprintf(stderr, "find: %s: %s\n", name, strerror(number));
 
index e9b8cb9..ae8e932 100644 (file)
@@ -9,7 +9,7 @@
  */
 
 #ifndef lint
  */
 
 #ifndef lint
-static char sccsid[] = "@(#)function.c 5.14 (Berkeley) %G%";
+static char sccsid[] = "@(#)function.c 5.15 (Berkeley) %G%";
 #endif /* not lint */
 
 #include <sys/param.h>
 #endif /* not lint */
 
 #include <sys/param.h>
@@ -118,7 +118,7 @@ c_atime(arg)
 
        ftsoptions &= ~FTS_NOSTAT;
 
 
        ftsoptions &= ~FTS_NOSTAT;
 
-       NEW(T_ATIME, f_atime);
+       NEW(N_ATIME, f_atime);
        new->t_data = find_parsenum(new, "-atime", arg, (char *)NULL);
        return(new);
 }
        new->t_data = find_parsenum(new, "-atime", arg, (char *)NULL);
        return(new);
 }
@@ -146,7 +146,7 @@ c_ctime(arg)
 
        ftsoptions &= ~FTS_NOSTAT;
 
 
        ftsoptions &= ~FTS_NOSTAT;
 
-       NEW(T_CTIME, f_ctime);
+       NEW(N_CTIME, f_ctime);
        new->t_data = find_parsenum(new, "-ctime", arg, (char *)NULL);
        return(new);
 }
        new->t_data = find_parsenum(new, "-ctime", arg, (char *)NULL);
        return(new);
 }
@@ -173,7 +173,7 @@ c_depth()
     
        isdepth = 1;
 
     
        isdepth = 1;
 
-       NEW(T_DEPTH, f_always_true);
+       NEW(N_DEPTH, f_always_true);
        return(new);
 }
  
        return(new);
 }
  
@@ -242,7 +242,7 @@ c_exec(argvp, isok)
                ftsoptions |= FTS_NOCHDIR;
        isoutput = 1;
     
                ftsoptions |= FTS_NOCHDIR;
        isoutput = 1;
     
-       NEW(T_EXEC, f_exec);
+       NEW(N_EXEC, f_exec);
        new->flags = isok;
 
        for (ap = argv = *argvp;; ++ap) {
        new->flags = isok;
 
        for (ap = argv = *argvp;; ++ap) {
@@ -290,7 +290,7 @@ c_follow()
        ftsoptions &= ~FTS_PHYSICAL;
        ftsoptions |= FTS_LOGICAL;
 
        ftsoptions &= ~FTS_PHYSICAL;
        ftsoptions |= FTS_LOGICAL;
 
-       NEW(T_FOLLOW, f_always_true);
+       NEW(N_FOLLOW, f_always_true);
        return(new);
 }
  
        return(new);
 }
  
@@ -356,7 +356,7 @@ c_fstype(arg)
     
        ftsoptions &= ~FTS_NOSTAT;
     
     
        ftsoptions &= ~FTS_NOSTAT;
     
-       NEW(T_FSTYPE, f_fstype);
+       NEW(N_FSTYPE, f_fstype);
        switch(*arg) {
        case 'l':
                if (!strcmp(arg, "local")) {
        switch(*arg) {
        case 'l':
                if (!strcmp(arg, "local")) {
@@ -427,7 +427,7 @@ c_group(gname)
        } else
                gid = g->gr_gid;
     
        } else
                gid = g->gr_gid;
     
-       NEW(T_GROUP, f_group);
+       NEW(N_GROUP, f_group);
        new->g_data = gid;
        return(new);
 }
        new->g_data = gid;
        return(new);
 }
@@ -452,7 +452,7 @@ c_inum(arg)
     
        ftsoptions &= ~FTS_NOSTAT;
     
     
        ftsoptions &= ~FTS_NOSTAT;
     
-       NEW(T_INUM, f_inum);
+       NEW(N_INUM, f_inum);
        new->i_data = find_parsenum(new, "-inum", arg, (char *)NULL);
        return(new);
 }
        new->i_data = find_parsenum(new, "-inum", arg, (char *)NULL);
        return(new);
 }
@@ -477,7 +477,7 @@ c_links(arg)
     
        ftsoptions &= ~FTS_NOSTAT;
     
     
        ftsoptions &= ~FTS_NOSTAT;
     
-       NEW(T_LINKS, f_links);
+       NEW(N_LINKS, f_links);
        new->l_data = (nlink_t)find_parsenum(new, "-links", arg, (char *)NULL);
        return(new);
 }
        new->l_data = (nlink_t)find_parsenum(new, "-links", arg, (char *)NULL);
        return(new);
 }
@@ -506,7 +506,7 @@ c_ls()
        ftsoptions &= ~FTS_NOSTAT;
        isoutput = 1;
     
        ftsoptions &= ~FTS_NOSTAT;
        isoutput = 1;
     
-       NEW(T_LS, f_ls);
+       NEW(N_LS, f_ls);
        return(new);
 }
 
        return(new);
 }
 
@@ -529,7 +529,7 @@ c_name(pattern)
 {
        PLAN *new;
 
 {
        PLAN *new;
 
-       NEW(T_NAME, f_name);
+       NEW(N_NAME, f_name);
        new->c_data = pattern;
        return(new);
 }
        new->c_data = pattern;
        return(new);
 }
@@ -561,7 +561,7 @@ c_newer(filename)
                error(filename, errno);
                exit(1);
        }
                error(filename, errno);
                exit(1);
        }
-       NEW(T_NEWER, f_newer);
+       NEW(N_NEWER, f_newer);
        new->t_data = sb.st_mtime;
        return(new);
 }
        new->t_data = sb.st_mtime;
        return(new);
 }
@@ -589,7 +589,7 @@ c_nogroup()
     
        ftsoptions &= ~FTS_NOSTAT;
 
     
        ftsoptions &= ~FTS_NOSTAT;
 
-       NEW(T_NOGROUP, f_nogroup);
+       NEW(N_NOGROUP, f_nogroup);
        return(new);
 }
  
        return(new);
 }
  
@@ -616,7 +616,7 @@ c_nouser()
     
        ftsoptions &= ~FTS_NOSTAT;
 
     
        ftsoptions &= ~FTS_NOSTAT;
 
-       NEW(T_NOUSER, f_nouser);
+       NEW(N_NOUSER, f_nouser);
        return(new);
 }
  
        return(new);
 }
  
@@ -652,7 +652,7 @@ c_perm(perm)
 
        ftsoptions &= ~FTS_NOSTAT;
 
 
        ftsoptions &= ~FTS_NOSTAT;
 
-       NEW(T_PERM, f_perm);
+       NEW(N_PERM, f_perm);
 
        if (*perm == '-') {
                new->flags = 1;
 
        if (*perm == '-') {
                new->flags = 1;
@@ -688,7 +688,7 @@ c_print()
     
        isoutput = 1;
 
     
        isoutput = 1;
 
-       NEW(T_PRINT, f_print);
+       NEW(N_PRINT, f_print);
        return(new);
 }
  
        return(new);
 }
  
@@ -716,7 +716,7 @@ c_prune()
 {
        PLAN *new;
 
 {
        PLAN *new;
 
-       NEW(T_PRUNE, f_prune);
+       NEW(N_PRUNE, f_prune);
        return(new);
 }
  
        return(new);
 }
  
@@ -750,7 +750,7 @@ c_size(arg)
     
        ftsoptions &= ~FTS_NOSTAT;
 
     
        ftsoptions &= ~FTS_NOSTAT;
 
-       NEW(T_SIZE, f_size);
+       NEW(N_SIZE, f_size);
        new->o_data = find_parsenum(new, "-size", arg, &endch);
        if (endch == 'c')
                divsize = 0;
        new->o_data = find_parsenum(new, "-size", arg, &endch);
        if (endch == 'c')
                divsize = 0;
@@ -807,7 +807,7 @@ c_type(typestring)
                bad_arg("-type", "unknown type");
        }
     
                bad_arg("-type", "unknown type");
        }
     
-       NEW(T_TYPE, f_type);
+       NEW(N_TYPE, f_type);
        new->m_data = mask;
        return(new);
 }
        new->m_data = mask;
        return(new);
 }
@@ -845,7 +845,7 @@ c_user(username)
        } else
                uid = p->pw_uid;
 
        } else
                uid = p->pw_uid;
 
-       NEW(T_USER, f_user);
+       NEW(N_USER, f_user);
        new->u_data = uid;
        return(new);
 }
        new->u_data = uid;
        return(new);
 }
@@ -863,7 +863,7 @@ c_xdev()
     
        ftsoptions |= FTS_XDEV;
 
     
        ftsoptions |= FTS_XDEV;
 
-       NEW(T_XDEV, f_always_true);
+       NEW(N_XDEV, f_always_true);
        return(new);
 }
 
        return(new);
 }
 
@@ -885,16 +885,16 @@ f_expr(plan, entry)
 }
  
 /*
 }
  
 /*
- * T_OPENPAREN and T_CLOSEPAREN nodes are temporary place markers.  They are
+ * N_OPENPAREN and N_CLOSEPAREN nodes are temporary place markers.  They are
  * eliminated during phase 2 of find_formplan() --- the '(' node is converted
  * eliminated during phase 2 of find_formplan() --- the '(' node is converted
- * to a T_EXPR node containing the expression and the ')' node is discarded.
+ * to a N_EXPR node containing the expression and the ')' node is discarded.
  */
 PLAN *
 c_openparen()
 {
        PLAN *new;
 
  */
 PLAN *
 c_openparen()
 {
        PLAN *new;
 
-       NEW(T_OPENPAREN, (int (*)())-1);
+       NEW(N_OPENPAREN, (int (*)())-1);
        return(new);
 }
  
        return(new);
 }
  
@@ -903,7 +903,7 @@ c_closeparen()
 {
        PLAN *new;
 
 {
        PLAN *new;
 
-       NEW(T_CLOSEPAREN, (int (*)())-1);
+       NEW(N_CLOSEPAREN, (int (*)())-1);
        return(new);
 }
  
        return(new);
 }
  
@@ -931,7 +931,7 @@ c_mtime(arg)
 
        ftsoptions &= ~FTS_NOSTAT;
 
 
        ftsoptions &= ~FTS_NOSTAT;
 
-       NEW(T_MTIME, f_mtime);
+       NEW(N_MTIME, f_mtime);
        new->t_data = find_parsenum(new, "-mtime", arg, (char *)NULL);
        return(new);
 }
        new->t_data = find_parsenum(new, "-mtime", arg, (char *)NULL);
        return(new);
 }
@@ -958,7 +958,7 @@ c_not()
 {
        PLAN *new;
 
 {
        PLAN *new;
 
-       NEW(T_NOT, f_not);
+       NEW(N_NOT, f_not);
        return(new);
 }
  
        return(new);
 }
  
@@ -991,6 +991,6 @@ c_or()
 {
        PLAN *new;
 
 {
        PLAN *new;
 
-       NEW(T_OR, f_or);
+       NEW(N_OR, f_or);
        return(new);
 }
        return(new);
 }
index 0774b1b..1013b53 100644 (file)
@@ -9,7 +9,7 @@
  */
 
 #ifndef lint
  */
 
 #ifndef lint
-static char sccsid[] = "@(#)operator.c 5.2 (Berkeley) %G%";
+static char sccsid[] = "@(#)operator.c 5.3 (Berkeley) %G%";
 #endif /* not lint */
 
 #include <sys/types.h>
 #endif /* not lint */
 
 #include <sys/types.h>
@@ -39,7 +39,7 @@ yanknode(planp)
  * yankexpr --
  *     Removes one expression from the plan.  This is used mainly by
  *     paren_squish.  In comments below, an expression is either a
  * yankexpr --
  *     Removes one expression from the plan.  This is used mainly by
  *     paren_squish.  In comments below, an expression is either a
- *     simple node or a T_EXPR node containing a list of simple nodes.
+ *     simple node or a N_EXPR node containing a list of simple nodes.
  */
 PLAN *
 yankexpr(planp)    
  */
 PLAN *
 yankexpr(planp)    
@@ -61,22 +61,22 @@ yankexpr(planp)
         * just return it and unwind our recursion; all other nodes are
         * complete expressions, so just return them.
         */
         * just return it and unwind our recursion; all other nodes are
         * complete expressions, so just return them.
         */
-       if (node->type == T_OPENPAREN)
+       if (node->type == N_OPENPAREN)
                for (tail = subplan = NULL;;) {
                        if ((next = yankexpr(planp)) == NULL)
                                bad_arg("(", "missing closing ')'");
                        /*
                         * If we find a closing ')' we store the collected
                         * subplan in our '(' node and convert the node to
                for (tail = subplan = NULL;;) {
                        if ((next = yankexpr(planp)) == NULL)
                                bad_arg("(", "missing closing ')'");
                        /*
                         * If we find a closing ')' we store the collected
                         * subplan in our '(' node and convert the node to
-                        * a T_EXPR.  The ')' we found is ignored.  Otherwise,
+                        * a N_EXPR.  The ')' we found is ignored.  Otherwise,
                         * we just continue to add whatever we get to our
                         * subplan.
                         */
                         * we just continue to add whatever we get to our
                         * subplan.
                         */
-                       if (next->type == T_CLOSEPAREN) {
+                       if (next->type == N_CLOSEPAREN) {
                                if (subplan == NULL)
                                        bad_arg("()", "empty inner expression");
                                node->p_data[0] = subplan;
                                if (subplan == NULL)
                                        bad_arg("()", "empty inner expression");
                                node->p_data[0] = subplan;
-                               node->type = T_EXPR;
+                               node->type = N_EXPR;
                                node->eval = f_expr;
                                break;
                        } else {
                                node->eval = f_expr;
                                break;
                        } else {
@@ -115,7 +115,7 @@ paren_squish(plan)
                 * if we find an unclaimed ')' it means there is a missing
                 * '(' someplace.
                 */
                 * if we find an unclaimed ')' it means there is a missing
                 * '(' someplace.
                 */
-               if (expr->type == T_CLOSEPAREN)
+               if (expr->type == N_CLOSEPAREN)
                        bad_arg(")", "no beginning '('");
 
                /* add the expression to our result plan */
                        bad_arg(")", "no beginning '('");
 
                /* add the expression to our result plan */
@@ -139,7 +139,7 @@ not_squish(plan)
        PLAN *plan;             /* plan to process */
 {
        register PLAN *next;    /* next node being processed */
        PLAN *plan;             /* plan to process */
 {
        register PLAN *next;    /* next node being processed */
-       register PLAN *node;    /* temporary node used in T_NOT processing */
+       register PLAN *node;    /* temporary node used in N_NOT processing */
        register PLAN *tail;    /* pointer to tail of result plan */
        PLAN *result;           /* pointer to head of result plan */
     
        register PLAN *tail;    /* pointer to tail of result plan */
        PLAN *result;           /* pointer to head of result plan */
     
@@ -150,7 +150,7 @@ not_squish(plan)
                 * if we encounter a ( expression ) then look for nots in
                 * the expr subplan.
                 */
                 * if we encounter a ( expression ) then look for nots in
                 * the expr subplan.
                 */
-               if (next->type == T_EXPR)
+               if (next->type == N_EXPR)
                        next->p_data[0] = not_squish(next->p_data[0]);
 
                /*
                        next->p_data[0] = not_squish(next->p_data[0]);
 
                /*
@@ -158,17 +158,17 @@ not_squish(plan)
                 * it in the not's subplan.  As an optimization we compress
                 * several not's to zero or one not.
                 */
                 * it in the not's subplan.  As an optimization we compress
                 * several not's to zero or one not.
                 */
-               if (next->type == T_NOT) {
+               if (next->type == N_NOT) {
                        int notlevel = 1;
 
                        node = yanknode(&plan);
                        int notlevel = 1;
 
                        node = yanknode(&plan);
-                       while (node->type == T_NOT) {
+                       while (node->type == N_NOT) {
                                ++notlevel;
                                node = yanknode(&plan);
                        }
                        if (node == NULL)
                                bad_arg("!", "no following expression");
                                ++notlevel;
                                node = yanknode(&plan);
                        }
                        if (node == NULL)
                                bad_arg("!", "no following expression");
-                       if (node->type == T_OR)
+                       if (node->type == N_OR)
                                bad_arg("!", "nothing between ! and -o");
                        if (notlevel % 2 != 1)
                                next = node;
                                bad_arg("!", "nothing between ! and -o");
                        if (notlevel % 2 != 1)
                                next = node;
@@ -207,11 +207,11 @@ or_squish(plan)
                 * if we encounter a ( expression ) then look for or's in
                 * the expr subplan.
                 */
                 * if we encounter a ( expression ) then look for or's in
                 * the expr subplan.
                 */
-               if (next->type == T_EXPR)
+               if (next->type == N_EXPR)
                        next->p_data[0] = or_squish(next->p_data[0]);
 
                /* if we encounter a not then look for not's in the subplan */
                        next->p_data[0] = or_squish(next->p_data[0]);
 
                /* if we encounter a not then look for not's in the subplan */
-               if (next->type == T_NOT)
+               if (next->type == N_NOT)
                        next->p_data[0] = or_squish(next->p_data[0]);
 
                /*
                        next->p_data[0] = or_squish(next->p_data[0]);
 
                /*
@@ -219,7 +219,7 @@ or_squish(plan)
                 * or's first subplan and then recursively collect the
                 * remaining stuff into the second subplan and return the or.
                 */
                 * or's first subplan and then recursively collect the
                 * remaining stuff into the second subplan and return the or.
                 */
-               if (next->type == T_OR) {
+               if (next->type == N_OR) {
                        if (result == NULL)
                                bad_arg("-o", "no expression before -o");
                        next->p_data[0] = result;
                        if (result == NULL)
                                bad_arg("-o", "no expression before -o");
                        next->p_data[0] = result;
index c20c2ea..81b97ef 100644 (file)
@@ -9,7 +9,7 @@
  */
 
 #ifndef lint
  */
 
 #ifndef lint
-static char sccsid[] = "@(#)option.c   5.5 (Berkeley) %G%";
+static char sccsid[] = "@(#)option.c   5.6 (Berkeley) %G%";
 #endif /* not lint */
 
 #include <sys/types.h>
 #endif /* not lint */
 
 #include <sys/types.h>
@@ -22,12 +22,12 @@ static char sccsid[] = "@(#)option.c        5.5 (Berkeley) %G%";
 
 typedef struct _option {
        char *name;             /* option name */
 
 typedef struct _option {
        char *name;             /* option name */
-       int token;              /* token value */
+       enum ntype token;       /* token type */
        PLAN *(*create)();      /* create function */
 #define        O_NONE          0x01    /* no call required */
 #define        O_ZERO          0x02    /* pass: nothing */
 #define        O_ARGV          0x04    /* pass: argv, increment argv */
        PLAN *(*create)();      /* create function */
 #define        O_NONE          0x01    /* no call required */
 #define        O_ZERO          0x02    /* pass: nothing */
 #define        O_ARGV          0x04    /* pass: argv, increment argv */
-#define        O_ARGVP         0x08    /* pass: *argv, T_OK || T_EXEC */
+#define        O_ARGVP         0x08    /* pass: *argv, N_OK || N_EXEC */
 #define        O_MASK          0x0f    /* mask of op bits */
 #define        O_OLD           0x10    /* deprecated syntax */
 #define        O_NEW           0x20    /* new syntax */
 #define        O_MASK          0x0f    /* mask of op bits */
 #define        O_OLD           0x10    /* deprecated syntax */
 #define        O_NEW           0x20    /* new syntax */
@@ -42,36 +42,36 @@ PLAN        *c_atime(), *c_ctime(), *c_depth(), *c_exec(), *c_follow(),
        *c_or();
 
 OPTION options[] = {
        *c_or();
 
 OPTION options[] = {
-       "!",            T_NOT,          c_not,          O_ZERO,
-       "(",            T_OPENPAREN,    c_openparen,    O_ZERO,
-       ")",            T_CLOSEPAREN,   c_closeparen,   O_ZERO,
-       "a",            T_AND,          NULL,           O_NONE|O_OLD,
-       "and",          T_AND,          NULL,           O_NONE|O_NEW,
-       "atime",        T_ATIME,        c_atime,        O_ARGV,
-       "ctime",        T_CTIME,        c_ctime,        O_ARGV,
-       "depth",        T_DEPTH,        c_depth,        O_ZERO|O_OLD,
-       "exec",         T_EXEC,         c_exec,         O_ARGVP,
-       "follow",       T_FOLLOW,       c_follow,       O_ZERO|O_OLD,
-       "fstype",       T_FSTYPE,       c_fstype,       O_ARGV,
-       "group",        T_GROUP,        c_group,        O_ARGV,
-       "inum",         T_INUM,         c_inum,         O_ARGV,
-       "links",        T_LINKS,        c_links,        O_ARGV,
-       "ls",           T_LS,           c_ls,           O_ZERO,
-       "mtime",        T_MTIME,        c_mtime,        O_ARGV,
-       "name",         T_NAME,         c_name,         O_ARGV,
-       "newer",        T_NEWER,        c_newer,        O_ARGV,
-       "nogroup",      T_NOGROUP,      c_nogroup,      O_ZERO,
-       "nouser",       T_NOUSER,       c_nouser,       O_ZERO,
-       "o",            T_OR,           c_or,           O_ZERO|O_OLD,
-       "ok",           T_OK,           c_exec,         O_ARGVP,
-       "or",           T_OR,           c_or,           O_ZERO|O_NEW,
-       "perm",         T_PERM,         c_perm,         O_ARGV,
-       "print",        T_PRINT,        c_print,        O_ZERO,
-       "prune",        T_PRUNE,        c_prune,        O_ZERO,
-       "size",         T_SIZE,         c_size,         O_ARGV,
-       "type",         T_TYPE,         c_type,         O_ARGV,
-       "user",         T_USER,         c_user,         O_ARGV,
-       "xdev",         T_XDEV,         c_xdev,         O_ZERO|O_OLD,
+       "!",            N_NOT,          c_not,          O_ZERO,
+       "(",            N_OPENPAREN,    c_openparen,    O_ZERO,
+       ")",            N_CLOSEPAREN,   c_closeparen,   O_ZERO,
+       "a",            N_AND,          NULL,           O_NONE|O_OLD,
+       "and",          N_AND,          NULL,           O_NONE|O_NEW,
+       "atime",        N_ATIME,        c_atime,        O_ARGV,
+       "ctime",        N_CTIME,        c_ctime,        O_ARGV,
+       "depth",        N_DEPTH,        c_depth,        O_ZERO|O_OLD,
+       "exec",         N_EXEC,         c_exec,         O_ARGVP,
+       "follow",       N_FOLLOW,       c_follow,       O_ZERO|O_OLD,
+       "fstype",       N_FSTYPE,       c_fstype,       O_ARGV,
+       "group",        N_GROUP,        c_group,        O_ARGV,
+       "inum",         N_INUM,         c_inum,         O_ARGV,
+       "links",        N_LINKS,        c_links,        O_ARGV,
+       "ls",           N_LS,           c_ls,           O_ZERO,
+       "mtime",        N_MTIME,        c_mtime,        O_ARGV,
+       "name",         N_NAME,         c_name,         O_ARGV,
+       "newer",        N_NEWER,        c_newer,        O_ARGV,
+       "nogroup",      N_NOGROUP,      c_nogroup,      O_ZERO,
+       "nouser",       N_NOUSER,       c_nouser,       O_ZERO,
+       "o",            N_OR,           c_or,           O_ZERO|O_OLD,
+       "ok",           N_OK,           c_exec,         O_ARGVP,
+       "or",           N_OR,           c_or,           O_ZERO|O_NEW,
+       "perm",         N_PERM,         c_perm,         O_ARGV,
+       "print",        N_PRINT,        c_print,        O_ZERO,
+       "prune",        N_PRUNE,        c_prune,        O_ZERO,
+       "size",         N_SIZE,         c_size,         O_ARGV,
+       "type",         N_TYPE,         c_type,         O_ARGV,
+       "user",         N_USER,         c_user,         O_ARGV,
+       "xdev",         N_XDEV,         c_xdev,         O_ZERO|O_OLD,
        { NULL },
 };
 
        { NULL },
 };
 
@@ -124,7 +124,7 @@ find_create(argvp)
                new = (p->create)(*argv++);
                break;
        case O_ARGVP:
                new = (p->create)(*argv++);
                break;
        case O_ARGVP:
-               new = (p->create)(&argv, p->token == T_OK);
+               new = (p->create)(&argv, p->token == N_OK);
                break;
        }
        *argvp = argv;
                break;
        }
        *argvp = argv;