1
0
Fork 0
mirror of git://git.code.sf.net/p/cdesktopenv/code synced 2025-02-15 04:32:24 +00:00

INIT: remove proto, ratz (re: 46593a89, 6137b99a); major cleanup

This takes another step towards cleaning up the build system. We
now do not even pretend to be theoretically compatible with
pre-1989 K&R C compilers or with C++ compilers. In practice, this
had already been broken for many years due to bit rot.

Commit 46593a89 already removed the license handling enormity that
depended on proto, so now we can cleanly remove it altogether. But
we do need to leave some backwards compatibility stubs to keep the
build system compatible with older AST code; it should remain
possible to build older ksh versions with the current build system
(the bin/ and src/cmd/INIT/ directories) for testing purposes.

So as of now there is no more __MANGLE__d rubbish in your generated
header files. This is only about a quarter of a century overdue...

This commit also includes a huge amount of code cleanup to remove
thousands of unused K&R C fallbacks and other cruft, particularly
in libast. This code base should now be a little easier to
understand for people who are familiar with a modern(ish) C
standard.

ratz is now also removed; this was a standalone and simplified 2005
version of gunzip. As of 6137b99a, none of our code uses it, even
theoretically. And the real g(un)zip is now everywhere.

src/cmd/INIT/proto.c, src/cmd/INIT/ratz.c:
- Removed.

COPYRIGHT:
- Remove zlib license; this only applied to ratz.

bin/package, src/cmd/INIT/package.sh:
- Related cleanups.
- Unset LC_ALL before invoking a new shell, respecting the user's
  locale again and avoiding multibyte character corruption on the
  command line.

src/cmd/INIT/proto.sh:
- Add stub for backwards compatibility with Mamfiles that depend on
  proto. It does nothing but pass input without modification and is
  now installed as the new arch/*/bin/proto by src/cmd/INIT/Mamfile.

src/cmd/INIT/iffe.sh:
- Ignore the proto-related -e (--package) and -p (--prototyped)
  options; keep parsing them for backwards compatibility.
- Trim the macros passed to every test to their standard C
  versions, removing K&R C and C++ versions. These are now
  considered to be for backwards compatibility only.

src/cmd/INIT/iffe.tst:
- Remove proto(1) mangling code.
  By the way, iffe can be regression-tested as follows:
        $ bin/package use   # set up environment in a child shell
        $ regress src/cmd/INIT/iffe.tst
        $ exit              # leave package environment

src/cmd/INIT/make.probe, src/cmd/INIT/probe.win32:
- Remove code to handle C++.

src/lib/libast/features/common:
- As in iffe.sh above, trim macros designed for compatibility with
  C++ and ancient C compilers to their standard C versions and
  comment that they are for backwards compatibility with AST code.
  This is needed to keep all the old ast and ksh code compiling.

src/cmd/ksh93/sh/init.c,
src/cmd/ksh93/sh/name.c:
- Clarify libshell ABI compatibility function versions of macros.
  A "proto workaround" comment in the original code mislead me into
  thinking this had something to do with the removed proto(1), but
  it's unrelated. Call the workaround macro BYPASS_MACRO instead.

src/cmd/ksh93/include/defs.h:
- sh_sigcheck() macro: allow &sh as an argument: parenthesise shp.

src/cmd/ksh93/sh/nvtype.c:
- Remove unused nv_mkstruct() function. (re: d0a5cab1)

**/features/*:
- Remove obsolete iffe 'set prototyped' option.

**/Mamfile:
- Remove all references to the ast/prototyped.h header.
- Remove all use of the proto command. Simply copy instead.

*** 850-ish source files: ***
- Remove all '#pragma prototyped' directives.
- Remove all C++ compat code conditional upon defined(__cplusplus).
- Remove all use of the _ARG_ macro, which on standard C expands to
  its argument:
        #define _ARG_(x)        x
  (on K&R C, it expanded to nothing)
- Remove all use of _BEGIN_EXTERNS_ and _END_EXTERNS_ macros (empty
  on standard C; this was for C++ compatibility)
- Reduce all #if __STD_C (standard code) #else (K&R code) #endif
  blocks to the standard code only, without use of the macro.
- Same for _STD_ macro which seems to have had the same function.
- Change all instances of 'Void_t' to standard 'void'.
This commit is contained in:
Martijn Dekker 2021-12-23 03:14:20 +00:00
parent 3785a0685c
commit a1f5c99204
869 changed files with 1853 additions and 14292 deletions

View file

@ -144,57 +144,3 @@ bsd package general copyright notice
# Bill Joy #
# #
########################################################################
zlib package general copyright notice
########################################################################
# #
# This software is part of the zlib package #
# Copyright (c) 1995-2012 Jean-loup Gailly and Mark Adler #
# #
# This software is provided 'as-is', without any express or implied #
# warranty. In no event will the authors be held liable for any #
# damages arising from the use of this software. #
# #
# Permission is granted to anyone to use this software for any #
# purpose, including commercial applications, and to alter it and #
# redistribute it freely, subject to the following restrictions: #
# #
# 1. The origin of this software must not be misrepresented; #
# you must not claim that you wrote the original software. If #
# you use this software in a product, an acknowledgment in the #
# product documentation would be appreciated but is not #
# required. #
# #
# 2. Altered source versions must be plainly marked as such, #
# and must not be misrepresented as being the original #
# software. #
# #
# 3. This notice may not be removed or altered from any source #
# distribution. #
# #
# This software is provided "as-is", without any express or implied #
# warranty. In no event will the authors be held liable for any damages#
# arising from the use of this software. #
# #
# Permission is granted to anyone to use this software for any purpose,#
# including commercial applications, and to alter it and redistribute i#
# freely, subject to the following restrictions: #
# #
# 1. The origin of this software must not be misrepresented; you must n#
# claim that you wrote the original software. If you use this softwa#
# in a product, an acknowledgment in the product documentation would#
# be appreciated but is not required. #
# #
# 2. Altered source versions must be plainly marked as such, and must n#
# be misrepresented as being the original software. #
# #
# 3. This notice may not be removed or altered from any source #
# distribution. #
# #
# CONTRIBUTORS #
# #
# Jean-loup Gailly #
# Mark Adler #
# #
########################################################################

View file

