[comp.os.minix] MINIX ANSI/POSIX/other headers, part 2 of 2

ast@cs.vu.nl (Andy Tanenbaum) (10/26/89)

: This is a shar archive.  Extract with sh, not csh.
: This archive ends with exit, so do not worry about trailing junk.
: --------------------------- cut here --------------------------
PATH=/bin:/usr/bin:/usr/ucb
echo Extracting 'pwd.h'
sed 's/^X//' > 'pwd.h' << '+ END-OF-FILE ''pwd.h'
X/* The <pwd.h> header defines the items in the password file. */
X
Xstruct passwd {
X  char *pw_name;		/* login name */
X  uid_t pw_uid;			/* uid corresponding to the name */
X  gid_t pw_gid;			/* gid corresponding to the name */
X  char *pw_dir;			/* user's home directory */
X  char *pw_shell;		/* name of the user's shell */
X
X  /* The following members are not defined by POSIX. */
X  char *pw_passwd;		/* password information */
X  char *pw_gecos;		/* just in case you have a GE 645 around */
X};
X
X
X/* Declare ANSI or K&R prototypes (except when compiling kernel).*/
X#ifndef _ANSI_H
X#include <ansi.h>
X#endif
X
X#if _USE_ANSI_PROTOTYPES	/* function prototypes required by ANSI C */
Xstruct passwd *getpwuid(uid_t __uid);
Xstruct passwd *getpwnam(char *__name);
X#endif
X
X#if _USE_OLD_PROTOTYPES		/* Kernighan and Ritchie C prototypes */
Xstruct passwd *getpwuid();
Xstruct passwd *getpwnam();
X#endif
+ END-OF-FILE pwd.h
chmod 'u=rw,g=r,o=r' 'pwd.h'
set `wc -c 'pwd.h'`
count=$1
case $count in
885)	:;;
*)	echo 'Bad character count in ''pwd.h' >&2
		echo 'Count should be 885' >&2
esac
echo Extracting 'regexp.h'
sed 's/^X//' > 'regexp.h' << '+ END-OF-FILE ''regexp.h'
X/* The <regexp.h> header is used by the (V8-compatible) regexp(3) routines. 
X
X#define void int
X#define CHARBITS 0377
X#define strchr index
X#define NSUBEXP  10
Xtypedef struct regexp {
X	char *startp[NSUBEXP];
X	char *endp[NSUBEXP];
X	char regstart;		/* Internal use only. */
X	char reganch;		/* Internal use only. */
X	char *regmust;		/* Internal use only. */
X	int regmlen;		/* Internal use only. */
X	char program[1];	/* Unwarranted chumminess with compiler. */
X} regexp;
X
Xextern regexp *regcomp();
Xextern int regexec();
Xextern void regsub();
Xextern void regerror();
+ END-OF-FILE regexp.h
chmod 'u=rw,g=r,o=r' 'regexp.h'
set `wc -c 'regexp.h'`
count=$1
case $count in
560)	:;;
*)	echo 'Bad character count in ''regexp.h' >&2
		echo 'Count should be 560' >&2
esac
echo Extracting 'setjmp.h'
sed 's/^X//' > 'setjmp.h' << '+ END-OF-FILE ''setjmp.h'
X/* The <setjmp.h> header relates to the C phenomenon known as setjmp/longjmp.  
X * It is used to escape out of the current situation into a previous one.  
X * A typical example is in an editor, where hitting DEL breaks off the current 
X * command and puts the editor back in the main loop.
X */
X
X/* _JBLEN should be 3 for IBM PC, 13 for ATARI. */
X
X#ifndef _SETJMP_H
X#define _SETJMP_H
X
X#define _JBLEN 3
X
Xtypedef int jmp_buf[_JBLEN];
X
X/* Declare ANSI or K&R prototypes (except when compiling kernel).*/
X#ifndef _ANSI_H
X#include <ansi.h>
X#endif
X
X#if _USE_ANSI_PROTOTYPES	/* function prototypes required by ANSI C */
Xint setjmp(jmp_buf __env);
Xvoid longjmp(jmp_buf __env, int __val);
X#endif
X
X#if _USE_OLD_PROTOTYPES		/* Kernighan and Ritchie C prototypes */
Xint setjmp();
Xvoid longjmp();
X#endif
X
X#endif /* _SETJMP_H */
+ END-OF-FILE setjmp.h
chmod 'u=rw,g=r,o=r' 'setjmp.h'
set `wc -c 'setjmp.h'`
count=$1
case $count in
814)	:;;
*)	echo 'Bad character count in ''setjmp.h' >&2
		echo 'Count should be 814' >&2
esac
echo Extracting 'sgtty.h'
sed 's/^X//' > 'sgtty.h' << '+ END-OF-FILE ''sgtty.h'
X/* The <sgtty.h> header contains data structures for ioctl(). */
X
Xstruct sgttyb {
X  char sg_ispeed;		/* input speed */
X  char sg_ospeed;		/* output speed */
X  char sg_erase;		/* erase character */
X  char sg_kill;			/* kill character */
X  int  sg_flags;		/* mode flags */
X};
X
Xstruct tchars {
X  char t_intrc;			/* SIGINT char */
X  char t_quitc;			/* SIGQUIT char */
X  char t_startc;		/* start output (initially CTRL-Q) */
X  char t_stopc;			/* stop output	(initially CTRL-S) */
X  char t_eofc;			/* EOF (initially CTRL-D) */
X  char t_brkc;			/* input delimiter (like nl) */
X};
X
X/* Field names */
X#define XTABS	     0006000	/* do tab expansion */
X#define BITS8        0001400	/* 8 bits/char */
X#define BITS7        0001000	/* 7 bits/char */
X#define BITS6        0000400	/* 6 bits/char */
X#define BITS5        0000000	/* 5 bits/char */
X#define EVENP        0000200	/* even parity */
X#define ODDP         0000100	/* odd parity */
X#define RAW	     0000040	/* enable raw mode */
X#define CRMOD	     0000020	/* map lf to cr + lf */
X#define ECHO	     0000010	/* echo input */
X#define CBREAK	     0000002	/* enable cbreak mode */
X#define COOKED       0000000	/* neither CBREAK nor RAW */
X
X/* Line speeds */
X#define B110		   1
X#define B300		   3
X#define B1200		  12
X#define B2400		  24
X#define B4800		  48
X#define B9600 		  96
X
X#define TIOCGETP (('t'<<8) | 8)
X#define TIOCSETP (('t'<<8) | 9)
X#define TIOCGETC (('t'<<8) | 18)
X#define TIOCSETC (('t'<<8) | 17)
+ END-OF-FILE sgtty.h
chmod 'u=rw,g=r,o=r' 'sgtty.h'
set `wc -c 'sgtty.h'`
count=$1
case $count in
1444)	:;;
*)	echo 'Bad character count in ''sgtty.h' >&2
		echo 'Count should be 1444' >&2
