1
0
Fork 0
mirror of git://git.code.sf.net/p/cdesktopenv/code synced 2025-03-09 15:50:02 +00:00

Remove unused libcoshell

The coshell(1) command, which is required for libcoshell to be
useful, is not known to be shipped by any distribution. It was
removed by the ksh-community fork and hence also by 93u+m (in
2940b3f5). The coshell facility as a whole is obsolete and
insecure. For a long time now, the statically linked libcoshell
library has been 40+ kilobytes of dead weight in the ksh binary.

Prior discussion (ksh2020): https://github.com/att/ast/issues/619

src/lib/libcoshell/*:
- Removed.

src/cmd/ksh93/*:
- Remove the SHOPT_COSHELL compiler option (which was enabled) and
  a lot of code that was conditional upon #ifdef SHOPT_COSHELL.

- init.c: e_version[]: Removing SHOPT_COSHELL changed the "J"
  feature identifier in ${.sh.version} to a lowercase "j", which
  was conditional upon SHOPT_BGX (background job extensions).
  But src/cmd/ksh93/RELEASE documents (at 08-12-04, on line 1188):
    | +SHOPT_BGX enables background job extensions. Noted by "J" in
    |  the version string when enabled. [...]
  That is the only available documentation. So change that "j" back
  to a "J", leaving the version string unchanged after this commit.

- jobs.c: job_walk(): We need to keep one 'job_waitsafe(SIGCHLD);'
  call that was conditional upon SHOPT_COSHELL; removing it caused
  a regression test failure in tests/sigchld.sh, 'SIGCHLD blocked
  for script at end of pipeline' (which means that until now, a ksh
  compiled without libcoshell had broken SIGCHLD handling.)

bin/package, src/cmd/INIT/package.sh:
- Don't export COSHELL variable.
This commit is contained in:
Martijn Dekker 2020-07-17 17:13:53 +01:00
parent fbc6cd4286
commit 3613da4240
39 changed files with 87 additions and 4635 deletions

View file

@ -573,19 +573,11 @@ static Shnode_t *term(Lex_t *lexp,register int flag)
t->par.partyp |= COMSCAN;
t->par.partre = term(lexp,0);
}
#if SHOPT_COSHELL
else if((t=item(lexp,SH_NL|SH_EMPTY|(flag&SH_SEMI))) && (lexp->token=='|' || lexp->token==PIPESYM2))
#else
else if((t=item(lexp,SH_NL|SH_EMPTY|(flag&SH_SEMI))) && lexp->token=='|')
#endif /* SHOPT_COSHELL */
{
register Shnode_t *tt;
int showme = t->tre.tretyp&FSHOWME;
t = makeparent(lexp,TFORK|FPOU,t);
#if SHOPT_COSHELL
if(lexp->token==PIPESYM2)
t->tre.tretyp |= FALTPIPE;
#endif /* SHOPT_COSHELL */
if(tt=term(lexp,SH_NL))
{
switch(tt->tre.tretyp&COMMSK)
@ -1325,24 +1317,6 @@ static Shnode_t *item(Lex_t *lexp,int flag)
t->par.partyp=TPAR;
break;
#if SHOPT_COSHELL
case '&':
if(tok=sh_lex(lexp))
{
if(tok!=NL)
sh_syntax(lexp);
t = getnode(comnod);
memset(t,0,sizeof(struct comnod));
t->com.comline = sh_getlineno(lexp);
}
else
t = (Shnode_t*)simple(lexp,SH_NOIO,NIL(struct ionod*));
t->com.comtyp |= FAMP;
if(lexp->token=='&' || lexp->token=='|')
sh_syntax(lexp);
return(t);
break;
#endif /* SHOPT_COSHELL */
default:
if(io==0)
return(0);