1
0
Fork 0
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:
Johnothan King 2022-01-30 12:09:14 -08:00 committed by Martijn Dekker
parent e3a1dda93a
commit ad9f9ff13e
23 changed files with 78 additions and 59 deletions

4
NEWS
View file

@ -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.

View file

@ -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

View file

@ -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))

View file

@ -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";

View file

@ -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);

View file

@ -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[];

View file

@ -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)

View file

@ -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;
} }

View file

@ -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)

View file

@ -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
{ {

View file

@ -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))

View file

@ -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;

View file

@ -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 ()'

View file

@ -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
# ====== # ======

View file

@ -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);

View file

@ -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)

View file

@ -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())))
{ {
/* /*

View file

@ -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

View file

@ -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)

View file

@ -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;; )

View file

@ -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*);
} }

View file

@ -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--;

View file

@ -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;