@ -108,7 +108,7 @@ command=${0##*/}
case $(getopts '[-][123:xyz]' opt --xyz 2>/dev/null; echo 0$opt) in
0123) USAGE=$'
[-?
@(#)$Id: '$command$' (ksh 93u+m) 2021-12-15 $
@(#)$Id: '$command$' (ksh 93u+m) 2021-12-22 $
]
[-author?Glenn Fowler <gsf@research.att.com>]
[-author?Contributors to https://github.com/ksh93/ksh]
@ -252,13 +252,6 @@ case $(getopts '[-][123:xyz]' opt --xyz 2>/dev/null; echo 0$opt) in
file (\bMamfile\b). A Mamfile contains a portable makefile description
written in a simple dependency tree language using indented
\bmake\b...\bdone\b blocks.]
[+?Most component C source is prototyped. If \b$CC\b (default value
\bcc\b) is not a prototyping C compiler then \b'$command$' make\b runs
\bproto\b(1) on portions of the \b$PACKAGEROOT/src\b tree and places
the converted output files in the \b$PACKAGEROOT/proto/src\b tree.
Converted files are then viewpathed over the original source.
\bproto\b(1) converts an ANSI C subset to code that is compatible with
K&R, ANSI, and C++ dialects.]
[+?All scripts and commands under \b$PACKAGEROOT\b use \b$PATH\b
relative pathnames (via the \bAST\b \bpathpath\b(3) function); there
are no embedded absolute pathnames. This means that binaries generated
@ -271,7 +264,7 @@ case $(getopts '[-][123:xyz]' opt --xyz 2>/dev/null; echo 0$opt) in
[+SEE ALSO?\bautoconfig\b(1), \bcksum\b(1), \bexecrate\b(1), \bexpmake\b(1),
\bgzip\b(1), \bmake\b(1), \bmamake\b(1), \bpax\b(1),
\bpkgadd\b(1), \bpkgmk\b(1), \bproto\b(1), \bratz\b(1), \brpm\b(1),
\bpkgadd\b(1), \bpkgmk\b(1), \brpm\b(1),
\bsh\b(1), \btar\b(1), \boptget\b(3)]
'
case $* in
@ -321,7 +314,6 @@ tab=" "
verbose=0
AUTHORIZE=
DEBUG=
PROTOROOT=-
SHELLMAGIC=-
unset FIGNORE BINDIR DLLDIR ETCDIR FUNDIR INCLUDEDIR LIBDIR LOCALEDIR MANDIR SHAREDIR 2>/dev/null || true
@ -507,13 +499,6 @@ DETAILS
Mamfile contains a portable makefile description written in a simple
dependency tree language using indented make...done blocks.
Most component C source is prototyped. If $CC (default value cc) is not a
prototyping C compiler then package make runs proto(1) on portions of the
$PACKAGEROOT/src tree and places the converted output files in the
$PACKAGEROOT/proto/src tree. Converted files are then viewpathed over the
original source. proto(1) converts an ANSI C subset to code that is
compatible with K&R, ANSI, and C++ dialects.
All scripts and commands under $PACKAGEROOT use $PATH relative pathnames (via
the AST pathpath(3) function); there are no embedded absolute pathnames. This
means that binaries generated under $PACKAGEROOT may be copied to a different
@ -523,11 +508,10 @@ DETAILS
SEE ALSO
autoconfig(1), cksum(1), execrate(1), expmake(1), gzip(1), make(1),
mamake(1), pax(1), pkgadd(1), pkgmk(1), proto(1), ratz(1), rpm(1), sh(1),
tar(1), optget(3)
mamake(1), pax(1), pkgadd(1), pkgmk(1), rpm(1), sh(1), tar(1), optget(3)
IMPLEMENTATION
version package (ksh 93u+m) 2021-12-15
version package (ksh 93u+m) 2021-12-22
author Glenn Fowler <gsf@research.att.com>
author Contributors to https://github.com/ksh93/ksh
copyright (c) 1994-2012 AT&T Intellectual Property
@ -2257,7 +2241,7 @@ cat $INITROOT/$i.sh
$show export PATH
export PATH
;;
*) for i in package proto
*) for i in package
do if onpath $i
then EXECROOT=$(echo $_onpath_ | sed -e 's,//*[^/]*//*[^/]*$,,')
EXECTYPE=$(echo $EXECROOT | sed -e 's,.*/,,')
@ -2375,9 +2359,6 @@ cat $INITROOT/$i.sh
?*) USER_VPATH=$USER_VPATH:$i
USER_VPATH_CHAIN="$USER_VPATH_CHAIN $p $i"
p=$i
case $PROTOROOT in
-) executable $i/bin/mamake && PROTOROOT= ;;
esac
;;
esac
done
@ -2533,87 +2514,18 @@ esac
checkaout() # cmd ...
{
case $PROTOROOT in
-) PROTOROOT=
case $* in
ratz) if test -f $INITROOT/ratz.c -a -w $PACKAGEROOT
then test -f $INITROOT/hello.c || {
cat > $INITROOT/hello.c <<'!'
#ifndef printf
#include <stdio.h>
#endif
int main() { int new = 0; printf("hello world\n"); return new;}
!
}
test -f $INITROOT/p.c || {
cat > $INITROOT/p.c <<'!'
/*
* small test for prototyping cc
*/
int main(int argc, char** argv) { return argc || argv; }
!
}
fi
;;
esac
test -f $INITROOT/hello.c -a -f $INITROOT/p.c -a -w $PACKAGEROOT || {
for i
do onpath $i || {
note "$i: command not found"
return 1
}
done
return 0
case $cc in
'') _PACKAGE_cc=0
;;
*) _PACKAGE_cc=1
test -f $INITROOT/hello.c -a -f $INITROOT/p.c || {
note "$INITROOT: INIT package source not found"
return 1
}
case $cc in
'') _PACKAGE_cc=0
;;
*) _PACKAGE_cc=1
test -f $INITROOT/hello.c -a -f $INITROOT/p.c || {
note "$INITROOT: INIT package source not found"
return 1
}
# check for prototyping cc
# NOTE: proto.c must be K&R compatible
$CC -c $INITROOT/p.c >/dev/null 2>&1
c=$?
rm -f p.*
test 0 != "$c" && {
checkaout proto || return
PROTOROOT=$PACKAGEROOT/proto
$show PROTOROOT=$PACKAGEROOT/proto
export PROTOROOT
INITPROTO=$PROTOROOT/src/cmd/INIT
note "proto convert $PACKAGEROOT/src into $PROTOROOT/src"
dirs="src"
(
if test -f $PROTOROOT/UPDATE
then newer="-newer $PROTOROOT/UPDATE"
else newer=""
fi
case $exec in
'') cd $PACKAGEROOT
find $dirs -name '*.[CcHh]' $newer -print | proto -v -L - -C proto
;;
*) $exec cd $PACKAGEROOT
$exec "find $dirs -name '*.[CcHh]' $newer -print | proto -L - -C proto"
;;
esac
$exec touch $PROTOROOT/UPDATE
)
VPATH=$INSTALLROOT:$PROTOROOT:$PACKAGEROOT$USER_VPATH
$show VPATH=$VPATH
export VPATH
}
for i in arch arch/$HOSTTYPE arch/$HOSTTYPE/bin
do test -d $PACKAGEROOT/$i || $exec mkdir $PACKAGEROOT/$i || return
done
;;
esac
for i in arch arch/$HOSTTYPE arch/$HOSTTYPE/bin
do test -d $PACKAGEROOT/$i || $exec mkdir $PACKAGEROOT/$i || return
done
;;
esac
case $_PACKAGE_cc in
@ -2672,30 +2584,12 @@ int main(int argc, char** argv) { return argc || argv; }
case $(ls -t $INITROOT/$i.c $INSTALLROOT/bin/$i 2>/dev/null) in
"$INITROOT/$i.c"*)
note "update $INSTALLROOT/bin/$i"
if test proto != "$i" && executable $INSTALLROOT/bin/proto
then case $exec in
'') $INSTALLROOT/bin/proto -p $INITROOT/$i.c > $i.c || return ;;
*) $exec "$INSTALLROOT/bin/proto -p $INITROOT/$i.c > $i.c" ;;
esac
$exec $CC $CCFLAGS -o $INSTALLROOT/bin/$i $i.c || return
$exec rm -f $i.c
else if test ! -d $INSTALLROOT/bin
then for j in arch arch/$HOSTTYPE arch/$HOSTTYPE/bin
do test -d $PACKAGEROOT/$j || $exec mkdir $PACKAGEROOT/$j || return
done
fi
if test '' != "$PROTOROOT" -a -f $INITPROTO/$i.c
then $exec $CC $CCFLAGS -o $INSTALLROOT/bin/$i $INITPROTO/$i.c || return
else $exec $CC $CCFLAGS -o $INSTALLROOT/bin/$i $INITROOT/$i.c || return
fi
case $i:$exec in
proto:) test -d $INSTALLROOT/include || mkdir $INSTALLROOT/include
$INSTALLROOT/bin/proto -f /dev/null > $i.c
cmp -s $i.c $INSTALLROOT/include/prototyped.h 2>/dev/null || cp $i.c $INSTALLROOT/include/prototyped.h
rm $i.c
;;
esac
if test ! -d $INSTALLROOT/bin
then for j in arch arch/$HOSTTYPE arch/$HOSTTYPE/bin
do test -d $PACKAGEROOT/$j || $exec mkdir $PACKAGEROOT/$j || return
done
fi
$exec $CC $CCFLAGS -o $INSTALLROOT/bin/$i $INITROOT/$i.c || return
test -f $i.o && $exec rm -f $i.o
i=$PATH
PATH=/bin
@ -3172,9 +3066,9 @@ cat $j $k
esac
fi
# initialize a few mamake related commands
# initialize mamake
checkaout mamake proto ratz || exit
checkaout mamake || exit
# execrate if necessary
@ -3529,7 +3423,7 @@ results)set '' $target
case $filter in
errors) $exeg egrep '^pax:|\*\*\*' $j
;;
*) $exec egrep -iv '^($||[\+\[]|cc[^-:]|kill |make.*(file system time|has been replaced)|so|[0123456789]+ error|uncrate |[0123456789]+ block|ar: creat|iffe: test: |conf: (check|generate|test)|[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_][abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_0123456789]*=|gsf@research|ar:.*warning|cpio:|ld:.*(duplicate symbol|to obtain more information)|[0123456789]*$|(checking|creating|touch) [/abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_0123456789])| obsolete predefined symbol | is (almost always misused|dangerous|deprecated|not implemented)| trigraph| assigned to | cast .* different size| integer overflow .*<<| optimization may be attained | passed as |::__builtin|pragma.*prototyped|^creating.*\.a$|warning.*not optimized|exceeds size thresh|ld:.*preempts|is unchanged|with value >=|(-l|lib)\*|/(ast|sys)/(dir|limits|param|stropts)\.h.*redefined|usage|base registers|`\.\.\.` obsolete'"$i" $j |
*) $exec egrep -iv '^($||[\+\[]|cc[^-:]|kill |make.*(file system time|has been replaced)|so|[0123456789]+ error|uncrate |[0123456789]+ block|ar: creat|iffe: test: |conf: (check|generate|test)|[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_][abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_0123456789]*=|gsf@research|ar:.*warning|cpio:|ld:.*(duplicate symbol|to obtain more information)|[0123456789]*$|(checking|creating|touch) [/abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_0123456789])| obsolete predefined symbol | is (almost always misused|dangerous|deprecated|not implemented)| trigraph| assigned to | cast .* different size| integer overflow .*<<| optimization may be attained | passed as |::__builtin|^creating.*\.a$|warning.*not optimized|exceeds size thresh|ld:.*preempts|is unchanged|with value >=|(-l|lib)\*|/(ast|sys)/(dir|limits|param|stropts)\.h.*redefined|usage|base registers|`\.\.\.` obsolete'"$i" $j |
$exec grep :
;;
esac
@ -3564,6 +3458,7 @@ use) # finalize the environment
esac
eval PACKAGE_USE=$package_use
export PACKAGE_USE
unset LC_ALL # respect the user's locale again; avoids multibyte corruption
# run the command

View file

@ -408,41 +408,6 @@ make install
done mamake.o generated
exec - ${CC} ${CCLDFLAGS} ${mam_cc_FLAGS} ${KSH_RELFLAGS} ${CCFLAGS} ${LDFLAGS} -o mamake mamake.o
done mamake generated
make proto
make proto.o
make proto.c
done proto.c
meta proto.o %.c>%.o proto.c proto
prev proto.c
exec - ${CC} ${mam_cc_FLAGS} ${KSH_RELFLAGS} ${CCFLAGS} -c proto.c
done proto.o generated
exec - ${CC} ${CCLDFLAGS} ${mam_cc_FLAGS} ${KSH_RELFLAGS} ${CCFLAGS} ${LDFLAGS} -o proto proto.o
done proto generated
make ratz
make ratz.o
make ratz.c
make unix.h implicit
done unix.h dontcare virtual
make alloc.h implicit
done alloc.h dontcare virtual
make unixio.h implicit
done unixio.h dontcare virtual
make ast_std.h implicit
done ast_std.h dontcare virtual
make windows.h implicit
done windows.h dontcare virtual
make io.h implicit
done io.h dontcare virtual
make direct.h implicit
done direct.h dontcare virtual
prev ast.h implicit
done ratz.c
meta ratz.o %.c>%.o ratz.c ratz
prev ratz.c
exec - ${CC} ${mam_cc_FLAGS} ${KSH_RELFLAGS} ${CCFLAGS} -c ratz.c
done ratz.o generated
exec - ${CC} ${CCLDFLAGS} ${mam_cc_FLAGS} ${KSH_RELFLAGS} ${CCFLAGS} ${LDFLAGS} -o ratz ratz.o
done ratz generated
make mprobe
make mprobe.sh
done mprobe.sh
@ -634,14 +599,16 @@ make install
prev mamake
exec - test '' = 'mamake' || ${STDCMP} 2>/dev/null -s mamake ${INSTALLROOT}/bin/mamake || { ${STDMV} ${INSTALLROOT}/bin/mamake ${INSTALLROOT}/bin/mamake.old 2>/dev/null || true; ${STDCP} mamake ${INSTALLROOT}/bin/mamake ;}
done ${INSTALLROOT}/bin/mamake generated
make ${INSTALLROOT}/bin/proto
prev proto
exec - test '' = 'proto' || ${STDCMP} 2>/dev/null -s proto ${INSTALLROOT}/bin/proto || { ${STDMV} ${INSTALLROOT}/bin/proto ${INSTALLROOT}/bin/proto.old 2>/dev/null || true; ${STDCP} proto ${INSTALLROOT}/bin/proto ;}
done ${INSTALLROOT}/bin/proto generated
make ${INSTALLROOT}/bin/ratz
prev ratz
exec - test '' = 'ratz' || ${STDCMP} 2>/dev/null -s ratz ${INSTALLROOT}/bin/ratz || { ${STDMV} ${INSTALLROOT}/bin/ratz ${INSTALLROOT}/bin/ratz.old 2>/dev/null || true; ${STDCP} ratz ${INSTALLROOT}/bin/ratz ;}
done ${INSTALLROOT}/bin/ratz generated
make __proto_stub
note *
note * proto(1) has been removed, but install a backwards compatibility stub
note * that allows old Mamfiles containing proto commands to keep working.
note *
exec - src=${PACKAGEROOT}/src/cmd/INIT/proto.sh
exec - dst=${INSTALLROOT}/bin/proto
exec - ${STDCMP} 2>/dev/null -s $src $dst || { ${STDMV} $dst $dst.old 2>/dev/null || true; ${STDCP} $src $dst ;}
exec - test -w $dst && test -x $dst || chmod u+w,+x $dst
done __proto_stub dontcare virtual
make ${INSTALLROOT}/bin/mkdir
make mkdir.sh
done mkdir.sh
@ -876,18 +843,6 @@ make install
exec - then mkdir -p ${INSTALLROOT}/include/ast
exec - fi
done ${INSTALLROOT}/include/ast generated
make ${INSTALLROOT}/include/ast/prototyped.h
prev ${INSTALLROOT}/include/ast
make prototyped.h
prev ${INSTALLROOT}/bin/proto
exec - proto -f /dev/null > h.${COTEMP}.h
exec - if cmp 2>/dev/null -s h.${COTEMP}.h prototyped.h
exec - then rm -f h.${COTEMP}.h
exec - else mv h.${COTEMP}.h prototyped.h
exec - fi
done prototyped.h generated
exec - test '' = 'prototyped.h' || ${STDCMP} 2>/dev/null -s prototyped.h ${INSTALLROOT}/include/ast/prototyped.h || { ${STDMV} ${INSTALLROOT}/include/ast/prototyped.h ${INSTALLROOT}/include/ast/prototyped.h.old 2>/dev/null || true; ${STDCP} prototyped.h ${INSTALLROOT}/include/ast/prototyped.h ;}
done ${INSTALLROOT}/include/ast/prototyped.h generated
make ${INSTALLROOT}/lib/lib
exec - if test ! -d ${INSTALLROOT}/lib/lib
exec - then mkdir -p ${INSTALLROOT}/lib/lib