esac
echo Extracting 'signal.h'
sed 's/^X//' > 'signal.h' << '+ END-OF-FILE ''signal.h'
X/* The <signal.h> header defines all the ANSI and POSIX signals.
X * MINIX supports all the signals required by POSIX.  They are defined below.
X * Some additional signals are also supported.
X */
X
X#ifndef _SIGNAL_H
X#define _SIGNAL_H
X
X#define _NSIG             15	/* number of signals used */
X
X#define SIGHUP	           1	/* hangup */
X#define SIGINT             2	/* interrupt (DEL) */
X#define SIGQUIT            3	/* quit (ASCII FS) */
X#define SIGILL             4	/* illegal instruction */
X#define SIGTRAP            5	/* trace trap (not reset when caught) */
X#define SIGABRT            6	/* IOT instruction */
X#define SIGUNUSED          7	/* spare code */
X#define SIGFPE             8	/* floating point exception */
X#define SIGKILL            9	/* kill (cannot be caught or ignored) */
X#define SIGUSR1           10	/* user defined signal # 1 */
X#define SIGSEGV           11	/* segmentation violation */
X#define SIGUSR2           12	/* user defined signal # 2 */
X#define SIGPIPE           13	/* write on a pipe with no one to read it */
X#define SIGALRM           14	/* alarm clock */
X#define SIGTERM           15	/* software termination signal from kill */
X
X#define SIGSTKFLT         16	/* used by kernel to indicate stack fault */
X
X/* POSIX requires the following signals to be defined, even if they are
X * not supported.  Here are the definitions, but they are not supported.
X */
X#define SIGCHLD           17	/* child process terminated or stopped */
X#define SIGCONT           18	/* continue if stopped */
X#define SIGSTOP           19	/* stop signal */
X#define SIGTSTP           20	/* interactive stop signal */
X#define SIGTTIN           21	/* background process wants to read */
X#define SIGTTOU           22	/* background process wants to write */
X
X#ifdef _POSIX_SOURCE
X#define SA_NOCLDSTOP       1	/* signal parent if child stops */
X
X/* Here are types that are closely associated with signal handling. */
Xtypedef int		sig_atomic_t;
Xtypedef unsigned short	sigset_t;
X
Xstruct sigaction {		/* parameter to sigaction() call */
X  void (*sa_handler);		/* pointer to signal handler */
X  sigset_t sa_mask;		/* signals to be blocked during handler */
X  int sa_flags;			/* special flags to affect behavior of sig */
X}
X#endif /* _POSIX_SOURCE */
X
X/* POSIX requires these values for use on system calls involving signals. */
X#define SIG_BLOCK          0	/* for blocking signals */
X#define SIG_UNBLOCK        1	/* for unblocking signals */
X#define SIG_SETMASK        2	/* for setting the signal mask */
X
X/* Macros used as function pointers. */
X#define SIG_DFL		((void (*)(int))0)
X#define SIG_IGN		((void (*)(int))1)
X#define SIG_ERR		((void (*)(int))-1)
X
X/* Declare ANSI or K&R prototypes (except when compiling kernel).*/
X#ifndef _ANSI_H
X#include <ansi.h>
X#endif
X
X#if _USE_ANSI_PROTOTYPES	/* function prototypes required by ANSI C */
Xint kill(pid_t __pid, int __sig);
Xvoid (*signal(int __sig, void (*__func)(int)))(int);
Xint sigemptyset(sigset_t *__set);
Xint sigfillset(sigset_t *__set);
Xint sigaddset(sigset_t *__set);
Xint sigdelset(sigset_t *__set);
Xint sigismember(sigset_t *__set, int __signo);
Xint sigaction(int __sig, struct sigaction *__act, struct sigaction *__oact);
Xint sigprocmask(int __how, sigset_t *__set, sigset_t *__oset);
Xint sigsuspend(sigset_t *__sigmask);
Xint raise(int __sig);
X#endif
X
X#if _USE_OLD_PROTOTYPES		/* Kernighan and Ritchie C prototypes */
Xvoid (*signal())();
X#endif
X
X#endif /* _SIGNAL_H */
+ END-OF-FILE signal.h
chmod 'u=rw,g=r,o=r' 'signal.h'
set `wc -c 'signal.h'`
count=$1
case $count in
3412)	:;;
*)	echo 'Bad character count in ''signal.h' >&2
		echo 'Count should be 3412' >&2
