mirror of
https://github.com/sheumann/hush.git
synced 2024-08-15 02:29:00 +00:00
Upstream commit 1: Date: Fri, 23 Aug 2013 21:27:42 +1000 [VAR] Initialise OPTIND after importing environment On Sat, Mar 23, 2013 at 01:46:20AM +0000, Chris F.A. Johnson wrote: > According to both the dash man page and the POSIX spec, "When the > shell is invoked, OPTIND is initialized to 1." > > However, it actually takes the value of the environment variable > if it exists: > > $ OPTIND=4 dash -c 'echo "$OPTIND"' > 4 > $ OPTIND=4 bash -c 'echo "$OPTIND"' > 1 > $ OPTIND=4 ksh -c 'echo "$OPTIND"' > 1 > $ OPTIND=4 ksh93 -c 'echo "$OPTIND"' > 1 This patch fixes this by initialising OPTIND after importing the environment. Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> Upstream commit 2: Date: Tue, 7 Oct 2014 22:24:42 +0800 [VAR] Use setvareq to set OPTIND initially There is no need to setvarint to set the initial value of OPTIND of one. This patch switchs to setvareq which also lets us avoid an unnecessary memory allocation. Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
54 lines
1.2 KiB
C
54 lines
1.2 KiB
C
/* vi: set sw=4 ts=4: */
|
|
/*
|
|
* Adapted from ash applet code
|
|
*
|
|
* This code is derived from software contributed to Berkeley by
|
|
* Kenneth Almquist.
|
|
*
|
|
* Copyright (c) 1989, 1991, 1993, 1994
|
|
* The Regents of the University of California. All rights reserved.
|
|
*
|
|
* Copyright (c) 1997-2005 Herbert Xu <herbert@gondor.apana.org.au>
|
|
* was re-ported from NetBSD and debianized.
|
|
*
|
|
* Copyright (c) 2010 Denys Vlasenko
|
|
* Split from ash.c
|
|
*
|
|
* Licensed under GPLv2 or later, see file LICENSE in this source tree.
|
|
*/
|
|
#ifndef SHELL_COMMON_H
|
|
#define SHELL_COMMON_H 1
|
|
|
|
PUSH_AND_SET_FUNCTION_VISIBILITY_TO_HIDDEN
|
|
|
|
extern const char defifsvar[] ALIGN1; /* "IFS= \t\n" */
|
|
#define defifs (defifsvar + 4)
|
|
|
|
extern const char defoptindvar[] ALIGN1; /* "OPTIND=1" */
|
|
|
|
int FAST_FUNC is_well_formed_var_name(const char *s, char terminator);
|
|
|
|
/* Builtins */
|
|
|
|
enum {
|
|
BUILTIN_READ_SILENT = 1 << 0,
|
|
BUILTIN_READ_RAW = 1 << 1,
|
|
};
|
|
const char* FAST_FUNC
|
|
shell_builtin_read(void FAST_FUNC (*setvar)(const char *name, const char *val),
|
|
char **argv,
|
|
const char *ifs,
|
|
int read_flags,
|
|
const char *opt_n,
|
|
const char *opt_p,
|
|
const char *opt_t,
|
|
const char *opt_u
|
|
);
|
|
|
|
int FAST_FUNC
|
|
shell_builtin_ulimit(char **argv);
|
|
|
|
POP_SAVED_FUNCTION_VISIBILITY
|
|
|
|
#endif
|