View file

@ -32,7 +32,7 @@ AIX) unset LIBPATH ;;
esac
command=iffe
version=2021-12-06
version=2021-12-22
compile() # $cc ...
{
@ -682,7 +682,6 @@ case `(set -f && set x * && echo $# && set +f) 2>/dev/null` in
esac
;;
esac
protoflags=
puthdr=
putlib=
pragma=
@ -811,9 +810,8 @@ case `(getopts '[-][123:xyz]' opt --xyz; echo 0$opt) 2>/dev/null` in
[N!:optimize?\b--nooptimize\b disables compiler optimization options.]
[o:output?Sets the output file name to \afile\a.]:[file]
[O:stdio?Sets the standard io header to \ahdr\a.]:[hdr:=stdio.h]
[e:package?Sets the \bproto\b(1) package name to \aname\a.]:[name]
[p:prototyped?Emits \b#pragma prototyped\b at the top of the
output file. See \bproto\b(1).]
[e:package?Obsolete; ignored.]
[p:prototyped?Obsolete; ignored.]
[P:pragma?Emits \b#pragma\b \atext\a at the top of the output file.]:[text]
[r:regress?Massage output for regression testing.]
[s:shell?Sets the internal shell name to \aname\a. Used for debugging
@ -880,30 +878,17 @@ case `(getopts '[-][123:xyz]' opt --xyz; echo 0$opt) 2>/dev/null` in
\bNOTE("...")\b to emit short text in \b--verbose\b output; only one
\bNOTE()\b should be called per test for readability. In addition to
all macro definitions generated by previous tests, all generated
code contains the following at the top to hide dialect differences:]{
[+ ?#if defined(__STDC__) || defined(__cplusplus) || defined(c_plusplus)]
code contains the following at the top:]{
[+ ?/* AST backwards compatibility macros */]
[+ ?#define _NIL_(x) ((x)0)]
[+ ?#define _STD_ 1]
[+ ?#define _ARG_(x) x]
[+ ?#define _VOID_ void]
[+ ?#else]
[+ ?#define _STD_ 0]
[+ ?#define _ARG_(x) ()]
[+ ?#define _VOID_ char]
[+ ?#endif]
[+ ?#if defined(__cplusplus)]
[+ ?#define _BEGIN_EXTERNS_ extern "C" {]
[+ ?#define _END_EXTERNS_ }]
[+ ?#else]
[+ ?#define _BEGIN_EXTERNS_]
[+ ?#define _END_EXTERNS_]
[+ ?#endif]
[+ ?#define _NIL_(x) ((x)0)]
[+ ?#include <stdio.h> /* unless changed using the "stdio" option */]
[+ ?/* if/when available, "$INSTALLROOT/src/lib/libast/FEATURE/standards" is included here */]
[+ ?/* then <stdio.h> is included, unless this was disabled using the "stdio" option */]
}
[+?In addition, if and when available, standards macros set as a result of the
\bsrc/lib/libast/features/standards\b feature test are incorporated
here, ensuring the compilation environment is consistent between the
tests and the code that uses the test results.]
[+?= \adefault\a may be specified for the \bkey\b, \blib\b, \bmac\b, \bmth\b
and \btyp\b tests. If the test fails for \aarg\a then
\b#define\b \aarg\a \adefault\a is emitted. \bkey\b accepts multiple
@ -1111,7 +1096,7 @@ case `(getopts '[-][123:xyz]' opt --xyz; echo 0$opt) 2>/dev/null` in
\bendif\b } with unnamed \b{\b ... \b}\b blocks.]
}
[+SEE ALSO?\bautoconf\b(1), \bconfig\b(1), \bgetconf\b(1), \bcrossexec\b(1),
\bnmake\b(1), \bpackage\b(1), \bproto\b(1), \bsh\b(1)]
\bnmake\b(1), \bpackage\b(1), \bsh\b(1)]
'
while getopts -a "$command" "$USAGE" OPT
do case $OPT in
@ -1128,8 +1113,8 @@ case `(getopts '[-][123:xyz]' opt --xyz; echo 0$opt) 2>/dev/null` in
n) set="$set set namval $OPTARG :" ;;
N) set="$set set nooptimize $OPTARG :" ;;
o) set="$set set output $OPTARG :" ;;
e) set="$set set package $OPTARG :" ;;
p) set="$set set prototyped :" ;;
e) ;; # obsolete
p) ;; # obsolete
P) set="$set set pragma $OPTARG :" ;;
r) set="$set set regress :" ;;
s) set="$set set shell $OPTARG :" ;;
@ -1195,10 +1180,10 @@ case `(getopts '[-][123:xyz]' opt --xyz; echo 0$opt) 2>/dev/null` in
REM=o`echo X$1 | sed 's,[^=]*=,,'`
;;
--pa=*|--pac=*|--pack=*|--packa=*|--packag=*|--package=*)
REM=e`echo X$1 | sed 's,[^=]*=,,'`
# obsolete
;;
--pro|--prot|--proto|--protot|--prototy|--prototyp|--prototype|--prototyped)
REM=p
# obsolete
;;
--pra=*|--prag=*|--pragma=*)
REM=P`echo X$1 | sed 's,[^=]*=,,'`
@ -1265,8 +1250,8 @@ case `(getopts '[-][123:xyz]' opt --xyz; echo 0$opt) 2>/dev/null` in
n) set="$set set namval $OPTARG :" ;;
N) set="$set set nooptimize $OPTARG :" ;;
o) set="$set set output $OPTARG :" ;;
e) set="$set set package $OPTARG :" ;;
p) set="$set set prototyped :" ;;
e) ;; # obsolete
p) ;; # obsolete
P) set="$set set pragma $OPTARG :" ;;
r) set="$set set regress :" ;;
s) set="$set set shell $OPTARG :" ;;
@ -1352,23 +1337,13 @@ status=2
# standard header for c source
std='#if defined(__STDC__) || defined(__cplusplus) || defined(c_plusplus)
std='/* AST backwards compatibility macros */
#define _NIL_(x) ((x)0)
#define _STD_ 1
#define _ARG_(x) x
#define _VOID_ void
#else
#define _STD_ 0
#define _ARG_(x) ()
#define _VOID_ char
#endif
#if defined(__cplusplus)
#define _BEGIN_EXTERNS_ extern "C" {
#define _END_EXTERNS_ }
#else
#define _BEGIN_EXTERNS_
#define _END_EXTERNS_
#endif
#define _NIL_(x) ((x)0)'
#define _END_EXTERNS_'
# To ensure the environment tested is the same as that used, add standards
# compliance macros as probed by libast as soon as they are available.
if test -f "${INSTALLROOT}/src/lib/libast/FEATURE/standards"
@ -1392,7 +1367,6 @@ ini=
init=1
line=0
nan=
prototyped=
while :
do case $in in
"") case $argx:$* in
@ -1616,8 +1590,8 @@ do case $in in
n) op=namval ;;
N) op=nooptimize ;;
o) op=output ;;
e) op=package ;;
p) op=prototyped ;;
e) ;; # obsolete
p) ;; # obsolete
P) op=pragma ;;
r) op=regress ;;
s) op=shell ;;
@ -1818,15 +1792,11 @@ do case $in in
def=
test=
;;
package)protoflags="$protoflags -e $arg"
package)# obsolete
continue
;;
prototyped|noprototyped)
pragma="$pragma $op"
case $op in
prototyped) prototyped=1 ;;
*) prototyped= ;;
esac
# obsolete
continue
;;
pragma) pragma="$pragma $arg"
@ -2406,10 +2376,8 @@ int x;
$std
#include <sys/types.h>
$usr
_BEGIN_EXTERNS_
struct _iffe_struct { int _iffe_member; };
extern struct _iffe_struct* $x _ARG_((struct _iffe_struct*));
_END_EXTERNS_
extern struct _iffe_struct* $x (struct _iffe_struct*);
"
# some compilers with -O only warn for invalid intrinsic prototypes
case " $cc " in
@ -2445,13 +2413,7 @@ _END_EXTERNS_
;;
esac
copy - "extern $t $x$v;"
# NOTE: technically if prototyped is on all tests should
# be run through proto(1), but we'd like iffe to
# work sans proto -- so we drop the extern's in
# the test headers
case $prototyped in
'') usr="$usr${nl}extern $t $x$v;" ;;
esac
usr="$usr${nl}extern $t $x$v;"
else failure -
case $in in
"") while :
@ -3142,8 +3104,7 @@ int x;
n) sed '/^#/d' $tmp.h > $tmp.c
sed '/^#/d' $x > $tmp.t
;;
*) (proto -r $protoflags $tmp.h) >/dev/null 2>&1
sed 's,/\*[^/]*\*/, ,g' $tmp.h > $tmp.c
*) sed 's,/\*[^/]*\*/, ,g' $tmp.h > $tmp.c
sed 's,/\*[^/]*\*/, ,g' $x > $tmp.t
;;
esac
@ -3596,9 +3557,7 @@ $tst
$ext
$std
$usr
_BEGIN_EXTERNS_
extern int $statictest;
_END_EXTERNS_
int main(){char* i = (char*)&$statictest; return ((unsigned int)i)^0xaaaa;}
"
rm -f $tmp.exe
@ -3707,9 +3666,7 @@ $pre
case $inc in
?*) echo "$inc"
;;
*) echo "_BEGIN_EXTERNS_
extern int $v;
_END_EXTERNS_"
*) echo "extern int $v;"
;;
esac
echo "
@ -4081,9 +4038,7 @@ $v i;
#else
typedef int (*_IFFE_fun)();
#ifdef _IFFE_extern
_BEGIN_EXTERNS_
extern int $v();
_END_EXTERNS_
#endif
static _IFFE_fun i=(_IFFE_fun)$v;int main(){return ((unsigned int)i)^0xaaaa;}
#endif
@ -4124,9 +4079,7 @@ $std
$usr
$pre
$inc
_BEGIN_EXTERNS_
extern int foo();
_END_EXTERNS_
static int ((*i)())=foo;int main(){return(i==0);}
"
compile $cc -c $tmp.c <&$nullin >&$nullout
@ -4248,14 +4201,8 @@ $std
$usr
$pre
$inc
_BEGIN_EXTERNS_
struct _iffe_struct { int _iffe_member; };
#if _STD_
extern struct _iffe_struct* $v(struct _iffe_struct*);
#else
extern struct _iffe_struct* $v();
#endif
_END_EXTERNS_
"
# some compilers with -O only warn for invalid intrinsic prototypes
case " $cc " in
@ -4273,9 +4220,7 @@ $std
$usr
$pre
$inc
_BEGIN_EXTERNS_
int _iffe_int = $v / 2;
_END_EXTERNS_
"
compile $cc -c $tmp.c <&$nullin >&$nullout
report $? 1 "$v is a numeric constant" "$v is not a numeric constant"