esac
echo Extracting 'stat.h'
sed 's/^X//' > 'stat.h' << '+ END-OF-FILE ''stat.h'
X/* The <sys/stat.h> header defines a struct that is used in the stat() and
X * fstat functions.  The information in this struct comes from the i-node of
X * some file.  These calls are the only approved way to inspect i-nodes.
X */
X
Xstruct stat {
X  dev_t st_dev;			/* major/minor device number */
X  ino_t st_ino;			/* i-node number */
X  mode_t st_mode;		/* file mode, protection bits, etc. */
X  nlink_t st_nlink;		/* number of links */
X  uid_t st_uid;			/* uid of the file's owner */
X  gid_t st_gid;			/* gid of the file's owner */
X  short int st_rdev;
X  off_t st_size;		/* file size */
X  time_t st_atime;		/* time of last access */
X  time_t st_mtime;		/* time of last data modification */
X  time_t st_ctime;		/* time of last file status change */
X};
X
X/* Traditional mask definitions for st_mode. */
X#define S_IFMT  0170000		/* type of file */
X#define S_IFREG 0100000		/* regular */
X#define S_IFBLK 0060000		/* block special */
X#define S_IFDIR 0040000  	/* directory */
X#define S_IFCHR 0020000		/* character special */
X#define S_IFIFO 0010000		/* this is a FIFO */
X#define S_ISUID 0004000		/* set user id on execution */
X#define S_ISGID 0002000		/* set group id on execution */
X				/* 0001000 is reserved for future use */
X
X/* POSIX masks for st_mode. */
X#define S_IRWXU   00700		/* owner:  rwx------ */
X#define S_IRUSR   00400		/* owner:  r-------- */
X#define S_IWUSR   00200		/* owner:  -w------- */
X#define S_IXUSR   00100		/* owner:  --x------ */
X
X#define S_IRWXG   00070		/* group:  ---rwx--- */
X#define S_IRGRP   00040		/* group:  ---r----- */
X#define S_IWGRP   00020		/* group:  ----w---- */
X#define S_IXGRP   00010		/* group:  -----x--- */
X
X#define S_IRWXO   00007		/* others: ------rwx */
X#define S_IROTH   00004		/* others: ------r-- */ 
X#define S_IWOTH   00002		/* others: -------w- */
X#define S_IXOTH   00001		/* others: --------x */
X
X/* The following macros test st_mode (from POSIX Sec. 5.6.1.1. */
X#define S_ISREG(m)	((m & S_IFMT) == S_IFREG)	/* is a reg file */
X#define S_ISDIR(m)	((m & S_IFMT) == S_IFDIR)	/* is a directory */
X#define S_ISCHR(m)	((m & S_IFMT) == S_IFCHR)	/* is a char spec */
X#define S_ISBLK(m)	((m & S_IFMT) == S_IFBLK)	/* is a block spec */
X#define S_ISFIFO(m)	((m & S_IFMT) == S_IFFIFO)	/* is a pipe/FIFO */
X
X
X/* Declare ANSI or K&R prototypes (except when compiling kernel).*/
X#ifndef _ANSI_H
X#include <ansi.h>
X#endif
X
X#if _USE_ANSI_PROTOTYPES	/* function prototypes required by ANSI C */
Xmode_t umask(mode_t __cmask);
Xint mkdir(char *__path, mode_t __mode);
Xint mkfifo(char *__path, mode_t __mode);
Xint stat (char *__path, struct stat *__buf);
Xint fstat(int __fildes, struct stat *__buf);
Xint chmod(char *__path, mode_t __mode);
X#endif
X
X
X#if _USE_OLD_PROTOTYPES		/* Kernighan and Ritchie C prototypes */
Xmode_t umask();
X#endif
+ END-OF-FILE stat.h
chmod 'u=rw,g=r,o=r' 'stat.h'
set `wc -c 'stat.h'`
count=$1
case $count in
2763)	:;;
*)	echo 'Bad character count in ''stat.h' >&2
		echo 'Count should be 2763' >&2
esac
echo Extracting 'stdarg.h'
sed 's/^X//' > 'stdarg.h' << '+ END-OF-FILE ''stdarg.h'
X/* The <stdarg.h> header is ANSI's way to handle variable numbers of params.
X * Some programming languages require a function that is declared with n
X * parameters to be called with n parameters.  C does not.  A function may
X * called with more parameters than it is declared with.  The well-known
X * printf function, for example, may have arbitrarily many parameters.
X * The question arises how one can access all the parameters in a portable
X * way.  The C standard defines three macros that programs can use to
X * advance through the parameter list.  The definition of these macros for
X * MINIX are given in this file.  The three macros are:
X *
X *	va_start(ap, parmN)	prepare to access parameters
X *	va_arg(ap, type)	get next parameter value and type
X *	va_end(ap)		access is finished
X */
X
X#ifndef _STDARG_H
X#define _STDARG_H
X
Xtypedef	void *va_list;
X
X#define _vasz(x)	      ((sizeof(x)+sizeof(int)-1) & ~(sizeof(int) -1))
X
X#define va_start(ap, parmN)   (ap = (va_list)&parmN + _vasz(parmN))
X#define va_arg(ap, type)      (*((type *)((ap += _vasz(type)) - _vasz(type))))
X#define va_end(ap)
X
X#endif /* _STDARG_H */
+ END-OF-FILE stdarg.h
chmod 'u=rw,g=r,o=r' 'stdarg.h'
set `wc -c 'stdarg.h'`
count=$1
case $count in
1116)	:;;
*)	echo 'Bad character count in ''stdarg.h' >&2
		echo 'Count should be 1116' >&2
esac
echo Extracting 'stddef.h'
sed 's/^X//' > 'stddef.h' << '+ END-OF-FILE ''stddef.h'
X/* The <stddef.h> header defines certain commonly used macros. */
X
X#ifndef _STDDEF_H
X#define _STDDEF_H
X
X#ifndef NULL
X#define NULL      (void *) 0
X#endif
X
X/* The final exam will not cover the material present on the next two lines. */
X#define offsetof(T,m)	((size_t) (((char *) &(((T *) 256)->m)) - \
X						       ((char *) ((T *) 256))))
X
X#ifndef _PTRDIFF_T
X#define _PTRDIFF_T
Xtypedef int ptrdiff_t;		/* result of subtracting two pointers */
X#endif
X
X#ifndef _SIZE_T
X#define _SIZE_T
Xtypedef unsigned int size_t;	/* type returned by sizeof */
X#endif
X
X#ifndef _WCHAR_T
X#define _WCHAR_T
Xtypedef char wchar_t;		/* type expanded character set */
X#endif
X
X#endif /* _STDDEF_H */
+ END-OF-FILE stddef.h
chmod 'u=rw,g=r,o=r' 'stddef.h'
set `wc -c 'stddef.h'`
count=$1
case $count in
671)	:;;
*)	echo 'Bad character count in ''stddef.h' >&2
		echo 'Count should be 671' >&2
