Stop constructing the ulimit optstring passed to ksh_getopt() at runtime since
authoranton <anton@openbsd.org>
Tue, 16 Jan 2018 20:40:43 +0000 (20:40 +0000)
committeranton <anton@openbsd.org>
Tue, 16 Jan 2018 20:40:43 +0000 (20:40 +0000)
it's rarely subject to change. While here, unifdef RLIMIT_VMEM.

ok jca@

bin/ksh/c_ulimit.c

index e44c480..e8f9c20 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: c_ulimit.c,v 1.24 2015/12/14 13:59:42 tb Exp $        */
+/*     $OpenBSD: c_ulimit.c,v 1.25 2018/01/16 20:40:43 anton Exp $     */
 
 /*
        ulimit -- handle "ulimit" builtin
@@ -53,27 +53,13 @@ c_ulimit(char **wp)
                { "memory(kbytes)", RLIMIT_RSS, 1024, 'm' },
                { "nofiles(descriptors)", RLIMIT_NOFILE, 1, 'n' },
                { "processes", RLIMIT_NPROC, 1, 'p' },
-#ifdef RLIMIT_VMEM
-               { "vmemory(kbytes)", RLIMIT_VMEM, 1024, 'v' },
-#endif /* RLIMIT_VMEM */
                { NULL }
        };
-       static char     options[4 + NELEM(limits) * 2];
+       const char      *options = "HSat#f#c#d#s#l#m#n#p#";
        int             how = SOFT | HARD;
        const struct limits     *l;
        int             optc, all = 0;
 
-       if (!options[0]) {
-               /* build options string on first call - yuck */
-               char *p = options;
-
-               *p++ = 'H'; *p++ = 'S'; *p++ = 'a';
-               for (l = limits; l->name; l++) {
-                       *p++ = l->option;
-                       *p++ = '#';
-               }
-               *p = '\0';
-       }
        /* First check for -a, -H and -S. */
        while ((optc = ksh_getopt(wp, &builtin_opt, options)) != -1)
                switch (optc) {