View file

@ -1778,71 +1778,9 @@ iffe: test: is Tab_lE a symbol that needs a prototype ... yes'
TEST 17 'features/* => FEATURE/*'
EXEC -r -v run features/stdio
INPUT features/stdio $'set prototyped
header stdio.h'
OUTPUT FEATURE/stdio $'
/* : : generated by proto : : */
/* : : generated from features/stdio by iffe version 1995-03-19 : : */
INPUT features/stdio $'header stdio.h'
OUTPUT FEATURE/stdio $'/* : : generated from features/stdio by iffe version 1995-03-19 : : */
#ifndef _REGRESS
#if !defined(__PROTO__)
# if defined(__STDC__) || defined(__cplusplus) || defined(_proto) || defined(c_plusplus)
# if defined(__cplusplus)
# define __LINKAGE__ "C"
# else
# define __LINKAGE__
# endif
# define __STDARG__
# define __PROTO__(x) x
# define __OTORP__(x)
# define __PARAM__(n,o) n
# if !defined(__STDC__) && !defined(__cplusplus)
# if !defined(c_plusplus)
# define const
# endif
# define signed
# define void int
# define volatile
# define __V_ char
# else
# define __V_ void
# endif
# else
# define __PROTO__(x) ()
# define __OTORP__(x) x
# define __PARAM__(n,o) o
# define __LINKAGE__
# define __V_ char
# define const
# define signed
# define void int
# define volatile
# endif
# define __MANGLE__ __LINKAGE__
# if defined(__cplusplus) || defined(c_plusplus)
# define __VARARG__ ...
# else
# define __VARARG__
# endif
# if defined(__STDARG__)
# define __VA_START__(p,a) va_start(p,a)
# else
# define __VA_START__(p,a) va_start(p)
# endif
# if !defined(__INLINE__)
# if defined(__cplusplus)
# define __INLINE__ extern __MANGLE__ inline
# else
# if defined(_WIN32) && !defined(__GNUC__)
# define __INLINE__ __inline
# endif
# endif
# endif
#endif
#if !defined(__LINKAGE__)
#define __LINKAGE__ /* 2004-08-11 transition */
#endif
#define _REGRESS 1
#define _sys_types 1 /* #include <sys/types.h> ok */
#include <stdio.h>

View file

@ -72,7 +72,6 @@ extern int i;
int i = 1;
extern int f(){return(!i);}
int main(){FILE* fp=stdin;return(f());}' > pic.$src
echo 'class x {int n;} m;' > plusplus.$src
echo 'int prefix(){return 0;}' > prefix.$src
echo 'template<class T> int gt(T a, T b);
template<class T> int gt(T a, T b) { return a > b; }
@ -102,9 +101,7 @@ int i;
int main(){int j;j = i * 10;return j;}' > strip.$src
echo 'template <class T> void f(T){}
int main(){f(1);return 0;}' > toucho.$src
echo '#if defined(__STDC__) || defined(__cplusplus)
extern type call(int);
#endif
echo 'extern type call(int);
int main() {call(0);return(0);}' > tstlib.$src
echo 'int main(){return 0;}' > warn.$src
echo 'int f(){return 0;}' > warn1.$src
@ -154,7 +151,6 @@ nmedit=
nmflags=
no_protect=
optimize=
plusplus=
prefix_archive=lib
prefix_dynamic=
prefix_shared=lib
@ -433,7 +429,6 @@ int main() { f(); return 0; }' > picok.$src
esac
fi
$cc -c plusplus.$src && plusplus=1
$cc -E -dD dDflag.$src > t
case `grep '#define[ ][ ]*dDflag[ ][ ]*on' t` in
?*) dDflag=1 ;;
@ -441,90 +436,7 @@ esac
case `grep '#define.*_GNUC_' t` in
?*) gnu=1 ;;
esac
case $plusplus in
"") $cc -c stdc.$src && stdc=1 ;;
*) mkdir ptr
cd ptr
$cc -c ../ptr.$src &
NFS_locks_are_botched=$!
cd ..
if $cc -c require.$src && $cc require.$obj
then set x `$cc require.$obj 2>&1`
d=
while :
do shift
case $# in
0) break ;;
esac
case $1 in
-l*) d="$d $1" ;;
esac
done
for f in ++
do if $cc require.$obj -l$f
then set x `$cc require.$obj -l$f 2>&1`
r=
while :
do shift
case $# in
0) break ;;
esac
case $1 in
-l*) case " $d $r " in
*" "$1" "*) ;;
*) r="$r $1" ;;
esac
esac
done
case $r in
?*) require="$require $f"
echo '' $r > req.$f
;;
esac
fi
done
fi
cd ptr
for i in *
do if test -d $i
then repository=$i
break
fi
done
cd ..
kill -9 $NFS_locks_are_botched
rm -rf ptr
case $repository in
*?) mkdir ptr
cd ptr
i=PTR
case $repository in
$i) i=$i$i ;;
esac
$cc -ptr$i -c ../ptr.$src &
NFS_locks_are_botched=$!
cd ..
sleep 5
if test -d ptr/$i/$repository
then ptrimplicit=1
fi
kill -9 $NFS_locks_are_botched
rm -rf ptr
;;
esac
$cc -o implc implc.$src && $executable implc && implicitc=1
if $cc -c toucho.$src && test -f toucho.$obj
then o=`ls -l toucho.$obj`
if $cc -o toucho toucho.$obj && $executable toucho
then n=`ls -l touch.$obj`
case $n in
"$o") ;;
*) toucho=1 ;;
esac
fi
fi
;;
esac
$cc -c stdc.$src && stdc=1
if $cc -c pic.$src
then eval set x $probe_nmflags
@ -713,37 +625,34 @@ case $cc_dll:$cc_pic:$so:$dynamic:$static in
esac
dld=$xx
shared=$1
# does -nostartfiles make sense for C?
case $plusplus in
'') z=`wc -c < xxx$dll`
eval set x $probe_shared_nostart
while :
do shift
case $# in
0) break ;;
esac
rm -f xxx$dll
if $dld $shared $1 -o xxx$dll shared.$obj 2>e && test -r xxx$dll
then case `wc -c < xxx$dll` in
$z) ;;
*) if test -s e
then case `cat e` in
*[Ee][Rr][Rr][Oo][Rr]*|*[Ww][Aa][Rr][Nn][Ii][Nn][Gg]*|*[Oo][Pp][Tt][Ii][Oo][Nn]*)
continue
;;
esac
fi
case $shared in
'') shared=$1 ;;
*) shared="$shared $1" ;;
# does -nostartfiles make sense?
z=`wc -c < xxx$dll`
eval set x $probe_shared_nostart
while :
do shift
case $# in
0) break ;;
esac
rm -f xxx$dll
if $dld $shared $1 -o xxx$dll shared.$obj 2>e && test -r xxx$dll
then case `wc -c < xxx$dll` in
$z) ;;
*) if test -s e
then case `cat e` in
*[Ee][Rr][Rr][Oo][Rr]*|*[Ww][Aa][Rr][Nn][Ii][Nn][Gg]*|*[Oo][Pp][Tt][Ii][Oo][Nn]*)
continue
;;
esac
break
;;
fi
case $shared in
'') shared=$1 ;;
*) shared="$shared $1" ;;
esac
fi
done
;;
esac
break
;;
esac
fi
done
case $cc_dll in
"") cc_dll=$cc_dll_def ;;
esac
@ -1319,9 +1228,7 @@ case $stdlib in
fi
tstlib="$tstlib $implib"
if $cc -Dtype=void -Dcall=exit -c tstlib.$src && mv tstlib.$obj tst.$obj
then case $plusplus in
'') probe_lxx= ;;
esac
then probe_lxx=
l=
for sym in $probe_l $probe_lxx
do case $l in
@ -1666,9 +1573,6 @@ done
case $stdc in
?*) dialect="$dialect ANSI" ;;
esac
case $plusplus in
?*) dialect="$dialect C++" ;;
esac
case $hosted in
"") dialect="$dialect CROSS" ;;
esac

View file

@ -18,7 +18,6 @@
* Glenn Fowler <gsf@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
#pragma clang diagnostic ignored "-Wdeprecated-register"
#pragma clang diagnostic ignored "-Wparentheses"

View file