esac
echo Extracting 'stdio.h'
sed 's/^X//' > 'stdio.h' << '+ END-OF-FILE ''stdio.h'
X/* The <stdio.h> header is used by the I/O routines. */
X
X#define BUFSIZ  1024
X#define NFILES  20
X#define NULL       0
X#define EOF     (-1)
X#define CMASK   0377
X
X#define READMODE     1
X#define WRITEMODE    2
X#define UNBUFF       4
X#define _EOF         8
X#define _ERR        16
X#define IOMYBUF     32
X#define PERPRINTF   64
X#define STRINGS    128
X
X#ifndef FILE
X
Xextern struct _io_buf {
X    int     _fd;
X    int     _count;
X    int     _flags;
X    char   *_buf;
X    char   *_ptr;
X}  *_io_table[NFILES];
X
X
X#endif	/* FILE */
X
X#define FILE struct _io_buf
X
X
X#define stdin  (_io_table[0])	
X#define stdout 	(_io_table[1])
X#define stderr 	(_io_table[2])
X
X#define getchar() 		getc(stdin)
X#define putchar(c) 		putc(c,stdout)
X#define getc(f)			fgetc(f)
X#define putc(c,f)		fputc(c,f)
X#define feof(p) 		(((p)->_flags & _EOF) != 0)
X#define ferror(p) 		(((p)->_flags & _ERR) != 0)
X#define clearerr(p) 		((p)->_flags &= ~(_ERR))
X#define fileno(p) 		((p)->_fd)
X#define rewind(f)		fseek(f, 0L, 0)
X#define testflag(p,x)		((p)->_flags & (x))
X
X/* If you want a stream to be flushed after each printf use:
X * 
X *	perprintf(stream);
X *
X * If you want to stop with this kind of buffering use:
X *
X *	noperprintf(stream);
X */
X
X#define noperprintf(p)		((p)->_flags &= ~PERPRINTF)
X#define perprintf(p)		((p)->_flags |= PERPRINTF)
X
Xextern FILE	*fopen();
Xextern FILE	*freopen();
Xextern long	ftell();
Xextern char	*fgets();
Xextern char	*gets();
+ END-OF-FILE stdio.h
chmod 'u=rw,g=r,o=r' 'stdio.h'
set `wc -c 'stdio.h'`
count=$1
case $count in
1411)	:;;
*)	echo 'Bad character count in ''stdio.h' >&2
		echo 'Count should be 1411' >&2
esac
echo Extracting 'stdlib.h'
sed 's/^X//' > 'stdlib.h' << '+ END-OF-FILE ''stdlib.h'
X/* The <stdlib.h> header defines certain common macros, types, and functions.*/
X
X#ifndef _STDLIB_H
X#define _STDLIB_H
X
X/* The macros are NULL, EXIT_FAILURE, EXIT_SUCCESS, RAND_MAX, and MB_CUR_MAX.*/
X#ifndef NULL
X#define NULL      (void *) 0
X#endif
X
X#define EXIT_FAILURE       1	/* standard error return using exit() */
X#define EXIT_SUCCESS       0	/* successful return using exit() */
X#define RAND_MAX       32767	/* largest value generated by rand() */
X#define MB_CUR_MAX         1	/* max value of multibye character */
X
X
X/* The types are size_t, wchar_t, div_t, and ldiv_t. */
X#ifndef _SIZE_T
X#define _SIZE_T
Xtypedef unsigned int size_t;	/* type returned by sizeof */
X#endif
X
X#ifndef _WCHAR_T
X#define _WCHAR_T
Xtypedef char wchar_t;		/* type expanded character set */
X#endif
X
Xtypedef struct { int quot, rem; } div_t;
Xtypedef struct { long quot, rem; } ldiv_t;
X
X/* Declare ANSI or K&R prototypes (except when compiling kernel).*/
X#ifndef _ANSI_H
X#include <ansi.h>
X#endif
X
X#if _USE_ANSI_PROTOTYPES	/* function prototypes required by ANSI C */
Xdouble atof(const char *__nptr);
Xint atoi(const char *__nptr);
Xlong atol(const char *__nptr);
Xdouble strtod(const char *__nptr, char **__endptr);
Xlong strtol(const char *__nptr, char **__endptr, int __base);
Xunsigned long int strtoul(const char *__nptr, char **__endptr, int __base);
Xint rand(void);
Xvoid srand(unsigned int __seed);
Xvoid *calloc(size_t __nmemb, size_t __size);
Xvoid free(void *__ptr);
Xvoid *malloc(size_t __size);
Xvoid *realloc(void *__ptr, size_t __size);
Xvoid abort(void);
Xint atexit(void (*func)(void));
Xvoid exit(int __status);
Xchar *getenv(const char *__name);
Xint system(const char *__string);
Xvoid *bsearch(const void *__key, const void *__base, size_t __nmemb,
X		size_t __size, int (*__compar) (const void *, const void *));
Xint (*compar)(const void *, const void *));
Xvoid qsort(void *__base, size_t __nmemb, size_t __size,
Xint (*compar)(const void *, const void *));
Xint abs(int __j);
Xdiv_t div(int __numer, int __denom);
Xlong labs(long __j);
Xldiv_t ldiv(long __numer, long __denom);
Xint mblen(const char *__s, size_t __n);
Xint mbtowc(wchar_t *__pwc, const char *__s, size_t __n);
Xint wctomb(char *__s, wchar_t __wchar);
Xsize_t mbstowcs(wchar_t *__pwcs, const char *__s, size_t __n);
Xsize_t wcstombs(char *__s, const wchar_t *__pwcs, size_t __n);
X#endif
X
X#if _USE_OLD_PROTOTYPES		/* Kernighan and Ritchie C prototypes */
Xdouble atof();
Xlong atol();
Xdouble strtod();
Xlong strtol();
Xunsigned long int strtoul();
Xvoid srand();
Xvoid *calloc();
Xvoid free();
Xvoid *malloc();
Xvoid *realloc();
Xvoid abort();
Xvoid exit();
Xchar *getenv();
Xvoid *bsearch();
Xvoid qsort();
Xdiv_t div();
Xlong labs();
Xldiv_t ldiv();
Xsize_t mbstowcs();
Xsize_t wcstombs();
X#endif
X
X#endif /* STDLIB_HEADER */
+ END-OF-FILE stdlib.h
chmod 'u=rw,g=r,o=r' 'stdlib.h'
set `wc -c 'stdlib.h'`
count=$1
case $count in
2742)	:;;
*)	echo 'Bad character count in ''stdlib.h' >&2
		echo 'Count should be 2742' >&2
