[2567553] | 1 | Submitted By: Joe Ciccone <jciccone@gmail.com>
|
---|
| 2 | Date: 2008-11-08
|
---|
| 3 | Origin: Busybox FTP
|
---|
| 4 | Initial Package Version: 1.12.1
|
---|
| 5 | Upstream Status: From Upstream
|
---|
| 6 | Descriprion: Apply fixes from upstream
|
---|
| 7 | busybox-1.12.1-basename.patch
|
---|
| 8 | busybox-1.12.1-grep.patch
|
---|
| 9 | busybox-1.12.1-lineedit.patch
|
---|
| 10 | busybox-1.12.1-login.patch
|
---|
| 11 | busybox-1.12.1-modprobe.patch
|
---|
| 12 | busybox-1.12.1-standalone.patch
|
---|
| 13 | busybox-1.12.1-vi.patch
|
---|
| 14 |
|
---|
| 15 | diff -Naur busybox-1.12.1.orig/coreutils/basename.c busybox-1.12.1/coreutils/basename.c
|
---|
| 16 | --- busybox-1.12.1.orig/coreutils/basename.c 2008-09-28 14:04:18.000000000 -0400
|
---|
| 17 | +++ busybox-1.12.1/coreutils/basename.c 2008-11-08 09:49:16.000000000 -0500
|
---|
| 18 | @@ -48,5 +48,5 @@
|
---|
| 19 |
|
---|
| 20 | /* puts(s) will do, but we can do without stdio this way: */
|
---|
| 21 | s[m++] = '\n';
|
---|
| 22 | - return full_write(STDOUT_FILENO, s, m) == (ssize_t)m;
|
---|
| 23 | + return full_write(STDOUT_FILENO, s, m) != (ssize_t)m;
|
---|
| 24 | }
|
---|
| 25 | diff -Naur busybox-1.12.1.orig/coreutils/env.c busybox-1.12.1/coreutils/env.c
|
---|
| 26 | --- busybox-1.12.1.orig/coreutils/env.c 2008-09-28 14:04:18.000000000 -0400
|
---|
| 27 | +++ busybox-1.12.1/coreutils/env.c 2008-11-08 09:49:16.000000000 -0500
|
---|
| 28 | @@ -29,6 +29,8 @@
|
---|
| 29 | * - use xfunc_error_retval
|
---|
| 30 | */
|
---|
| 31 |
|
---|
| 32 | +/* This is a NOEXEC applet. Be very careful! */
|
---|
| 33 | +
|
---|
| 34 | #include "libbb.h"
|
---|
| 35 |
|
---|
| 36 | #if ENABLE_FEATURE_ENV_LONG_OPTIONS
|
---|
| 37 | @@ -119,5 +121,3 @@
|
---|
| 38 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
---|
| 39 | * SUCH DAMAGE.
|
---|
| 40 | */
|
---|
| 41 | -
|
---|
| 42 | -
|
---|
| 43 | diff -Naur busybox-1.12.1.orig/editors/vi.c busybox-1.12.1/editors/vi.c
|
---|
| 44 | --- busybox-1.12.1.orig/editors/vi.c 2008-09-28 14:04:29.000000000 -0400
|
---|
| 45 | +++ busybox-1.12.1/editors/vi.c 2008-11-08 09:49:16.000000000 -0500
|
---|
| 46 | @@ -291,6 +291,8 @@
|
---|
| 47 | #define INIT_G() do { \
|
---|
| 48 | SET_PTR_TO_GLOBALS(xzalloc(sizeof(G))); \
|
---|
| 49 | last_file_modified = -1; \
|
---|
| 50 | + /* "" but has space for 2 chars */ \
|
---|
| 51 | + USE_FEATURE_VI_SEARCH(last_search_pattern = xzalloc(2);) \
|
---|
| 52 | } while (0)
|
---|
| 53 |
|
---|
| 54 |
|
---|
| 55 | @@ -2974,7 +2976,7 @@
|
---|
| 56 | const char *msg = msg; // for compiler
|
---|
| 57 | char c1, *p, *q, *save_dot;
|
---|
| 58 | char buf[12];
|
---|
| 59 | - int dir = dir; // for compiler
|
---|
| 60 | + int dir;
|
---|
| 61 | int cnt, i, j;
|
---|
| 62 |
|
---|
| 63 | // c1 = c; // quiet the compiler
|
---|
| 64 | @@ -3316,7 +3318,7 @@
|
---|
| 65 | q = get_input_line(buf); // get input line- use "status line"
|
---|
| 66 | if (q[0] && !q[1]) {
|
---|
| 67 | if (last_search_pattern[0])
|
---|
| 68 | - last_search_pattern[0] = c;
|
---|
| 69 | + last_search_pattern[0] = c;
|
---|
| 70 | goto dc3; // if no pat re-use old pat
|
---|
| 71 | }
|
---|
| 72 | if (q[0]) { // strlen(q) > 1: new pat- save it and find
|
---|
| 73 | @@ -3346,14 +3348,8 @@
|
---|
| 74 | do_cmd(c);
|
---|
| 75 | } // repeat cnt
|
---|
| 76 | dc3:
|
---|
| 77 | - if (last_search_pattern == 0) {
|
---|
| 78 | - msg = "No previous regular expression";
|
---|
| 79 | - goto dc2;
|
---|
| 80 | - }
|
---|
| 81 | - if (last_search_pattern[0] == '/') {
|
---|
| 82 | - dir = FORWARD; // assume FORWARD search
|
---|
| 83 | - p = dot + 1;
|
---|
| 84 | - }
|
---|
| 85 | + dir = FORWARD; // assume FORWARD search
|
---|
| 86 | + p = dot + 1;
|
---|
| 87 | if (last_search_pattern[0] == '?') {
|
---|
| 88 | dir = BACK;
|
---|
| 89 | p = dot - 1;
|
---|
| 90 | diff -Naur busybox-1.12.1.orig/findutils/grep.c busybox-1.12.1/findutils/grep.c
|
---|
| 91 | --- busybox-1.12.1.orig/findutils/grep.c 2008-09-28 14:04:28.000000000 -0400
|
---|
| 92 | +++ busybox-1.12.1/findutils/grep.c 2008-11-08 09:49:16.000000000 -0500
|
---|
| 93 | @@ -363,12 +363,22 @@
|
---|
| 94 | * (unless -v: -Fov doesnt print anything at all) */
|
---|
| 95 | if (found)
|
---|
| 96 | print_line(gl->pattern, strlen(gl->pattern), linenum, ':');
|
---|
| 97 | - } else {
|
---|
| 98 | + } else while (1) {
|
---|
| 99 | + char old = line[gl->matched_range.rm_eo];
|
---|
| 100 | line[gl->matched_range.rm_eo] = '\0';
|
---|
| 101 | print_line(line + gl->matched_range.rm_so,
|
---|
| 102 | gl->matched_range.rm_eo - gl->matched_range.rm_so,
|
---|
| 103 | linenum, ':');
|
---|
| 104 | - }
|
---|
| 105 | + line[gl->matched_range.rm_eo] = old;
|
---|
| 106 | +#if !ENABLE_EXTRA_COMPAT
|
---|
| 107 | + break;
|
---|
| 108 | +#else
|
---|
| 109 | + if (re_search(&gl->compiled_regex, line, line_len,
|
---|
| 110 | + gl->matched_range.rm_eo, line_len - gl->matched_range.rm_eo,
|
---|
| 111 | + &gl->matched_range) < 0)
|
---|
| 112 | + break;
|
---|
| 113 | +#endif
|
---|
| 114 | + }
|
---|
| 115 | } else {
|
---|
| 116 | print_line(line, line_len, linenum, ':');
|
---|
| 117 | }
|
---|
| 118 | diff -Naur busybox-1.12.1.orig/include/applets.h busybox-1.12.1/include/applets.h
|
---|
| 119 | --- busybox-1.12.1.orig/include/applets.h 2008-09-28 14:04:26.000000000 -0400
|
---|
| 120 | +++ busybox-1.12.1/include/applets.h 2008-11-08 09:49:16.000000000 -0500
|
---|
| 121 | @@ -136,7 +136,7 @@
|
---|
| 122 | USE_ED(APPLET(ed, _BB_DIR_BIN, _BB_SUID_NEVER))
|
---|
| 123 | USE_FEATURE_GREP_EGREP_ALIAS(APPLET_ODDNAME(egrep, grep, _BB_DIR_BIN, _BB_SUID_NEVER, egrep))
|
---|
| 124 | USE_EJECT(APPLET(eject, _BB_DIR_USR_BIN, _BB_SUID_NEVER))
|
---|
| 125 | -USE_ENV(APPLET(env, _BB_DIR_USR_BIN, _BB_SUID_NEVER))
|
---|
| 126 | +USE_ENV(APPLET_NOEXEC(env, env, _BB_DIR_USR_BIN, _BB_SUID_NEVER, env))
|
---|
| 127 | USE_ENVDIR(APPLET_ODDNAME(envdir, chpst, _BB_DIR_USR_BIN, _BB_SUID_NEVER, envdir))
|
---|
| 128 | USE_ENVUIDGID(APPLET_ODDNAME(envuidgid, chpst, _BB_DIR_USR_BIN, _BB_SUID_NEVER, envuidgid))
|
---|
| 129 | USE_ETHER_WAKE(APPLET_ODDNAME(ether-wake, ether_wake, _BB_DIR_USR_BIN, _BB_SUID_NEVER, ether_wake))
|
---|
| 130 | @@ -171,7 +171,7 @@
|
---|
| 131 | USE_GUNZIP(APPLET(gunzip, _BB_DIR_BIN, _BB_SUID_NEVER))
|
---|
| 132 | USE_GZIP(APPLET(gzip, _BB_DIR_BIN, _BB_SUID_NEVER))
|
---|
| 133 | USE_HALT(APPLET(halt, _BB_DIR_SBIN, _BB_SUID_NEVER))
|
---|
| 134 | -USE_HD(APPLET_ODDNAME(hd, hexdump, _BB_DIR_USR_BIN, _BB_SUID_NEVER, hd))
|
---|
| 135 | +USE_HD(APPLET_NOEXEC(hd, hexdump, _BB_DIR_USR_BIN, _BB_SUID_NEVER, hd))
|
---|
| 136 | USE_HDPARM(APPLET(hdparm, _BB_DIR_SBIN, _BB_SUID_NEVER))
|
---|
| 137 | USE_HEAD(APPLET(head, _BB_DIR_USR_BIN, _BB_SUID_NEVER))
|
---|
| 138 | USE_HEXDUMP(APPLET_NOEXEC(hexdump, hexdump, _BB_DIR_USR_BIN, _BB_SUID_NEVER, hexdump))
|
---|
| 139 | diff -Naur busybox-1.12.1.orig/libbb/getopt32.c busybox-1.12.1/libbb/getopt32.c
|
---|
| 140 | --- busybox-1.12.1.orig/libbb/getopt32.c 2008-09-28 14:04:20.000000000 -0400
|
---|
| 141 | +++ busybox-1.12.1/libbb/getopt32.c 2008-11-08 09:49:16.000000000 -0500
|
---|
| 142 | @@ -515,28 +515,6 @@
|
---|
| 143 | }
|
---|
| 144 | }
|
---|
| 145 |
|
---|
| 146 | - /* In case getopt32 was already called:
|
---|
| 147 | - * reset the libc getopt() function, which keeps internal state.
|
---|
| 148 | - *
|
---|
| 149 | - * BSD-derived getopt() functions require that optind be set to 1 in
|
---|
| 150 | - * order to reset getopt() state. This used to be generally accepted
|
---|
| 151 | - * way of resetting getopt(). However, glibc's getopt()
|
---|
| 152 | - * has additional getopt() state beyond optind, and requires that
|
---|
| 153 | - * optind be set to zero to reset its state. So the unfortunate state of
|
---|
| 154 | - * affairs is that BSD-derived versions of getopt() misbehave if
|
---|
| 155 | - * optind is set to 0 in order to reset getopt(), and glibc's getopt()
|
---|
| 156 | - * will core dump if optind is set 1 in order to reset getopt().
|
---|
| 157 | - *
|
---|
| 158 | - * More modern versions of BSD require that optreset be set to 1 in
|
---|
| 159 | - * order to reset getopt(). Sigh. Standards, anyone?
|
---|
| 160 | - */
|
---|
| 161 | -#ifdef __GLIBC__
|
---|
| 162 | - optind = 0;
|
---|
| 163 | -#else /* BSD style */
|
---|
| 164 | - optind = 1;
|
---|
| 165 | - /* optreset = 1; */
|
---|
| 166 | -#endif
|
---|
| 167 | - /* optarg = NULL; opterr = 0; optopt = 0; - do we need this?? */
|
---|
| 168 | pargv = NULL;
|
---|
| 169 |
|
---|
| 170 | /* Note: just "getopt() <= 0" will not work well for
|
---|
| 171 | diff -Naur busybox-1.12.1.orig/libbb/lineedit.c busybox-1.12.1/libbb/lineedit.c
|
---|
| 172 | --- busybox-1.12.1.orig/libbb/lineedit.c 2008-09-28 14:04:20.000000000 -0400
|
---|
| 173 | +++ busybox-1.12.1/libbb/lineedit.c 2008-11-08 09:49:16.000000000 -0500
|
---|
| 174 | @@ -1415,7 +1415,8 @@
|
---|
| 175 | if ((state->flags & SAVE_HISTORY) && state->hist_file)
|
---|
| 176 | load_history(state->hist_file);
|
---|
| 177 | #endif
|
---|
| 178 | - state->cur_history = state->cnt_history;
|
---|
| 179 | + if (state->flags & DO_HISTORY)
|
---|
| 180 | + state->cur_history = state->cnt_history;
|
---|
| 181 |
|
---|
| 182 | /* prepare before init handlers */
|
---|
| 183 | cmdedit_y = 0; /* quasireal y, not true if line > xt*yt */
|
---|
| 184 | diff -Naur busybox-1.12.1.orig/libbb/setup_environment.c busybox-1.12.1/libbb/setup_environment.c
|
---|
| 185 | --- busybox-1.12.1.orig/libbb/setup_environment.c 2008-09-28 14:04:20.000000000 -0400
|
---|
| 186 | +++ busybox-1.12.1/libbb/setup_environment.c 2008-11-08 09:49:16.000000000 -0500
|
---|
| 187 | @@ -32,16 +32,16 @@
|
---|
| 188 |
|
---|
| 189 | void FAST_FUNC setup_environment(const char *shell, int clear_env, int change_env, const struct passwd *pw)
|
---|
| 190 | {
|
---|
| 191 | + /* Change the current working directory to be the home directory
|
---|
| 192 | + * of the user */
|
---|
| 193 | + if (chdir(pw->pw_dir)) {
|
---|
| 194 | + xchdir("/");
|
---|
| 195 | + bb_error_msg("can't chdir to home directory '%s'", pw->pw_dir);
|
---|
| 196 | + }
|
---|
| 197 | +
|
---|
| 198 | if (clear_env) {
|
---|
| 199 | const char *term;
|
---|
| 200 |
|
---|
| 201 | - /* Change the current working directory to be the home directory
|
---|
| 202 | - * of the user */
|
---|
| 203 | - if (chdir(pw->pw_dir)) {
|
---|
| 204 | - xchdir("/");
|
---|
| 205 | - bb_error_msg("can't chdir to home directory '%s'", pw->pw_dir);
|
---|
| 206 | - }
|
---|
| 207 | -
|
---|
| 208 | /* Leave TERM unchanged. Set HOME, SHELL, USER, LOGNAME, PATH.
|
---|
| 209 | Unset all other environment variables. */
|
---|
| 210 | term = getenv("TERM");
|
---|
| 211 | diff -Naur busybox-1.12.1.orig/libbb/vfork_daemon_rexec.c busybox-1.12.1/libbb/vfork_daemon_rexec.c
|
---|
| 212 | --- busybox-1.12.1.orig/libbb/vfork_daemon_rexec.c 2008-09-28 14:04:20.000000000 -0400
|
---|
| 213 | +++ busybox-1.12.1/libbb/vfork_daemon_rexec.c 2008-11-08 09:49:16.000000000 -0500
|
---|
| 214 | @@ -125,6 +125,7 @@
|
---|
| 215 | int rc, argc;
|
---|
| 216 |
|
---|
| 217 | applet_name = APPLET_NAME(applet_no);
|
---|
| 218 | +
|
---|
| 219 | xfunc_error_retval = EXIT_FAILURE;
|
---|
| 220 |
|
---|
| 221 | /* Special flag for xfunc_die(). If xfunc will "die"
|
---|
| 222 | @@ -132,7 +133,30 @@
|
---|
| 223 | * die_sleep and longjmp here instead. */
|
---|
| 224 | die_sleep = -1;
|
---|
| 225 |
|
---|
| 226 | - /* option_mask32 = 0; - not needed */
|
---|
| 227 | + /* In case getopt() or getopt32() was already called:
|
---|
| 228 | + * reset the libc getopt() function, which keeps internal state.
|
---|
| 229 | + *
|
---|
| 230 | + * BSD-derived getopt() functions require that optind be set to 1 in
|
---|
| 231 | + * order to reset getopt() state. This used to be generally accepted
|
---|
| 232 | + * way of resetting getopt(). However, glibc's getopt()
|
---|
| 233 | + * has additional getopt() state beyond optind, and requires that
|
---|
| 234 | + * optind be set to zero to reset its state. So the unfortunate state of
|
---|
| 235 | + * affairs is that BSD-derived versions of getopt() misbehave if
|
---|
| 236 | + * optind is set to 0 in order to reset getopt(), and glibc's getopt()
|
---|
| 237 | + * will core dump if optind is set 1 in order to reset getopt().
|
---|
| 238 | + *
|
---|
| 239 | + * More modern versions of BSD require that optreset be set to 1 in
|
---|
| 240 | + * order to reset getopt(). Sigh. Standards, anyone?
|
---|
| 241 | + */
|
---|
| 242 | +#ifdef __GLIBC__
|
---|
| 243 | + optind = 0;
|
---|
| 244 | +#else /* BSD style */
|
---|
| 245 | + optind = 1;
|
---|
| 246 | + /* optreset = 1; */
|
---|
| 247 | +#endif
|
---|
| 248 | + /* optarg = NULL; opterr = 1; optopt = 63; - do we need this too? */
|
---|
| 249 | + /* (values above are what they initialized to in glibc and uclibc) */
|
---|
| 250 | + /* option_mask32 = 0; - not needed, no applet depends on it being 0 */
|
---|
| 251 |
|
---|
| 252 | argc = 1;
|
---|
| 253 | while (argv[argc])
|
---|
| 254 | @@ -161,8 +185,16 @@
|
---|
| 255 | rc = 0;
|
---|
| 256 | }
|
---|
| 257 |
|
---|
| 258 | - /* Restoring globals */
|
---|
| 259 | + /* Restoring some globals */
|
---|
| 260 | restore_nofork_data(old);
|
---|
| 261 | +
|
---|
| 262 | + /* Other globals can be simply reset to defaults */
|
---|
| 263 | +#ifdef __GLIBC__
|
---|
| 264 | + optind = 0;
|
---|
| 265 | +#else /* BSD style */
|
---|
| 266 | + optind = 1;
|
---|
| 267 | +#endif
|
---|
| 268 | +
|
---|
| 269 | return rc & 0xff; /* don't confuse people with "exitcodes" >255 */
|
---|
| 270 | }
|
---|
| 271 |
|
---|
| 272 | diff -Naur busybox-1.12.1.orig/modutils/modprobe.c busybox-1.12.1/modutils/modprobe.c
|
---|
| 273 | --- busybox-1.12.1.orig/modutils/modprobe.c 2008-09-28 14:04:15.000000000 -0400
|
---|
| 274 | +++ busybox-1.12.1/modutils/modprobe.c 2008-11-08 09:49:16.000000000 -0500
|
---|
| 275 | @@ -263,9 +263,9 @@
|
---|
| 276 | return TRUE;
|
---|
| 277 | }
|
---|
| 278 |
|
---|
| 279 | -static int include_conf_recursive(struct include_conf_t *conf, const char *filename)
|
---|
| 280 | +static int include_conf_recursive(struct include_conf_t *conf, const char *filename, int flags)
|
---|
| 281 | {
|
---|
| 282 | - return recursive_action(filename, ACTION_RECURSE,
|
---|
| 283 | + return recursive_action(filename, ACTION_RECURSE | flags,
|
---|
| 284 | include_conf_file_act,
|
---|
| 285 | include_conf_dir_act,
|
---|
| 286 | conf, 1);
|
---|
| 287 | @@ -362,7 +362,7 @@
|
---|
| 288 | char *includefile;
|
---|
| 289 |
|
---|
| 290 | includefile = skip_whitespace(line_buffer + 8);
|
---|
| 291 | - include_conf_recursive(conf, includefile);
|
---|
| 292 | + include_conf_recursive(conf, includefile, 0);
|
---|
| 293 | } else if (ENABLE_FEATURE_MODPROBE_BLACKLIST &&
|
---|
| 294 | (is_conf_command(line_buffer, "blacklist"))) {
|
---|
| 295 | char *mod;
|
---|
| 296 | @@ -559,7 +559,7 @@
|
---|
| 297 | if (ENABLE_FEATURE_2_6_MODULES) {
|
---|
| 298 | if (include_conf_file(&conf, "/etc/modprobe.conf"))
|
---|
| 299 | r = TRUE;
|
---|
| 300 | - if (include_conf_recursive(&conf, "/etc/modprobe.d"))
|
---|
| 301 | + if (include_conf_recursive(&conf, "/etc/modprobe.d", ACTION_QUIET))
|
---|
| 302 | r = TRUE;
|
---|
| 303 | }
|
---|
| 304 | if (ENABLE_FEATURE_2_4_MODULES && !r)
|
---|
| 305 | diff -Naur busybox-1.12.1.orig/shell/ash.c busybox-1.12.1/shell/ash.c
|
---|
| 306 | --- busybox-1.12.1.orig/shell/ash.c 2008-09-28 14:04:18.000000000 -0400
|
---|
| 307 | +++ busybox-1.12.1/shell/ash.c 2008-11-08 09:49:16.000000000 -0500
|
---|
| 308 | @@ -6964,8 +6964,11 @@
|
---|
| 309 |
|
---|
| 310 | #if ENABLE_FEATURE_SH_STANDALONE
|
---|
| 311 | if (applet_no >= 0) {
|
---|
| 312 | - if (APPLET_IS_NOEXEC(applet_no))
|
---|
| 313 | + if (APPLET_IS_NOEXEC(applet_no)) {
|
---|
| 314 | + while (*envp)
|
---|
| 315 | + putenv(*envp++);
|
---|
| 316 | run_applet_no_and_exit(applet_no, argv);
|
---|
| 317 | + }
|
---|
| 318 | /* re-exec ourselves with the new arguments */
|
---|
| 319 | execve(bb_busybox_exec_path, argv, envp);
|
---|
| 320 | /* If they called chroot or otherwise made the binary no longer
|
---|
| 321 | @@ -12014,7 +12017,7 @@
|
---|
| 322 | char *name;
|
---|
| 323 | const char *p;
|
---|
| 324 | char **aptr;
|
---|
| 325 | - int flag = argv[0][0] == 'r'? VREADONLY : VEXPORT;
|
---|
| 326 | + int flag = argv[0][0] == 'r' ? VREADONLY : VEXPORT;
|
---|
| 327 |
|
---|
| 328 | if (nextopt("p") != 'p') {
|
---|
| 329 | aptr = argptr;
|
---|
| 330 | diff -Naur busybox-1.12.1.orig/util-linux/getopt.c busybox-1.12.1/util-linux/getopt.c
|
---|
| 331 | --- busybox-1.12.1.orig/util-linux/getopt.c 2008-09-28 14:04:30.000000000 -0400
|
---|
| 332 | +++ busybox-1.12.1/util-linux/getopt.c 2008-11-08 09:49:16.000000000 -0500
|
---|
| 333 | @@ -142,7 +142,8 @@
|
---|
| 334 | * Other settings are found in global variables.
|
---|
| 335 | */
|
---|
| 336 | #if !ENABLE_GETOPT_LONG
|
---|
| 337 | -#define generate_output(argv,argc,optstr,longopts) generate_output(argv,argc,optstr)
|
---|
| 338 | +#define generate_output(argv,argc,optstr,longopts) \
|
---|
| 339 | + generate_output(argv,argc,optstr)
|
---|
| 340 | #endif
|
---|
| 341 | static int generate_output(char **argv, int argc, const char *optstr, const struct option *longopts)
|
---|
| 342 | {
|
---|
| 343 | @@ -156,14 +157,6 @@
|
---|
| 344 | if (quiet_errors) /* No error reporting from getopt(3) */
|
---|
| 345 | opterr = 0;
|
---|
| 346 |
|
---|
| 347 | - /* Reset getopt(3) (see libbb/getopt32.c for long rant) */
|
---|
| 348 | -#ifdef __GLIBC__
|
---|
| 349 | - optind = 0;
|
---|
| 350 | -#else /* BSD style */
|
---|
| 351 | - optind = 1;
|
---|
| 352 | - /* optreset = 1; */
|
---|
| 353 | -#endif
|
---|
| 354 | -
|
---|
| 355 | while (1) {
|
---|
| 356 | opt =
|
---|
| 357 | #if ENABLE_GETOPT_LONG
|
---|