@ -108,7 +108,7 @@ command=${0##*/}
case $(getopts '[-][123:xyz]' opt --xyz 2>/dev/null; echo 0$opt) in
0123) USAGE=$'
[-?
@(#)$Id: '$command$' (ksh 93u+m) 2021-12-15 $
@(#)$Id: '$command$' (ksh 93u+m) 2021-12-22 $
]
[-author?Glenn Fowler <gsf@research.att.com>]
[-author?Contributors to https://github.com/ksh93/ksh]
@ -252,13 +252,6 @@ case $(getopts '[-][123:xyz]' opt --xyz 2>/dev/null; echo 0$opt) in
file (\bMamfile\b). A Mamfile contains a portable makefile description
written in a simple dependency tree language using indented
\bmake\b...\bdone\b blocks.]
[+?Most component C source is prototyped. If \b$CC\b (default value
\bcc\b) is not a prototyping C compiler then \b'$command$' make\b runs
\bproto\b(1) on portions of the \b$PACKAGEROOT/src\b tree and places
the converted output files in the \b$PACKAGEROOT/proto/src\b tree.
Converted files are then viewpathed over the original source.
\bproto\b(1) converts an ANSI C subset to code that is compatible with
K&R, ANSI, and C++ dialects.]
[+?All scripts and commands under \b$PACKAGEROOT\b use \b$PATH\b
relative pathnames (via the \bAST\b \bpathpath\b(3) function); there
are no embedded absolute pathnames. This means that binaries generated
@ -271,7 +264,7 @@ case $(getopts '[-][123:xyz]' opt --xyz 2>/dev/null; echo 0$opt) in
[+SEE ALSO?\bautoconfig\b(1), \bcksum\b(1), \bexecrate\b(1), \bexpmake\b(1),
\bgzip\b(1), \bmake\b(1), \bmamake\b(1), \bpax\b(1),
\bpkgadd\b(1), \bpkgmk\b(1), \bproto\b(1), \bratz\b(1), \brpm\b(1),
\bpkgadd\b(1), \bpkgmk\b(1), \brpm\b(1),
\bsh\b(1), \btar\b(1), \boptget\b(3)]
'
case $* in
@ -321,7 +314,6 @@ tab=" "
verbose=0
AUTHORIZE=
DEBUG=
PROTOROOT=-
SHELLMAGIC=-
unset FIGNORE BINDIR DLLDIR ETCDIR FUNDIR INCLUDEDIR LIBDIR LOCALEDIR MANDIR SHAREDIR 2>/dev/null || true
@ -507,13 +499,6 @@ DETAILS
Mamfile contains a portable makefile description written in a simple
dependency tree language using indented make...done blocks.
Most component C source is prototyped. If $CC (default value cc) is not a
prototyping C compiler then package make runs proto(1) on portions of the
$PACKAGEROOT/src tree and places the converted output files in the
$PACKAGEROOT/proto/src tree. Converted files are then viewpathed over the
original source. proto(1) converts an ANSI C subset to code that is
compatible with K&R, ANSI, and C++ dialects.
All scripts and commands under $PACKAGEROOT use $PATH relative pathnames (via
the AST pathpath(3) function); there are no embedded absolute pathnames. This
means that binaries generated under $PACKAGEROOT may be copied to a different
@ -523,11 +508,10 @@ DETAILS
SEE ALSO
autoconfig(1), cksum(1), execrate(1), expmake(1), gzip(1), make(1),
mamake(1), pax(1), pkgadd(1), pkgmk(1), proto(1), ratz(1), rpm(1), sh(1),
tar(1), optget(3)
mamake(1), pax(1), pkgadd(1), pkgmk(1), rpm(1), sh(1), tar(1), optget(3)
IMPLEMENTATION
version package (ksh 93u+m) 2021-12-15
version package (ksh 93u+m) 2021-12-22
author Glenn Fowler <gsf@research.att.com>
author Contributors to https://github.com/ksh93/ksh
copyright (c) 1994-2012 AT&T Intellectual Property
@ -2257,7 +2241,7 @@ cat $INITROOT/$i.sh
$show export PATH
export PATH
;;
*) for i in package proto
*) for i in package
do if onpath $i
then EXECROOT=$(echo $_onpath_ | sed -e 's,//*[^/]*//*[^/]*$,,')
EXECTYPE=$(echo $EXECROOT | sed -e 's,.*/,,')
@ -2375,9 +2359,6 @@ cat $INITROOT/$i.sh
?*) USER_VPATH=$USER_VPATH:$i
USER_VPATH_CHAIN="$USER_VPATH_CHAIN $p $i"
p=$i
case $PROTOROOT in
-) executable $i/bin/mamake && PROTOROOT= ;;
esac
;;
esac
done
@ -2533,87 +2514,18 @@ esac
checkaout() # cmd ...
{
case $PROTOROOT in
-) PROTOROOT=
case $* in
ratz) if test -f $INITROOT/ratz.c -a -w $PACKAGEROOT
then test -f $INITROOT/hello.c || {
cat > $INITROOT/hello.c <<'!'
#ifndef printf
#include <stdio.h>
#endif
int main() { int new = 0; printf("hello world\n"); return new;}
!
}
test -f $INITROOT/p.c || {
cat > $INITROOT/p.c <<'!'
/*
* small test for prototyping cc
*/
int main(int argc, char** argv) { return argc || argv; }
!
}
fi
;;
esac
test -f $INITROOT/hello.c -a -f $INITROOT/p.c -a -w $PACKAGEROOT || {
for i
do onpath $i || {
note "$i: command not found"
return 1
}
done
return 0
case $cc in
'') _PACKAGE_cc=0
;;
*) _PACKAGE_cc=1
test -f $INITROOT/hello.c -a -f $INITROOT/p.c || {
note "$INITROOT: INIT package source not found"
return 1
}
case $cc in
'') _PACKAGE_cc=0
;;
*) _PACKAGE_cc=1
test -f $INITROOT/hello.c -a -f $INITROOT/p.c || {
note "$INITROOT: INIT package source not found"
return 1
}
# check for prototyping cc
# NOTE: proto.c must be K&R compatible
$CC -c $INITROOT/p.c >/dev/null 2>&1
c=$?
rm -f p.*
test 0 != "$c" && {
checkaout proto || return
PROTOROOT=$PACKAGEROOT/proto
$show PROTOROOT=$PACKAGEROOT/proto
export PROTOROOT
INITPROTO=$PROTOROOT/src/cmd/INIT
note "proto convert $PACKAGEROOT/src into $PROTOROOT/src"
dirs="src"
(
if test -f $PROTOROOT/UPDATE
then newer="-newer $PROTOROOT/UPDATE"
else newer=""
fi
case $exec in
'') cd $PACKAGEROOT
find $dirs -name '*.[CcHh]' $newer -print | proto -v -L - -C proto
;;
*) $exec cd $PACKAGEROOT
$exec "find $dirs -name '*.[CcHh]' $newer -print | proto -L - -C proto"
;;
esac
$exec touch $PROTOROOT/UPDATE
)
VPATH=$INSTALLROOT:$PROTOROOT:$PACKAGEROOT$USER_VPATH
$show VPATH=$VPATH
export VPATH
}
for i in arch arch/$HOSTTYPE arch/$HOSTTYPE/bin
do test -d $PACKAGEROOT/$i || $exec mkdir $PACKAGEROOT/$i || return
done
;;
esac
for i in arch arch/$HOSTTYPE arch/$HOSTTYPE/bin
do test -d $PACKAGEROOT/$i || $exec mkdir $PACKAGEROOT/$i || return
done
;;
esac
case $_PACKAGE_cc in
@ -2672,30 +2584,12 @@ int main(int argc, char** argv) { return argc || argv; }
case $(ls -t $INITROOT/$i.c $INSTALLROOT/bin/$i 2>/dev/null) in
"$INITROOT/$i.c"*)
note "update $INSTALLROOT/bin/$i"
if test proto != "$i" && executable $INSTALLROOT/bin/proto
then case $exec in
'') $INSTALLROOT/bin/proto -p $INITROOT/$i.c > $i.c || return ;;
*) $exec "$INSTALLROOT/bin/proto -p $INITROOT/$i.c > $i.c" ;;
esac
$exec $CC $CCFLAGS -o $INSTALLROOT/bin/$i $i.c || return
$exec rm -f $i.c
else if test ! -d $INSTALLROOT/bin
then for j in arch arch/$HOSTTYPE arch/$HOSTTYPE/bin
do test -d $PACKAGEROOT/$j || $exec mkdir $PACKAGEROOT/$j || return
done
fi
if test '' != "$PROTOROOT" -a -f $INITPROTO/$i.c
then $exec $CC $CCFLAGS -o $INSTALLROOT/bin/$i $INITPROTO/$i.c || return
else $exec $CC $CCFLAGS -o $INSTALLROOT/bin/$i $INITROOT/$i.c || return
fi
case $i:$exec in
proto:) test -d $INSTALLROOT/include || mkdir $INSTALLROOT/include
$INSTALLROOT/bin/proto -f /dev/null > $i.c
cmp -s $i.c $INSTALLROOT/include/prototyped.h 2>/dev/null || cp $i.c $INSTALLROOT/include/prototyped.h
rm $i.c
;;
esac
if test ! -d $INSTALLROOT/bin
then for j in arch arch/$HOSTTYPE arch/$HOSTTYPE/bin
do test -d $PACKAGEROOT/$j || $exec mkdir $PACKAGEROOT/$j || return
done
fi
$exec $CC $CCFLAGS -o $INSTALLROOT/bin/$i $INITROOT/$i.c || return
test -f $i.o && $exec rm -f $i.o
i=$PATH
PATH=/bin
@ -3172,9 +3066,9 @@ cat $j $k
esac
fi
# initialize a few mamake related commands
# initialize mamake
checkaout mamake proto ratz || exit
checkaout mamake || exit
# execrate if necessary
@ -3529,7 +3423,7 @@ results)set '' $target
case $filter in
errors) $exeg egrep '^pax:|\*\*\*' $j
;;
*) $exec egrep -iv '^($||[\+\[]|cc[^-:]|kill |make.*(file system time|has been replaced)|so|[0123456789]+ error|uncrate |[0123456789]+ block|ar: creat|iffe: test: |conf: (check|generate|test)|[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_][abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_0123456789]*=|gsf@research|ar:.*warning|cpio:|ld:.*(duplicate symbol|to obtain more information)|[0123456789]*$|(checking|creating|touch) [/abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_0123456789])| obsolete predefined symbol | is (almost always misused|dangerous|deprecated|not implemented)| trigraph| assigned to | cast .* different size| integer overflow .*<<| optimization may be attained | passed as |::__builtin|pragma.*prototyped|^creating.*\.a$|warning.*not optimized|exceeds size thresh|ld:.*preempts|is unchanged|with value >=|(-l|lib)\*|/(ast|sys)/(dir|limits|param|stropts)\.h.*redefined|usage|base registers|`\.\.\.` obsolete'"$i" $j |
*) $exec egrep -iv '^($||[\+\[]|cc[^-:]|kill |make.*(file system time|has been replaced)|so|[0123456789]+ error|uncrate |[0123456789]+ block|ar: creat|iffe: test: |conf: (check|generate|test)|[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_][abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_0123456789]*=|gsf@research|ar:.*warning|cpio:|ld:.*(duplicate symbol|to obtain more information)|[0123456789]*$|(checking|creating|touch) [/abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_0123456789])| obsolete predefined symbol | is (almost always misused|dangerous|deprecated|not implemented)| trigraph| assigned to | cast .* different size| integer overflow .*<<| optimization may be attained | passed as |::__builtin|^creating.*\.a$|warning.*not optimized|exceeds size thresh|ld:.*preempts|is unchanged|with value >=|(-l|lib)\*|/(ast|sys)/(dir|limits|param|stropts)\.h.*redefined|usage|base registers|`\.\.\.` obsolete'"$i" $j |
$exec grep :
;;
esac
@ -3564,6 +3458,7 @@ use) # finalize the environment
esac
eval PACKAGE_USE=$package_use
export PACKAGE_USE
unset LC_ALL # respect the user's locale again; avoids multibyte corruption
# run the command

View file