esac
echo Extracting 'string.h'
sed 's/^X//' > 'string.h' << '+ END-OF-FILE ''string.h'
X/* The <string.h> header contains prototypes for the string handling 
X * functions. */
X
X#ifndef _STRING_H
X#define _STRING_H
X
X#ifndef NULL
X#define NULL      (void *) 0
X#endif
X
X#ifndef _SIZE_T
X#define _SIZE_T
Xtypedef unsigned int size_t;	  /* type returned by sizeof */
X#endif
X
X/* Declare ANSI or K&R prototypes (except when compiling kernel).*/
X#ifndef _ANSI_H
X#include <ansi.h>
X#endif
X
X#if _USE_ANSI_PROTOTYPES	/* function prototypes required by ANSI C */
Xvoid *memcpy(void *__s1, const void *__s2, size_t __n);
Xvoid *memmove(void *__s1, const void *__s2, size_t __n);
Xchar *strcpy(char *__s1, const char *__s2);
Xchar *strncpy(char *__s1, const char *__s2, size_t __n);
Xchar *strcat(char *__s1, const char *__s2);
Xchar *strncat(char *__s1, const char *__s2, size_t __n);
Xint memcmp(const void *__s1, const void *__s2, size_t __n);
Xint strcmp(const char *__s1, const char *__s2);
Xint strcoll(const char *__s1, const char *__s2);
Xint strncmp(const char *__s1, const char *__s2, size_t __n);
Xsize_t strxfrm(char *__s1, const char *__s2, size_t __n);
Xvoid *memchr(const void *__s, int __c, size_t __n);
Xchar *strchr(const char *__s, int __c);
Xsize_t strcspn(const char *__s1, const char *__s2);
Xchar *strpbrk(const char *__s1, const char *__s2);
Xchar *strrchr(const char *__s, int __c);
Xsize_t strspn(const char *__s1, const char *__s2);
Xchar *strstr(const char *__s1, const char *__s2);
Xchar *strtok(char *__s1, const char *__s2);
Xvoid *memset(void *__s, int __c, size_t __n);
Xchar *strerror(int __errnum);
Xsize_t strlen(const char *__s);
X#endif
X
X#if _USE_OLD_PROTOTYPES		/* Kernighan and Ritchie C prototypes */
Xvoid *memcpy();
Xvoid *memmove();
Xchar *strcpy();
Xchar *strncpy();
Xchar *strcat();
Xchar *strncat();
Xsize_t strxfrm();
Xvoid *memchr();
Xchar *strchr();
Xsize_t strcspn();
Xchar *strpbrk();
Xchar *strrchr();
Xsize_t strspn();
Xchar *strstr();
Xchar *strtok();
Xvoid *memset();
Xchar *strerror();
Xsize_t strlen();
X#endif
X
X#endif /* _STRING_H */
+ END-OF-FILE string.h
chmod 'u=rw,g=r,o=r' 'string.h'
set `wc -c 'string.h'`
count=$1
case $count in
1942)	:;;
*)	echo 'Bad character count in ''string.h' >&2
		echo 'Count should be 1942' >&2
esac
echo Extracting 'tar.h'
sed 's/^X//' > 'tar.h' << '+ END-OF-FILE ''tar.h'
X/* The <tar.h> header is used with the tape archiver, tar. */
X
X#define TBLOCK 		512
X#define NAMSIZ		100
X#define PFXSIZ		155
X
X#define TMODLEN 	8
X#define TUIDLEN		8
X#define TGIDLEN		8
X#define TSIZLEN		12
X#define TMTMLEN		12
X#define TCKSLEN		8
X
X#define TMAGIC		"ustar"
X#define TMAGLEN		6
X#define TVERSION	"00"
X#define TVERSLEN	2
X#define TUNMLEN		32
X#define TGNMLEN		32
X#define TDEVLEN		8
X
X#define REGTYPE		'0'
X#define AREGTYPE	'\0'
X#define LNKTYPE		'1'
X#define SYMTYPE		'2'
X#define CHRTYPE		'3'
X#define BLKTYPE		'4'
X#define DIRTYPE		'5'
X#define FIFOTYPE	'6'
X#define CONTTYPE	'7'
X
X#define TSUID		04000
X#define TSGID		02000
X#define TSVTX		01000
X
X#define TUREAD		00400
X#define TUWRITE		00200
X#define TUEXEC		00100
X#define TGREAD		00040
X#define TGWRITE		00020
X#define TGEXEC		00010
X#define TOREAD		00004
X#define TOWRITE		00002
X#define TOEXEC		00001
X
Xunion hblock {
X  char dummy[TBLOCK];
X  struct header {
X	char name[NAMSIZ];
X	char mode[TMODLEN];
X	char uid[TUIDLEN];
X	char gid[TGIDLEN];
X	char size[TSIZLEN];
X	char mtime[TMTMLEN];
X	char chksum[TCKSLEN];
X	char typeflag;
X	char linkname[NAMSIZ];
X	char magic[TMAGLEN];
X	char version[TVERSLEN];
X	char uname[TUNMLEN];
X	char gname[TGNMLEN];
X	char devmajor[TDEVLEN];
X	char devminor[TDEVLEN];
X	char prefix[PFXSIZ];
X  } dbuf;
X};
X
+ END-OF-FILE tar.h
chmod 'u=rw,g=r,o=r' 'tar.h'
set `wc -c 'tar.h'`
count=$1
case $count in
1262)	:;;
*)	echo 'Bad character count in ''tar.h' >&2
		echo 'Count should be 1262' >&2
