summaryrefslogtreecommitdiff
path: root/system/pdksh/patches/001_upstream-readonly-vars.patch
diff options
context:
space:
mode:
Diffstat (limited to 'system/pdksh/patches/001_upstream-readonly-vars.patch')
-rw-r--r--system/pdksh/patches/001_upstream-readonly-vars.patch172
1 files changed, 0 insertions, 172 deletions
diff --git a/system/pdksh/patches/001_upstream-readonly-vars.patch b/system/pdksh/patches/001_upstream-readonly-vars.patch
deleted file mode 100644
index 616a5102d9..0000000000
--- a/system/pdksh/patches/001_upstream-readonly-vars.patch
+++ /dev/null
@@ -1,172 +0,0 @@
- * Applied patch from upstream ftp site to fix problem with readonly
- variables (closes: #57727).
-Index: pdksh-5.2.14/jobs.c
-===================================================================
---- pdksh-5.2.14.orig/jobs.c 2008-04-15 20:47:52.000000000 +0200
-+++ pdksh-5.2.14/jobs.c 2008-04-15 20:48:46.000000000 +0200
-@@ -219,8 +219,7 @@
- static void check_job ARGS((Job *j));
- static void put_job ARGS((Job *j, int where));
- static void remove_job ARGS((Job *j, const char *where));
--static void kill_job ARGS((Job *j));
--static void fill_command ARGS((char *c, int len, struct op *t));
-+static int kill_job ARGS((Job *j, int sig));
-
- /* initialize job control */
- void
-@@ -294,10 +293,17 @@
- && procpid == kshpid)))))
- {
- killed = 1;
-- killpg(j->pgrp, SIGHUP);
-+ if (j->pgrp == 0)
-+ kill_job(j, SIGHUP);
-+ else
-+ killpg(j->pgrp, SIGHUP);
- #ifdef JOBS
-- if (j->state == PSTOPPED)
-- killpg(j->pgrp, SIGCONT);
-+ if (j->state == PSTOPPED) {
-+ if (j->pgrp == 0)
-+ kill_job(j, SIGCONT);
-+ else
-+ killpg(j->pgrp, SIGCONT);
-+ }
- #endif /* JOBS */
- }
- }
-@@ -497,7 +503,7 @@
- put_job(j, PJ_PAST_STOPPED);
- }
-
-- fill_command(p->command, sizeof(p->command), t);
-+ snptreef(p->command, sizeof(p->command), "%T", t);
-
- /* create child process */
- forksleep = 1;
-@@ -508,7 +514,7 @@
- forksleep <<= 1;
- }
- if (i < 0) {
-- kill_job(j);
-+ kill_job(j, SIGKILL);
- remove_job(j, "fork failed");
- #ifdef NEED_PGRP_SYNC
- if (j_sync_open) {
-@@ -823,11 +829,10 @@
- }
-
- if (j->pgrp == 0) { /* started when !Flag(FMONITOR) */
-- for (p=j->proc_list; p != (Proc *) 0; p = p->next)
-- if (kill(p->pid, sig) < 0) {
-- bi_errorf("%s: %s", cp, strerror(errno));
-- rv = 1;
-- }
-+ if (kill_job(j, sig) < 0) {
-+ bi_errorf("%s: %s", cp, strerror(errno));
-+ rv = 1;
-+ }
- } else {
- #ifdef JOBS
- if (j->state == PSTOPPED && (sig == SIGTERM || sig == SIGHUP))
-@@ -1825,50 +1830,17 @@
- *
- * If jobs are compiled in then this routine expects sigchld to be blocked.
- */
--static void
--kill_job(j)
-+static int
-+kill_job(j, sig)
- Job *j;
-+ int sig;
- {
- Proc *p;
-+ int rval = 0;
-
- for (p = j->proc_list; p != (Proc *) 0; p = p->next)
- if (p->pid != 0)
-- (void) kill(p->pid, SIGKILL);
--}
--
--/* put a more useful name on a process than snptreef does (in certain cases) */
--static void
--fill_command(c, len, t)
-- char *c;
-- int len;
-- struct op *t;
--{
-- int alen;
-- char **ap;
--
-- if (t->type == TEXEC || t->type == TCOM) {
-- /* Causes problems when set -u is in effect, can also
-- cause problems when array indices evaluated (may have
-- side effects, eg, assignment, incr, etc.)
-- if (t->type == TCOM)
-- ap = eval(t->args, DOBLANK|DONTRUNCOMMAND);
-- else
-- */
-- ap = t->args;
-- --len; /* save room for the null */
-- while (len > 0 && *ap != (char *) 0) {
-- alen = strlen(*ap);
-- if (alen > len)
-- alen = len;
-- memcpy(c, *ap, alen);
-- c += alen;
-- len -= alen;
-- if (len > 0) {
-- *c++ = ' '; len--;
-- }
-- ap++;
-- }
-- *c = '\0';
-- } else
-- snptreef(c, len, "%T", t);
-+ if (kill(p->pid, sig) < 0)
-+ rval = -1;
-+ return rval;
- }
-Index: pdksh-5.2.14/shf.c
-===================================================================
---- pdksh-5.2.14.orig/shf.c 2008-04-15 20:47:52.000000000 +0200
-+++ pdksh-5.2.14/shf.c 2008-04-15 20:48:46.000000000 +0200
-@@ -355,7 +355,6 @@
- shf->rp = nbuf + (shf->rp - shf->buf);
- shf->wp = nbuf + (shf->wp - shf->buf);
- shf->rbsize += shf->wbsize;
-- shf->wbsize += shf->wbsize;
- shf->wnleft += shf->wbsize;
- shf->wbsize *= 2;
- shf->buf = nbuf;
-Index: pdksh-5.2.14/var.c
-===================================================================
---- pdksh-5.2.14.orig/var.c 2008-04-15 20:47:52.000000000 +0200
-+++ pdksh-5.2.14/var.c 2008-04-15 20:48:46.000000000 +0200
-@@ -353,7 +353,9 @@
- const char *s;
- int error_ok;
- {
-- if (vq->flag & RDONLY) {
-+ int no_ro_check = error_ok & 0x4;
-+ error_ok &= ~0x4;
-+ if ((vq->flag & RDONLY) && !no_ro_check) {
- warningf(TRUE, "%s: is read only", vq->name);
- if (!error_ok)
- errorf(null);
-@@ -715,13 +717,13 @@
- if (val != NULL) {
- if (vp->flag&INTEGER) {
- /* do not zero base before assignment */
-- setstr(vp, val, KSH_UNWIND_ERROR);
-+ setstr(vp, val, KSH_UNWIND_ERROR | 0x4);
- /* Done after assignment to override default */
- if (base > 0)
- vp->type = base;
- } else
- /* setstr can't fail (readonly check already done) */
-- setstr(vp, val, KSH_RETURN_ERROR);
-+ setstr(vp, val, KSH_RETURN_ERROR | 0x4);
- }
-
- /* only x[0] is ever exported, so use vpbase */