Hi, Stop constructing the optstring passed to ksh_getopt() for ulimit at runtime. While here remove ifdef RLIMIT_VMEM block since it's not defined.
Comments? OK? Index: c_ulimit.c =================================================================== RCS file: /cvs/src/bin/ksh/c_ulimit.c,v retrieving revision 1.24 diff -u -p -r1.24 c_ulimit.c --- c_ulimit.c 14 Dec 2015 13:59:42 -0000 1.24 +++ c_ulimit.c 14 Jan 2018 16:12:33 -0000 @@ -53,27 +53,14 @@ 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]; + static 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) {