@ -37,9 +37,6 @@ done
for i in $probe_header
do echo "#include <$i>"
done
echo '#ifdef __cplusplus'
echo "int _Pr0b3_cplus=__cplusplus;"
echo '#endif'
echo '#ifdef _UWIN'
echo "int _Pr0b3_uwin=_UWIN;"
echo '#endif'
@ -71,7 +68,6 @@ echo '#endif'
include=
uwin=
cplus=
$cc -E easy.c 2>&1 |
egrep -i '^(#(line)? 1 .*\.[hH]| *int +_Pr0b3_[a-zA-Z_]* *= *[0-9])' |
@ -133,11 +129,6 @@ then : the payoff
set -- $(whence $cmd) "$@"
typ=$(package)
dialect="ANSI CLOSURE DYNAMIC EXPORT=DLL LIBPP -I-"
case ${cc##*/} in
*CC*) dialect="$dialect C++"
cplus=1
;;
esac
ld=${cc%cc}ld
if [[ ! -x $ld ]]
then ld=${cc%/*}/ld

File diff suppressed because it is too large Load diff

35
src/cmd/INIT/proto.sh Normal file
View file

@ -0,0 +1,35 @@
########################################################################
# #
# This file is part of the ksh 93u+m package #
# Copyright (c) 2021 Contributors to ksh 93u+m #
# <https://github.com/ksh93/ksh> #
# and is licensed under the #
# Eclipse Public License, Version 1.0 #
# #
# A copy of the License is available at #
# http://www.eclipse.org/org/documents/epl-v10.html #
# (with md5 checksum b35adb5213ca9657e911e9befb180842) #
# #
# Martijn Dekker <martijn@inlv.org> #
# #
########################################################################
# proto(1) has been removed. This is a backwards compatibility stub that allows
# compiling older AST code (with Mamfiles containing proto commands) using the
# current INIT system. This stub ignores all options, then invokes 'cat'.
while getopts ':dfhinprstvzPSC:e:l:o:L:' opt
do case $opt in
\?) case $OPTARG in
+) ;;
*) echo "proto: $OPTARG: unknown option"
echo 'Usage: proto [-dfhinprstvzP+S] [-C directory] [-e package] [-l file]'
echo ' [-o "name='\''value'\'' ..."] [-L file] file ...'
exit 2
;;
esac >&2
;;
esac
done
shift $((OPTIND - 1))
exec cat -- "$@"

File diff suppressed because it is too large Load diff

View file

@ -21,8 +21,6 @@ setv IFFEFLAGS
setv LDFLAGS
make .INIT
make ${PACKAGE_ast_INCLUDE}/cmdlist.h
make ${PACKAGE_ast_INCLUDE}/prototyped.h implicit
done ${PACKAGE_ast_INCLUDE}/prototyped.h dontcare
done ${PACKAGE_ast_INCLUDE}/cmdlist.h
exec - sed -e '/^CMDLIST(.*)$/!d' -e 's/CMDLIST(\(.*\))/\1/' -e '/^getconf$/d' -e '/^ln$/d' -e '/^mv$/d' -e '/^md5sum$/d' -e '/^sum$/d' ${PACKAGE_ast_INCLUDE}/cmdlist.h
bind -lcmd
@ -43,7 +41,6 @@ make install
prev ${PACKAGE_ast_INCLUDE}/regex.h implicit
make ${PACKAGE_ast_INCLUDE}/proc.h implicit
prev ${PACKAGE_ast_INCLUDE}/ast.h implicit
prev ${PACKAGE_ast_INCLUDE}/prototyped.h implicit
done ${PACKAGE_ast_INCLUDE}/proc.h
prev ${PACKAGE_ast_INCLUDE}/error.h implicit
prev ${PACKAGE_ast_INCLUDE}/cmd.h implicit

View file

@ -1,5 +1,3 @@
set prototyped
header sys/types.h
header pty.h
header libutil.h

View file

@ -19,7 +19,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
static const char usage[] =
"[-?\n@(#)pty (AT&T Research) 2013-05-22\n]"

View file

@ -77,10 +77,7 @@ make install
done ${PACKAGE_ast_INCLUDE}/dlldefs.h dontcare
make ${PACKAGE_ast_INCLUDE}/cmdext.h implicit
make ${PACKAGE_ast_INCLUDE}/shcmd.h implicit
make ${PACKAGE_ast_INCLUDE}/prototyped.h implicit
done ${PACKAGE_ast_INCLUDE}/prototyped.h dontcare
done ${PACKAGE_ast_INCLUDE}/shcmd.h dontcare
prev ${PACKAGE_ast_INCLUDE}/prototyped.h implicit
done ${PACKAGE_ast_INCLUDE}/cmdext.h dontcare
prev ${PACKAGE_ast_INCLUDE}/shcmd.h implicit
make ${PACKAGE_ast_INCLUDE}/stak.h implicit
@ -120,13 +117,10 @@ make install
prev ${PACKAGE_ast_INCLUDE}/ast_common.h implicit
done ${PACKAGE_ast_INCLUDE}/ast_wchar.h dontcare
prev ${PACKAGE_ast_INCLUDE}/ast_common.h implicit
prev ${PACKAGE_ast_INCLUDE}/prototyped.h implicit
done ${PACKAGE_ast_INCLUDE}/regex.h dontcare
make ${PACKAGE_ast_INCLUDE}/getopt.h implicit
make ${PACKAGE_ast_INCLUDE}/ast_getopt.h implicit
prev ${PACKAGE_ast_INCLUDE}/prototyped.h implicit
done ${PACKAGE_ast_INCLUDE}/ast_getopt.h dontcare
prev ${PACKAGE_ast_INCLUDE}/prototyped.h implicit
done ${PACKAGE_ast_INCLUDE}/getopt.h dontcare
prev ${PACKAGE_ast_INCLUDE}/ast_map.h implicit
make ${PACKAGE_ast_INCLUDE}/ast_botch.h implicit
@ -146,12 +140,9 @@ make install
make ${PACKAGE_ast_INCLUDE}/ast_lib.h implicit
done ${PACKAGE_ast_INCLUDE}/ast_lib.h dontcare
prev ${PACKAGE_ast_INCLUDE}/ast_common.h implicit
prev ${PACKAGE_ast_INCLUDE}/prototyped.h implicit
done ${PACKAGE_ast_INCLUDE}/ast_std.h dontcare
done ${PACKAGE_ast_INCLUDE}/sfio.h dontcare
prev ${PACKAGE_ast_INCLUDE}/prototyped.h implicit
done ${PACKAGE_ast_INCLUDE}/stk.h dontcare
prev ${PACKAGE_ast_INCLUDE}/prototyped.h implicit
done ${PACKAGE_ast_INCLUDE}/stak.h dontcare
make ${PACKAGE_ast_INCLUDE}/error.h implicit
make ${PACKAGE_ast_INCLUDE}/option.h implicit
@ -163,15 +154,11 @@ make install
done ${PACKAGE_ast_INCLUDE}/vmalloc.h dontcare
prev ${PACKAGE_ast_INCLUDE}/sfio.h implicit
prev ${PACKAGE_ast_INCLUDE}/ast_std.h implicit
prev ${PACKAGE_ast_INCLUDE}/prototyped.h implicit
done ${PACKAGE_ast_INCLUDE}/ast.h dontcare
prev ${PACKAGE_ast_INCLUDE}/prototyped.h implicit
done ${PACKAGE_ast_INCLUDE}/option.h dontcare
prev ${PACKAGE_ast_INCLUDE}/ast.h implicit
prev ${PACKAGE_ast_INCLUDE}/prototyped.h implicit
done ${PACKAGE_ast_INCLUDE}/error.h dontcare
prev ${PACKAGE_ast_INCLUDE}/ast.h implicit
prev ${PACKAGE_ast_INCLUDE}/prototyped.h implicit
done ${PACKAGE_ast_INCLUDE}/cmd.h dontcare
prev ${PACKAGE_ast_INCLUDE}/shcmd.h implicit
make include/nval.h implicit
@ -213,7 +200,6 @@ make install
make ${PACKAGE_ast_INCLUDE}/ast_time.h implicit
done ${PACKAGE_ast_INCLUDE}/ast_time.h dontcare
prev ${PACKAGE_ast_INCLUDE}/ast.h implicit
prev ${PACKAGE_ast_INCLUDE}/prototyped.h implicit
done ${PACKAGE_ast_INCLUDE}/times.h dontcare
done FEATURE/time generated
make include/builtins.h implicit
@ -292,7 +278,6 @@ make install
done ${PACKAGE_ast_INCLUDE}/ast_mode.h dontcare
prev ${PACKAGE_ast_INCLUDE}/ast_fs.h implicit
prev ${PACKAGE_ast_INCLUDE}/ast_std.h implicit
prev ${PACKAGE_ast_INCLUDE}/prototyped.h implicit
done ${PACKAGE_ast_INCLUDE}/ls.h
prev include/builtins.h implicit
prev include/name.h implicit
@ -442,7 +427,6 @@ make install
make ${PACKAGE_ast_INCLUDE}/ast_ccode.h implicit
done ${PACKAGE_ast_INCLUDE}/ast_ccode.h dontcare
prev ${PACKAGE_ast_INCLUDE}/ast_common.h implicit
prev ${PACKAGE_ast_INCLUDE}/prototyped.h implicit
done ${PACKAGE_ast_INCLUDE}/ccode.h
make ${PACKAGE_ast_INCLUDE}/tmx.h implicit
make ${PACKAGE_ast_INCLUDE}/tv.h implicit
@ -451,7 +435,6 @@ make install
make ${PACKAGE_ast_INCLUDE}/tm.h implicit
prev ${PACKAGE_ast_INCLUDE}/times.h implicit
prev ${PACKAGE_ast_INCLUDE}/ast.h implicit
prev ${PACKAGE_ast_INCLUDE}/prototyped.h implicit
done ${PACKAGE_ast_INCLUDE}/tm.h dontcare
done ${PACKAGE_ast_INCLUDE}/tmx.h
make include/streval.h implicit
@ -800,12 +783,10 @@ make install
make dirlib.h implicit
done dirlib.h dontcare virtual
prev ${PACKAGE_ast_INCLUDE}/ast_lib.h implicit
prev ${PACKAGE_ast_INCLUDE}/prototyped.h implicit
done ${PACKAGE_ast_INCLUDE}/ast_dir.h
prev ${PACKAGE_ast_INCLUDE}/stak.h implicit
prev ${PACKAGE_ast_INCLUDE}/ls.h implicit
make ${PACKAGE_ast_INCLUDE}/glob.h implicit
prev ${PACKAGE_ast_INCLUDE}/prototyped.h implicit
done ${PACKAGE_ast_INCLUDE}/glob.h
prev ${PACKAGE_ast_INCLUDE}/ast.h implicit
prev include/test.h implicit
@ -946,7 +927,6 @@ make install
make ${PACKAGE_ast_INCLUDE}/ast_wait.h implicit
done ${PACKAGE_ast_INCLUDE}/ast_wait.h dontcare
prev ${PACKAGE_ast_INCLUDE}/ast.h implicit
prev ${PACKAGE_ast_INCLUDE}/prototyped.h implicit
done ${PACKAGE_ast_INCLUDE}/wait.h
prev include/defs.h implicit
done sh/jobs.c
@ -1508,26 +1488,23 @@ make install
make ${PACKAGE_ast_INCLUDE}/nval.h
prev ${PACKAGE_ast_INCLUDE}
prev include/nval.h
exec - proto -p -s include/nval.h > 1.${COTEMP}.x
exec - if cmp 2>/dev/null -s ${PACKAGE_ast_INCLUDE}/nval.h 1.${COTEMP}.x
exec - then rm -f 1.${COTEMP}.x
exec - else mv 1.${COTEMP}.x ${PACKAGE_ast_INCLUDE}/nval.h
exec - if cmp 2>/dev/null -s include/nval.h ${PACKAGE_ast_INCLUDE}/nval.h
exec - then :
exec - else ${STDCP} include/nval.h ${PACKAGE_ast_INCLUDE}/nval.h
exec - fi
done ${PACKAGE_ast_INCLUDE}/nval.h generated
make ${PACKAGE_ast_INCLUDE}/shell.h
prev include/shell.h
exec - proto -p -s include/shell.h > 1.${COTEMP}.x
exec - if cmp 2>/dev/null -s ${PACKAGE_ast_INCLUDE}/shell.h 1.${COTEMP}.x
exec - then rm -f 1.${COTEMP}.x
exec - else mv 1.${COTEMP}.x ${PACKAGE_ast_INCLUDE}/shell.h
exec - if cmp 2>/dev/null -s include/shell.h ${PACKAGE_ast_INCLUDE}/shell.h
exec - then :
exec - else ${STDCP} include/shell.h ${PACKAGE_ast_INCLUDE}/shell.h
exec - fi
done ${PACKAGE_ast_INCLUDE}/shell.h generated
make ${PACKAGE_ast_INCLUDE}/history.h
prev include/history.h
exec - proto -p -s include/history.h > 1.${COTEMP}.x
exec - if cmp 2>/dev/null -s ${PACKAGE_ast_INCLUDE}/history.h 1.${COTEMP}.x
exec - then rm -f 1.${COTEMP}.x
exec - else mv 1.${COTEMP}.x ${PACKAGE_ast_INCLUDE}/history.h
exec - if cmp 2>/dev/null -s include/history.h ${PACKAGE_ast_INCLUDE}/history.h
exec - then :
exec - else ${STDCP} include/history.h ${PACKAGE_ast_INCLUDE}/history.h
exec - fi
done ${PACKAGE_ast_INCLUDE}/history.h generated
make ${INSTALLROOT}/bin/suid_exec

View file

@ -620,8 +620,8 @@ ____
10-09-29 A bug in which loading a function from FPATH could leave a file
descriptor open has been fixed.
10-09-28 +A new compile option SHOPT_FIXEDARRAY has been added and is being
evaluated. It allows fixed sized indexed arrays be to defined
using "typeset array[dim1][dim2]...[dimn]". Fixed sized arrays
evaluated. It allows fixed-size indexed arrays be to defined
using "typeset array[dim1][dim2]...[dimn]". Fixed-size arrays
are used the same way indexed arrays are. Currently, only fixed
arrays of fixed objects (float, int, and justified objects) are
supported.

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
/*
* alarm [-r] [varname [+]when]
*

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
/*
* cd [-L] [-Pe] [dirname]
* cd [-L] [-Pe] [old] [new]

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
/*
* break [n]
* continue [n]

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
#include "defs.h"
#define ENUM_ID "enum (ksh 93u+m) 2021-12-17"

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
/*
* getopts [-a name] optstring name [args...]
*

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
#include "defs.h"
#include <stak.h>
#include <ls.h>

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
/*
* bg [job...]
* disown [job...]

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
/*
* mkservice varname pathname
* eloop [-t timeout]

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
/*
* echo [arg...]
* print [-enprsvC] [-f format] [-u fd] [string ...]

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
/*
* read [-ACprsSv] [-d delim] [-u fd] [-t timeout] [-n count] [-N count] [var?prompt] [var ...]
*

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
/*
* regression test intercept control
* enable with 'SHOPT REGRESS=1' in src/cmd/ksh93/SHOPT.sh

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
/*
* sleep [-s] duration
*

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
/*
* test expression
* [ expression ]

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
/*
* trap [-p] action sig...
* kill [-lL] [sig...]

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
/*
* export [-p] [arg...]
* readonly [-p] [arg...]

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
/*
* ulimit [-HSaMctdfxlqenupmrbiswTv] [limit]
*

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
/*
* umask [-S] [mask]
*

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
/*
* command [-pvVx] name [arg...]
* whence [-afpqv] name...

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
#include "defs.h"
#include <signal.h>
#include "FEATURE/options"

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
#include "defs.h"

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
#include "shell.h"
#include "shlex.h"
#include "FEATURE/options"

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
#include <ast.h>

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
#include <ast.h>
#include "ulimit.h"

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
/*
* UNIX shell
* S. R. Bourne

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
#include "defs.h"
#include "name.h"

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
/*
* data for string evaluator library
*/

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
/*
* tables for the test builtin [[ ... ]] and [ ... ]

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
#include <ast.h>
#include "FEATURE/options"

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
/*
* completion.c - command and file completion for shell editors
*

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
/*
* edit.c - common routines for vi and emacs one line editors in shell
*

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
/* Original version by Michael T. Veach
* Adapted for ksh by David Korn */
/* EMACS_MODES: c tabstop=4

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
/*
* bash style history expansion
*
@ -591,7 +590,7 @@ getsel:
{
/* preset old with match from !?string? */
if(!sb.str[0] && wm)
sb.str[0] = sh_strdup(sfsetbuf(wm, (Void_t*)1, 0));
sb.str[0] = sh_strdup(sfsetbuf(wm, (void*)1, 0));
cp = parse_subst(cp, &sb);
}
@ -608,7 +607,7 @@ getsel:
}
/* need pointer for strstr() */
str = sfsetbuf(tmp, (Void_t*)1, 0);
str = sfsetbuf(tmp, (void*)1, 0);
flag |= HIST_SUBSTITUTE;
while(flag & HIST_SUBSTITUTE)

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
/*
* History file manipulation routines
*

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
/* Adapted for ksh by David Korn */
/*+ VI.C P.D. Sullivan
*

View file

@ -1,4 +1,3 @@
set prototyped
hdr nc,exec_attr
mem exception.name,_exception.name math.h
lib setreuid,setregid,nice,fork,spawnveg,fchdir
@ -21,16 +20,12 @@ tst note{ determining extra bytes per argument for arguments list }end output{
* even if all the arguments should fit in ARG_MAX based on their length.
*/
/* AST includes */
#include <ast.h>
#include <error.h>
#include <sfio.h>
#include <stak.h>
#include <wait.h>
/* Standard includes */
#include <errno.h>
int main(int argc,char *argv[])
{
int extra_bytes = 0, envlen, argmax, i;

View file

@ -122,7 +122,6 @@ eval `iffe $iffeflags -c "$cc" - dat,npt,mac $lib $iffehdrs $iffelibs 2>&$stderr
eval `iffe $iffeflags -c "$cc" - num $nums $iffehdrs $iffelibs 2>&$stderr`
cat <<!
#pragma prototyped
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
/* : : generated by $command from $table : : */

View file

@ -123,7 +123,6 @@ tst socketpair_shutdown_mode note{ fchmod() after socketpair() shutdown() }end e
}
}end
cat{
#pragma prototyped
#ifdef _lib_poll
# define poll _SYS_poll
#else

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
#ifndef ARG_RAW
/*
* struct to hold a word argument

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
#ifndef __builtins_h_defined
#define __builtins_h_defined

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
/*
* David Korn
* AT&T Labs
@ -417,7 +416,7 @@ extern char *sh_getcwd(void);
#define sh_getstate() (sh.st.states)
#define sh_setstate(x) (sh.st.states = (x))
#define sh_sigcheck(shp) do{if(shp->trapnote&SH_SIGSET)sh_exit(SH_EXITSIG);} while(0)
#define sh_sigcheck(shp) do{if((shp)->trapnote&SH_SIGSET)sh_exit(SH_EXITSIG);} while(0)
extern int32_t sh_mailchk;
extern const char e_dict[];

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
#ifndef SEARCHSIZE
/*
* edit.h - common data structure for vi and emacs edit options
@ -238,11 +237,11 @@ extern int hist_expand(const char *, char **);
#endif /* SHOPT_HISTEXPAND */
#if SHOPT_ESH
extern void emacs_redraw(Void_t*);
extern void emacs_redraw(void*);
#endif /* SHOPT_ESH */
#if SHOPT_VSH
extern void vi_redraw(Void_t*);
extern void vi_redraw(void*);
#endif /* SHOPT_VSH */
#endif /* !SEARCHSIZE */

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
#ifndef SH_SIGBITS
/*
* UNIX shell

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
#ifndef fcgetc
/*
* David Korn

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
#ifndef HIST_VERSION
/*
* Interface for history mechanism

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
/*
* UNIX shell
* David Korn

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
#ifndef JOB_NFLAG
/*
* Interface to job control for shell

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
#ifndef S_BREAK
#define S_BREAK 1 /* end of token */
#define S_EOF 2 /* end of buffer */

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
#ifndef _NV_PRIVATE
/*
* This is the implementation header file for name-value pairs
@ -76,7 +75,7 @@ union Value
#if SHOPT_FIXEDARRAY
# define ARRAY_FIXED ARRAY_NOCLONE /* For index values */
#endif /* SHOPT_FIXEDARRAY */
#define NV_FARRAY 0x10000000 /* fixed sized arrays */
#define NV_FARRAY 0x10000000 /* fixed-size arrays */
#define NV_ASETSUB 8 /* set subscript */
/* These flags are used as options to array_get() */
@ -213,7 +212,7 @@ extern Namval_t *nv_parent(Namval_t*);
extern char *nv_getbuf(size_t);
extern Namval_t *nv_mount(Namval_t*, const char *name, Dt_t*);
extern Namval_t *nv_arraychild(Namval_t*, Namval_t*, int);
extern int nv_compare(Dt_t*, Void_t*, Void_t*, Dtdisc_t*);
extern int nv_compare(Dt_t*, void*, void*, Dtdisc_t*);
extern void nv_outnode(Namval_t*,Sfio_t*, int, int);
extern int nv_subsaved(Namval_t*, int);
extern void nv_typename(Namval_t*, Sfio_t*);

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
/*
* national.h - definitions for multibyte character sets
*

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
#ifndef NV_DEFAULT
/*
* David Korn
@ -87,7 +86,7 @@ struct Namarray
Namfun_t hdr;
long nelem; /* number of elements */
void *(*fun)(Namval_t*,const char*,int); /* associative arrays */
void *fixed; /* for fixed sized arrays */
void *fixed; /* for fixed-size arrays */
Dt_t *table; /* for subscripts */
void *scope; /* non-zero when scoped */
};

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
#ifndef PATH_OFFSET
/*

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
/*
* David Korn
* AT&T Labs

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
#ifndef SH_INTERACTIVE
/*
* David Korn

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
#ifndef NOTSYM
/*
* UNIX shell

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
#ifndef _SHNODES_H
#define _SHNODES_H 1
/*

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
#ifndef _SHTABLE_H
/*

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
#ifndef SEQPOINT
/*
* D. G. Korn

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
#ifndef _terminal_
#define _terminal_ 1

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
#ifndef TEST_ARITH
/*
* UNIX shell

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
#ifndef _ULIMIT_H
#define _ULIMIT_H 1
/*

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
#ifndef SH_VALNOD

View file

@ -1267,7 +1267,7 @@ For each of these attributes, a width can be defined explicitly or else
it is defined the first time an assignment is made to the variable.
Each assignment causes justification of the field, truncating
if necessary.
Assignment to fixed sized variables
Assignment to fixed-size variables
provides one way to generate a substring consisting of
a fixed number of characters from
the beginning or end of a string.

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
/*
* UNIX shell
*

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
/*
* Shell arithmetic - uses streval library
* David Korn

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
/*
* Array processing routines
*

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
/*
* David Korn
* AT&T Labs

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
/*
* File name expansion
*

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
/*
* Fault handling routines
*
@ -50,7 +49,7 @@ static int cursig = -1;
/*
* This exception handler is called after vmalloc() unlocks the region
*/
static int malloc_done(Vmalloc_t* vm, int type, Void_t* val, Vmdisc_t* dp)
static int malloc_done(Vmalloc_t* vm, int type, void* val, Vmdisc_t* dp)
{
dp->exceptf = 0;
sh_exit(SH_EXITSIG);

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
/*
* Routines to implement fast character input
*

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
/*
*
* Shell initialization
@ -2005,43 +2004,32 @@ static void env_import_attributes(Shell_t *shp, char *next)
}
/*
* terminate shell and free up the space
* libshell ABI compatibility functions
*/
int sh_term(void)
{
sfdisc(sfstdin,SF_POPDISC);
free((char*)sh.outbuff);
stakset(NIL(char*),0);
return(0);
}
#define BYPASS_MACRO
/* function versions of these */
#define DISABLE /* proto workaround */
unsigned long sh_isoption DISABLE (int opt)
unsigned long sh_isoption BYPASS_MACRO (int opt)
{
return(sh_isoption(opt));
}
unsigned long sh_onoption DISABLE (int opt)
unsigned long sh_onoption BYPASS_MACRO (int opt)
{
return(sh_onoption(opt));
}
unsigned long sh_offoption DISABLE (int opt)
unsigned long sh_offoption BYPASS_MACRO (int opt)
{
return(sh_offoption(opt));
}
void sh_sigcheck DISABLE (Shell_t *shp)
void sh_sigcheck BYPASS_MACRO (Shell_t *shp)
{
if(!shp)
shp = sh_getinterp();
sh_sigcheck(shp);
NOT_USED(shp);
sh_sigcheck(&sh);
}
Dt_t* sh_bltin_tree DISABLE (void)
Dt_t* sh_bltin_tree(void)
{
return(sh.bltin_tree);
}

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
/*
* Input/output file processing

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
/*
* Job control for UNIX Shell
*

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
/*
* KornShell lexical analyzer
*
@ -145,7 +144,7 @@ static void lex_advance(Sfio_t *iop, const char *buff, register int size, void *
sfwrite(shp->strbuf,lp->lexd.docend,n);
lp->lexd.docextra += n;
if(sffileno(iop)>=0)
lp->lexd.docend = sfsetbuf(iop,(Void_t*)iop,0);
lp->lexd.docend = sfsetbuf(iop,(void*)iop,0);
else
lp->lexd.docend = fcfirst();
}
@ -1736,7 +1735,7 @@ void sh_lexskip(Lex_t *lp,int close, register int copy, int state)
}
#if SHOPT_CRNL
ssize_t _sfwrite(Sfio_t *sp, const Void_t *buff, size_t n)
ssize_t _sfwrite(Sfio_t *sp, const void *buff, size_t n)
{
const char *cp = (const char*)buff, *next=cp, *ep = cp + n;
int m=0,k;

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
/*
* Shell macro expander
* expands ~

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
/*
* UNIX shell
*

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
/*
* AT&T Labs
*
@ -3703,28 +3702,25 @@ char *nv_name(register Namval_t *np)
Namval_t *nv_lastdict(void)
{
Shell_t *shp = sh_getinterp();
return(shp->last_table);
return(sh.last_table);
}
#undef nv_context
/*
* returns the data context for a builtin
* libshell ABI compatibility functions
*/
void *nv_context(Namval_t *np)
#define BYPASS_MACRO
void *nv_context BYPASS_MACRO (Namval_t *np)
{
return((void*)np->nvfun);
return(nv_context(np));
}
#define DISABLE /* proto workaround */
int nv_isnull DISABLE (register Namval_t *np)
int nv_isnull BYPASS_MACRO (Namval_t *np)
{
return(nv_isnull(np));
}
#undef nv_setsize
int nv_setsize(register Namval_t *np, int size)
int nv_setsize BYPASS_MACRO (Namval_t *np, int size)
{
int oldsize = nv_size(np);
if(size>=0)
@ -3732,9 +3728,7 @@ int nv_setsize(register Namval_t *np, int size)
return(oldsize);
}
#undef nv_unset
void nv_unset(register Namval_t *np)
void nv_unset BYPASS_MACRO (Namval_t *np)
{
_nv_unset(np,0);
return;

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
/*
* AT&T Labs
*
@ -33,7 +32,7 @@
static void assign(Namval_t*,const char*,int,Namfun_t*);
int nv_compare(Dt_t* dict, Void_t *sp, Void_t *dp, Dtdisc_t *disc)
int nv_compare(Dt_t* dict, void *sp, void *dp, Dtdisc_t *disc)
{
if(sp==dp)
return(0);

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
/*
* code for tree nodes and name walking

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
/*
* David Korn
* AT&T Labs
@ -1408,129 +1407,6 @@ Fields_t foo[]=
0
};
Namval_t *nv_mkstruct(const char *name, int rsize, Fields_t *fields)
{
Namval_t *mp, *nq, *nr, *tp;
Fields_t *fp;
Namtype_t *dp, *pp;
char *cp, *sp;
int nnodes=0, offset=staktell(), n, r, i, j;
size_t m, size=0;
stakputs(NV_CLASS);
stakputc('.');
r = staktell();
stakputs(name);
stakputc(0);
mp = nv_open(stakptr(offset), sh.var_tree, NV_VARNAME);
stakseek(r);
for(fp=fields; fp->name; fp++)
{
m = strlen(fp->name)+1;
size += m;
nnodes++;
if(memcmp(fp->type,"typeset",7))
{
stakputs(fp->type);
stakputc(0);
tp = nv_open(stakptr(offset), sh.var_tree, NV_VARNAME|NV_NOADD|NV_NOFAIL);
stakseek(r);
if(!tp)
{
errormsg(SH_DICT,ERROR_exit(1),e_unknowntype,strlen(fp->type),fp->type);
UNREACHABLE();
}
if(dp = (Namtype_t*)nv_hasdisc(tp,&type_disc))
{
nnodes += dp->numnodes;
if((i=dp->strsize) < 0)
i = -i;
size += i + dp->numnodes*m;
}
}
}
pp = sh_newof(NiL,Namtype_t, 1, nnodes*NV_MINSZ + rsize + size);
pp->fun.dsize = sizeof(Namtype_t)+nnodes*NV_MINSZ +rsize;
pp->fun.type = mp;
pp->np = mp;
pp->childfun.fun.disc = &chtype_disc;
pp->childfun.fun.nofree = 1;
pp->childfun.ttype = pp;
pp->childfun.ptype = pp;
pp->fun.disc = &type_disc;
pp->nodes = (char*)(pp+1);
pp->numnodes = nnodes;
pp->strsize = size;
pp->data = pp->nodes + nnodes*NV_MINSZ;
cp = pp->data + rsize;
for(i=0,fp=fields; fp->name; fp++)
{
nq = nv_namptr(pp->nodes,i++);
nq->nvname = cp;
nq->nvalue.cp = pp->data + fp->offset;
nv_onattr(nq,NV_MINIMAL|NV_NOFREE);
m = strlen(fp->name)+1;
memcpy(cp, fp->name, m);
cp += m;
if(memcmp(fp->type,"typeset",7))
{
stakputs(fp->type);
stakputc(0);
tp = nv_open(stakptr(offset), sh.var_tree, NV_VARNAME);
stakseek(r);
clone_all_disc(tp,nq,NV_RDONLY);
nq->nvflag = tp->nvflag|NV_MINIMAL|NV_NOFREE;
nq->nvsize = tp->nvsize;
if(dp = (Namtype_t*)nv_hasdisc(nq,&type_disc))
dp->strsize = -dp->strsize;
if(dp = (Namtype_t*)nv_hasdisc(tp,&type_disc))
{
if(nv_hasdisc(nq,&chtype_disc))
nv_disc(nq, &pp->childfun.fun, NV_LAST);
sp = (char*)nq->nvalue.cp;
memcpy(sp, dp->data, nv_size(tp));
for(j=0; j < dp->numnodes; j++)
{
nr = nv_namptr(dp->nodes,j);
nq = nv_namptr(pp->nodes,i++);
nq->nvname = cp;
memcpy(cp,fp->name,m);
cp[m-1] = '.';
cp += m;
n = strlen(nr->nvname)+1;
memcpy(cp,nr->nvname,n);
cp += n;
if(nr->nvalue.cp>=dp->data && nr->nvalue.cp < (char*)pp + pp->fun.dsize)
{
nq->nvalue.cp = sp + (nr->nvalue.cp-dp->data);
}
nq->nvflag = nr->nvflag;
nq->nvsize = nr->nvsize;
}
}
}
else if(strmatch(fp->type+7,"*-*i*")==0)
{
nv_onattr(nq,NV_NOFREE|NV_RDONLY|NV_INTEGER);
if(strmatch(fp->type+7,"*-*s*")==0)
nv_onattr(nq,NV_INT16P);
else if(strmatch(fp->type+7,"*-*l*")==0)
nv_onattr(nq,NV_INT64);
if(strmatch(fp->type+7,"*-*u*")==0)
nv_onattr(nq,NV_UNSIGN);
}
}
stakseek(offset);
nv_onattr(mp,NV_RDONLY|NV_NOFREE|NV_BINARY);
nv_setsize(mp,rsize);
nv_disc(mp, &pp->fun, NV_LAST);
mp->nvalue.cp = pp->data;
nv_newtype(mp);
return(mp);
}
static void write_indent(Sfio_t *out,char *str,int n,int indent)
{
register int c, first=1;

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
/*
* UNIX shell
*

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
/*
* David Korn
* AT&T Labs

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
#include <shell.h>

View file

@ -18,7 +18,6 @@
* David Korn <dgk@research.att.com> *
* *
***********************************************************************/
#pragma prototyped
/*
* David Korn
* AT&T Labs

Some files were not shown because too many files have changed in this diff Show more