v20i001: POSIX 1003.1 #include file tester
Rich Salz
rsalz at uunet.uu.net
Tue Sep 19 07:19:29 AEST 1989
Submitted-by: aixsm!bbooks at uunet.UU.NET (Barry Books)
Posting-number: Volume 20, Issue 1
Archive-name: posix.h-tester
This test sorts thru the POSIX and ANSI include files and reports missing
items, additional items in the standard, additional items allowed by the
standard, and items not allowed by the standard. References to the
standards document are included in the source code and the report.
The test assumes a traditional implementation of include files and
requires two things not stated in the POSIX standard or the ANSI C ( Dec
1988 ). The first is the include files must be readable. This is the
case for almost all installations I know of ( even the ones with
precompiled include files have readable ones also ). The other is the -E
option to the C compiler. This option is available on most UNIX C
compilers and possibly others. This option runs only the C preprocessor
and writes the results to stdout. If your compiler does not support this
option I suggest getting one the public domain C preprocessors such as
GNU.
# This is a shell archive. Remove anything before this line,
# then unpack it by saving it in a file and typing "sh file".
# Then read the README and WARRANTY files.
# Contents: include/ include/inc/ include/structs/ include/types/
# include/WARRANTY include/defines include/defines.awk include/catinc
# include/squash include/catinc.awk include/inc/dirent include/inc/errno
# include/inc/fcntl include/inc/grp include/inc/limits include/inc/pwd
# include/inc/signal include/inc/stdio include/inc/termios
# include/inc/unistd include/inc/utime include/inc/stat include/inc/times
# include/inc/types include/inc/utsname include/inc/wait
# include/inc/assert include/inc/ctype include/inc/float
# include/inc/locale include/inc/math include/inc/setjmp
# include/inc/stdarg include/inc/stddef include/inc/stdlib
# include/inc/string include/inc/time include/inc/tar include/testinc
# include/README include/report include/incfiles include/files
# include/struct include/struct.awk include/functions
# include/structs/assert include/structs/ctype include/structs/dirent
# include/structs/errno include/structs/fcntl include/structs/float
# include/structs/grp include/structs/limits include/structs/locale
# include/structs/math include/structs/pwd include/structs/setjmp
# include/structs/signal include/structs/stat include/structs/stdarg
# include/structs/stddef include/structs/stdio include/structs/stdlib
# include/structs/string include/structs/tar include/structs/termios
# include/structs/time include/structs/times include/structs/types
# include/structs/unistd include/structs/utime include/structs/utsname
# include/structs/wait include/structs/grp.h include/structs/locale.h
# include/structs/pwd.c include/structs/stdlib.h include/report.str.awk
# include/struct1.awk include/types/assert include/types/ctype
# include/types/dirent include/types/errno include/types/fcntl
# include/types/float include/types/grp include/types/limits
# include/types/locale include/types/math include/types/pwd
# include/types/setjmp include/types/signal include/types/stat
# include/types/stdarg include/types/stddef include/types/stdio
# include/types/stdlib include/types/string include/types/tar
# include/types/termios include/types/time include/types/times
# include/types/types include/types/unistd include/types/utime
# include/types/utsname include/types/wait include/typedef
# include/typedef.awk include/ctypes include/report.t include/tr.testrig
echo mkdir - include
mkdir include
chmod u=rwx,g=rx,o=rx include
echo x - include/WARRANTY
sed 's/^@//' > "include/WARRANTY" <<'@//E*O*F include/WARRANTY//'
NOTICE STATEMENT
This code was developed by IBM Corporation. Copyright is
disclaimed.
WARRANTY DISCLAIMER
THE CODE AND ITS DOCUMENTATION ARE PROVIDED "AS IS" WITHOUT
WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED. THE ENTIRE
RISK AS TO THE QUALITY AND PERFORMANCE OF THE CODE IS WITH
THE USER. SHOULD THE CODE PROVE DEFECTIVE, THE USER (AND
NOT IBM) ASSUMES THE ENTIRE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
IBM does not warrant that the function contained in the code
will meet the user's requirements or that the operation of
the code will be uninterrupted or error free or that code
defects will be corrected.
IBM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS CODE AND
DOCUMENTATION, EXPRESS OR IMPLIED, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS FOR A PARTICULAR PURPOSE.
IN NO EVENT WILL IBM BE LIABLE FOR ANY ACTUAL DAMAGES FOR
ANY CAUSE WHATSOEVER, NOR WILL IBM BE LIABLE FOR ANY LOST
PROFITS, LOST SAVINGS OR OTHER INCIDENTAL OR CONSEQUENTIAL
DAMAGES ARISING OUT OF THE USE OF OR INABILITY TO USE THE
CODE OR DOCUMENTATION EVEN IF IBM HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES, OR FOR ANY CLAIM BY ANY OTHER
PARTY.
Nothing contained herein shall be construed as granting
permission to use IBM's trademark or trade name in
connection with any advertising or publicity pertaining
directly or indirectly to the distribution of the code or
documentation without the prior written approval of IBM.
@//E*O*F include/WARRANTY//
chmod u=r,g=r,o=r include/WARRANTY
echo x - include/defines
sed 's/^@//' > "include/defines" <<'@//E*O*F include/defines//'
#
#**********************************************************************
# THERE MUST BE A SPACE in the first character of the first line.
#**********************************************************************
#
# NOTICE STATEMENT
#
# This code was developed by IBM Corporation. Copyright is disclaimed.
#
# IBM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS CODE. IN NO EVENT
# WILL IBM BE LIABLE FOR ANY DAMAGES, LOST PROFITS, OR LOST SAVINGS.
#
# "@(#) This code was developed by IBM Corporation. "
# "@(#) Copyright is disclaimed. "
#
#**********************************************************************
# Written by: Barry Books
#**********************************************************************
# set up environment
NAME=`$MKTEMP`
rm -f $NAME.f
touch $NAME.f
export NAME
for x in $INCLUDES
do
TIF="$TIF -I $x"
done
if [ -n "$IFLAGS" ]
then
IFLAGS=$TIF
fi
#BSD could not handle this
#IFLAGS=${IFLAGS:-$TIF}
# write C code
# header for each file
echo "#include \"$1\"" > $NAME.c
echo "main() {" >> $NAME.c
# find all possible defines in the include files
@./catinc $1 | sh | awk -f defines.awk >> $NAME.c 2> /dev/null
# trailer for each file
echo "}" >> $NAME.c
# compile the file
# the _POSIX_SOURCE flag should eleminate all defines not found in POSIX 1003.1
# or ANSI (1003.1 2.8.2)
cc $CFLAGS $IFLAGS -D_POSIX_SOURCE $NAME.c -o $NAME > /dev/null
#generate a report
@./report -d $1 $NAME
# cleanup
rm -f $NAME.f $NAME $NAME.c
@//E*O*F include/defines//
chmod u=rwx,g=rx,o=rx include/defines
echo x - include/defines.awk
sed 's/^@//' > "include/defines.awk" <<'@//E*O*F include/defines.awk//'
#
#**********************************************************************
# THERE MUST BE A SPACE in the first character of the first line.
#**********************************************************************
#
# NOTICE STATEMENT
#
# This code was developed by IBM Corporation. Copyright is disclaimed.
#
# IBM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS CODE. IN NO EVENT
# WILL IBM BE LIABLE FOR ANY DAMAGES, LOST PROFITS, OR LOST SAVINGS.
#
# "@(#) This code was developed by IBM Corporation. "
# "@(#) Copyright is disclaimed. "
#
#**********************************************************************
# Written by: Barry Books
#**********************************************************************
# this awk script finds defines and writes C code to print them
# #ifdef DEFINE
# printf("DEFINE\n");
# #endif
/^[ ]*#[ ]*define/ {
if ( i = index($2,"(") )
def = substr($2,1,i-1);
else
def = $2;
printf("#ifdef %s\n",def);
printf("printf(\"%s\\n\");\n",def);
printf("#endif\n");
}
@//E*O*F include/defines.awk//
chmod u=rw,g=r,o=r include/defines.awk
echo x - include/catinc
sed 's/^@//' > "include/catinc" <<'@//E*O*F include/catinc//'
#
#**********************************************************************
# THERE MUST BE A SPACE in the first character of the first line.
#**********************************************************************
#
# NOTICE STATEMENT
#
# This code was developed by IBM Corporation. Copyright is disclaimed.
#
# IBM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS CODE. IN NO EVENT
# WILL IBM BE LIABLE FOR ANY DAMAGES, LOST PROFITS, OR LOST SAVINGS.
#
# "@(#) This code was developed by IBM Corporation. "
# "@(#) Copyright is disclaimed. "
#
#**********************************************************************
# Written by: Barry Books
#**********************************************************************
# run the awk script that follows includes of other include files
awk -f catinc.awk < $1 2> /dev/null
@//E*O*F include/catinc//
chmod u=rwx,g=rx,o=rx include/catinc
echo x - include/squash
sed 's/^@//' > "include/squash" <<'@//E*O*F include/squash//'
#
#**********************************************************************
# THERE MUST BE A SPACE in the first character of the first line.
#**********************************************************************
#
# NOTICE STATEMENT
#
# This code was developed by IBM Corporation. Copyright is disclaimed.
#
# IBM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS CODE. IN NO EVENT
# WILL IBM BE LIABLE FOR ANY DAMAGES, LOST PROFITS, OR LOST SAVINGS.
#
# "@(#) This code was developed by IBM Corporation. "
# "@(#) Copyright is disclaimed. "
#
#**********************************************************************
# Written by: Barry Books
#**********************************************************************
# finds include files using include path
# get rid of junk like # define and # include
# don't include things twice
grep $1 $NAME.f
if [ $? -ne 0 ]
then
for x in $INCLUDES
do
if [ -s $x/$1 ]
then
sed 's/[ ]*#[ ]*define/#define/
s/[ ]*#[ ]*include/#include/
s/[ ]*#[ ]*if/#if/
s/[ ]*#[ ]*end/#end/' < $x/$1
break
fi
done
fi
echo $1 >> $NAME.f
@//E*O*F include/squash//
chmod u=rwx,g=rx,o=rx include/squash
echo x - include/catinc.awk
sed 's/^@//' > "include/catinc.awk" <<'@//E*O*F include/catinc.awk//'
#
#**********************************************************************
# THERE MUST BE A SPACE in the first character of the first line.
#**********************************************************************
#
# NOTICE STATEMENT
#
# This code was developed by IBM Corporation. Copyright is disclaimed.
#
# IBM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS CODE. IN NO EVENT
# WILL IBM BE LIABLE FOR ANY DAMAGES, LOST PROFITS, OR LOST SAVINGS.
#
# "@(#) This code was developed by IBM Corporation. "
# "@(#) Copyright is disclaimed. "
#
#**********************************************************************
# Written by: Barry Books
#**********************************************************************
# this awk script writes a shell script which to recursivly follow
# includes of other include files. It attempts to resolve the
# problem of two include files including each other by
# only reading each file once.
#!/bin/awk -f $1
BEGIN {
EOF = "EnDoFfIlE"
printf("cat <<%s\n",EOF);
}
# if it is an include line follow it down
#it seems this is allowed
/#include</ {
printf("%s\n",EOF);
a = substr($1,10);
a = substr(a,1,length(a)-1);
printf("./squash %s | ./catinc 2> /dev/null | sh\n",a);
printf("cat <<%s\n",EOF);
next;
}
/#include/ {
printf("%s\n",EOF);
a = substr($2,2);
a = substr(a,1,length(a)-1);
printf("./squash %s | ./catinc 2> /dev/null | sh\n",a);
printf("cat <<%s\n",EOF);
next;
}
# just copy input to output
/./ {
print $0
}
END {
printf("%s\n",EOF);
}
@//E*O*F include/catinc.awk//
chmod u=rw,g=r,o=r include/catinc.awk
echo mkdir - include/inc
mkdir include/inc
chmod u=rwx,g=rx,o=rx include/inc
echo x - include/inc/dirent
sed 's/^@//' > "include/inc/dirent" <<'@//E*O*F include/inc/dirent//'
@//E*O*F include/inc/dirent//
chmod u=rw,g=r,o=r include/inc/dirent
echo x - include/inc/errno
sed 's/^@//' > "include/inc/errno" <<'@//E*O*F include/inc/errno//'
EDOM
ERANGE
E2BIG
EACCES
EAGAIN
EBADF
EBUSY
ECHILD
EDEADLK
EEXIST
EFAULT
EFBIG
EINTR
EINVAL
EIO
EISDIR
EMFILE
EMLINK
ENAMETOOLONG
ENFILE
ENODEV
ENOENT
ENOEXEC
ENOLCK
ENOMEM
ENOSPC
ENOSYS
ENOTDIR
ENOTEMPTY
ENOTTY
ENXIO
EPERM
EPIPE
EROFS
ESPIPE
ESRCH
EXDEV
@//E*O*F include/inc/errno//
chmod u=rw,g=r,o=r include/inc/errno
echo x - include/inc/fcntl
sed 's/^@//' > "include/inc/fcntl" <<'@//E*O*F include/inc/fcntl//'
F_DUPFD
F_GETFD
F_GETLK
F_SETFD
F_GETFL
F_SETFL
F_SETLK
F_SETLKW
FD_CLOEXEC
F_RDLCK
F_WRLCK
F_UNLCK
O_CREAT
O_EXCL
O_NOCTTY
O_TRUNC
O_APPEND
O_NONBLOCK
O_RDONLY
O_RDWR
O_WRONLY
O_ACCMODE
@//E*O*F include/inc/fcntl//
chmod u=rw,g=r,o=r include/inc/fcntl
echo x - include/inc/grp
sed 's/^@//' > "include/inc/grp" <<'@//E*O*F include/inc/grp//'
@//E*O*F include/inc/grp//
chmod u=rw,g=r,o=r include/inc/grp
echo x - include/inc/limits
sed 's/^@//' > "include/inc/limits" <<'@//E*O*F include/inc/limits//'
CHAR_BIT
CHAR_MAX
CHAR_MIN
INT_MAX
INT_MIN
LONG_MAX
LONG_MIN
MB_LEN_MAX
SCHAR_MAX
SCHAR_MIN
SHRT_MAX
SHRT_MIN
UCHAR_MAX
UINT_MAX
ULONG_MAX
USHRT_MAX
_POSIX_ARG_MAX
_POSIX_CHILD_MAX
_POSIX_LINK_MAX
_POSIX_MAX_CANON
_POSIX_MAX_INPUT
_POSIX_NAME_MAX
_POSIX_NGROUPS_MAX
_POSIX_OPEN_MAX
_POSIX_PATH_MAX
_POSIX_PIPE_BUF
NGROUPS_MAX
ARG_MAX
CHILD_MAX
OPEN_MAX
LINK_MAX
MAX_CANON
MAX_INPUT
NAME_MAX
PATH_MAX
PIPE_BUF
CLK_TCK
@//E*O*F include/inc/limits//
chmod u=rw,g=r,o=r include/inc/limits
echo x - include/inc/pwd
sed 's/^@//' > "include/inc/pwd" <<'@//E*O*F include/inc/pwd//'
@//E*O*F include/inc/pwd//
chmod u=rw,g=r,o=r include/inc/pwd
echo x - include/inc/signal
sed 's/^@//' > "include/inc/signal" <<'@//E*O*F include/inc/signal//'
SIG_DFL
SIG_IGN
SIG_ERR
SIGABRT
SIGFPE
SIGILL
SIGINT
SIGSEGV
SIGTERM
SIGALRM
SIGHUP
SIGKILL
SIGPIPE
SIGQUIT
SIGUSR1
SIGUSR2
SIGCHLD
SIGCONT
SIGSTOP
SIGTSTP
SIGTTIN
SIGTTOU
SIG_BLOCK
SIG_UNBLOCK
SIG_SETMASK
SA_NOCLDSTOP
@//E*O*F include/inc/signal//
chmod u=rw,g=r,o=r include/inc/signal
echo x - include/inc/stdio
sed 's/^@//' > "include/inc/stdio" <<'@//E*O*F include/inc/stdio//'
_IOFBF
_IOLBF
_IONBF
BUFSIZ
EOF
FILENAME_MAX
FOPEN_MAX
L_tmpnam
NULL
SEEK_CUR
SEEK_END
SEEK_SET
stdin
stdout
stderr
TMP_MAX
L_ctermid
L_cuserid
@//E*O*F include/inc/stdio//
chmod u=rw,g=r,o=r include/inc/stdio
echo x - include/inc/termios
sed 's/^@//' > "include/inc/termios" <<'@//E*O*F include/inc/termios//'
NCCS
BRKINT
ICRNL
IGNBRK
IGNCR
IGNPAR
INLCR
INPCK
ISTRIP
IXOFF
IXON
PARMRK
OPOST
CLOCAL
CREAD
CSIZE
CS5
CS6
CS7
CS8
CSTOPB
HUPCL
PARENB
PARODD
ECHO
ECHOE
ECHOK
ECHONL
ICANON
IEXTEN
ISIG
NOFLSH
TOSTOP
VEOF
VEOL
VERASE
VINTR
VKILL
VMIN
VQUIT
VSUSP
VTIME
VSTART
VSTOP
B0
B50
B75
B110
B134
B150
B200
B300
B600
B1200
B1800
B2400
B4800
B9600
B19200
B38400
TCSANOW
TCSADRAIN
TCSAFLUSH
TCIFLUSH
TCOFLUSH
TCIOFLUSH
TCIOFF
TCION
TCOOFF
TCOON
@//E*O*F include/inc/termios//
chmod u=rw,g=r,o=r include/inc/termios
echo x - include/inc/unistd
sed 's/^@//' > "include/inc/unistd" <<'@//E*O*F include/inc/unistd//'
NULL
R_OK
W_OK
X_OK
F_OK
SEEK_SET
SEEK_CUR
SEEK_END
_POSIX_JOB_CONTROL
_POSIX_SAVED_IDS
_POSIX_VERSION
_POSIX_CHOWN_RESTRICTED
_POSIX_NO_TRUNC
_POSIX_VDISABLE
_SC_ARG_MAX
_SC_CHILD_MAX
_SC_JOB_CONTROL
_SC_NGROUPS_MAX
_SC_OPEN_MAX
_SC_SAVED_IDS
_SC_VERSION
_PC_CHOWN_RESTRICTED
_PC_LINK_MAX
_PC_MAX_CANON
_PC_MAX_INPUT
_PC_NAME_MAX
_PC_NO_TRUNC
_PC_PATH_MAX
_PC_PIPE_BUF
_PC_VDISABLE
STDIN_FILENO
STDOUT_FILENO
STDERR_FILENO
@//E*O*F include/inc/unistd//
chmod u=rw,g=r,o=r include/inc/unistd
echo x - include/inc/utime
sed 's/^@//' > "include/inc/utime" <<'@//E*O*F include/inc/utime//'
@//E*O*F include/inc/utime//
chmod u=rw,g=r,o=r include/inc/utime
echo x - include/inc/stat
sed 's/^@//' > "include/inc/stat" <<'@//E*O*F include/inc/stat//'
S_IRWXU
S_IRUSR
S_IWUSR
S_IXUSR
S_IRWXG
S_IRGRP
S_IWGRP
S_IXGRP
S_IRWXO
S_IROTH
S_IWOTH
S_IXOTH
S_ISUID
S_ISGID
@//E*O*F include/inc/stat//
chmod u=rw,g=r,o=r include/inc/stat
echo x - include/inc/times
sed 's/^@//' > "include/inc/times" <<'@//E*O*F include/inc/times//'
@//E*O*F include/inc/times//
chmod u=rw,g=r,o=r include/inc/times
echo x - include/inc/types
sed 's/^@//' > "include/inc/types" <<'@//E*O*F include/inc/types//'
@//E*O*F include/inc/types//
chmod u=rw,g=r,o=r include/inc/types
echo x - include/inc/utsname
sed 's/^@//' > "include/inc/utsname" <<'@//E*O*F include/inc/utsname//'
@//E*O*F include/inc/utsname//
chmod u=rw,g=r,o=r include/inc/utsname
echo x - include/inc/wait
sed 's/^@//' > "include/inc/wait" <<'@//E*O*F include/inc/wait//'
WNOHANG
WUNTRACED
@//E*O*F include/inc/wait//
chmod u=rw,g=r,o=r include/inc/wait
echo x - include/inc/assert
sed 's/^@//' > "include/inc/assert" <<'@//E*O*F include/inc/assert//'
@//E*O*F include/inc/assert//
chmod u=rw,g=r,o=r include/inc/assert
echo x - include/inc/ctype
sed 's/^@//' > "include/inc/ctype" <<'@//E*O*F include/inc/ctype//'
@//E*O*F include/inc/ctype//
chmod u=rw,g=r,o=r include/inc/ctype
echo x - include/inc/float
sed 's/^@//' > "include/inc/float" <<'@//E*O*F include/inc/float//'
FLT_ROUNDS
DBL_DIG
DBL_MANT_DIG
DBL_MAX_10_EXP
DBL_MAX_EXP
DBL_MIN_10_EXP
DBL_MIN_EXP
FLT_DIG
FLT_MANT_DIG
FLT_MAX_10_EXP
FLT_MAX_EXP
FLT_MIN_10_EXP
FLT_MIN_EXP
FLT_RADIX
LDBL_DIG
LDBL_MANT_DIG
LDBL_MAX_10_EXP
LDBL_MAX_EXP
LDBL_MIN_10_EXP
LDBL_MIN_EXP
DBL_MAX
FLT_MAX
LDBL_MAX
DBL_EPSILON
DBL_MIN
FLT_EPSILON
FLT_MIN
LDBL_EPSIOLON
LDBL_MIN
@//E*O*F include/inc/float//
chmod u=rw,g=r,o=r include/inc/float
echo x - include/inc/locale
sed 's/^@//' > "include/inc/locale" <<'@//E*O*F include/inc/locale//'
NULL
LC_ALL
LC_COLLATE
LC_CTYPE
LC_MONETARY
LC_NUMERIC
LC_TIME
@//E*O*F include/inc/locale//
chmod u=rw,g=r,o=r include/inc/locale
echo x - include/inc/math
sed 's/^@//' > "include/inc/math" <<'@//E*O*F include/inc/math//'
HUGE_VAL
@//E*O*F include/inc/math//
chmod u=rw,g=r,o=r include/inc/math
echo x - include/inc/setjmp
sed 's/^@//' > "include/inc/setjmp" <<'@//E*O*F include/inc/setjmp//'
@//E*O*F include/inc/setjmp//
chmod u=rw,g=r,o=r include/inc/setjmp
echo x - include/inc/stdarg
sed 's/^@//' > "include/inc/stdarg" <<'@//E*O*F include/inc/stdarg//'
@//E*O*F include/inc/stdarg//
chmod u=rw,g=r,o=r include/inc/stdarg
echo x - include/inc/stddef
sed 's/^@//' > "include/inc/stddef" <<'@//E*O*F include/inc/stddef//'
NULL
@//E*O*F include/inc/stddef//
chmod u=rw,g=r,o=r include/inc/stddef
echo x - include/inc/stdlib
sed 's/^@//' > "include/inc/stdlib" <<'@//E*O*F include/inc/stdlib//'
EXIT_FAILURE
EXIT_SUCCESS
MB_CUR_MAX
NULL
RAND_MAX
@//E*O*F include/inc/stdlib//
chmod u=rw,g=r,o=r include/inc/stdlib
echo x - include/inc/string
sed 's/^@//' > "include/inc/string" <<'@//E*O*F include/inc/string//'
NULL
@//E*O*F include/inc/string//
chmod u=rw,g=r,o=r include/inc/string
echo x - include/inc/time
sed 's/^@//' > "include/inc/time" <<'@//E*O*F include/inc/time//'
@//E*O*F include/inc/time//
chmod u=rw,g=r,o=r include/inc/time
echo x - include/inc/tar
sed 's/^@//' > "include/inc/tar" <<'@//E*O*F include/inc/tar//'
TMAGIC
TMAGLEN
TVERSION
TVERSLEN
REGTYPE
AREGTYPE
LNKTYPE
SYMTYPE
CHRTYPE
BLKTYPE
DIRTYPE
FIFOTYPE
CONTTYPE
TSUID
TSGID
TSVTX
TUREAD
TUWRITE
TUEXEC
TGREAD
TGWRITE
TGEXEC
TOREAD
TOWRITE
TOEXEC
@//E*O*F include/inc/tar//
chmod u=rw,g=r,o=r include/inc/tar
echo x - include/testinc
sed 's/^@//' > "include/testinc" <<'@//E*O*F include/testinc//'
#
#**********************************************************************
# THERE MUST BE A SPACE in the first character of the first line.
#**********************************************************************
#
# NOTICE STATEMENT
#
# This code was developed by IBM Corporation. Copyright is disclaimed.
#
# IBM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS CODE. IN NO EVENT
# WILL IBM BE LIABLE FOR ANY DAMAGES, LOST PROFITS, OR LOST SAVINGS.
#
# "@(#) This code was developed by IBM Corporation. "
# "@(#) Copyright is disclaimed. "
#
#**********************************************************************
# Written by: Barry Books
#**********************************************************************
# set up environment
# put the include paths to search the INCLUDES variable
INCLUDES="/usr/include"
export INCLUDES
# if you need move C flags put them here
#CFLAGS=
#export CFLAGS
# This is the command the test will use to create tmp files
MKTEMP="echo /tmp/t$$"
export MKTEMP
cat report.t
# infiles is the list of all include files in POISX 1003.1 and ANSI dec. 88
for x in `cat incfiles`
do
FILE=$x
for y in $INCLUDES
do
if [ -r $y/$x ]
then
./defines $y/$x
./struct $y/$x
./typedef $y/$x
FILE=""
break
fi
done
if [ "$FILE" != "" ]
then
echo "--------------------------------------------------------------------------"
echo "!!!!!!!!!!!!!!!!!!!!!!!!! $FILE not found !!!!!!!!!!!!!!!!!!!!!!!!!!!!"
echo "--------------------------------------------------------------------------"
echo ""
fi
done
@//E*O*F include/testinc//
chmod u=rwx,g=rx,o=rx include/testinc
echo x - include/README
sed 's/^@//' > "include/README" <<'@//E*O*F include/README//'
#
#**********************************************************************
# THERE MUST BE A SPACE in the first character of the first line.
#**********************************************************************
#
# NOTICE STATEMENT
#
# This code was developed by IBM Corporation. Copyright is disclaimed.
#
# IBM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS CODE. IN NO EVENT
# WILL IBM BE LIABLE FOR ANY DAMAGES, LOST PROFITS, OR LOST SAVINGS.
#
# "@(#) This code was developed by IBM Corporation. "
# "@(#) Copyright is disclaimed. "
#
#**********************************************************************
# Written by: Barry Books
#**********************************************************************
OVERVIEW:
This test sorts thru the POSIX and ANSI include files and reports missing
items, additional items in the standard, additional items allowed by the
standard, and items not allowed by the standard. References to the
standards document are included in the source code and the report.
The test assumes a traditional implementation of include files and requires
two things not stated in the POSIX standard or the ANSI C ( Dec 1988 ).
The first is the include files must be readable. This is the case for
almost all installations I know of ( even the ones with precompiled
include files have readable ones also ). The other is
the -E option to the C compiler. This option is available on most
UNIX C compilers and possibly others. This option runs only the C
preprocessor and writes the results to stdout. If your compiler does
not support this option I suggest getting one the public domain C
preprocessors such as GNU.
The test makes a few assumptions about the include files. The biggest is
in order to pass the requirement that include files may be used in any
order, an include file will include everything it needs to compile. The
define test finds all the defines in an include file then
writes a C program using ifdef and printf to print all the defines that
can be seen. The typedef and struct test just use cc -E to get the structs
and typedefs then parse the output. This strategy works on AIX, System V
rel 3, and BSD 4.3. My experience is the more conforming the system the
more meaningful the results. This makes the test most useful for keeping
extra things from creeping into the include files of conforming systems.
OPERATION:
The test is a bunch of shell and awk scripts which use the files in inc, structs
and types as samples of what should be in the include files. Unfortunately
there are exceptions to the rules and currently these are taken care of
by report. These should be moved to an exception directory but at least
they are in one file.
SETUP:
If you need to search other directories add them to INCLUDES in testinc.
If you need other compiler flags set CFLAGS.
Put something in MKTEMP that will make tmp files. If your system is 1003.2
you can use mktemp.
RUN:
To run just type ./testinc and the report goes to stdout.
PROBLEMS:
Since the parser is nowhere near a full C compiler I'm sure it can be fooled.
The construct typedef thing[num]; yields incorrect results.
@//E*O*F include/README//
chmod u=rw,g=r,o=r include/README
echo x - include/report
sed 's/^@//' > "include/report" <<'@//E*O*F include/report//'
#
#**********************************************************************
# THERE MUST BE A SPACE in the first character of the first line.
#**********************************************************************
#
# NOTICE STATEMENT
#
# This code was developed by IBM Corporation. Copyright is disclaimed.
#
# IBM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS CODE. IN NO EVENT
# WILL IBM BE LIABLE FOR ANY DAMAGES, LOST PROFITS, OR LOST SAVINGS.
#
# "@(#) This code was developed by IBM Corporation. "
# "@(#) Copyright is disclaimed. "
#
#**********************************************************************
# Written by: Barry Books
#**********************************************************************
# this sh script writes a report to stdout
# -d for defines
# -s for structs
# -t for typedefs
USAGE="usage: $0"
case $1 in
-d)
# $1 is option
# $2 include file
# $3 program
echo ""
echo "--------------------------------------------------------------------------"
echo " report for include file $2"
echo "--------------------------------------------------------------------------"
echo "*************************** defines section ****************************"
# should be -x but none in BSD
if [ -s $3 ]
then
echo "extra other missing macros"
TMP=`$MKTEMP`
# this is what should be there
sort inc/`basename $2 .h` | grep -v '^$' > $TMP.g
# these could be macros for functions
sort functions | grep -v '^$' > $TMP.f
# one file could include another
cat inc/* | sort | grep -v '^$' > $TMP.o
# this gives all extra stuff
$3 | sort -u | comm -23 - $TMP.g | grep -v "^_" > $TMP.e
# this gives extra stuff not in standard
case `basename $2`
in
errno.h)
# get rid of E([0-9]|[A-Z]) in errno.h as per ansi future lib directions
cat $TMP.f $TMP.o | sort | comm -23 $TMP.e - | grep -v "^_" | grep -v "^E[0-9]" | grep -v "^E[A-Z]" > $TMP.1
;;
signal.h)
# get rid of SIG(_|[A-Z]) in errno.h as per ansi future lib directions
cat $TMP.f $TMP.o | sort | comm -23 $TMP.e - | grep -v "^_" | grep -v "^SIG_" | grep -v "^SIG[A-Z]" > $TMP.1
;;
*)
cat $TMP.f $TMP.o | sort | comm -23 $TMP.e - | grep -v "^_" > $TMP.1
;;
esac
# things elsewhere in standard
comm -23 $TMP.e $TMP.1 > $TMP.t
cat $TMP.f $TMP.o | comm -23 $TMP.t - | sed "s/^/ /" > $TMP.2
# these are missing
$3 | sort -u | comm -13 - $TMP.g | grep -v "^_" | sed "s/^/ /" > $TMP.3
# macros for funtions
comm -12 $TMP.e $TMP.f | sed "s/^/ /" > $TMP.4
cat $TMP.1 $TMP.2 $TMP.3 $TMP.4 | sort -b
echo
rm -f $TMP.*
else
echo "!!!!!!!!! problem compiling with $2 !!!!!!!!!"
echo
fi
;;
# structure report
-s)
# $1 option
# $2 include file
echo "************************** structure section ***************************"
echo "extra structures extra elements"
TMP=`$MKTEMP`
sort > $TMP.i
#get what should be there
sort structs/`basename $2 .h` | grep -v '^$' > $TMP.g
cat structs/* | sort | grep -v '^$' > $TMP.o
#difference between what should be and what is
awk '{print $1}' $TMP.i | uniq | comm -23 - $TMP.o
# types ending in _t are OK (1003.1 2.6)
join $TMP.o $TMP.i | sort | uniq | grep -v "_t$" > $TMP.t
sort ctypes | join -j1 1 -j2 2 -o 2.1 2.2 - $TMP.t | comm -13 - $TMP.t | uniq | sed "s/^/ /"
;;
# typedef report
-t)
# $1 option
# $2 include file
echo "*************************** typedef section ****************************"
TMP=`$MKTEMP`
# sort them and save them for now
sort > $TMP.i
# this is what should be there
sort types/`basename $2 .h` | grep -v '^$' > $TMP.g
# one file could include another
cat types/* | sort | grep -v '^$' > $TMP.o
echo "extra other missing"
# this gives all extra stuff
# types ending in _t are ok (POSIX 1003.1 2.6)
cat $TMP.i | sort -u | comm -23 - $TMP.g > $TMP.e
# this gives extra stuff not in standard
# types ending in _t are ok (POSIX 1003.1 2.6)
cat $TMP.o | sort | comm -23 $TMP.e - | grep -v "_t$" > $TMP.1
# things elsewhere in standard
# types ending in _t are ok (POSIX 1003.1 2.6)
comm -23 $TMP.e $TMP.1 > $TMP.t
cat $TMP.o | comm -23 $TMP.t - | grep -v "_t$" | sed "s/^/ /" > $TMP.2
# these are missing
cat $TMP.i | sort -u | comm -13 - $TMP.g | sed "s/^/ /" > $TMP.3
cat $TMP.1 $TMP.2 $TMP.3 | sort -b
;;
*)
echo $USAGE
;;
esac
#clean up
rm -f $TMP.c $TMP.g $TMP.i $TMP.o
@//E*O*F include/report//
chmod u=rwx,g=rx,o=rx include/report
echo x - include/incfiles
sed 's/^@//' > "include/incfiles" <<'@//E*O*F include/incfiles//'
assert.h
ctype.h
dirent.h
errno.h
fcntl.h
float.h
grp.h
limits.h
locale.h
math.h
pwd.h
setjmp.h
signal.h
stdarg.h
stddef.h
stdio.h
stdlib.h
string.h
sys/stat.h
sys/times.h
sys/types.h
sys/utsname.h
sys/wait.h
tar.h
termios.h
time.h
unistd.h
utime.h
@//E*O*F include/incfiles//
chmod u=rw,g=r,o=r include/incfiles
echo x - include/files
sed 's/^@//' > "include/files" <<'@//E*O*F include/files//'
defines
defines.awk
catinc
squash
catinc.awk
inc/dirent
inc/errno
inc/fcntl
inc/grp
inc/limits
inc/pwd
inc/signal
inc/stdio
inc/termios
inc/unistd
inc/utime
inc/stat
inc/times
inc/types
inc/utsname
inc/wait
inc/assert
inc/ctype
inc/float
inc/locale
inc/math
inc/setjmp
inc/stdarg
inc/stddef
inc/stdlib
inc/string
inc/time
inc/tar
testinc
README
report
incfiles
files
functions
@//E*O*F include/files//
chmod u=rw,g=r,o=r include/files
echo x - include/struct
sed 's/^@//' > "include/struct" <<'@//E*O*F include/struct//'
#
#**********************************************************************
# THERE MUST BE A SPACE in the first character of the first line.
#**********************************************************************
#
# NOTICE STATEMENT
#
# This code was developed by IBM Corporation. Copyright is disclaimed.
#
# IBM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS CODE. IN NO EVENT
# WILL IBM BE LIABLE FOR ANY DAMAGES, LOST PROFITS, OR LOST SAVINGS.
#
# "@(#) This code was developed by IBM Corporation. "
# "@(#) Copyright is disclaimed. "
#
#**********************************************************************
# Written by: Barry Books
#**********************************************************************
#finds structure declarations in include files
#copy the .h to a .c for some cc commands
TMP=`$MKTEMP`
touch $TMP.c
cp $1 $TMP.c
#run the preprocessor with _POSIX_SOURCE defined
#change all the white space to newlines so there is one token per line
#run the awk parser to find struct defs
cc -D _POSIX_SOURCE -E $TMP.c | tr -s " " "\012\012" | awk -f struct.awk | awk '{ if ( NF > 1) print $0}' | ./report -s $1
#clean up
rm -f $TMP.c
@//E*O*F include/struct//
chmod u=rwx,g=rx,o=rx include/struct
echo x - include/struct.awk
sed 's/^@//' > "include/struct.awk" <<'@//E*O*F include/struct.awk//'
#
#**********************************************************************
# THERE MUST BE A SPACE in the first character of the first line.
#**********************************************************************
#
# NOTICE STATEMENT
#
# This code was developed by IBM Corporation. Copyright is disclaimed.
#
# IBM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS CODE. IN NO EVENT
# WILL IBM BE LIABLE FOR ANY DAMAGES, LOST PROFITS, OR LOST SAVINGS.
#
# "@(#) This code was developed by IBM Corporation. "
# "@(#) Copyright is disclaimed. "
#
#**********************************************************************
# Written by: Barry Books
#**********************************************************************
# this awk script is a state machine that find structure definetions
# it outputs the structure name and each element in the structure
# in the form
#NAME ELEMENT_TYPE
#the order of expressions to find is important
BEGIN {
STRUCT=0;
OPEN = 0;
SEMI = 1;
TYPEDEF = 0;
}
#ignore a few keywords
/unsigned/ {
next;
}
/extern/ {
next;
}
/signed/ {
next;
}
#braces signal begining structure elements
/{/ {
OPEN += 1;
SEMI = 1;
next;
}
/}/ {
OPEN -= 1;
next;
}
#semi colon signals end of statement
#now we can look for a struct
/;/ {
SEMI = 1;
next;
}
# this matches anything
#typedefs look like structures so weed them out
# if struct == 1 just print the name of the structure
# if struct == 2 print the name and the element type
/^/ {
if ( TYPEDEF == 1 )
{
if ( OPEN == 0 )
{
if ( SEMI == 1 )
SEMI = 0;
TYPEDEF = 0;
}
next;
}
if ( STRUCT == 1 )
{
printf("%s\n",$1);
STRUCT = 2;
NAME = $1;
next;
}
if ( STRUCT == 2 )
{
if ( OPEN == 1 )
{
if ( SEMI == 1 )
{
printf("%s %s\n",NAME,$1);
SEMI = 0;
}
}
if ( OPEN == 0 )
{
STRUCT = 0;
}
}
}
# set flags for keywords
/typedef/ {
TYPEDEF=1;
next;
}
/struct/ {
STRUCT=1;
next;
}
@//E*O*F include/struct.awk//
chmod u=rw,g=r,o=r include/struct.awk
echo x - include/functions
sed 's/^@//' > "include/functions" <<'@//E*O*F include/functions//'
assert
isalnum
isalpha
iscntrl
isdigit
isgraph
islower
isprint
ispunct
isspace
isupper
isxdigit
tolower
toupper
setlocale
localeconv
acos
asin
atan
atan2
cos
sin
tan
cosh
sinh
tanh
exp
frexp
lsexp
log
log10
modf
pow
sqrt
ceil
fabs
floor
fmod
setjmp
longjmp
signal
raise
va_start
va_arg
va_end
remove
rename
tmpfile
tmpnam
fclose
fflush
fopen
freopen
setbuf
setvbuf
fprintf
fscanf
printf
scanf
sprinf
sscanf
vfprintf
vprintf
vsprintf
fgetc
fgets
fputc
fputs
getc
getchar
gets
putc
putchar
puts
ungetc
fread
fwrite
fgetpos
fseek
fsetpos
ftell
rewind
clearerr
feof
ferror
perror
atof
atoi
atol
strtod
strtol
strtoul
rand
srand
calloc
free
malloc
realloc
abort
atexit
exit
getenv
systems
bsearch
qsort
abs
div
labs
ldiv
mblen
mbtowc
wctomb
mbstowcs
wcstombs
memcpy
memmove
strcpy
strncpy
strcat
strncat
memcmp
strcmp
strcol
strncmp
strxfrm
memchr
strchr
strcspan
strpbrk
strrchr
strspn
strstr
strtok
memset
strerror
strlen
clock
difftime
mktime
time
asctime
ctime
gmtive
lcoaltime
strftime
access
alarm
asctime
cfgetispeed
cfgetospeed
cfsetispeed
cfsetospeed
chdir
chmod
chown
close
closedir
creat
ctermid
cuserid
dup
dup2
execl
execle
execlp
execv
execve
execvp
_exit
fcntl
fdopen
fileno
fork
fpathconf
fstat
getcwd
getegid
getenv
geteuid
getgid
getgrgid
getgrnam
getgroups
getlogin
getpgrp
getpid
getppid
getpwnam
getpwuid
getuid
isatty
kill
link
lingjmp
lseek
mkdir
mkfifo
open
opendir
pathconf
pause
pipe
read
readdir
rename
rewinddir
rmdir
setgid
setjmp
setlocale
setpgid
setsid
setuid
sigaction
sigaddset
sigdelset
sigemptyset
sigfillset
sigismember
siglongjmp
sigpending
sigprocmask
sigsetjmp
sigsuspend
sleep
stat
sysconf
tcdrain
tcflow
tcflush
tcgetattr
tcgetpgrp
time
times
ttyname
tzset
umask
uname
unlink
utime
wait
waitpid
write
S_ISDIR
S_ISCHR
S_ISBLK
S_ISREG
S_ISFIFO
WIFEXITED
WEXITSTATUS
WIFSIGNALED
WTERMSIG
WIFSTOPPED
WSTOPSIG
@//E*O*F include/functions//
chmod u=rw,g=r,o=r include/functions
echo mkdir - include/structs
mkdir include/structs
chmod u=rwx,g=rx,o=rx include/structs
echo x - include/structs/assert
sed 's/^@//' > "include/structs/assert" <<'@//E*O*F include/structs/assert//'
@//E*O*F include/structs/assert//
chmod u=rw,g=r,o=r include/structs/assert
echo x - include/structs/ctype
sed 's/^@//' > "include/structs/ctype" <<'@//E*O*F include/structs/ctype//'
@//E*O*F include/structs/ctype//
chmod u=rw,g=r,o=r include/structs/ctype
echo x - include/structs/dirent
sed 's/^@//' > "include/structs/dirent" <<'@//E*O*F include/structs/dirent//'
dirent
@//E*O*F include/structs/dirent//
chmod u=rw,g=r,o=r include/structs/dirent
echo x - include/structs/errno
sed 's/^@//' > "include/structs/errno" <<'@//E*O*F include/structs/errno//'
@//E*O*F include/structs/errno//
chmod u=rw,g=r,o=r include/structs/errno
echo x - include/structs/fcntl
sed 's/^@//' > "include/structs/fcntl" <<'@//E*O*F include/structs/fcntl//'
flock
@//E*O*F include/structs/fcntl//
chmod u=rw,g=r,o=r include/structs/fcntl
echo x - include/structs/float
sed 's/^@//' > "include/structs/float" <<'@//E*O*F include/structs/float//'
@//E*O*F include/structs/float//
chmod u=rw,g=r,o=r include/structs/float
echo x - include/structs/grp
sed 's/^@//' > "include/structs/grp" <<'@//E*O*F include/structs/grp//'
@//E*O*F include/structs/grp//
chmod u=rw,g=r,o=r include/structs/grp
echo x - include/structs/limits
sed 's/^@//' > "include/structs/limits" <<'@//E*O*F include/structs/limits//'
@//E*O*F include/structs/limits//
chmod u=rw,g=r,o=r include/structs/limits
echo x - include/structs/locale
sed 's/^@//' > "include/structs/locale" <<'@//E*O*F include/structs/locale//'
@//E*O*F include/structs/locale//
chmod u=rw,g=r,o=r include/structs/locale
echo x - include/structs/math
sed 's/^@//' > "include/structs/math" <<'@//E*O*F include/structs/math//'
@//E*O*F include/structs/math//
chmod u=rw,g=r,o=r include/structs/math
echo x - include/structs/pwd
sed 's/^@//' > "include/structs/pwd" <<'@//E*O*F include/structs/pwd//'
@//E*O*F include/structs/pwd//
chmod u=rw,g=r,o=r include/structs/pwd
echo x - include/structs/setjmp
sed 's/^@//' > "include/structs/setjmp" <<'@//E*O*F include/structs/setjmp//'
@//E*O*F include/structs/setjmp//
chmod u=rw,g=r,o=r include/structs/setjmp
echo x - include/structs/signal
sed 's/^@//' > "include/structs/signal" <<'@//E*O*F include/structs/signal//'
sigset
sigaction
@//E*O*F include/structs/signal//
chmod u=rw,g=r,o=r include/structs/signal
echo x - include/structs/stat
sed 's/^@//' > "include/structs/stat" <<'@//E*O*F include/structs/stat//'
stat
@//E*O*F include/structs/stat//
chmod u=rw,g=r,o=r include/structs/stat
echo x - include/structs/stdarg
sed 's/^@//' > "include/structs/stdarg" <<'@//E*O*F include/structs/stdarg//'
@//E*O*F include/structs/stdarg//
chmod u=rw,g=r,o=r include/structs/stdarg
echo x - include/structs/stddef
sed 's/^@//' > "include/structs/stddef" <<'@//E*O*F include/structs/stddef//'
@//E*O*F include/structs/stddef//
chmod u=rw,g=r,o=r include/structs/stddef
echo x - include/structs/stdio
sed 's/^@//' > "include/structs/stdio" <<'@//E*O*F include/structs/stdio//'
@//E*O*F include/structs/stdio//
chmod u=rw,g=r,o=r include/structs/stdio
echo x - include/structs/stdlib
sed 's/^@//' > "include/structs/stdlib" <<'@//E*O*F include/structs/stdlib//'
@//E*O*F include/structs/stdlib//
chmod u=rw,g=r,o=r include/structs/stdlib
echo x - include/structs/string
sed 's/^@//' > "include/structs/string" <<'@//E*O*F include/structs/string//'
@//E*O*F include/structs/string//
chmod u=rw,g=r,o=r include/structs/string
echo x - include/structs/tar
sed 's/^@//' > "include/structs/tar" <<'@//E*O*F include/structs/tar//'
@//E*O*F include/structs/tar//
chmod u=rw,g=r,o=r include/structs/tar
echo x - include/structs/termios
sed 's/^@//' > "include/structs/termios" <<'@//E*O*F include/structs/termios//'
termios
@//E*O*F include/structs/termios//
chmod u=rw,g=r,o=r include/structs/termios
echo x - include/structs/time
sed 's/^@//' > "include/structs/time" <<'@//E*O*F include/structs/time//'
tm
@//E*O*F include/structs/time//
chmod u=rw,g=r,o=r include/structs/time
echo x - include/structs/times
sed 's/^@//' > "include/structs/times" <<'@//E*O*F include/structs/times//'
tms
@//E*O*F include/structs/times//
chmod u=rw,g=r,o=r include/structs/times
echo x - include/structs/types
sed 's/^@//' > "include/structs/types" <<'@//E*O*F include/structs/types//'
@//E*O*F include/structs/types//
chmod u=rw,g=r,o=r include/structs/types
echo x - include/structs/unistd
sed 's/^@//' > "include/structs/unistd" <<'@//E*O*F include/structs/unistd//'
@//E*O*F include/structs/unistd//
chmod u=rw,g=r,o=r include/structs/unistd
echo x - include/structs/utime
sed 's/^@//' > "include/structs/utime" <<'@//E*O*F include/structs/utime//'
utimbuf
@//E*O*F include/structs/utime//
chmod u=rw,g=r,o=r include/structs/utime
echo x - include/structs/utsname
sed 's/^@//' > "include/structs/utsname" <<'@//E*O*F include/structs/utsname//'
utsname
@//E*O*F include/structs/utsname//
chmod u=rw,g=r,o=r include/structs/utsname
echo x - include/structs/wait
sed 's/^@//' > "include/structs/wait" <<'@//E*O*F include/structs/wait//'
@//E*O*F include/structs/wait//
chmod u=rw,g=r,o=r include/structs/wait
echo x - include/structs/grp.h
sed 's/^@//' > "include/structs/grp.h" <<'@//E*O*F include/structs/grp.h//'
group
@//E*O*F include/structs/grp.h//
chmod u=rw,g=r,o=r include/structs/grp.h
echo x - include/structs/locale.h
sed 's/^@//' > "include/structs/locale.h" <<'@//E*O*F include/structs/locale.h//'
lconv
@//E*O*F include/structs/locale.h//
chmod u=rw,g=r,o=r include/structs/locale.h
echo x - include/structs/pwd.c
sed 's/^@//' > "include/structs/pwd.c" <<'@//E*O*F include/structs/pwd.c//'
passwd
@//E*O*F include/structs/pwd.c//
chmod u=rw,g=r,o=r include/structs/pwd.c
echo x - include/structs/stdlib.h
sed 's/^@//' > "include/structs/stdlib.h" <<'@//E*O*F include/structs/stdlib.h//'
div_t
ldiv_t
@//E*O*F include/structs/stdlib.h//
chmod u=rw,g=r,o=r include/structs/stdlib.h
echo x - include/report.str.awk
sed 's/^@//' > "include/report.str.awk" <<'@//E*O*F include/report.str.awk//'
#
#**********************************************************************
# THERE MUST BE A SPACE in the first character of the first line.
#**********************************************************************
#
# NOTICE STATEMENT
#
# This code was developed by IBM Corporation. Copyright is disclaimed.
#
# IBM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS CODE. IN NO EVENT
# WILL IBM BE LIABLE FOR ANY DAMAGES, LOST PROFITS, OR LOST SAVINGS.
#
# "@(#) This code was developed by IBM Corporation. "
# "@(#) Copyright is disclaimed. "
#
#**********************************************************************
# Written by: Barry Books
#**********************************************************************
# just ignore these
/ char/ { next; }
/ const/ { next; }
/ double/ { next; }
/ float/ { next; }
/ int/ { next; }
/ long/ { next; }
/ short/ { next; }
/ signed/ { next; }
/ unsigned/ { next; }
/ void/ { next; }
# this is a structure name
$1 ~ /^\t/ {
}
@//E*O*F include/report.str.awk//
chmod u=rw,g=r,o=r include/report.str.awk
echo x - include/struct1.awk
sed 's/^@//' > "include/struct1.awk" <<'@//E*O*F include/struct1.awk//'
#
#**********************************************************************
# THERE MUST BE A SPACE in the first character of the first line.
#**********************************************************************
#
# NOTICE STATEMENT
#
# This code was developed by IBM Corporation. Copyright is disclaimed.
#
# IBM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS CODE. IN NO EVENT
# WILL IBM BE LIABLE FOR ANY DAMAGES, LOST PROFITS, OR LOST SAVINGS.
#
# "@(#) This code was developed by IBM Corporation. "
# "@(#) Copyright is disclaimed. "
#
#**********************************************************************
# Written by: Barry Books
#**********************************************************************
# this awk script strips off C types and typedefs ending in _t
# regular C types
$2 ~ /^char$/ { next; }
$2 ~ /^const$/ { next; }
$2 ~ /^double$/ { next; }
$2 ~ /^float$/ { next; }
$2 ~ /^int$/ { next; }
$2 ~ /^long$/ { next; }
$2 ~ /^short$/ { next; }
$2 ~ /^signed$/ { next; }
$2 ~ /^unsigned$/ { next; }
$2 ~ /^void$/ { next; }
# additional ansi types
# additional posix types
# posix says _t is ok
$2 ~ /.*_t/ { next; }
/^/ { print $0 }
@//E*O*F include/struct1.awk//
chmod u=rw,g=r,o=r include/struct1.awk
echo mkdir - include/types
mkdir include/types
chmod u=rwx,g=rx,o=rx include/types
echo x - include/types/assert
sed 's/^@//' > "include/types/assert" <<'@//E*O*F include/types/assert//'
@//E*O*F include/types/assert//
chmod u=rw,g=r,o=r include/types/assert
echo x - include/types/ctype
sed 's/^@//' > "include/types/ctype" <<'@//E*O*F include/types/ctype//'
@//E*O*F include/types/ctype//
chmod u=rw,g=r,o=r include/types/ctype
echo x - include/types/dirent
sed 's/^@//' > "include/types/dirent" <<'@//E*O*F include/types/dirent//'
DIR
@//E*O*F include/types/dirent//
chmod u=rw,g=r,o=r include/types/dirent
echo x - include/types/errno
sed 's/^@//' > "include/types/errno" <<'@//E*O*F include/types/errno//'
@//E*O*F include/types/errno//
chmod u=rw,g=r,o=r include/types/errno
echo x - include/types/fcntl
sed 's/^@//' > "include/types/fcntl" <<'@//E*O*F include/types/fcntl//'
@//E*O*F include/types/fcntl//
chmod u=rw,g=r,o=r include/types/fcntl
echo x - include/types/float
sed 's/^@//' > "include/types/float" <<'@//E*O*F include/types/float//'
@//E*O*F include/types/float//
chmod u=rw,g=r,o=r include/types/float
echo x - include/types/grp
sed 's/^@//' > "include/types/grp" <<'@//E*O*F include/types/grp//'
@//E*O*F include/types/grp//
chmod u=rw,g=r,o=r include/types/grp
echo x - include/types/limits
sed 's/^@//' > "include/types/limits" <<'@//E*O*F include/types/limits//'
@//E*O*F include/types/limits//
chmod u=rw,g=r,o=r include/types/limits
echo x - include/types/locale
sed 's/^@//' > "include/types/locale" <<'@//E*O*F include/types/locale//'
@//E*O*F include/types/locale//
chmod u=rw,g=r,o=r include/types/locale
echo x - include/types/math
sed 's/^@//' > "include/types/math" <<'@//E*O*F include/types/math//'
@//E*O*F include/types/math//
chmod u=rw,g=r,o=r include/types/math
echo x - include/types/pwd
sed 's/^@//' > "include/types/pwd" <<'@//E*O*F include/types/pwd//'
@//E*O*F include/types/pwd//
chmod u=rw,g=r,o=r include/types/pwd
echo x - include/types/setjmp
sed 's/^@//' > "include/types/setjmp" <<'@//E*O*F include/types/setjmp//'
jmp_buf
sigjmp_buf
@//E*O*F include/types/setjmp//
chmod u=rw,g=r,o=r include/types/setjmp
echo x - include/types/signal
sed 's/^@//' > "include/types/signal" <<'@//E*O*F include/types/signal//'
sigset_t
sig_atomic_t
@//E*O*F include/types/signal//
chmod u=rw,g=r,o=r include/types/signal
echo x - include/types/stat
sed 's/^@//' > "include/types/stat" <<'@//E*O*F include/types/stat//'
@//E*O*F include/types/stat//
chmod u=rw,g=r,o=r include/types/stat
echo x - include/types/stdarg
sed 's/^@//' > "include/types/stdarg" <<'@//E*O*F include/types/stdarg//'
va_list
@//E*O*F include/types/stdarg//
chmod u=rw,g=r,o=r include/types/stdarg
echo x - include/types/stddef
sed 's/^@//' > "include/types/stddef" <<'@//E*O*F include/types/stddef//'
ptrdiff_t
size_t
wchar_t
@//E*O*F include/types/stddef//
chmod u=rw,g=r,o=r include/types/stddef
echo x - include/types/stdio
sed 's/^@//' > "include/types/stdio" <<'@//E*O*F include/types/stdio//'
FILE
fpos_t
@//E*O*F include/types/stdio//
chmod u=rw,g=r,o=r include/types/stdio
echo x - include/types/stdlib
sed 's/^@//' > "include/types/stdlib" <<'@//E*O*F include/types/stdlib//'
size_t
fpos_t
div_t
ldiv_t
@//E*O*F include/types/stdlib//
chmod u=rw,g=r,o=r include/types/stdlib
echo x - include/types/string
sed 's/^@//' > "include/types/string" <<'@//E*O*F include/types/string//'
size_t
@//E*O*F include/types/string//
chmod u=rw,g=r,o=r include/types/string
echo x - include/types/tar
sed 's/^@//' > "include/types/tar" <<'@//E*O*F include/types/tar//'
@//E*O*F include/types/tar//
chmod u=rw,g=r,o=r include/types/tar
echo x - include/types/termios
sed 's/^@//' > "include/types/termios" <<'@//E*O*F include/types/termios//'
tc_flag_t
cc_t
speed_t
@//E*O*F include/types/termios//
chmod u=rw,g=r,o=r include/types/termios
echo x - include/types/time
sed 's/^@//' > "include/types/time" <<'@//E*O*F include/types/time//'
size_t
time_t
@//E*O*F include/types/time//
chmod u=rw,g=r,o=r include/types/time
echo x - include/types/times
sed 's/^@//' > "include/types/times" <<'@//E*O*F include/types/times//'
clock_t
@//E*O*F include/types/times//
chmod u=rw,g=r,o=r include/types/times
echo x - include/types/types
sed 's/^@//' > "include/types/types" <<'@//E*O*F include/types/types//'
clock_t
dev_t
gid_t
ino_t
mode_t
nlink_t
off_t
pid_t
size_t
time_t
uid_t
@//E*O*F include/types/types//
chmod u=rw,g=r,o=r include/types/types
echo x - include/types/unistd
sed 's/^@//' > "include/types/unistd" <<'@//E*O*F include/types/unistd//'
@//E*O*F include/types/unistd//
chmod u=rw,g=r,o=r include/types/unistd
echo x - include/types/utime
sed 's/^@//' > "include/types/utime" <<'@//E*O*F include/types/utime//'
@//E*O*F include/types/utime//
chmod u=rw,g=r,o=r include/types/utime
echo x - include/types/utsname
sed 's/^@//' > "include/types/utsname" <<'@//E*O*F include/types/utsname//'
@//E*O*F include/types/utsname//
chmod u=rw,g=r,o=r include/types/utsname
echo x - include/types/wait
sed 's/^@//' > "include/types/wait" <<'@//E*O*F include/types/wait//'
@//E*O*
--
Please send comp.sources.unix-related mail to rsalz at uunet.uu.net.
Use a domain-based address or give alternate paths, or you may lose out.
More information about the Comp.sources.unix
mailing list