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 'a.out.h' sed 's/^X//' > 'a.out.h' << '+ END-OF-FILE ''a.out.h' X/* The <a.out> header file describes the format of executable files. */ X Xstruct exec { /* a.out header */ X unsigned char a_magic[2]; /* magic number */ X unsigned char a_flags; /* flags, see below */ X unsigned char a_cpu; /* cpu id */ X unsigned char a_hdrlen; /* length of header */ X unsigned char a_unused; /* reserved for future use */ X unsigned short a_version; /* version stamp */ X /* not used */ X long a_text; /* size of text segement in bytes */ X long a_data; /* size of data segment in bytes */ X long a_bss; /* size of bss segment in bytes */ X long a_no_entry; /* in fact: entry point, a_entry */ X long a_total; /* total memory allocated */ X long a_syms; /* size of symbol table */ X /* SHORT FORM ENDS HERE */ X long a_trsize; /* text relocation size */ X long a_drsize; /* data relocation size */ X long a_tbase; /* text relocation base */ X long a_dbase; /* data relocation base */ X}; X X#define A_MAGIC0 (unsigned char) 0x01 X#define A_MAGIC1 (unsigned char) 0x03 X#define BADMAG(X) ((X).a_magic[0] != A_MAGIC0 ||\ X (X).a_magic[1] != A_MAGIC1) X X/* CPU Id of TARGET machine */ X /* byte order coded in low order two bits */ X#define A_NONE 0x00 /* unknown */ X#define A_I8086 0x04 /* intel i8086/8088 */ X#define A_M68K 0x0B /* motorola m68000 */ X#define A_NS16K 0x0C /* national semiconductor 16032 */ X X#define A_BLR(cputype) ((cputype&0x01)!=0) /* TRUE if bytes left-to-right */ X#define A_WLR(cputype) ((cputype&0x02)!=0) /* TRUE if words left-to-right */ X X/* flags: */ X#define A_EXEC 0x10 /* executable */ X#define A_SEP 0x20 /* separate I/D */ X#define A_PURE 0x40 /* pure text */ /* not used */ X#define A_TOVLY 0x80 /* text overlay */ /* not used */ X X/* offsets of various things: */ X#define A_MINHDR 32 X#define A_TEXTPOS(X) ((long)(X).a_hdrlen) X#define A_DATAPOS(X) (A_TEXTPOS(X) + (X).a_text) X#define A_HASRELS(X) ((X).a_hdrlen > (unsigned char) A_MINHDR) X#define A_HASEXT(X) ((X).a_hdrlen > (unsigned char) (A_MINHDR + 8)) X#define A_HASLNS(X) ((X).a_hdrlen > (unsigned char) (A_MINHDR + 16)) X#define A_HASTOFF(X) ((X).a_hdrlen > (unsigned char) (A_MINHDR + 24)) X#define A_TRELPOS(X) (A_DATAPOS(X) + (X).a_data) X#define A_DRELPOS(X) (A_TRELPOS(X) + (X).a_trsize) X#define A_SYMPOS(X) (A_TRELPOS(X) + (A_HASRELS(X) ? \ X ((X).a_trsize + (X).a_drsize) : 0)) X Xstruct reloc { X long r_vaddr; /* virtual address of reference */ X unsigned short r_symndx; /* internal segnum or extern symbol num */ X unsigned short r_type; /* relocation type */ X}; X X/* r_tyep values: */ X#define R_ABBS 0 X#define R_RELLBYTE 2 X#define R_PCRBYTE 3 X#define R_RELWORD 4 X#define R_PCRWORD 5 X#define R_RELLONG 6 X#define R_PCRLONG 7 X#define R_REL3BYTE 8 X#define R_KBRANCHE 9 X X/* r_symndx for internal segments */ X#define S_ABS ((unsigned short)-1) X#define S_TEXT ((unsigned short)-2) X#define S_DATA ((unsigned short)-3) X#define S_BSS ((unsigned short)-4) X Xstruct nlist { /* symbol table entry */ X char n_name[8]; /* symbol name */ X long n_value; /* value */ X unsigned char n_sclass; /* storage class */ X unsigned char n_numaux; /* number of auxiliary entries */ X /* not used */ X unsigned short n_type; /* language base and derived type */ X /* not used */ X}; X X/* low bits of storage class (section) */ X#define N_SECT 07 /* section mask */ X#define N_UNDF 00 /* undefined */ X#define N_ABS 01 /* absolute */ X#define N_TEXT 02 /* text */ X#define N_DATA 03 /* data */ X#define N_BSS 04 /* bss */ X#define N_COMM 05 /* (common) */ X X/* high bits of storage class */ X#define N_CLASS 0370 /* storage class mask */ X#define C_NULL X#define C_EXT 0020 /* external symbol */ X#define C_STAT 0030 /* static */ X /* there are many others, but they are not supported */ + END-OF-FILE a.out.h chmod 'u=rw,g=r,o=r' 'a.out.h' set `wc -c 'a.out.h'` count=$1 case $count in 3694) :;; *) echo 'Bad character count in ''a.out.h' >&2 echo 'Count should be 3694' >&2 esac echo Extracting 'ansi.h' sed 's/^X//' > 'ansi.h' << '+ END-OF-FILE ''ansi.h' X/* MINIX is copyright 1989 Prentice-Hall, Inc. */ X X/* The <ansi.h> header defines two macros that can be tested to determine X * whether prototypes should be included in the other header files. Three X * cases are relevant: X * X * _USE_ANSI_PROTOTYPES - Use ANSI C prototypes X * _USE_OLD_PROTOTYPES - Use traditional Kernighan & Ritchie style X * (neither) - No prototypes (when compiling the kernel) X * X * Note that K & R prototypes may be omitted for functions returning 'int'. X */ X X/* _ANSI_H defined the first time this file is included. */ X#ifndef _ANSI_H X#define _ANSI_H X#endif X X/* ANSI C requires __STDC__ to be defined as 1 for an ANSI C compiler. X * Some half-ANSI compilers define it as 0. Get around this here. X */ X X#define _USE_ANSI_PROTOTYPES 0 /* 0 means do not use ANSI C prototypes */ X#define _USE_OLD_PROTOTYPES 0 /* 0 means do not use K & R prototypes */ X X#ifndef _KERNEL /* if _KERNEL is defined, leave them 0 */ X X#ifdef __STDC__ /* __STDC__ defined for (near) ANSI compilers*/ X#if __STDC__ == 1 /* __STDC__ == 1 for conformant compilers */ X#undef _USE_ANSI_PROTOTYPES /* get rid of old definition (0) */ X#define _USE_ANSI_PROTOTYPES 1 /* install new definition (1) */ X#endif X#endif X X#endif X X/* When installing this file on your system, you might consider making a X * backup of it, and then removing all the comments from the original to speed X * up compilation, as this file is included a great deal. X */ + END-OF-FILE ansi.h chmod 'u=rw,g=r,o=r' 'ansi.h' set `wc -c 'ansi.h'` count=$1 case $count in 1430) :;; *) echo 'Bad character count in ''ansi.h' >&2 echo 'Count should be 1430' >&2 esac echo Extracting 'ar.h' sed 's/^X//' > 'ar.h' << '+ END-OF-FILE ''ar.h' X/* The <ar.h> header gives the layout of archives. */ X X#define ARMAG 0177545 X Xstruct ar_hdr { X char ar_name[14]; X long ar_date; X char ar_uid; X char ar_gid; X int ar_mode; X long ar_size; X}; + END-OF-FILE ar.h chmod 'u=rw,g=r,o=r' 'ar.h' set `wc -c 'ar.h'` count=$1 case $count in 188) :;; *) echo 'Bad character count in ''ar.h' >&2 echo 'Count should be 188' >&2 esac echo Extracting 'assert.h' sed 's/^X//' > 'assert.h' << '+ END-OF-FILE ''assert.h' X/* The <assert.h> header contains a macro called "assert" that allows X * programmers to put assertions in the code. These assertions can be verified X * at run time. If an assertion fails, an error message is printed. X * Assertion checking can be disabled by adding the statement X * X * #define NDEBUG X * X * to the program before the X * X * #include <assert.h> X * X * statement. X */ X X#ifdef assert X#undef assert /* make this file idempotent */ X#endif X X#ifdef NDEBUG X/* Debugging disabled -- do not evaluate assertions. */ X#define assert(expr) ((void) 0) X#else X/* Debugging enabled -- verify assertions at run time. */ X#define assert(expr) if(!(expr)) __assert(__FILE__, __LINE__) X#endif + END-OF-FILE assert.h chmod 'u=rw,g=r,o=r' 'assert.h' set `wc -c 'assert.h'` count=$1 case $count in 694) :;; *) echo 'Bad character count in ''assert.h' >&2 echo 'Count should be 694' >&2 esac echo Extracting 'ctype.h' sed 's/^X//' > 'ctype.h' << '+ END-OF-FILE ''ctype.h' X/* The <ctype.h> header file defines some macros used to identify characters. X * It works by using a table stored in ctype.c. When a character is presented X * to one of these macros, the character is used as an index into the table X * (_ctype_) to retrieve a byte. The relevant bit is then extracted. X */ X X#ifndef _CTYPE_H X#define _CTYPE_H X Xextern char __ctype[]; /* located in ctype.c */ X X#define _U 0001 /* this bit is for upper-case letters [A-Z] */ X#define _L 0002 /* this bit is for lower-case letters [a-z] */ X#define _N 0004 /* this bit is for numbers [0-9] */ X#define _S 0010 /* this bit is for white space \t \n \f etc */ X#define _P 0020 /* this bit is for punctuation characters */ X#define _C 0040 /* this bit is for control characters */ X#define _X 0100 /* this bit is for hex digits [a-f] and [A-F]*/ X#define _SP 0200 /* this bit is for the space character only */ X X/* Declare ANSI 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 isalpha(int __c); /* alphanumeric */ Xint isdigit(int __c); /* digit [0-9] */ Xint islower(int __c); /* lower-case letter [a-z] */ Xint isspace(int __c); /* white space sp, \f, \n, \r, \t, \v */ Xint isupper(int __c); /* upper-case letter [A-Z] */ Xint isxdigit(int __c); /* hex digit [0-9], [a-f], [A-F] */ Xint isalnum(int __c); /* alphanumeric [a-z], [A-Z], [0-9] */ Xint iscntrl(int __c); /* control characters */ Xint isgraph(int __c); /* graphic character */ Xint isprint(int __c); /* printable character */ Xint ispunct(int __c); /* punctuation mark */ Xint tolower(int __c); /* convert upper case to lower case */ Xint toupper(int __c); /* convert lower case to upper case */ X#endif X X/* K&R prototypes are not needed for functions returning an 'int'. */ X X/* Macros for idenitifying character classes. */ X#define isalpha(c) ((__ctype+1)[c]&(_U|_L)) X#define isdigit(c) ((__ctype+1)[c]&_N) X#define islower(c) ((__ctype+1)[c]&_L) X#define isspace(c) ((__ctype+1)[c]&_S) X#define isupper(c) ((__ctype+1)[c]&_U) X#define isxdigit(c) ((__ctype+1)[c]&(_N|_X)) X#define isalnum(c) ((__ctype+1)[c]&(_U|_L|_N)) X#define iscntrl(c) ((__ctype+1)[c]&_C) X#define isgraph(c) ((__ctype+1)[c]&(_P|_U|_L|_N)) X#define isprint(c) ((__ctype+1)[c]&(_SP|_P|_U|_L|_N)) X#define ispunct(c) ((__ctype+1)[c]&_P) X#define toupper(c) (islower(c) ? (c & 0xDF) : c) X#define tolower(c) (isupper(c) ? (c | 0x20) : c) X X#endif /* _CTYPE_H */ + END-OF-FILE ctype.h chmod 'u=rw,g=r,o=r' 'ctype.h' set `wc -c 'ctype.h'` count=$1 case $count in 2485) :;; *) echo 'Bad character count in ''ctype.h' >&2 echo 'Count should be 2485' >&2 esac echo Extracting 'dirent.h' sed 's/^X//' > 'dirent.h' << '+ END-OF-FILE ''dirent.h' X/* The <dirent.h> header file is for POSIX. It is used by the opendir(), X * readdir(), writedir(), and related procedure calls. This header requires X * <sys/types.h>. X */ X X/* DIRBUF must in general be larger than the filesystem buffer size. */ X#define _DIRBUF 2048 /* buffer size for fs-indep. dirs */ X#define _DIR_MAGIC 19997 /* arbitrary number for marking DIRs */ X X/* The DIR structure is used for all the directory operations. */ Xtypedef struct { X int dd_fd; /* file descriptor */ X int dd_loc; /* offset in block */ X int dd_size; /* amount of valid data */ X int dd_magic; /* magic number to recognize DIRs */ X char *dd_buf; /* -> directory block */ X} DIR; /* stream data from opendir() */ X X Xstruct dirent { /* data from getdents()/readdir() */ X long d_ino; /* inode number of entry */ X off_t d_off; /* offset of disk directory entry */ X unsigned short d_reclen; /* length of this record */ X char d_name[1]; /* name of file */ /* non-POSIX */ 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 */ XDIR *opendir(char *__dirname); Xstruct dirent *readdir(DIR *__dirp); Xvoid rewinddir(DIR *__dirp); Xint closedir(DIR *__dirp); X#endif X X#if _USE_OLD_PROTOTYPES /* Kernighan and Ritchie C declarations. */ XDIR *opendir(); Xstruct dirent *readdir(); Xvoid rewinddir(); X#endif + END-OF-FILE dirent.h chmod 'u=rw,g=r,o=r' 'dirent.h' set `wc -c 'dirent.h'` count=$1 case $count in 1430) :;; *) echo 'Bad character count in ''dirent.h' >&2 echo 'Count should be 1430' >&2 esac echo Extracting 'errno.h' sed 's/^X//' > 'errno.h' << '+ END-OF-FILE ''errno.h' X/* The <errno.h> header defines the numbers of the various errors that can X * occur during program execution. They are visible to user programs and X * should be small positive integers. However, they are also used within X * MINIX, where they must be negative. For example, the READ system call is X * executed internally by calling do_read(). This function returns either a X * (negative) error number or a (positive) number of bytes actually read. X * X * To solve the problem of having the error numbers be negative inside the X * the system and positive outside, the following mechanism is used. All the X * definitions are are the form: X * X * #define EPERM (_SIGN 1) X * X * If the macro _KERNEL is defined, then _SIGNis set to "-", otherwise it is X * set to "". Thus when compiling the operating system, the macro _KERNEL X * will be defined, setting EPERM to (- 1), whereas when when this X * file is included in an ordinary user program, EPERM has the value ( 1). X */ X X#ifndef _ERROR_H /* check if <errno.h> is already included */ X#define _ERROR_H /* it is not included; note that fact */ X X#define errno _errno /* error numbers are stored here */ X X/* Now define _SIGN as "" or "-" depending on _KERNEL. */ X#ifdef _KERNEL X# define _SIGN - X# define OK 0 /* OK means no error */ X#else X# define _SIGN X#endif X X/* Here are the numerical values of the error numbers. */ X#define _NERROR 39 /* number of errors */ X X#define ERROR (_SIGN 1) /* generic error */ X#define EPERM (_SIGN 1) /* operation not permitted */ X#define ENOENT (_SIGN 2) /* no such file or directory */ X#define ESRCH (_SIGN 3) /* no such process */ X#define EINTR (_SIGN 4) /* interrupted function call */ X#define EIO (_SIGN 5) /* input/output error */ X#define ENXIO (_SIGN 6) /* no such device or address */ X#define E2BIG (_SIGN 7) /* arg list too long */ X#define ENOEXEC (_SIGN 8) /* exec format error */ X#define EBADF (_SIGN 9) /* bad file descriptor */ X#define ECHILD (_SIGN 10) /* no child process */ X#define EAGAIN (_SIGN 11) /* resource temporarily unavailable */ X#define ENOMEM (_SIGN 12) /* not enough space */ X#define EACCES (_SIGN 13) /* permission denied */ X#define EFAULT (_SIGN 14) /* bad address */ X#define ENOTBLK (_SIGN 15) /* Extension: not a block special file */ X#define EBUSY (_SIGN 16) /* resource busy */ X#define EEXIST (_SIGN 17) /* file exists */ X#define EXDEV (_SIGN 18) /* improper link */ X#define ENODEV (_SIGN 19) /* no such device */ X#define ENOTDIR (_SIGN 20) /* not a directory */ X#define EISDIR (_SIGN 21) /* is a directory */ X#define EINVAL (_SIGN 22) /* invalid argument */ X#define ENFILE (_SIGN 23) /* too many open files in system */ X#define EMFILE (_SIGN 24) /* too many open files */ X#define ENOTTY (_SIGN 25) /* inappropriate I/O control operation */ X /* ETXTBSY was 26, is no longer used */ X#define EFBIG (_SIGN 27) /* file too large */ X#define ENOSPC (_SIGN 28) /* no space left on device */ X#define ESPIPE (_SIGN 29) /* invalid seek */ X#define EROFS (_SIGN 30) /* read-only file system */ X#define EMLINK (_SIGN 31) /* too many links */ X#define EPIPE (_SIGN 32) /* broken pipe */ X#define EDOM (_SIGN 33) /* domain error (from ANSI C standard) */ X#define ERANGE (_SIGN 34) /* result too large (from ANSI C standard) */ X#define EDEADLK (_SIGN 35) /* resource deadlock avoided */ X#define ENAMETOOLONG (_SIGN 36) /* file name too long */ X#define ENOLCK (_SIGN 37) /* no locks available */ X#define ENOSYS (_SIGN 38) /* function not implemented */ X#define ENOTEMPTY (_SIGN 39) /* directory not empty */ X X/* The following are not POSIX errors, but they can still happen. */ X#define ELOCKED (_SIGN 101) /* can't send message */ X#define EBADCALL (_SIGN 102) /* error on send/receive */ X#define ELONGSTRING (_SIGN 103) /* string too long */ X#define EOF (_SIGN 104) /* End Of File - used by drivers */ X X/* The following error codes are generated by the kernel itself. */ X#ifdef _KERNEL X#define E_BAD_DEST -1 /* destination address illegal */ X#define E_BAD_SRC -2 /* source address illegal */ X#define E_TRY_AGAIN -3 /* can't send-- tables full */ X#define E_OVERRUN -4 /* interrupt for task that is not waiting */ X#define E_BAD_BUF -5 /* message buf outside caller's addr space */ X#define E_TASK -6 /* can't send to task */ X#define E_NO_MESSAGE -7 /* RECEIVE failed: no message present */ X#define E_NO_PERM -8 /* ordinary users can't send to tasks */ X#define E_BAD_FCN -9 /* only valid fcns are SEND, RECEIVE, BOTH */ X#define E_BAD_ADDR -10 /* bad address given to utility routine */ X#define E_BAD_PROC -11 /* bad proc number given to utility */ X#endif /* _KERNEL */ X X#endif /* _ERROR_H */ + END-OF-FILE errno.h chmod 'u=rw,g=r,o=r' 'errno.h' set `wc -c 'errno.h'` count=$1 case $count in 5088) :;; *) echo 'Bad character count in ''errno.h' >&2 echo 'Count should be 5088' >&2 esac echo Extracting 'fcntl.h' sed 's/^X//' > 'fcntl.h' << '+ END-OF-FILE ''fcntl.h' X/* The <fcntl.h> header is needed by the open() and fcntl() system calls, X * which have a variety of parameters and flags. They are described here. X * The formats of the calls to each of these are: X * X * open(path, oflag [mode]) open a file X * fcntl(fd, cmd,[ arg]) get or set file attributes X * X */ X X/* These values are used for cmd in fcntl(). POSIX Table 6-1. */ X#define F_DUPFD 0 /* duplicate file descriptor */ X#define F_GETFD 1 /* get file descriptor flags */ X#define F_SETFD 2 /* set file descriptor flags */ X#define F_GETFL 3 /* get file status flags */ X#define F_SETFL 4 /* set file status flags */ X#define F_GETLK 5 /* get record locking information */ X#define F_SETLK 6 /* set record locking information */ X#define F_SETLKW 7 /* set record locking info; wait if blocked */ X X/* File descriptor flags used for fcntl(). POSIX Table 6-2. */ X#define FD_CLOEXEC 1 /* close on exec flag for third arg of fcntl */ X X/* L_type values for record locking with fcntl(). POSIX Table 6-3. */ X#define F_RDLCK 0 /* shared or read lock */ X#define F_WRLCK 1 /* exclusive or write lock */ X#define F_UNLCK 2 /* unlock */ X X/* Oflag values for open(). POSIX Table 6-4. */ X#define O_CREAT 00100 /* creat file if it doesn't exist */ X#define O_EXCL 00200 /* exclusive use flag */ X#define O_NOCTTY 00400 /* do not assign a controlling terminal */ X#define O_TRUNC 01000 /* truncate flag */ X X/* File status flags for open() and fcntl(). POSIX Table 6-5. */ X#define O_APPEND 02000 /* set append mode */ X#define O_NONBLOCK 04000 /* no delay */ X X/* File access modes for open() and fcntl(). POSIX Table 6-6. */ X#define O_RDONLY 0 /* open(name, O_RDONLY) opens read only */ X#define O_WRONLY 1 /* open(name, O_WRONLY) opens write only */ X#define O_RDWR 2 /* open(name, O_RDWR) opens read/write */ X X/* Mask for use with file access modes. POSIX Table 6-7. */ X#define O_ACCMODE 03 /* mask for file access modes */ X X X/* Declare ANSI 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 open(char *__path, int __oflag, int __mode); Xint creat(char *__path, int __mode); Xint fcntl(int __filedes, int __cmd, int __arg); X#endif X X/* K&R prototypes are not needed for functions returning an 'int'. */ + END-OF-FILE fcntl.h chmod 'u=rw,g=r,o=r' 'fcntl.h' set `wc -c 'fcntl.h'` count=$1 case $count in 2496) :;; *) echo 'Bad character count in ''fcntl.h' >&2 echo 'Count should be 2496' >&2 esac echo Extracting 'float.h' sed 's/^X//' > 'float.h' << '+ END-OF-FILE ''float.h' X/* The <float.h> header defines some implementation limits for (IEEE) floating X * point. Application programs can use it to find out how big and small X * floating-point numbers can be, what epsilon to use for iteration, etc. X */ X X#ifndef _FLOAT_H X#define _FLOAT_H X X#define FLT_DIG 6 X#define FLT_EPSILON 1.19209290e-07 X#define FLT_MANT_DIG 24 X#define FLT_MAX 3.40282347e+38F X#define FLT_MAX_10_EXP 38 X#define FLT_MAX_EXP 128 X#define FLT_MIN 1.17549435e-38F X#define FLT_MIN_10_EXP -37 X#define FLT_MIN_EXP -125 X X#define DBL_DIG 15 X#define DBL_EPSILON 2.2204460492503131e-16 X#define DBL_MANT_DIG 53 X#define DBL_MAX 1.7976931348623157e+308 X#define DBL_MAX_10_EXP 308 X#define DBL_MAX_EXP 1024 X#define DBL_MIN 2.2250738585072014e-308 X#define DBL_MIN_10_EXP -307 X#define DBL_MIN_EXP -1021 X X#define LDBL_DIG 15 X#define LDBL_EPSILON 2.2204460492503131e-16L X#define LDBL_MANT_DIG 53 X#define LDBL_MAX 1.7976931348623157e+308L X#define LDBL_MAX_10_EXP 308 X#define LDBL_MAX_EXP 1024 X#define LDBL_MIN 2.2250738585072014e-308L X#define LDBL_MIN_10_EXP -307 X#define LDBL_MIN_EXP -1021 X X#define FLT_ROUNDS 1 X#define FLT_RADIX 2 X X#endif /* _FLOAT_H */ + END-OF-FILE float.h chmod 'u=rw,g=r,o=r' 'float.h' set `wc -c 'float.h'` count=$1 case $count in 1167) :;; *) echo 'Bad character count in ''float.h' >&2 echo 'Count should be 1167' >&2 esac echo Extracting 'grp.h' sed 's/^X//' > 'grp.h' << '+ END-OF-FILE ''grp.h' X/* The <grp.h> header is used for the getgrid() and getgrname() calls. */ X Xstruct group { X char *gr_name; /* the name of the group */ X gid_t gr_gid; /* the numerical group ID */ X char **gr_mem; /* a vector of pointers to the members */ 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 group *getgrgid(gid_t __gid); Xstruct group *getgrname(char *__name); X#endif X X#if _USE_OLD_PROTOTYPES /* Kernighan and Ritchie C prototypes */ Xstruct group *getgrgid(); Xstruct group *getgrname(); X#endif + END-OF-FILE grp.h chmod 'u=rw,g=r,o=r' 'grp.h' set `wc -c 'grp.h'` count=$1 case $count in 639) :;; *) echo 'Bad character count in ''grp.h' >&2 echo 'Count should be 639' >&2 esac echo Extracting 'limits.h' sed 's/^X//' > 'limits.h' << '+ END-OF-FILE ''limits.h' X/* The <limits.h> header defines some basic sizes, both of the language types X * (e.g., the number of bits in an integer), and of the operating system (e.g. X * the number of characters in a file name. X */ X X#ifndef _LIMITS_H X#define _LIMITS_H X X/* Definitions about chars (8 bits in MINIX, and signed). */ X#define CHAR_BIT 8 /* number of bits in a char */ X#define CHAR_MIN -128 /* minimum value of a char */ X#define CHAR_MAX 127 /* maximum value of a char */ X#define SCHAR_MIN -128 /* minimum value of a signed char */ X#define SCHAR_MAX 127 /* maximum value of a signed char */ X#define UCHAR_MAX 255 /* maximum value of an unsigned char */ X#define MB_LEN_MAX 1 /* maximum length of a multibyte char */ X X/* Definitions about shorts (16 bits in MINIX). */ X#define SHRT_MIN -32768 /* minimum value of a short */ X#define SHRT_MAX 32767 /* maximum value of a short */ X#define USHRT_MAX 65535 /* maximum value of unsigned short */ X X/* Definitions about ints (16 bits in MINIX for 8088, 80286, Atari etc) */ X#if _INT_SIZE == 16 X#define INT_MIN -32768 /* minimum value of an int */ X#define INT_MAX 32767 /* maximum value of an int */ X#define UINT_MAX 65535 /* maximum value of an unsigned int */ X#endif X X/* Definitions about ints (may be 32 bits some day). */ X#if _INT_SIZE == 32 X#define INT_MIN -2147483648 /* minimum value of a long */ X#define INT_MAX 2147483647 /* maximum value of a long */ X#define UINT_MAX 4294967295 /* maximum value of an unsigned long */ X#endif X X/*Definitions about longs (32 bits in MINIX). */ X#define LONG_MIN -2147483648 /* minimum value of a long */ X#define LONG_MAX 2147483647 /* maximum value of a long */ X#define ULONG_MAX 4294967295 /* maximum value of an unsigned long */ X X/* Minimum sizes required by the POSIX P1003.1 standard (Table 2-2). */ X#ifdef _POSIX_SOURCE /* these are only visible for POSIX */ X#define _POSIX_ARG_MAX 4096 /* exec() may have 4K worth of args */ X#define _POSIX_CHILD_MAX 6 /* a process may have 6 children */ X#define _POSIX_LINK_MAX 8 /* a file may have 8 links */ X#define _POSIX_MAX_CANON 255 /* size of the canonical input queue */ X#define _POSIX_MAX_INPUT 255 /* you can type 255 chars ahead */ X#define _POSIX_NAME_MAX 14 /* a file name may have 14 chars */ X#define _POSIX_NGROUPS_MAX 0 /* supplementary group IDs are optional */ X#define _POSIX_OPEN_MAX 16 /* a process may have 16 files open */ X#define _POSIX_PATH_MAX 255 /* a pathname may contain 255 chars */ X#define _POSIX_PIPE_BUF 512 /* pipes writes of 512 bytes are atomic */ X X/* Values actually implemented by MINIX (Tables 2-3, 2-4, and 2-5). */ X#define _NO_LIMIT 100 /* arbitrary number; limit not enforced */ X X#define NGROUPS_MAX 0 /* supplemental group IDs not available */ X#define ARG_MAX 4096 /* # bytes of args + environ for exec() */ X#define CHILD_MAX _NO_LIMIT /* MINIX does not limit children */ X#define OPEN_MAX 20 /* # open files a process may have */ X#define LINK_MAX 127 /* # links a file may have */ X#define MAX_CANON 255 /* size of the canonical input queue */ X#define MAX_INPUT 255 /* size of the type-ahead buffer */ X#define NAME_MAX 14 /* # chars in a file name */ X#define PATH_MAX 255 /* # chars in a path name */ X#define PIPE_BUF 512 /* # bytes in atomic write to a pipe */ X X#endif /* _POSIX_SOURCE */ X X#endif /* _LIMITS_H */ + END-OF-FILE limits.h chmod 'u=rw,g=r,o=r' 'limits.h' set `wc -c 'limits.h'` count=$1 case $count in 3471) :;; *) echo 'Bad character count in ''limits.h' >&2 echo 'Count should be 3471' >&2 esac echo Extracting 'locale.h' sed 's/^X//' > 'locale.h' << '+ END-OF-FILE ''locale.h' X/* The <locale.h> header is used to custom tailor currency symbols, decimal X * points, and other items to the local style. It is ANSI's attempt at X * avoiding cultural imperialism. The locale given below is for C. X */ X X#ifndef _LOCALE_H X#define _LOCALE_H X Xstruct lconv { X char *decimal_point; /* "." */ X char *thousands_sep; /* "" */ X char *grouping; /* "" */ X char *int_curr_symbol; /* "" */ X char *currency_symbol; /* "" */ X char *mon_decimal_point; /* "" */ X char *mon_thousands_sep; /* "" */ X char *mon_grouping; /* "" */ X char *positive_sign; /* "" */ X char *negative_sign; /* "" */ X char int_frac_digits; /* CHAR_MAX */ X char frac_digits; /* CHAR_MAX */ X char p_cs_precedes; /* CHAR_MAX */ X char p_sep_by_space; /* CHAR_MAX */ X char n_cs_precedes; /* CHAR_MAX */ X char n_sep_by_space; /* CHAR_MAX */ X char p_sign_posn; /* CHAR_MAX */ X char n_sign_posn; /* CHAR_MAX */ X}; X X#ifndef NULL X#define NULL (void *) 0 X#endif X X#define LC_ALL 1 X#define LC_COLLATE 2 X#define LC_CTYPE 3 X#define LC_MONETARY 4 X#define LC_NUMERIC 5 X#define LC_TIME 6 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 */ Xchar *setlocale(int __category, const char *__locale); Xstruct lconv *localeconv(void); X#endif X X#if _USE_OLD_PROTOTYPES /* Kernighan and Ritchie C prototypes */ Xchar *setlocale(); Xstruct lconv *localeconv(); X#endif X X#endif /* _LOCALE_H */ + END-OF-FILE locale.h chmod 'u=rw,g=r,o=r' 'locale.h' set `wc -c 'locale.h'` count=$1 case $count in 1567) :;; *) echo 'Bad character count in ''locale.h' >&2 echo 'Count should be 1567' >&2 esac echo Extracting 'math.h' sed 's/^X//' > 'math.h' << '+ END-OF-FILE ''math.h' X/* The <math.h> header contains prototypes for mathematical functions. */ X X#ifndef _MATH_H X#define _MATH_H X X#define HUGE_VAL 9.9e+999 /* though it will generate a warning */ 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 acos(double __x); Xdouble asin(double __x); Xdouble atan(double __x); Xdouble atan2(double __y, double __x); Xdouble cos(double __x); Xdouble sin(double __x); Xdouble tan(double __x); Xdouble cosh(double __x); Xdouble sinh(double __x); Xdouble tanh(double __x); Xdouble exp(double __x); Xdouble log(double __x); Xdouble log10(double __x); Xdouble sqrt(double __x); Xdouble ceil(double __x); Xdouble fabs(double __x); Xdouble floor(double __x); Xdouble pow(double __x, double __y); Xdouble frexp(double __x, int *__exp); Xdouble ldexp(double __x, int __exp); Xdouble modf(double __x, double *__iptr); Xdouble fmod(double __x, double __y); X#endif X X#if _USE_OLD_PROTOTYPES /* Kernighan and Ritchie C prototypes */ Xdouble acos(); Xdouble asin(); Xdouble atan(); Xdouble atan2(); Xdouble cos(); Xdouble sin(); Xdouble tan(); Xdouble cosh(); Xdouble sinh(); Xdouble tanh(); Xdouble exp(); Xdouble log(); Xdouble log10(); Xdouble sqrt(); Xdouble ceil(); Xdouble fabs(); Xdouble floor(); Xdouble pow(); Xdouble frexp(); Xdouble ldexp(); Xdouble modf(); Xdouble fmod(); X#endif X X#endif /* _MATH_H */ + END-OF-FILE math.h chmod 'u=rw,g=r,o=r' 'math.h' set `wc -c 'math.h'` count=$1 case $count in 1411) :;; *) echo 'Bad character count in ''math.h' >&2 echo 'Count should be 1411' >&2 esac exit 0
n62@nikhefh.nikhef.nl (Klamer Schutte) (10/27/89)
In article <3820@ast.cs.vu.nl> ast@cs.vu.nl (Andy Tanenbaum) writes: >: 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 ^^^^^^^^ Never knew i had to place any programs in /usr/ucb in minix! Please, anybody, tell which programs! :-) Klamer. -- _____________________Yes, mail address changed again :-(________________________ Klamer Schutte mcvax!nikhefh!{n62,Schutte} {Schutte,n62}@nikhef.nl