diff options
Diffstat (limited to 'source/ap/ksh93/patches/ksh-20120801-oldenvinit.patch')
-rw-r--r-- | source/ap/ksh93/patches/ksh-20120801-oldenvinit.patch | 95 |
1 files changed, 0 insertions, 95 deletions
diff --git a/source/ap/ksh93/patches/ksh-20120801-oldenvinit.patch b/source/ap/ksh93/patches/ksh-20120801-oldenvinit.patch deleted file mode 100644 index 8ee08631..00000000 --- a/source/ap/ksh93/patches/ksh-20120801-oldenvinit.patch +++ /dev/null @@ -1,95 +0,0 @@ -diff -up ksh-20120801/src/cmd/ksh93/sh/init.c.fixset ksh-20120801/src/cmd/ksh93/sh/init.c ---- ksh-20120801/src/cmd/ksh93/sh/init.c.fixset 2014-11-03 15:45:36.510997271 +0100 -+++ ksh-20120801/src/cmd/ksh93/sh/init.c 2014-11-03 16:20:44.398917280 +0100 -@@ -2003,8 +2003,91 @@ static Dt_t *inittree(Shell_t *shp,const - * skip over items that are not name-value pairs - */ - -+ - static void env_init(Shell_t *shp) - { -+ register char *cp; -+ register Namval_t *np; -+ register char **ep=environ; -+ register char *next=0; -+#ifdef _ENV_H -+ shp->env = env_open(environ,3); -+ env_delete(shp->env,"_"); -+#endif -+ if(ep) -+ { -+ while(cp= *ep++) -+ { -+ if(*cp=='A' && cp[1]=='_' && cp[2]=='_' && cp[3]=='z' && cp[4]=='=') -+ next = cp+4; -+ else if(np=nv_open(cp,shp->var_tree,(NV_EXPORT|NV_IDENT|NV_ASSIGN|NV_NOFAIL))) -+ { -+ nv_onattr(np,NV_IMPORT); -+ np->nvenv = cp; -+ nv_close(np); -+ } -+ else /* swap with front */ -+ { -+ ep[-1] = environ[shp->nenv]; -+ environ[shp->nenv++] = cp; -+ } -+ } -+ while(cp=next) -+ { -+ if(next = strchr(++cp,'=')) -+ *next = 0; -+ np = nv_search(cp+2,shp->var_tree,NV_ADD); -+ if(np!=SHLVL && nv_isattr(np,NV_IMPORT|NV_EXPORT)) -+ { -+ int flag = *(unsigned char*)cp-' '; -+ int size = *(unsigned char*)(cp+1)-' '; -+ if((flag&NV_INTEGER) && size==0) -+ { -+ /* check for floating*/ -+ char *ep,*val = nv_getval(np); -+ strtol(val,&ep,10); -+ if(*ep=='.' || *ep=='e' || *ep=='E') -+ { -+ char *lp; -+ flag |= NV_DOUBLE; -+ if(*ep=='.') -+ { -+ strtol(ep+1,&lp,10); -+ if(*lp) -+ ep = lp; -+ } -+ if(*ep && *ep!='.') -+ { -+ flag |= NV_EXPNOTE; -+ size = ep-val; -+ } -+ else -+ size = strlen(ep); -+ size--; -+ } -+ } -+ nv_newattr(np,flag|NV_IMPORT|NV_EXPORT,size); -+ } -+ else -+ cp += 2; -+ } -+ } -+#ifdef _ENV_H -+ env_delete(shp->env,e_envmarker); -+#endif -+ if(nv_isnull(PWDNOD) || nv_isattr(PWDNOD,NV_TAGGED)) -+ { -+ nv_offattr(PWDNOD,NV_TAGGED); -+ path_pwd(shp,0); -+ } -+ if((cp = nv_getval(SHELLNOD)) && (sh_type(cp)&SH_TYPE_RESTRICTED)) -+ sh_onoption(SH_RESTRICTED); /* restricted shell */ -+ return; -+} -+ -+ -+static void env_init_backup(Shell_t *shp) -+{ - register char *cp; - register Namval_t *np,*mp; - register char **ep=environ; |