summaryrefslogtreecommitdiff
path: root/source/ap/ash/patches/ash-getopt.patch
diff options
context:
space:
mode:
Diffstat (limited to 'source/ap/ash/patches/ash-getopt.patch')
-rw-r--r--source/ap/ash/patches/ash-getopt.patch198
1 files changed, 0 insertions, 198 deletions
diff --git a/source/ap/ash/patches/ash-getopt.patch b/source/ap/ash/patches/ash-getopt.patch
deleted file mode 100644
index df88ba0d..00000000
--- a/source/ap/ash/patches/ash-getopt.patch
+++ /dev/null
@@ -1,198 +0,0 @@
-diff -urN netbsd-sh/options.c ash-0.3.7.orig/options.c
---- netbsd-sh/options.c Fri Jul 9 13:02:07 1999
-+++ ash-0.3.7.orig/options.c Mon Apr 23 22:16:46 2001
-@@ -79,7 +79,7 @@
- STATIC void options __P((int));
- STATIC void minus_o __P((char *, int));
- STATIC void setoption __P((int, int));
--STATIC int getopts __P((char *, char *, char **, char ***, char **));
-+STATIC int getopts __P((char *, char *, char **, int *, int *));
-
-
- /*
-@@ -118,7 +118,8 @@
- arg0 = *argptr++;
-
- shellparam.p = argptr;
-- shellparam.reset = 1;
-+ shellparam.optind = 1;
-+ shellparam.optoff = -1;
- /* assert(shellparam.malloc == 0 && shellparam.nparam == 0); */
- while (*argptr) {
- shellparam.nparam++;
-@@ -282,7 +283,8 @@
- shellparam.malloc = 1;
- shellparam.nparam = nparam;
- shellparam.p = newparam;
-- shellparam.optnext = NULL;
-+ shellparam.optind = 1;
-+ shellparam.optoff = -1;
- }
-
-
-@@ -330,7 +332,8 @@
- }
- ap2 = shellparam.p;
- while ((*ap2++ = *ap1++) != NULL);
-- shellparam.optnext = NULL;
-+ shellparam.optind = 1;
-+ shellparam.optoff = -1;
- INTON;
- return 0;
- }
-@@ -363,10 +366,8 @@
- getoptsreset(value)
- const char *value;
- {
-- if (number(value) == 1) {
-- shellparam.optnext = NULL;
-- shellparam.reset = 1;
-- }
-+ shellparam.optind = number(value);
-+ shellparam.optoff = -1;
- }
-
- /*
-@@ -385,50 +386,58 @@
-
- if (argc < 3)
- error("Usage: getopts optstring var [arg]");
-- else if (argc == 3)
-+ else if (argc == 3) {
- optbase = shellparam.p;
-- else
-+ if (shellparam.optind > shellparam.nparam + 1) {
-+ shellparam.optind = 1;
-+ shellparam.optoff = -1;
-+ }
-+ }
-+ else {
- optbase = &argv[3];
--
-- if (shellparam.reset == 1) {
-- shellparam.optnext = optbase;
-- shellparam.optptr = NULL;
-- shellparam.reset = 0;
-+ if (shellparam.optind > argc - 2) {
-+ shellparam.optind = 1;
-+ shellparam.optoff = -1;
-+ }
- }
-
-- return getopts(argv[1], argv[2], optbase, &shellparam.optnext,
-- &shellparam.optptr);
-+ return getopts(argv[1], argv[2], optbase, &shellparam.optind,
-+ &shellparam.optoff);
- }
-
- STATIC int
--getopts(optstr, optvar, optfirst, optnext, optpptr)
-+getopts(optstr, optvar, optfirst, optind, optoff)
- char *optstr;
- char *optvar;
- char **optfirst;
-- char ***optnext;
-- char **optpptr;
-+ int *optind;
-+ int *optoff;
- {
- char *p, *q;
- char c = '?';
- int done = 0;
-- int ind = 0;
- int err = 0;
- char s[10];
-+ char **optnext = optfirst + *optind - 1;
-
-- if ((p = *optpptr) == NULL || *p == '\0') {
-+ if (*optind <= 1 || *optoff < 0 || !(*(optnext - 1)) ||
-+ strlen(*(optnext - 1)) < *optoff)
-+ p = NULL;
-+ else
-+ p = *(optnext - 1) + *optoff;
-+ if (p == NULL || *p == '\0') {
- /* Current word is done, advance */
-- if (*optnext == NULL)
-+ if (optnext == NULL)
- return 1;
-- p = **optnext;
-+ p = *optnext;
- if (p == NULL || *p != '-' || *++p == '\0') {
- atend:
-- ind = *optnext - optfirst + 1;
-- *optnext = NULL;
-+ *optind = optnext - optfirst + 1;
- p = NULL;
- done = 1;
- goto out;
- }
-- (*optnext)++;
-+ optnext++;
- if (p[0] == '-' && p[1] == '\0') /* check for "--" */
- goto atend;
- }
-@@ -453,7 +462,7 @@
- }
-
- if (*++q == ':') {
-- if (*p == '\0' && (p = **optnext) == NULL) {
-+ if (*p == '\0' && (p = *optnext) == NULL) {
- if (optstr[0] == ':') {
- s[0] = c;
- s[1] = '\0';
-@@ -468,30 +477,29 @@
- goto bad;
- }
-
-- if (p == **optnext)
-- (*optnext)++;
-+ if (p == *optnext)
-+ optnext++;
- setvarsafe("OPTARG", p, 0);
- p = NULL;
- }
- else
- setvarsafe("OPTARG", "", 0);
-- ind = *optnext - optfirst + 1;
-+ *optind = optnext - optfirst + 1;
- goto out;
-
- bad:
-- ind = 1;
-- *optnext = NULL;
-+ *optind = 1;
- p = NULL;
- out:
-- *optpptr = p;
-- fmtstr(s, sizeof(s), "%d", ind);
-+ *optoff = p ? p - *(optnext - 1) : -1;
-+ fmtstr(s, sizeof(s), "%d", *optind);
- err |= setvarsafe("OPTIND", s, VNOFUNC);
- s[0] = c;
- s[1] = '\0';
- err |= setvarsafe(optvar, s, 0);
- if (err) {
-- *optnext = NULL;
-- *optpptr = NULL;
-+ *optind = 1;
-+ *optoff = -1;
- flushall();
- exraise(EXERROR);
- }
-diff -urN netbsd-sh/options.h ash-0.3.7.orig/options.h
---- netbsd-sh/options.h Fri Jul 9 13:02:07 1999
-+++ ash-0.3.7.orig/options.h Mon Apr 23 22:16:46 2001
-@@ -41,10 +41,9 @@
- struct shparam {
- int nparam; /* # of positional parameters (without $0) */
- unsigned char malloc; /* if parameter list dynamically allocated */
-- unsigned char reset; /* if getopts has been reset */
- char **p; /* parameter list */
-- char **optnext; /* next parameter to be processed by getopts */
-- char *optptr; /* used by getopts */
-+ int optind; /* next parameter to be processed by getopts */
-+ int optoff; /* used by getopts */
- };
-
-
-