esac
echo Extracting 'termios.h'
sed 's/^X//' > 'termios.h' << '+ END-OF-FILE ''termios.h'
X/* The <termios.h> header is used for controlling tty modes.  */
X
Xtypedef unsigned short tcflag_t;
Xtypedef char cc_t;
Xtypedef unsigned int speed_t;
X
X#define NCCS              11	/* size of cc_c array */
X
X/* Primary terminal control structure.  POSIX Table 7-1. */
Xstruct termios {
X  tcflag_t c_iflag;		/* input modes */
X  tcflag_t c_oflag;		/* output modes */
X  tcflag_t c_cflag;		/* control modes */
X  tcflag_t c_lflag;		/* local modes */
X  cc_t c_cc[NCCS];		/* control characters */
X};
X
X/* Values for termios c_iflag bit map.  POSIX Table 7-2. */
X#define BRKINT        000001	/* signal interrupt on break */
X#define ICRNL         000002	/* map CR to NL on input */
X#define IGNBRK        000004	/* ignore break */
X#define IGNCR         000010	/* ignore CR */
X#define IGNPAR        000020	/* ignore characters with parity errors */
X#define INLCR         000100	/* map NL to CR on input */
X#define INPCK         000200	/* enable input parity check */
X#define ISTRIP        000400	/* mask off 8th bit */
X#define IXOFF         001000	/* enable start/stop input control */
X#define IXON          002000	/* enable start/stop output control */
X#define PARMRK        004000	/* mark parity errors in the input queue */
X
X/* Values for termios c_oflag bit map.  POSIX Sec. 7.1.2.3. */
X#define OPOST         000001	/* perform output processing */
X
X/* Values for termios c_cflag bit map.  POSIX Table 7-3. */
X#define CLOCAL        000001	/* ignore modem status lines */
X#define CREAD         000002	/* enable receiver */
X#define CSIZE         000014	/* number of bits per character */
X#define CSTOPB        000020	/* send 2 stop bits if set, else 1 */
X#define HUPCL         000040	/* hang up on last close */
X#define PARENB        000100	/* enable parity on output */
X#define PARODD        000200	/* use odd parity if set, else even */
X
X#define CS5           000000	/* if CSIZE is CS5, characters are 5 bits */
X#define CS6           000004	/* if CSIZE is CS6, characters are 6 bits */
X#define CS7           000010	/* if CSIZE is CS7, characters are 7 bits */
X#define CS8           000014	/* if CSIZE is CS8, characters are 8 bits */
X
X/* Values for termios c_lflag bit map.  POSIX Table 7-4. */
X#define ECHO          000001	/* enable echoing of input characters */
X#define ECHOE         000002	/* echo ERASE as backspace */
X#define ECHOK         000004	/* echo KILL */
X#define ECHONL        000010	/* echo NL */
X#define ICANON        000020	/* canonical input (erase and kill enabled) */
X#define IEXTEN        000040	/* enable extended functions */
X#define ISIG          000100	/* enable signals */
X#define NOFLSH        000200	/* disable flush after interrupt or quit */
X#define TOSTOP        000400	/* send SIGTTOU (job control, not implemented*/
X
X/* Indices into c_cc array.  Default values in parentheses. POSIX Table 7-5. */
X#define VEOF               0	/* cc_c[VEOF] = EOF char (CTRL-D) */
X#define VEOL               1	/* cc_c[VEOL] = EOL char (??) */
X#define VERASE             2	/* cc_c[VERASE] = ERASE char (CTRL-H) */
X#define VINTR              3	/* cc_c[VINTR] = INTR char (DEL) */
X#define VKILL              4	/* cc_c[VKILL] = KILL char (@) */
X#define VMIN               5	/* cc_c[VMIN] = MIN value for timer */
X#define VQUIT              6	/* cc_c[VQUIT] = QUIT char (CTRL-\) */
X#define VTIME              7	/* cc_c[VTIME] = TIME value for timer */
X#define VSUSP              8	/* cc_c[VSUSP] = SUSP (job control, not impl */
X#define VSTART             9	/* cc_c[VSTART] = START char (always CTRL-S) */
X#define VSTOP             10	/* cc_c[VSTOP] = STOP char (always CTRL-Q) */
X
X/* Values for the baud rate settings.  POSIX Table 7-6. */
X#define B0           0000000	/* hang up the line */
X#define B50          0010000	/* 50 baud */
X#define B75          0020000	/* 75 baud */
X#define B110         0030000	/* 110 baud */
X#define B134         0040000	/* 134.5 baud */
X#define B150         0050000	/* 150 baud */
X#define B200         0060000	/* 200 baud */
X#define B300         0070000	/* 300 baud */
X#define B600         0100000	/* 600 baud */
X#define B1200        0110000	/* 1200 baud */
X#define B1800        0120000	/* 1800 baud */
X#define B2400        0130000	/* 2400 baud */
X#define B4800        0140000	/* 4800 baud */
X#define B9600        0150000	/* 9600 baud */
X#define B19200       0160000	/* 19200 baud */
X#define B38400       0170000	/* 38400 baud */
X
X/* Optional actions for tcsetattr().  POSIX Sec. 7.2.1.2. */
X#define TCSANOW            1	/* changes take effect immediately */
X#define TCSADRAIN          2	/* changes take effect after output is done */
X#define TCSAFLUSH          3	/* wait for output to finish and flush input */
X
X/* Queue_selector values for tcflush().  POSIX Sec. 7.2.2.2. */
X#define TCIFLUSH           1	/* flush accumulated input data */
X#define TCOFLUSH           2	/* flush accumulated output data */
X#define TCIOFLUSH          3	/* flush accumulated input and output data */
X
X/* Action values for tcflow().  POSIX Sec. 7.2.2.2. */
X#define TCOOFF             1	/* suspend output */
X#define TCOON              2	/* restart suspended output */
X#define TCIOFF             3	/* transmit a STOP character on the line */
X#define TCION              4	/* transmit a START character on the line */
X
X
X/* Declare ANSI or K&R prototypes (except when compiling kernel).*/
X#ifndef _ANSI_H
X#include <ansi.h>
X#endif
X
X#if _USE_ANSI_PROTOTYPES	/* function prototypes required by ANSI C */
Xspeed_t cfgetospeed(struct termios *__termios_p);
Xspeed_t cfsetospeed(struct termios *__termios_p, speed_t __speed);
Xspeed_t cfgetispeed(struct termios *__termios_p);
Xspeed_t cfsetospeed(struct termios *__termios_p, speed_t __speed);
Xint tcgetattr(int __filedes, struct termios *__termios_p);
Xint tcsetattr(int __filedes, int __opt_actions, struct termios *__termios_p);
Xint tcsendbreak(int __fildes, int __duration);
Xint tcdrain(int __filedes);
Xint tcflush(int __filedes, int __queue_selector);
Xint tcflow(int __filedes, int __action);
X#endif
X
X#if _USE_OLD_PROTOTYPES		/* Kernighan and Ritchie C prototypes */
Xspeed_t cfgetospeed();
Xspeed_t cfsetospeed();
Xspeed_t cfgetispeed();
Xspeed_t cfsetospeed();
X#endif
+ END-OF-FILE termios.h
chmod 'u=rw,g=r,o=r' 'termios.h'
set `wc -c 'termios.h'`
count=$1
case $count in
6114)	:;;
*)	echo 'Bad character count in ''termios.h' >&2
		echo 'Count should be 6114' >&2
