mirror of
git://git.code.sf.net/p/cdesktopenv/code
synced 2025-03-09 15:50:02 +00:00
Accumulated fixes for minor issues (#442)
This commit applies various accumulated bugfixes: - Applied some fixes for compiler warnings based off of the following pull requests (with whitespace changes excluded to avoid inflating the size of the diff): https://github.com/att/ast/pull/281 https://github.com/att/ast/pull/283 https://github.com/att/ast/pull/303 https://github.com/att/ast/pull/304 - clone_type(): Two separate variables in this function share the same name. A bugfix from ksh93v- 2013-05-24 was backported to avoid conflict issues. - Backported a minor error message improvement from ksh2020 for when the user attempts to run too many coprocesses. - Backported a ksh2020 bugfix for a file descriptor leak:58bc8b56
- Backported ksh2020 bugfixes for unused variable and pointless assignment lint warnings:47650fe0
df209c0d
5e417b00
- Applied a few minor improvements to libast from graphviz:e7c03541
969a7cde
- dtmemory(): Mark unused parameters with NOT_USED(). Based on:6ac3ad99
- Applied a few documentation/comment tweaks for the NEWS file, printf -v and spawnveg. - Added a missing regression test for using the rm builtin's -f option without additional arguments (this was fixed in ksh93u+ 2012-02-14).
This commit is contained in:
parent
e3a1dda93a
commit
ad9f9ff13e
23 changed files with 78 additions and 59 deletions
4
NEWS
4
NEWS
|
@ -858,7 +858,7 @@ Any uppercase BUG_* names are modernish shell bug IDs.
|
||||||
the parent environment was corrupted or the shell crashed.
|
the parent environment was corrupted or the shell crashed.
|
||||||
When a redirection was used in a DEBUG trap action, the trap was disabled.
|
When a redirection was used in a DEBUG trap action, the trap was disabled.
|
||||||
DEBUG traps were also incorrectly inherited by subshells and ksh functions.
|
DEBUG traps were also incorrectly inherited by subshells and ksh functions.
|
||||||
All this was caused by a bug introduced in ksh 93t 2008-07-25.
|
All this was caused by a bug introduced in ksh 93t 2008-06-24.
|
||||||
|
|
||||||
2021-01-22:
|
2021-01-22:
|
||||||
|
|
||||||
|
@ -869,7 +869,7 @@ Any uppercase BUG_* names are modernish shell bug IDs.
|
||||||
|
|
||||||
- Fixed: executing a DEBUG trap in a command substitution had side effects
|
- Fixed: executing a DEBUG trap in a command substitution had side effects
|
||||||
on the exit status ($?) of non-trap commands.
|
on the exit status ($?) of non-trap commands.
|
||||||
This bug was introduced in ksh 93t 2008-11-04.
|
This bug was introduced in ksh 93t 2008-09-21.
|
||||||
|
|
||||||
- The typeset builtin command now gives an informative error message if an
|
- The typeset builtin command now gives an informative error message if an
|
||||||
incompatible combination of options is given.
|
incompatible combination of options is given.
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
* *
|
* *
|
||||||
* This software is part of the ast package *
|
* This software is part of the ast package *
|
||||||
* Copyright (c) 1982-2014 AT&T Intellectual Property *
|
* Copyright (c) 1982-2014 AT&T Intellectual Property *
|
||||||
* Copyright (c) 2020-2021 Contributors to ksh 93u+m *
|
* Copyright (c) 2020-2022 Contributors to ksh 93u+m *
|
||||||
* and is licensed under the *
|
* and is licensed under the *
|
||||||
* Eclipse Public License, Version 1.0 *
|
* Eclipse Public License, Version 1.0 *
|
||||||
* by AT&T Intellectual Property *
|
* by AT&T Intellectual Property *
|
||||||
|
@ -21,7 +21,7 @@
|
||||||
/*
|
/*
|
||||||
* echo [arg...]
|
* echo [arg...]
|
||||||
* print [-enprsvC] [-f format] [-u fd] [string ...]
|
* print [-enprsvC] [-f format] [-u fd] [string ...]
|
||||||
* printf format [string ...]
|
* printf [-v var] format [string ...]
|
||||||
*
|
*
|
||||||
* David Korn
|
* David Korn
|
||||||
* AT&T Labs
|
* AT&T Labs
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
* *
|
* *
|
||||||
* This software is part of the ast package *
|
* This software is part of the ast package *
|
||||||
* Copyright (c) 1982-2012 AT&T Intellectual Property *
|
* Copyright (c) 1982-2012 AT&T Intellectual Property *
|
||||||
* Copyright (c) 2020-2021 Contributors to ksh 93u+m *
|
* Copyright (c) 2020-2022 Contributors to ksh 93u+m *
|
||||||
* and is licensed under the *
|
* and is licensed under the *
|
||||||
* Eclipse Public License, Version 1.0 *
|
* Eclipse Public License, Version 1.0 *
|
||||||
* by AT&T Intellectual Property *
|
* by AT&T Intellectual Property *
|
||||||
|
@ -699,13 +699,15 @@ static int setall(char **argv,register int flag,Dt_t *troot,struct tdata *tp
|
||||||
np = sh_fsearch(name,HASH_NOSCOPE);
|
np = sh_fsearch(name,HASH_NOSCOPE);
|
||||||
if(!np)
|
if(!np)
|
||||||
#endif /* SHOPT_NAMESPACE */
|
#endif /* SHOPT_NAMESPACE */
|
||||||
if(np=nv_search(name,troot,0))
|
|
||||||
{
|
{
|
||||||
if(!is_afunction(np))
|
if(np=nv_search(name,troot,0))
|
||||||
np = 0;
|
{
|
||||||
|
if(!is_afunction(np))
|
||||||
|
np = 0;
|
||||||
|
}
|
||||||
|
else if(memcmp(name,".sh.math.",9)==0 && sh_mathstd(name+9))
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
else if(memcmp(name,".sh.math.",9)==0 && sh_mathstd(name+9))
|
|
||||||
continue;
|
|
||||||
}
|
}
|
||||||
if(np && ((flag&NV_LTOU) || !nv_isnull(np) || nv_isattr(np,NV_LTOU)))
|
if(np && ((flag&NV_LTOU) || !nv_isnull(np) || nv_isattr(np,NV_LTOU)))
|
||||||
{
|
{
|
||||||
|
@ -1090,12 +1092,9 @@ int b_builtin(int argc,char *argv[],Shbltin_t *context)
|
||||||
struct tdata tdata;
|
struct tdata tdata;
|
||||||
Shbltin_f addr;
|
Shbltin_f addr;
|
||||||
Stk_t *stkp;
|
Stk_t *stkp;
|
||||||
void *library=0;
|
|
||||||
char *errmsg;
|
char *errmsg;
|
||||||
#if SHOPT_DYNAMIC
|
#if SHOPT_DYNAMIC
|
||||||
unsigned long ver;
|
|
||||||
int list = 0;
|
int list = 0;
|
||||||
char path[1024];
|
|
||||||
#endif
|
#endif
|
||||||
NOT_USED(argc);
|
NOT_USED(argc);
|
||||||
memset(&tdata,0,sizeof(tdata));
|
memset(&tdata,0,sizeof(tdata));
|
||||||
|
@ -1156,6 +1155,9 @@ int b_builtin(int argc,char *argv[],Shbltin_t *context)
|
||||||
#if SHOPT_DYNAMIC
|
#if SHOPT_DYNAMIC
|
||||||
if(arg)
|
if(arg)
|
||||||
{
|
{
|
||||||
|
unsigned long ver;
|
||||||
|
char path[PATH_MAX];
|
||||||
|
void *library;
|
||||||
if(!(library = dllplugin(SH_ID, arg, NiL, SH_PLUGIN_VERSION, &ver, RTLD_LAZY, path, sizeof(path))))
|
if(!(library = dllplugin(SH_ID, arg, NiL, SH_PLUGIN_VERSION, &ver, RTLD_LAZY, path, sizeof(path))))
|
||||||
{
|
{
|
||||||
errormsg(SH_DICT,ERROR_exit(0),"%s: %s",arg,dllerror(0));
|
errormsg(SH_DICT,ERROR_exit(0),"%s: %s",arg,dllerror(0));
|
||||||
|
@ -1354,8 +1356,8 @@ static int unall(int argc, char **argv, register Dt_t *troot)
|
||||||
isfun = is_afunction(np);
|
isfun = is_afunction(np);
|
||||||
if(troot==sh.var_tree)
|
if(troot==sh.var_tree)
|
||||||
{
|
{
|
||||||
Namarr_t *ap;
|
|
||||||
#if SHOPT_FIXEDARRAY
|
#if SHOPT_FIXEDARRAY
|
||||||
|
Namarr_t *ap;
|
||||||
if((ap=nv_arrayptr(np)) && !ap->fixed && name[strlen(name)-1]==']' && !nv_getsub(np))
|
if((ap=nv_arrayptr(np)) && !ap->fixed && name[strlen(name)-1]==']' && !nv_getsub(np))
|
||||||
#else
|
#else
|
||||||
if(nv_isarray(np) && name[strlen(name)-1]==']' && !nv_getsub(np))
|
if(nv_isarray(np) && name[strlen(name)-1]==']' && !nv_getsub(np))
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
* *
|
* *
|
||||||
* This software is part of the ast package *
|
* This software is part of the ast package *
|
||||||
* Copyright (c) 1982-2012 AT&T Intellectual Property *
|
* Copyright (c) 1982-2012 AT&T Intellectual Property *
|
||||||
* Copyright (c) 2020-2021 Contributors to ksh 93u+m *
|
* Copyright (c) 2020-2022 Contributors to ksh 93u+m *
|
||||||
* and is licensed under the *
|
* and is licensed under the *
|
||||||
* Eclipse Public License, Version 1.0 *
|
* Eclipse Public License, Version 1.0 *
|
||||||
* by AT&T Intellectual Property *
|
* by AT&T Intellectual Property *
|
||||||
|
@ -70,7 +70,7 @@ const char e_restricted[] = "%s: restricted";
|
||||||
#if SHOPT_PFSH
|
#if SHOPT_PFSH
|
||||||
const char e_pfsh[] = "%s: disabled in profile shell";
|
const char e_pfsh[] = "%s: disabled in profile shell";
|
||||||
#endif
|
#endif
|
||||||
const char e_pexists[] = "process already exists";
|
const char e_copexists[] = "coprocess is running; cannot create a new coprocess";
|
||||||
const char e_exists[] = "%s: file already exists";
|
const char e_exists[] = "%s: file already exists";
|
||||||
const char e_pipe[] = "cannot create pipe";
|
const char e_pipe[] = "cannot create pipe";
|
||||||
const char e_alarm[] = "cannot set alarm";
|
const char e_alarm[] = "cannot set alarm";
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
* *
|
* *
|
||||||
* This software is part of the ast package *
|
* This software is part of the ast package *
|
||||||
* Copyright (c) 1982-2012 AT&T Intellectual Property *
|
* Copyright (c) 1982-2012 AT&T Intellectual Property *
|
||||||
* Copyright (c) 2020-2021 Contributors to ksh 93u+m *
|
* Copyright (c) 2020-2022 Contributors to ksh 93u+m *
|
||||||
* and is licensed under the *
|
* and is licensed under the *
|
||||||
* Eclipse Public License, Version 1.0 *
|
* Eclipse Public License, Version 1.0 *
|
||||||
* by AT&T Intellectual Property *
|
* by AT&T Intellectual Property *
|
||||||
|
@ -2737,10 +2737,12 @@ yankeol:
|
||||||
#if SHOPT_MULTIBYTE
|
#if SHOPT_MULTIBYTE
|
||||||
if((c&~STRIP)==0)
|
if((c&~STRIP)==0)
|
||||||
#endif /* SHOPT_MULTIBYTE */
|
#endif /* SHOPT_MULTIBYTE */
|
||||||
if( isupper(c) )
|
{
|
||||||
c = tolower(c);
|
if( isupper(c) )
|
||||||
else if( islower(c) )
|
c = tolower(c);
|
||||||
c = toupper(c);
|
else if( islower(c) )
|
||||||
|
c = toupper(c);
|
||||||
|
}
|
||||||
replace(vp,c, 1);
|
replace(vp,c, 1);
|
||||||
}
|
}
|
||||||
return(GOOD);
|
return(GOOD);
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
* *
|
* *
|
||||||
* This software is part of the ast package *
|
* This software is part of the ast package *
|
||||||
* Copyright (c) 1982-2012 AT&T Intellectual Property *
|
* Copyright (c) 1982-2012 AT&T Intellectual Property *
|
||||||
* Copyright (c) 2020-2021 Contributors to ksh 93u+m *
|
* Copyright (c) 2020-2022 Contributors to ksh 93u+m *
|
||||||
* and is licensed under the *
|
* and is licensed under the *
|
||||||
* Eclipse Public License, Version 1.0 *
|
* Eclipse Public License, Version 1.0 *
|
||||||
* by AT&T Intellectual Property *
|
* by AT&T Intellectual Property *
|
||||||
|
@ -76,7 +76,7 @@ extern int sh_devtofd(const char*);
|
||||||
extern int sh_isdevfd(const char*);
|
extern int sh_isdevfd(const char*);
|
||||||
|
|
||||||
/* the following are readonly */
|
/* the following are readonly */
|
||||||
extern const char e_pexists[];
|
extern const char e_copexists[];
|
||||||
extern const char e_query[];
|
extern const char e_query[];
|
||||||
extern const char e_history[];
|
extern const char e_history[];
|
||||||
extern const char e_argtype[];
|
extern const char e_argtype[];
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
* *
|
* *
|
||||||
* This software is part of the ast package *
|
* This software is part of the ast package *
|
||||||
* Copyright (c) 1982-2012 AT&T Intellectual Property *
|
* Copyright (c) 1982-2012 AT&T Intellectual Property *
|
||||||
* Copyright (c) 2020-2021 Contributors to ksh 93u+m *
|
* Copyright (c) 2020-2022 Contributors to ksh 93u+m *
|
||||||
* and is licensed under the *
|
* and is licensed under the *
|
||||||
* Eclipse Public License, Version 1.0 *
|
* Eclipse Public License, Version 1.0 *
|
||||||
* by AT&T Intellectual Property *
|
* by AT&T Intellectual Property *
|
||||||
|
@ -29,7 +29,7 @@
|
||||||
#if defined(_sys_resource) && defined(_lib_getrlimit)
|
#if defined(_sys_resource) && defined(_lib_getrlimit)
|
||||||
# include <sys/resource.h>
|
# include <sys/resource.h>
|
||||||
# if !defined(RLIMIT_FSIZE) && defined(_sys_vlimit)
|
# if !defined(RLIMIT_FSIZE) && defined(_sys_vlimit)
|
||||||
/* This handles hp/ux problem */
|
/* This handles HP-UX problem */
|
||||||
# include <sys/vlimit.h>
|
# include <sys/vlimit.h>
|
||||||
# define RLIMIT_FSIZE (LIM_FSIZE-1)
|
# define RLIMIT_FSIZE (LIM_FSIZE-1)
|
||||||
# define RLIMIT_DATA (LIM_DATA-1)
|
# define RLIMIT_DATA (LIM_DATA-1)
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
* *
|
* *
|
||||||
* This software is part of the ast package *
|
* This software is part of the ast package *
|
||||||
* Copyright (c) 1982-2012 AT&T Intellectual Property *
|
* Copyright (c) 1982-2012 AT&T Intellectual Property *
|
||||||
* Copyright (c) 2020-2021 Contributors to ksh 93u+m *
|
* Copyright (c) 2020-2022 Contributors to ksh 93u+m *
|
||||||
* and is licensed under the *
|
* and is licensed under the *
|
||||||
* Eclipse Public License, Version 1.0 *
|
* Eclipse Public License, Version 1.0 *
|
||||||
* by AT&T Intellectual Property *
|
* by AT&T Intellectual Property *
|
||||||
|
@ -2268,10 +2268,8 @@ static void comsubst(Mac_t *mp,register Shnode_t* t, int type)
|
||||||
str[c] = 0;
|
str[c] = 0;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ssize_t len = 1;
|
|
||||||
|
|
||||||
/* can't write past buffer so save last character */
|
/* can't write past buffer so save last character */
|
||||||
c -= len;
|
c -= 1;
|
||||||
lastc = str[c];
|
lastc = str[c];
|
||||||
str[c] = 0;
|
str[c] = 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
* *
|
* *
|
||||||
* This software is part of the ast package *
|
* This software is part of the ast package *
|
||||||
* Copyright (c) 1982-2012 AT&T Intellectual Property *
|
* Copyright (c) 1982-2012 AT&T Intellectual Property *
|
||||||
* Copyright (c) 2020-2021 Contributors to ksh 93u+m *
|
* Copyright (c) 2020-2022 Contributors to ksh 93u+m *
|
||||||
* and is licensed under the *
|
* and is licensed under the *
|
||||||
* Eclipse Public License, Version 1.0 *
|
* Eclipse Public License, Version 1.0 *
|
||||||
* by AT&T Intellectual Property *
|
* by AT&T Intellectual Property *
|
||||||
|
@ -744,7 +744,9 @@ static void outval(char *name, const char *vname, struct Walk *wp)
|
||||||
{
|
{
|
||||||
if(*name!='.')
|
if(*name!='.')
|
||||||
{
|
{
|
||||||
|
#if SHOPT_FIXEDARRAY
|
||||||
Namarr_t *ap;
|
Namarr_t *ap;
|
||||||
|
#endif
|
||||||
nv_attribute(np,wp->out,"typeset",'=');
|
nv_attribute(np,wp->out,"typeset",'=');
|
||||||
#if SHOPT_FIXEDARRAY
|
#if SHOPT_FIXEDARRAY
|
||||||
if((ap=nv_arrayptr(np)) && ap->fixed)
|
if((ap=nv_arrayptr(np)) && ap->fixed)
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
* *
|
* *
|
||||||
* This software is part of the ast package *
|
* This software is part of the ast package *
|
||||||
* Copyright (c) 1982-2012 AT&T Intellectual Property *
|
* Copyright (c) 1982-2012 AT&T Intellectual Property *
|
||||||
* Copyright (c) 2020-2021 Contributors to ksh 93u+m *
|
* Copyright (c) 2020-2022 Contributors to ksh 93u+m *
|
||||||
* and is licensed under the *
|
* and is licensed under the *
|
||||||
* Eclipse Public License, Version 1.0 *
|
* Eclipse Public License, Version 1.0 *
|
||||||
* by AT&T Intellectual Property *
|
* by AT&T Intellectual Property *
|
||||||
|
@ -430,11 +430,11 @@ static Namfun_t *clone_type(Namval_t* np, Namval_t *mp, int flags, Namfun_t *fp)
|
||||||
nv_putsub(nq,cp,ARRAY_ADD|ARRAY_NOSCOPE);
|
nv_putsub(nq,cp,ARRAY_ADD|ARRAY_NOSCOPE);
|
||||||
if(array_assoc(ap))
|
if(array_assoc(ap))
|
||||||
{
|
{
|
||||||
Namval_t *mp = (Namval_t*)((*ap->fun)(nr,NIL(char*),NV_ACURRENT));
|
Namval_t *mr = (Namval_t*)((*ap->fun)(nr,NIL(char*),NV_ACURRENT));
|
||||||
Namval_t *mq = (Namval_t*)((*ap->fun)(nq,NIL(char*),NV_ACURRENT));
|
Namval_t *mq = (Namval_t*)((*ap->fun)(nq,NIL(char*),NV_ACURRENT));
|
||||||
nv_clone(mp,mq,NV_MOVE);
|
nv_clone(mr,mq,NV_MOVE);
|
||||||
ap->nelem--;
|
ap->nelem--;
|
||||||
nv_delete(mp,ap->table,0);
|
nv_delete(mr,ap->table,0);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -770,7 +770,9 @@ Pathcomp_t *path_absolute(register const char *name, Pathcomp_t *pp, int flag)
|
||||||
Pathcomp_t *oldpp;
|
Pathcomp_t *oldpp;
|
||||||
Namval_t *np;
|
Namval_t *np;
|
||||||
char *cp;
|
char *cp;
|
||||||
|
#if SHOPT_DYNAMIC
|
||||||
char *bp;
|
char *bp;
|
||||||
|
#endif
|
||||||
sh.path_err = ENOENT;
|
sh.path_err = ENOENT;
|
||||||
if(!pp && !(pp=path_get(Empty)))
|
if(!pp && !(pp=path_get(Empty)))
|
||||||
return(0);
|
return(0);
|
||||||
|
@ -885,7 +887,10 @@ Pathcomp_t *path_absolute(register const char *name, Pathcomp_t *pp, int flag)
|
||||||
{
|
{
|
||||||
*cp = 0;
|
*cp = 0;
|
||||||
if(nv_open(name,sh_subfuntree(1),NV_NOARRAY|NV_IDENT|NV_NOSCOPE))
|
if(nv_open(name,sh_subfuntree(1),NV_NOARRAY|NV_IDENT|NV_NOSCOPE))
|
||||||
|
{
|
||||||
|
sh_close(f);
|
||||||
f = -1;
|
f = -1;
|
||||||
|
}
|
||||||
*cp = '.';
|
*cp = '.';
|
||||||
}
|
}
|
||||||
if(isfun && f>=0)
|
if(isfun && f>=0)
|
||||||
|
@ -895,7 +900,7 @@ Pathcomp_t *path_absolute(register const char *name, Pathcomp_t *pp, int flag)
|
||||||
nv_onattr(nv_open(name,sh_subfuntree(1),NV_NOARRAY|NV_IDENT|NV_NOSCOPE),NV_LTOU|NV_FUNCTION);
|
nv_onattr(nv_open(name,sh_subfuntree(1),NV_NOARRAY|NV_IDENT|NV_NOSCOPE),NV_LTOU|NV_FUNCTION);
|
||||||
funload(f,name);
|
funload(f,name);
|
||||||
}
|
}
|
||||||
close(f);
|
sh_close(f);
|
||||||
return(0);
|
return(0);
|
||||||
}
|
}
|
||||||
else if(f>=0 && (oldpp->flags & PATH_STD_DIR))
|
else if(f>=0 && (oldpp->flags & PATH_STD_DIR))
|
||||||
|
|
|
@ -3401,7 +3401,7 @@ static void coproc_init(int pipes[])
|
||||||
int outfd;
|
int outfd;
|
||||||
if(sh.coutpipe>=0 && sh.cpid)
|
if(sh.coutpipe>=0 && sh.cpid)
|
||||||
{
|
{
|
||||||
errormsg(SH_DICT,ERROR_exit(1),e_pexists);
|
errormsg(SH_DICT,ERROR_exit(1),e_copexists);
|
||||||
UNREACHABLE();
|
UNREACHABLE();
|
||||||
}
|
}
|
||||||
sh.cpid = 0;
|
sh.cpid = 0;
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
# #
|
# #
|
||||||
# This software is part of the ast package #
|
# This software is part of the ast package #
|
||||||
# Copyright (c) 1982-2012 AT&T Intellectual Property #
|
# Copyright (c) 1982-2012 AT&T Intellectual Property #
|
||||||
# Copyright (c) 2020-2021 Contributors to ksh 93u+m #
|
# Copyright (c) 2020-2022 Contributors to ksh 93u+m #
|
||||||
# and is licensed under the #
|
# and is licensed under the #
|
||||||
# Eclipse Public License, Version 1.0 #
|
# Eclipse Public License, Version 1.0 #
|
||||||
# by AT&T Intellectual Property #
|
# by AT&T Intellectual Property #
|
||||||
|
@ -239,9 +239,9 @@ if rm -rf "$file" && ln -s / "$file"
|
||||||
then [[ -L "$file" ]] || err_exit '-L not working'
|
then [[ -L "$file" ]] || err_exit '-L not working'
|
||||||
[[ -L "$file"/ ]] && err_exit '-L with file/ not working'
|
[[ -L "$file"/ ]] && err_exit '-L with file/ not working'
|
||||||
fi
|
fi
|
||||||
$SHELL -c 't=1234567890; [[ $t == @({10}(\d)) ]]' 2> /dev/null || err_exit ' @({10}(\d)) pattern not working'
|
$SHELL -c 't=1234567890; [[ $t == @({10}(\d)) ]]' 2> /dev/null || err_exit '@({10}(\d)) pattern not working'
|
||||||
$SHELL -c '[[ att_ == ~(E)(att|cus)_.* ]]' 2> /dev/null || err_exit ' ~(E)(att|cus)_* pattern not working'
|
$SHELL -c '[[ att_ == ~(E)(att|cus)_.* ]]' 2> /dev/null || err_exit '~(E)(att|cus)_* pattern not working'
|
||||||
$SHELL -c '[[ att_ =~ (att|cus)_.* ]]' 2> /dev/null || err_exit ' =~ ere not working'
|
$SHELL -c '[[ att_ =~ (att|cus)_.* ]]' 2> /dev/null || err_exit '=~ ere not working'
|
||||||
$SHELL -c '[[ abc =~ a(b)c ]]' 2> /dev/null || err_exit '[[ abc =~ a(b)c ]] fails'
|
$SHELL -c '[[ abc =~ a(b)c ]]' 2> /dev/null || err_exit '[[ abc =~ a(b)c ]] fails'
|
||||||
$SHELL -xc '[[ abc =~ \babc\b ]]' 2> /dev/null || err_exit '[[ abc =~ \babc\b ]] fails'
|
$SHELL -xc '[[ abc =~ \babc\b ]]' 2> /dev/null || err_exit '[[ abc =~ \babc\b ]] fails'
|
||||||
[[ abc == ~(E)\babc\b ]] || err_exit '\b not preserved for ere when not in ()'
|
[[ abc == ~(E)\babc\b ]] || err_exit '\b not preserved for ere when not in ()'
|
||||||
|
|
|
@ -1454,6 +1454,14 @@ if builtin rm 2> /dev/null; then
|
||||||
[[ $? == 0 ]] || err_exit 'rm builtin fails to remove non-empty directory and file with -rd options' \
|
[[ $? == 0 ]] || err_exit 'rm builtin fails to remove non-empty directory and file with -rd options' \
|
||||||
"(got $(printf %q "$got"))"
|
"(got $(printf %q "$got"))"
|
||||||
[[ -f $tmp/nonemptydir2/shouldexist || -d $tmp/nonemptydir2 ]] && err_exit 'rm builtin fails to remove all folders and files with -rd options'
|
[[ -f $tmp/nonemptydir2/shouldexist || -d $tmp/nonemptydir2 ]] && err_exit 'rm builtin fails to remove all folders and files with -rd options'
|
||||||
|
|
||||||
|
# Additional test: 'rm -f' without additional arguments should act
|
||||||
|
# as a no-op command. This bug was fixed in ksh93u+ 2012-02-14.
|
||||||
|
got=$(rm -f 2>&1)
|
||||||
|
if (($? != 0)) || [[ ! -z $got ]]
|
||||||
|
then err_exit 'rm -f without additional arguments does not work correctly' \
|
||||||
|
"(got $(printf %q "$got"))"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# ======
|
# ======
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
* *
|
* *
|
||||||
* This software is part of the ast package *
|
* This software is part of the ast package *
|
||||||
* Copyright (c) 1985-2012 AT&T Intellectual Property *
|
* Copyright (c) 1985-2012 AT&T Intellectual Property *
|
||||||
* Copyright (c) 2020-2021 Contributors to ksh 93u+m *
|
* Copyright (c) 2020-2022 Contributors to ksh 93u+m *
|
||||||
* and is licensed under the *
|
* and is licensed under the *
|
||||||
* Eclipse Public License, Version 1.0 *
|
* Eclipse Public License, Version 1.0 *
|
||||||
* by AT&T Intellectual Property *
|
* by AT&T Intellectual Property *
|
||||||
|
@ -34,6 +34,8 @@ static void* dtmemory(Dt_t* dt, /* dictionary */
|
||||||
size_t size, /* size to obtain */
|
size_t size, /* size to obtain */
|
||||||
Dtdisc_t* disc) /* discipline */
|
Dtdisc_t* disc) /* discipline */
|
||||||
{
|
{
|
||||||
|
NOT_USED(dt);
|
||||||
|
NOT_USED(disc);
|
||||||
if(addr)
|
if(addr)
|
||||||
{ if(size == 0)
|
{ if(size == 0)
|
||||||
{ free(addr);
|
{ free(addr);
|
||||||
|
|
|
@ -94,4 +94,4 @@ cannot make the new process a session leader when using the
|
||||||
.I posix_spawn
|
.I posix_spawn
|
||||||
API.
|
API.
|
||||||
.SH "SEE ALSO"
|
.SH "SEE ALSO"
|
||||||
fork(2), posix_spawn(3), exec(2), setpgid(2), setsid(2), spawnve(2)
|
fork(2), vfork(2), posix_spawn(3), exec(2), setpgid(2), setsid(2), spawnve(2)
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
* *
|
* *
|
||||||
* This software is part of the ast package *
|
* This software is part of the ast package *
|
||||||
* Copyright (c) 1985-2012 AT&T Intellectual Property *
|
* Copyright (c) 1985-2012 AT&T Intellectual Property *
|
||||||
* Copyright (c) 2020-2021 Contributors to ksh 93u+m *
|
* Copyright (c) 2020-2022 Contributors to ksh 93u+m *
|
||||||
* and is licensed under the *
|
* and is licensed under the *
|
||||||
* Eclipse Public License, Version 1.0 *
|
* Eclipse Public License, Version 1.0 *
|
||||||
* by AT&T Intellectual Property *
|
* by AT&T Intellectual Property *
|
||||||
|
@ -1111,6 +1111,7 @@ init(register char* s, Optpass_t* p)
|
||||||
}
|
}
|
||||||
s = next(s, 0);
|
s = next(s, 0);
|
||||||
if (*s != '[')
|
if (*s != '[')
|
||||||
|
{
|
||||||
for (t = s, a = 0; *t; t++)
|
for (t = s, a = 0; *t; t++)
|
||||||
if (!a && *t == '-')
|
if (!a && *t == '-')
|
||||||
{
|
{
|
||||||
|
@ -1121,6 +1122,7 @@ init(register char* s, Optpass_t* p)
|
||||||
a++;
|
a++;
|
||||||
else if (*t == ']')
|
else if (*t == ']')
|
||||||
a--;
|
a--;
|
||||||
|
}
|
||||||
if (!p->version && (t = strchr(s, '(')) && strchr(t, ')') && (state.cp || (state.cp = sfstropen())))
|
if (!p->version && (t = strchr(s, '(')) && strchr(t, ')') && (state.cp || (state.cp = sfstropen())))
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
* *
|
* *
|
||||||
* This software is part of the ast package *
|
* This software is part of the ast package *
|
||||||
* Copyright (c) 1985-2012 AT&T Intellectual Property *
|
* Copyright (c) 1985-2012 AT&T Intellectual Property *
|
||||||
* Copyright (c) 2020-2021 Contributors to ksh 93u+m *
|
* Copyright (c) 2020-2022 Contributors to ksh 93u+m *
|
||||||
* and is licensed under the *
|
* and is licensed under the *
|
||||||
* Eclipse Public License, Version 1.0 *
|
* Eclipse Public License, Version 1.0 *
|
||||||
* by AT&T Intellectual Property *
|
* by AT&T Intellectual Property *
|
||||||
|
@ -1351,10 +1351,10 @@ print(Sfio_t* sp, register Lookup_t* look, const char* name, const char* path, i
|
||||||
* return read stream to native getconf utility
|
* return read stream to native getconf utility
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#ifdef _pth_getconf_a
|
||||||
static Sfio_t*
|
static Sfio_t*
|
||||||
nativeconf(Proc_t** pp, const char* operand)
|
nativeconf(Proc_t** pp, const char* operand)
|
||||||
{
|
{
|
||||||
#ifdef _pth_getconf
|
|
||||||
Sfio_t* sp;
|
Sfio_t* sp;
|
||||||
char* cmd[3];
|
char* cmd[3];
|
||||||
long ops[2];
|
long ops[2];
|
||||||
|
@ -1376,9 +1376,9 @@ nativeconf(Proc_t** pp, const char* operand)
|
||||||
}
|
}
|
||||||
procclose(*pp);
|
procclose(*pp);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* value==0 gets value for name
|
* value==0 gets value for name
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
* *
|
* *
|
||||||
* This software is part of the ast package *
|
* This software is part of the ast package *
|
||||||
* Copyright (c) 1985-2012 AT&T Intellectual Property *
|
* Copyright (c) 1985-2012 AT&T Intellectual Property *
|
||||||
* Copyright (c) 2020-2021 Contributors to ksh 93u+m *
|
* Copyright (c) 2020-2022 Contributors to ksh 93u+m *
|
||||||
* and is licensed under the *
|
* and is licensed under the *
|
||||||
* Eclipse Public License, Version 1.0 *
|
* Eclipse Public License, Version 1.0 *
|
||||||
* by AT&T Intellectual Property *
|
* by AT&T Intellectual Property *
|
||||||
|
@ -59,7 +59,9 @@ static char* Version = "\n@(#)$Id: sfio (AT&T Labs - Research) 2009-09-15 $\0\n"
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
typedef void(* Sfsignal_f)(int);
|
typedef void(* Sfsignal_f)(int);
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef SIGPIPE
|
||||||
static int _Sfsigp = 0; /* # of streams needing SIGPIPE protection */
|
static int _Sfsigp = 0; /* # of streams needing SIGPIPE protection */
|
||||||
|
#endif
|
||||||
|
|
||||||
/* done at exiting time */
|
/* done at exiting time */
|
||||||
static void _sfcleanup(void)
|
static void _sfcleanup(void)
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
* *
|
* *
|
||||||
* This software is part of the ast package *
|
* This software is part of the ast package *
|
||||||
* Copyright (c) 1985-2012 AT&T Intellectual Property *
|
* Copyright (c) 1985-2012 AT&T Intellectual Property *
|
||||||
* Copyright (c) 2020-2021 Contributors to ksh 93u+m *
|
* Copyright (c) 2020-2022 Contributors to ksh 93u+m *
|
||||||
* and is licensed under the *
|
* and is licensed under the *
|
||||||
* Eclipse Public License, Version 1.0 *
|
* Eclipse Public License, Version 1.0 *
|
||||||
* by AT&T Intellectual Property *
|
* by AT&T Intellectual Property *
|
||||||
|
@ -62,9 +62,8 @@ static void execute(const char* argcmd)
|
||||||
goto do_interp;
|
goto do_interp;
|
||||||
|
|
||||||
/* try to construct argv */
|
/* try to construct argv */
|
||||||
if(!(cmd = (char*)malloc(strlen(argcmd)+1)) )
|
if(!(cmd = strdup(argcmd)) )
|
||||||
goto do_interp;
|
goto do_interp;
|
||||||
strcpy(cmd,argcmd);
|
|
||||||
if(!(argv = (char**)malloc(16*sizeof(char*))) )
|
if(!(argv = (char**)malloc(16*sizeof(char*))) )
|
||||||
goto do_interp;
|
goto do_interp;
|
||||||
for(n = 0, s = cmd;; )
|
for(n = 0, s = cmd;; )
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
* *
|
* *
|
||||||
* This software is part of the ast package *
|
* This software is part of the ast package *
|
||||||
* Copyright (c) 1985-2012 AT&T Intellectual Property *
|
* Copyright (c) 1985-2012 AT&T Intellectual Property *
|
||||||
* Copyright (c) 2020-2021 Contributors to ksh 93u+m *
|
* Copyright (c) 2020-2022 Contributors to ksh 93u+m *
|
||||||
* and is licensed under the *
|
* and is licensed under the *
|
||||||
* Eclipse Public License, Version 1.0 *
|
* Eclipse Public License, Version 1.0 *
|
||||||
* by AT&T Intellectual Property *
|
* by AT&T Intellectual Property *
|
||||||
|
@ -159,11 +159,10 @@ char** _sfgetpath(char* path)
|
||||||
}
|
}
|
||||||
if(n == 0 || !(dirs = (char**)malloc((n+1)*sizeof(char*))) )
|
if(n == 0 || !(dirs = (char**)malloc((n+1)*sizeof(char*))) )
|
||||||
return NIL(char**);
|
return NIL(char**);
|
||||||
if(!(p = (char*)malloc(strlen(path)+1)) )
|
if(!(p = strdup(path)) )
|
||||||
{ free(dirs);
|
{ free(dirs);
|
||||||
return NIL(char**);
|
return NIL(char**);
|
||||||
}
|
}
|
||||||
strcpy(p,path);
|
|
||||||
for(n = 0;; ++n)
|
for(n = 0;; ++n)
|
||||||
{ while(*p == ':')
|
{ while(*p == ':')
|
||||||
++p;
|
++p;
|
||||||
|
@ -218,12 +217,11 @@ static int _tmpfd(Sfio_t* f)
|
||||||
return -1;
|
return -1;
|
||||||
if(!(file = getenv("TMPDIR")) )
|
if(!(file = getenv("TMPDIR")) )
|
||||||
file = TMPDFLT;
|
file = TMPDFLT;
|
||||||
if(!(Tmppath[0] = (char*)malloc(strlen(file)+1)) )
|
if(!(Tmppath[0] = strdup(file)) )
|
||||||
{ free(Tmppath);
|
{ free(Tmppath);
|
||||||
Tmppath = NIL(char**);
|
Tmppath = NIL(char**);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
strcpy(Tmppath[0],file);
|
|
||||||
Tmppath[1] = NIL(char*);
|
Tmppath[1] = NIL(char*);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
* *
|
* *
|
||||||
* This software is part of the ast package *
|
* This software is part of the ast package *
|
||||||
* Copyright (c) 1985-2012 AT&T Intellectual Property *
|
* Copyright (c) 1985-2012 AT&T Intellectual Property *
|
||||||
* Copyright (c) 2020-2021 Contributors to ksh 93u+m *
|
* Copyright (c) 2020-2022 Contributors to ksh 93u+m *
|
||||||
* and is licensed under the *
|
* and is licensed under the *
|
||||||
* Eclipse Public License, Version 1.0 *
|
* Eclipse Public License, Version 1.0 *
|
||||||
* by AT&T Intellectual Property *
|
* by AT&T Intellectual Property *
|
||||||
|
@ -137,7 +137,6 @@ tmxfmt(char* buf, size_t len, const char* format, Time_t t)
|
||||||
{
|
{
|
||||||
if ((c = *format++) == delimiter)
|
if ((c = *format++) == delimiter)
|
||||||
{
|
{
|
||||||
delimiter = 0;
|
|
||||||
if (sp <= &stack[0])
|
if (sp <= &stack[0])
|
||||||
break;
|
break;
|
||||||
sp--;
|
sp--;
|
||||||
|
|
|
@ -173,7 +173,6 @@ scan(register const char* s, char** e, const char* format, char** f, Time_t t, l
|
||||||
register char* p;
|
register char* p;
|
||||||
register Tm_t* tm;
|
register Tm_t* tm;
|
||||||
const char* b;
|
const char* b;
|
||||||
char* u;
|
|
||||||
char* stack[4];
|
char* stack[4];
|
||||||
int m;
|
int m;
|
||||||
int hi;
|
int hi;
|
||||||
|
@ -184,6 +183,7 @@ scan(register const char* s, char** e, const char* format, char** f, Time_t t, l
|
||||||
Tm_zone_t* zp;
|
Tm_zone_t* zp;
|
||||||
Tm_t ts;
|
Tm_t ts;
|
||||||
|
|
||||||
|
char* u = 0;
|
||||||
char** sp = &stack[0];
|
char** sp = &stack[0];
|
||||||
|
|
||||||
while (isspace(*s))
|
while (isspace(*s))
|
||||||
|
@ -397,7 +397,7 @@ scan(register const char* s, char** e, const char* format, char** f, Time_t t, l
|
||||||
s = b;
|
s = b;
|
||||||
goto again;
|
goto again;
|
||||||
case '&':
|
case '&':
|
||||||
x = gen(tm, &set);
|
(void)gen(tm, &set);
|
||||||
x = tmxdate(s, e, t);
|
x = tmxdate(s, e, t);
|
||||||
if (s == (const char*)*e)
|
if (s == (const char*)*e)
|
||||||
goto next;
|
goto next;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue