On Fri, May 13, 2011 at 03:08:36AM +0400, Vadim Zhukov wrote:
> Hello all.
> 
> This diff removes NELEM() definitions in favour of nitems(). Not sure
> about bin/ksh/ part, but sys/i386/i386/est.c is obviously a leftover.
> 
> There are more NELEM() items in tree, but they belong to foreign stuff
> and therefore should not be touched, as far as I understand.
> 
> -- 
>   Best wishes,
>     Vadim Zhukov
> 
> A: Because it messes up the order in which people normally read text.
> Q: Why is top-posting such a bad thing?
> A: Top-posting.
> Q: What is the most annoying thing in e-mail?

the est.c diff is correct (and has been committed), but the ksh part isn't. we
don't want userland to use nitems() yet.

> Index: sys/arch/i386/i386/est.c
> ===================================================================
> RCS file: /cvs/src/sys/arch/i386/i386/est.c,v
> retrieving revision 1.36
> diff -u -p -r1.36 est.c
> --- sys/arch/i386/i386/est.c  5 Jul 2010 22:47:41 -0000       1.36
> +++ sys/arch/i386/i386/est.c  12 May 2011 23:03:48 -0000
> @@ -862,10 +862,8 @@ struct fqlist {
>       struct est_op *table;
>  };
>  
> -#define NELEM(x) (sizeof(x) / sizeof((x)[0]))
> -
>  #define ENTRY(ven, bus_clk, tab) \
> -     { CPUVENDOR_##ven, bus_clk == BUS133 ? 1 : 0, NELEM(tab), tab }
> +     { CPUVENDOR_##ven, bus_clk == BUS133 ? 1 : 0, nitems(tab), tab }
>  
>  #define BUS_CLK(fqp) ((fqp)->bus_clk ? BUS133 : BUS100)
>  
> @@ -1082,7 +1080,7 @@ est_init(const char *cpu_device, int ven
>               /*
>                * Find an entry which matches (vendor, bus_clock, idhi, idlo)
>                */
> -             for (i = 0; i < NELEM(est_cpus); i++) {
> +             for (i = 0; i < nitems(est_cpus); i++) {
>                       fql = &est_cpus[i];
>                       if (vendor == fql->vendor && bus_clock == BUS_CLK(fql)
>                           && idhi == fql->table[0].ctrl
> Index: bin/ksh/c_ulimit.c
> ===================================================================
> RCS file: /cvs/src/bin/ksh/c_ulimit.c,v
> retrieving revision 1.17
> diff -u -p -r1.17 c_ulimit.c
> --- bin/ksh/c_ulimit.c        21 Mar 2008 12:51:19 -0000      1.17
> +++ bin/ksh/c_ulimit.c        12 May 2011 23:03:48 -0000
> @@ -53,7 +53,7 @@ c_ulimit(char **wp)
>  #endif /* RLIMIT_VMEM */
>               { (char *) 0 }
>       };
> -     static char     options[4 + NELEM(limits) * 2];
> +     static char     options[4 + nitems(limits) * 2];
>       int             how = SOFT | HARD;
>       const struct limits     *l;
>       int             optc, all = 0;
> Index: bin/ksh/edit.c
> ===================================================================
> RCS file: /cvs/src/bin/ksh/edit.c,v
> retrieving revision 1.34
> diff -u -p -r1.34 edit.c
> --- bin/ksh/edit.c    20 May 2010 01:13:07 -0000      1.34
> +++ bin/ksh/edit.c    12 May 2011 23:03:48 -0000
> @@ -223,7 +223,7 @@ set_editmode(const char *ed)
>  
>       if ((rcp = strrchr(ed, '/')))
>               ed = ++rcp;
> -     for (i = 0; i < NELEM(edit_flags); i++)
> +     for (i = 0; i < nitems(edit_flags); i++)
>               if (strstr(ed, options[(int) edit_flags[i]].name)) {
>                       change_flag(edit_flags[i], OF_SPECIAL, 1);
>                       return;
> Index: bin/ksh/emacs.c
> ===================================================================
> RCS file: /cvs/src/bin/ksh/emacs.c,v
> retrieving revision 1.43
> diff -u -p -r1.43 emacs.c
> --- bin/ksh/emacs.c   14 Mar 2011 21:20:01 -0000      1.43
> +++ bin/ksh/emacs.c   12 May 2011 23:03:49 -0000
> @@ -1312,7 +1312,7 @@ x_bind( const char *a1, const char *a2,
>  
>       /* List function names */
>       if (list) {
> -             for (f = 0; f < NELEM(x_ftab); f++)
> +             for (f = 0; f < nitems(x_ftab); f++)
>                       if (x_ftab[f].xf_name &&
>                           !(x_ftab[f].xf_flags & XF_NOBIND))
>                               shprintf("%s\n", x_ftab[f].xf_name);
> @@ -1352,11 +1352,11 @@ x_bind( const char *a1, const char *a2,
>       if (*a2 == 0)
>               f = XFUNC_insert;
>       else if (!macro) {
> -             for (f = 0; f < NELEM(x_ftab); f++)
> +             for (f = 0; f < nitems(x_ftab); f++)
>                       if (x_ftab[f].xf_name &&
>                           strcmp(x_ftab[f].xf_name, a2) == 0)
>                               break;
> -             if (f == NELEM(x_ftab) || x_ftab[f].xf_flags & XF_NOBIND) {
> +             if (f == nitems(x_ftab) || x_ftab[f].xf_flags & XF_NOBIND) {
>                       bi_errorf("%s: no such function", a2);
>                       return 1;
>               }
> @@ -1402,7 +1402,7 @@ x_init_emacs(void)
>       for (i = 1; i < X_NTABS; i++)
>               for (j = 0; j < X_TABSZ; j++)
>                       x_tab[i][j] = XFUNC_error;
> -     for (i = 0; i < NELEM(x_defbindings); i++)
> +     for (i = 0; i < nitems(x_defbindings); i++)
>               x_tab[(unsigned char)x_defbindings[i].xdb_tab]
> [x_defbindings[i].xdb_char]
>                   = x_defbindings[i].xdb_func;
>  
> Index: bin/ksh/jobs.c
> ===================================================================
> RCS file: /cvs/src/bin/ksh/jobs.c,v
> retrieving revision 1.39
> diff -u -p -r1.39 jobs.c
> --- bin/ksh/jobs.c    13 Dec 2009 04:36:48 -0000      1.39
> +++ bin/ksh/jobs.c    12 May 2011 23:03:49 -0000
> @@ -169,7 +169,7 @@ j_init(int mflagset)
>               /* the TF_SHELL_USES test is a kludge that lets us know if
>                * if the signals have been changed by the shell.
>                */
> -             for (i = NELEM(tt_sigs); --i >= 0; ) {
> +             for (i = nitems(tt_sigs); --i >= 0; ) {
>                       sigtraps[tt_sigs[i]].flags |= TF_SHELL_USES;
>                       /* j_change() sets this to SS_RESTORE_DFL if FMONITOR */
>                       setsig(&sigtraps[tt_sigs[i]], SIG_IGN,
> @@ -282,7 +282,7 @@ j_change(void)
>                               kill(0, SIGTTIN);
>                       }
>               }
> -             for (i = NELEM(tt_sigs); --i >= 0; )
> +             for (i = nitems(tt_sigs); --i >= 0; )
>                       setsig(&sigtraps[tt_sigs[i]], SIG_IGN,
>                           SS_RESTORE_DFL|SS_FORCE);
>               if (ttypgrp_ok && our_pgrp != kshpid) {
> @@ -311,11 +311,11 @@ j_change(void)
>       } else {
>               ttypgrp_ok = 0;
>               if (Flag(FTALKING))
> -                     for (i = NELEM(tt_sigs); --i >= 0; )
> +                     for (i = nitems(tt_sigs); --i >= 0; )
>                               setsig(&sigtraps[tt_sigs[i]], SIG_IGN,
>                                   SS_RESTORE_IGN|SS_FORCE);
>               else
> -                     for (i = NELEM(tt_sigs); --i >= 0; ) {
> +                     for (i = nitems(tt_sigs); --i >= 0; ) {
>                               if (sigtraps[tt_sigs[i]].flags &
>                                   (TF_ORIG_IGN | TF_ORIG_DFL))
>                                       setsig(&sigtraps[tt_sigs[i]],
> @@ -449,7 +449,7 @@ exchild(struct op *t, int flags, volatil
>                * their inherited values.
>                */
>               if (Flag(FMONITOR) && !(flags & XXCOM)) {
> -                     for (i = NELEM(tt_sigs); --i >= 0; )
> +                     for (i = nitems(tt_sigs); --i >= 0; )
>                               setsig(&sigtraps[tt_sigs[i]], SIG_DFL,
>                                   SS_RESTORE_DFL|SS_FORCE);
>               }
> Index: bin/ksh/misc.c
> ===================================================================
> RCS file: /cvs/src/bin/ksh/misc.c,v
> retrieving revision 1.37
> diff -u -p -r1.37 misc.c
> --- bin/ksh/misc.c    19 Apr 2009 20:34:05 -0000      1.37
> +++ bin/ksh/misc.c    12 May 2011 23:03:49 -0000
> @@ -179,7 +179,7 @@ option(const char *n)
>  {
>       int i;
>  
> -     for (i = 0; i < NELEM(options); i++)
> +     for (i = 0; i < nitems(options); i++)
>               if (options[i].name && strcmp(options[i].name, n) == 0)
>                       return i;
>  
> @@ -191,7 +191,7 @@ struct options_info {
>       struct {
>               const char *name;
>               int     flag;
> -     } opts[NELEM(options)];
> +     } opts[nitems(options)];
>  };
>  
>  static char *options_fmt_entry(void *arg, int i, char *buf, int buflen);
> @@ -221,7 +221,7 @@ printoptions(int verbose)
>               /* verbose version */
>               shprintf("Current option settings\n");
>  
> -             for (i = n = oi.opt_width = 0; i < NELEM(options); i++)
> +             for (i = n = oi.opt_width = 0; i < nitems(options); i++)
>                       if (options[i].name) {
>                               len = strlen(options[i].name);
>                               oi.opts[n].name = options[i].name;
> @@ -234,7 +234,7 @@ printoptions(int verbose)
>       } else {
>               /* short version ala ksh93 */
>               shprintf("set");
> -             for (i = 0; i < NELEM(options); i++)
> +             for (i = 0; i < nitems(options); i++)
>                       if (Flag(i) && options[i].name)
>                               shprintf(" -o %s", options[i].name);
>               shprintf(newline);
> @@ -248,7 +248,7 @@ getoptions(void)
>       char m[(int) FNFLAGS + 1];
>       char *cp = m;
>  
> -     for (i = 0; i < NELEM(options); i++)
> +     for (i = 0; i < nitems(options); i++)
>               if (options[i].c && Flag(i))
>                       *cp++ = options[i].c;
>       *cp = 0;
> @@ -320,8 +320,8 @@ parse_args(char **argv,
>      int what,                        /* OF_CMDLINE or OF_SET */
>      int *setargsp)
>  {
> -     static char cmd_opts[NELEM(options) + 3]; /* o:\0 */
> -     static char set_opts[NELEM(options) + 5]; /* Ao;s\0 */
> +     static char cmd_opts[nitems(options) + 3]; /* o:\0 */
> +     static char set_opts[nitems(options) + 5]; /* Ao;s\0 */
>       char *opts;
>       char *array = (char *) 0;
>       Getopt go;
> @@ -337,7 +337,7 @@ parse_args(char **argv,
>               /* see set_opts[] declaration */
>               strlcpy(set_opts, "A:o;s", sizeof set_opts);
>               q = set_opts + strlen(set_opts);
> -             for (i = 0; i < NELEM(options); i++) {
> +             for (i = 0; i < nitems(options); i++) {
>                       if (options[i].c) {
>                               if (options[i].flags & OF_CMDLINE)
>                                       *p++ = options[i].c;
> @@ -404,14 +404,14 @@ parse_args(char **argv,
>                               sortargs = 1;
>                               break;
>                       }
> -                     for (i = 0; i < NELEM(options); i++)
> +                     for (i = 0; i < nitems(options); i++)
>                               if (optc == options[i].c &&
>                                   (what & options[i].flags)) {
>                                       change_flag((enum sh_flag) i, what,
>                                           set);
>                                       break;
>                               }
> -                     if (i == NELEM(options)) {
> +                     if (i == nitems(options)) {
>                               internal_errorf(1, "parse_args: `%c'", optc);
>                               return -1; /* not reached */
>                       }
> Index: bin/ksh/sh.h
> ===================================================================
> RCS file: /cvs/src/bin/ksh/sh.h,v
> retrieving revision 1.30
> diff -u -p -r1.30 sh.h
> --- bin/ksh/sh.h      4 Jan 2010 18:07:11 -0000       1.30
> +++ bin/ksh/sh.h      12 May 2011 23:03:49 -0000
> @@ -12,6 +12,7 @@
>  
>  #include <stdio.h>
>  #include <sys/types.h>
> +#include <sys/param.h>
>  #include <setjmp.h>
>  #include <stdbool.h>
>  #include <stddef.h>
> @@ -48,7 +49,6 @@
>  #define EXECSHELL    _PATH_BSHELL
>  #define EXECSHELL_STR        "EXECSHELL"
>  
> -#define      NELEM(a) (sizeof(a) / sizeof((a)[0]))
>  #define      sizeofN(type, n) (sizeof(type) * (n))
>  #define      BIT(i)  (1<<(i))        /* define bit in flag */
> 

-- 
Cheers,
Jasper

"Capable, generous men do not create victims, they nurture them."

Reply via email to