home *** CD-ROM | disk | FTP | other *** search
- Subject: v20i001: POSIX 1003.1 #include file tester
- Newsgroups: comp.sources.unix
- Sender: sources
- Approved: rsalz@uunet.UU.NET
-
- Submitted-by: aixsm!bbooks@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*
-