esac
echo Extracting 'time.h'
sed 's/^X//' > 'time.h' << '+ END-OF-FILE ''time.h'
X/* The <time.h> header is used by the procedures that deal with time.
X * Handling time is surprisingly complicated, what with GMT, local time
X * and other factors.  Although the Bishop of Ussher (1581-1656) once
X * calculated that based on the Bible, the world began on 12 Oct. 4004 BC
X * at 9 o'clock in the morning, in the UNIX world time begins at midnight, 
X * 1 Jan. 1970 GMT.  Before that, all was NULL and (void).
X */
X
X#ifndef _TIME_H
X#define _TIME_H
X
X/* CLOCKS_PER_SEC is the number of clock ticks per second. */
X#define CLOCKS_PER_SEC    60	/* clock runs at 60 Hz (also in Europe) */
X#define CLK_TCK CLOCKS_PER_SEC	/* CLK_TCK is legal, but obsolete */
X
X#ifndef NULL
X#define NULL      (void *) 0
X#endif
X
X#ifndef _TYPES_H
Xtypedef	long clock_t;		/* time in ticks since system boot */
Xtypedef long time_t;		/* time in sec since 1 Jan 1970 0000 GMT */
X#endif
X
X#ifndef _SIZE_T
X#define _SIZE_T
Xtypedef unsigned int size_t;	/* type returned by sizeof */
X#endif
X
Xstruct tm {
X  int tm_sec;			/* seconds after the minute [0, 59] */
X  int tm_min;			/* minutes after the hour [0, 59] */
X  int tm_hour;			/* hours since midnight [0, 28] */
X  int tm_mday;			/* day of the month [1, 31] */
X  int tm_mon;			/* months since January [0, 11] */
X  int tm_year;			/* years since 1900 */
X  int tm_wday;			/* days since Sunday [0, 6] */
X  int tm_yday;			/* days since January 1 [0, 365] */
X  int tm_isdst;			/* Daylight Saving Time flag */
X};
X
X/* Declare ANSI or K&R prototypes (except when compiling kernel).*/
X#ifndef _ANSI_H
X#include <ansi.h>
X#endif
X
X#if _USE_ANSI_PROTOTYPES	/* function prototypes required by ANSI C */
Xclock_t clock(void);
Xdouble difftime(time_t __time1, time_t __time0);
Xtime_t mktime(struct tm *__timeptr);
Xtime_t time(time_t *__timeptr);
Xchar *asctime(const struct tm *__timeptr);
Xchar *ctime(const time_t *__timer);
Xstruct tm *gmtime(const time_t *__timer);
Xstruct tm *localtime(const time_t *__timer);
Xsize_t strftime(char *__s, size_t __max, const char *__fmt, 
X						const struct tm *__timep);
X#endif
X
X#if _USE_OLD_PROTOTYPES		/* Kernighan and Ritchie C prototypes */
Xclock_t clock();
Xdouble difftime();
Xtime_t mktime();
Xtime_t time();
Xchar *asctime();
Xchar *ctime();
Xstruct tm *gmtime();
Xstruct tm *localtime();
Xsize_t strftime();
Xtime_t time();
X#endif
X
X#endif /* _TIME_H */
+ END-OF-FILE time.h
chmod 'u=rw,g=r,o=r' 'time.h'
set `wc -c 'time.h'`
count=$1
case $count in
2290)	:;;
*)	echo 'Bad character count in ''time.h' >&2
		echo 'Count should be 2290' >&2
esac
echo Extracting 'times.h'
sed 's/^X//' > 'times.h' << '+ END-OF-FILE ''times.h'
X/* The <times.h> header is for time times() system call. */
X
Xstruct tms {
X  clock_t tms_utime;
X  clock_t tms_stime;
X  clock_t tms_cutime;
X  clock_t tms_cstime;
X};
X
X
X/* Declare ANSI or K&R prototypes (except when compiling kernel).*/
X#ifndef _ANSI_H
X#include <ansi.h>
X#endif
X
X#if _USE_ANSI_PROTOTYPES	/* function prototypes required by ANSI C */
Xclock_t times(struct *tms *__buffer);
X#endif
X
X#if _USE_OLD_PROTOTYPES		/* Kernighan and Ritchie C prototypes */
Xclock_t times();
X#endif
+ END-OF-FILE times.h
chmod 'u=rw,g=r,o=r' 'times.h'
set `wc -c 'times.h'`
count=$1
case $count in
481)	:;;
*)	echo 'Bad character count in ''times.h' >&2
		echo 'Count should be 481' >&2
esac
echo Extracting 'types.h'
sed 's/^X//' > 'types.h' << '+ END-OF-FILE ''types.h'
X/* The <sys/types.h> header contains important data type definitions.
X * It is considered good programming practice to use these definitions, 
X * instead of the underlying base type.  By convention, all type names end 
X * with _t.
X */
X
X#ifndef _TYPES_H
X#define _TYPES_H
X
X#ifndef _SIZE_T
X#define _SIZE_T
Xtypedef unsigned int size_t;	  /* type returned by sizeof */
X#endif
X
Xtypedef unsigned short	dev_t;	  /* holds (major|minor) device pair */
Xtypedef unsigned short	uid_t;	  /* user id */
Xtypedef unsigned char	gid_t;	  /* group id */
Xtypedef unsigned short	ino_t;	  /* i-node number */
Xtypedef unsigned short	mode_t;	  /* mode number within an i-node */
Xtypedef unsigned char	nlink_t;  /* number-of-links field within an i-node */
Xtypedef unsigned long	off_t;	  /* offsets within a file */
Xtypedef unsigned int	pid_t;	  /* type for pids */
X
X/* Not required by POSIX here, but convenient.  In any case, legal. */
X#ifndef _TIME_H
Xtypedef	long clock_t;		/* time in ticks since system boot */
Xtypedef long time_t;		/* time in sec since 1 Jan 1970 0000 GMT */
X#endif
X
X#endif /* _TYPES_H */
+ END-OF-FILE types.h
chmod 'u=rw,g=r,o=r' 'types.h'
set `wc -c 'types.h'`
count=$1
case $count in
1085)	:;;
*)	echo 'Bad character count in ''types.h' >&2
		echo 'Count should be 1085' >&2
esac
echo Extracting 'unistd.h'
sed 's/^X//' > 'unistd.h' << '+ END-OF-FILE ''unistd.h'
X/* The <unistd.h> header contains a few miscellaneous manifest constants. */
X
X/* Values used by access().  POSIX Table 2-6. */
X#define F_OK               0	/* test if file exists */
X#define X_OK               1	/* test if file is executable */
X#define W_OK               2	/* test if file is writable */
X#define R_OK               4	/* test if file is readable */
X
X/* Values used for whence in lseek(fd, offset, whence).  POSIX Table 2-7. */
X#define SEEK_SET           0	/* offset is absolute  */
X#define SEEK_CUR           1	/* offset is relative to current position */
X#define SEEK_END           2	/* offset is relative to end of file */
X
X/* This value is required by POSIX Table 2-8. */
X#define _POSIX_VERSION 198808L	/* which standard is being conformed to */
X
X/* These three definitions are required by POSIX Sec. 8.2.1.2. */
X#define STDIN_FILENO       0	/* file descriptor for stdin */
X#define STDOUT_FILENO      1	/* file descriptor for stdout */
X#define STDERR_FILENO      2	/* file descriptor for stderr */
X
X/* NULL must be defined in <unistd.h> according to POSIX Sec. 2.8.1. */
X#ifndef NULL
X#define NULL      (void *) 0
X#endif
X
X/* POSIX defines several options that may be implemented or not, at the
X * implementer's whim.  This implementer has made the following choices:
X *
X * _POSIX_JOB_CONTROL	    not defined:	no job control
X * _POSIX_SAVED_IDS 	    not defined:	no saved uid/gid
X * _POSIX_NO_TRUNC	    not defined:	long path names are truncated
X * _POSIX_CHOWN_RESTRICTED  defined:		you can't give away files
X * _POSIX_VDISABLE	    defined:		tty functions can be disabled
X */
X#define _POSIX_CHOWN_RESTRICTED
X#define _POSIX_VDISABLE '\t'	/* can't set any control char to tab */
+ END-OF-FILE unistd.h
chmod 'u=rw,g=r,o=r' 'unistd.h'
set `wc -c 'unistd.h'`
count=$1
case $count in
1694)	:;;
*)	echo 'Bad character count in ''unistd.h' >&2
		echo 'Count should be 1694' >&2
esac
echo Extracting 'utime.h'
sed 's/^X//' > 'utime.h' << '+ END-OF-FILE ''utime.h'
X/* The <utime.h> header is used for the utime() system call. */
X
Xstruct utimbuf {
X  time_t actime;		/* access time */
X  time_t modtime;		/* modification time */
X};
X
X
X/* Declare ANSI prototype (except when compiling kernel).*/
X#ifndef _ANSI_H
X#include <ansi.h>
X#endif
X
X#if _USE_ANSI_PROTOTYPES	/* function prototypes required by ANSI C */
Xint utime(char *__path, struct utimbuf *__times);
X#endif
X
+ END-OF-FILE utime.h
chmod 'u=rw,g=r,o=r' 'utime.h'
set `wc -c 'utime.h'`
count=$1
case $count in
396)	:;;
*)	echo 'Bad character count in ''utime.h' >&2
		echo 'Count should be 396' >&2
esac
echo Extracting 'utmp.h'
sed 's/^X//' > 'utmp.h' << '+ END-OF-FILE ''utmp.h'
X/* The <utmp.h> header is used by login(1), init, and who(1)  */
X
X#define WTMP  "/usr/adm/wtmp"
X
Xstruct  utmp
X{
X  char ut_line[8];		/* terminal name */
X  char ut_name[8];		/* user name */
X  long ut_time;			/* login/out time */
X};
+ END-OF-FILE utmp.h
chmod 'u=rw,g=r,o=r' 'utmp.h'
set `wc -c 'utmp.h'`
count=$1
case $count in
230)	:;;
*)	echo 'Bad character count in ''utmp.h' >&2
		echo 'Count should be 230' >&2
esac
echo Extracting 'utsname.h'
sed 's/^X//' > 'utsname.h' << '+ END-OF-FILE ''utsname.h'
X/* The <utsname.h> header provides information about the name of the system. */
X
Xstruct utsname {
X  char *sysname;
X  char *nodenode;
X  char *release;
X  char *version;
X  char *machine;
X} utsname;
X
X
X/* Declare ANSI prototype (except when compiling kernel).*/
X#ifndef _ANSI_H
X#include <ansi.h>
X#endif
X
X#if _USE_ANSI_PROTOTYPES	/* function prototypes required by ANSI C */
Xint uname(struct utsname *__name);
X#endif
+ END-OF-FILE utsname.h
chmod 'u=rw,g=r,o=r' 'utsname.h'
set `wc -c 'utsname.h'`
count=$1
case $count in
411)	:;;
*)	echo 'Bad character count in ''utsname.h' >&2
		echo 'Count should be 411' >&2
esac
echo Extracting 'wait.h'
sed 's/^X//' > 'wait.h' << '+ END-OF-FILE ''wait.h'
X/* The <sys/wait.h> header contains macros related to wait(). */
X
X#define WNOHANG            1	/* do not wait for child to exit */
X#define WUNTRACED          2	/* for job control; not implemented */
X
X#define WIFEXITED(stat_val) 	(stat_val == 0)	/* true for normal exit */
X#define WEXITSTATUS(stat_val)	((stat_val>>8) & 0377)	/* child's status */
X#define WIFSIGNALED(stat_val)	(stat_val & 0177)	/* signal value */
X#define WTERMSIG(stat_val)	(stat_val & 0177)	/* signal value */
X#define WIFSTOPPED(stat_val)	0			/* job control */
X#define WSTOPSIG(stat_val)	0			/* job control */
X
X
X/* Declare ANSI or K&R prototypes (except when compiling kernel).*/
X#ifndef _ANSI_H
X#include <ansi.h>
X#endif
X
X#if _USE_ANSI_PROTOTYPES	/* function prototypes required by ANSI C */
Xpid_t wait(int *__stat_loc);
Xpid_t waitpid(pid_t __pid, int *__stat_loc, int __options);
X#endif
X
X#if _USE_OLD_PROTOTYPES		/* Kernighan and Ritchie C prototypes */
Xpid_t wait();
Xpid_t waitpid();
X#endif
+ END-OF-FILE wait.h
chmod 'u=rw,g=r,o=r' 'wait.h'
set `wc -c 'wait.h'`
count=$1
case $count in
960)	:;;
*)	echo 'Bad character count in ''wait.h' >&2
		echo 'Count should be 960' >&2
esac
exit 0