Initial revision
This commit is contained in:
		
							parent
							
								
									13bc7e128d
								
							
						
					
					
						commit
						d818da36f0
					
				
					 39 changed files with 1780 additions and 0 deletions
				
			
		
							
								
								
									
										23
									
								
								lang/cem/libcc.ansi/headers/assert.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								lang/cem/libcc.ansi/headers/assert.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,23 @@
 | 
			
		|||
/*
 | 
			
		||||
 * assert.h - diagnostics
 | 
			
		||||
 *
 | 
			
		||||
 * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
 | 
			
		||||
 * See the copyright notice in the ACK home directory, in the file "Copyright".
 | 
			
		||||
 */
 | 
			
		||||
/* $Header$ */
 | 
			
		||||
 | 
			
		||||
void _bad_assertion(const char *expr, const char *file, int line);
 | 
			
		||||
 | 
			
		||||
#undef	assert
 | 
			
		||||
 | 
			
		||||
#ifdef	NDEBUG
 | 
			
		||||
#define	assert(ignore)	((void)0)
 | 
			
		||||
#else
 | 
			
		||||
#define assert(expr)							\
 | 
			
		||||
	{								\
 | 
			
		||||
		if (!(expr)) {						\
 | 
			
		||||
			_bad_assertion( #expr, __FILE__, __LINE);	\
 | 
			
		||||
			abort();					\
 | 
			
		||||
		}							\
 | 
			
		||||
	}
 | 
			
		||||
#endif	/* NDEBUG */
 | 
			
		||||
							
								
								
									
										30
									
								
								lang/cem/libcc.ansi/headers/ctype.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								lang/cem/libcc.ansi/headers/ctype.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,30 @@
 | 
			
		|||
/*
 | 
			
		||||
 * ctype.h - character handling
 | 
			
		||||
 */
 | 
			
		||||
/* $Header$ */
 | 
			
		||||
 | 
			
		||||
#ifndef	_CTYPE_HEADER_
 | 
			
		||||
#define	_CTYPE_HEADER_
 | 
			
		||||
 | 
			
		||||
int	isalnum(int c);		/* alpha numeric character */
 | 
			
		||||
int	isalpha(int c);		/* alpha character */
 | 
			
		||||
int 	iscntrl(int c);		/* control character */
 | 
			
		||||
int	isdigit(int c);		/* digit character */
 | 
			
		||||
int 	isgraph(int c);		/* graphical character */
 | 
			
		||||
int	islower(int c);		/* lower case character */
 | 
			
		||||
int	isprint(int c);		/* printable character */
 | 
			
		||||
int	ispunct(int c);		/* punctuaction character */
 | 
			
		||||
int	isspace(int c);		/* space character */
 | 
			
		||||
int	isupper(int c);		/* upper case character */
 | 
			
		||||
int	isxdigit(int c);	/* hexdecimal digit character */
 | 
			
		||||
 | 
			
		||||
int	tolower(int c);		/* convert to lower case character */
 | 
			
		||||
int	toupper(int c);		/* convert to upper case character */
 | 
			
		||||
 | 
			
		||||
#define	isdigit(c)	((unsigned)((c)-'0') < 10)
 | 
			
		||||
#define	islower(c)	((unsigned)((c)-'a') < 26)
 | 
			
		||||
#define	isupper(c)	((unsigned)((c)-'A') < 26)
 | 
			
		||||
#define	isprint(c)	((unsigned)((c)-' ') < 95)
 | 
			
		||||
#define	isascii(c)	((unsigned)(c) < 128)
 | 
			
		||||
 | 
			
		||||
#endif	/* _CTYPE_HEADER_ */
 | 
			
		||||
							
								
								
									
										135
									
								
								lang/cem/libcc.ansi/headers/errno.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										135
									
								
								lang/cem/libcc.ansi/headers/errno.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,135 @@
 | 
			
		|||
/*
 | 
			
		||||
 * errno.h - errors
 | 
			
		||||
 */
 | 
			
		||||
/* $Header$ */
 | 
			
		||||
 | 
			
		||||
#ifndef	_ERRNO_HEADER_
 | 
			
		||||
#define	_ERRNO_HEADER_
 | 
			
		||||
 | 
			
		||||
#define	EPERM		1	/* Not owner */
 | 
			
		||||
#define	ENOENT		2	/* No such file or directory */
 | 
			
		||||
#define	ESRCH		3	/* No such process */
 | 
			
		||||
#define	EINTR		4	/* Interrupted system call */
 | 
			
		||||
#define	EIO		5	/* I/O error */
 | 
			
		||||
#define	ENXIO		6	/* No such device or address */
 | 
			
		||||
#define	E2BIG		7	/* Arg list too long */
 | 
			
		||||
#define	ENOEXEC		8	/* Exec format error */
 | 
			
		||||
#define	EBADF		9	/* Bad file number */
 | 
			
		||||
#define	ECHILD		10	/* No children */
 | 
			
		||||
#define	EAGAIN		11	/* No more processes */
 | 
			
		||||
#define	ENOMEM		12	/* Not enough core */
 | 
			
		||||
#define	EACCES		13	/* Permission denied */
 | 
			
		||||
#define	EFAULT		14	/* Bad address */
 | 
			
		||||
#define	ENOTBLK		15	/* Block device required */
 | 
			
		||||
#define	EBUSY		16	/* Mount device busy */
 | 
			
		||||
#define	EEXIST		17	/* File exists */
 | 
			
		||||
#define	EXDEV		18	/* Cross-device link */
 | 
			
		||||
#define	ENODEV		19	/* No such device */
 | 
			
		||||
#define	ENOTDIR		20	/* Not a directory*/
 | 
			
		||||
#define	EISDIR		21	/* Is a directory */
 | 
			
		||||
#define	EINVAL		22	/* Invalid argument */
 | 
			
		||||
#define	ENFILE		23	/* File table overflow */
 | 
			
		||||
#define	EMFILE		24	/* Too many open files */
 | 
			
		||||
#define	ENOTTY		25	/* Not a typewriter */
 | 
			
		||||
#define	ETXTBSY		26	/* Text file busy */
 | 
			
		||||
#define	EFBIG		27	/* File too large */
 | 
			
		||||
#define	ENOSPC		28	/* No space left on device */
 | 
			
		||||
#define	ESPIPE		29	/* Illegal seek */
 | 
			
		||||
#define	EROFS		30	/* Read-only file system */
 | 
			
		||||
#define	EMLINK		31	/* Too many links */
 | 
			
		||||
#define	EPIPE		32	/* Broken pipe */
 | 
			
		||||
 | 
			
		||||
/* The standard requires the next two definitions */
 | 
			
		||||
#define	EDOM		33	/* math arg out of domain of func */
 | 
			
		||||
#define	ERANGE		34	/* math result not representable */
 | 
			
		||||
 | 
			
		||||
#ifdef	__USG
 | 
			
		||||
/* Only ENOMSG, EIDRM and EDEADLK are documented */
 | 
			
		||||
#define	ENOMSG		35	/* No message of desired type */
 | 
			
		||||
#define	EIDRM		36	/* Identifier Removed */
 | 
			
		||||
#define	ECHRNG		37	/* Channel number out of range */
 | 
			
		||||
#define	EL2NSYNC	38	/* Level 2 not synchronized */
 | 
			
		||||
#define	EL3HLT		39	/* Level 3 halted */
 | 
			
		||||
#define	EL3RST		40	/* Level 3 reset */
 | 
			
		||||
#define	ELNRNG		41	/* Link number out of range */
 | 
			
		||||
#define	EUNATCH		42	/* Protocol driver not attached */
 | 
			
		||||
#define	ENOCSI		43	/* No CSI structure available */
 | 
			
		||||
#define	EL2HLT		44	/* Level 2 halted */
 | 
			
		||||
#define	EDEADLK		45	/* DeadLock */
 | 
			
		||||
#endif	/* __USG */
 | 
			
		||||
 | 
			
		||||
#ifdef	__BDS4_2
 | 
			
		||||
/* non-blocking and interrupt i/o */
 | 
			
		||||
#define	EWOULDBLOCK	35	/* Operation would block */
 | 
			
		||||
#define	EINPROGRESS	36	/* Operation now in progress */
 | 
			
		||||
#define	EALREADY	37	/* Operation already in progress */
 | 
			
		||||
/* ipc/network software */
 | 
			
		||||
 | 
			
		||||
	/* argument errors */
 | 
			
		||||
#define	ENOTSOCK	38	/* Socket operation on non-socket */
 | 
			
		||||
#define	EDESTADDRREQ	39	/* Destination address required */
 | 
			
		||||
#define	EMSGSIZE	40	/* Message too long */
 | 
			
		||||
#define	EPROTOTYPE	41	/* Protocol wrong type for socket */
 | 
			
		||||
#define	ENOPROTOOPT	42	/* Protocol not available */
 | 
			
		||||
#define	EPROTONOSUPPORT	43	/* Protocol not supported */
 | 
			
		||||
#define	ESOCKTNOSUPPORT	44	/* Socket type not supported */
 | 
			
		||||
#define	EOPNOTSUPP	45	/* Operation not supported on socket */
 | 
			
		||||
#define	EPFNOSUPPORT	46	/* Protocol family not supported */
 | 
			
		||||
#define	EAFNOSUPPORT	47	/* Address family not supported by protocol family */
 | 
			
		||||
#define	EADDRINUSE	48	/* Address already in use */
 | 
			
		||||
#define	EADDRNOTAVAIL	49	/* Can't assign requested address */
 | 
			
		||||
 | 
			
		||||
	/* operational errors */
 | 
			
		||||
#define	ENETDOWN	50	/* Network is down */
 | 
			
		||||
#define	ENETUNREACH	51	/* Network is unreachable */
 | 
			
		||||
#define	ENETRESET	52	/* Network dropped connection on reset */
 | 
			
		||||
#define	ECONNABORTED	53	/* Software caused connection abort */
 | 
			
		||||
#define	ECONNRESET	54	/* Connection reset by peer */
 | 
			
		||||
#define	ENOBUFS		55	/* No buffer space available */
 | 
			
		||||
#define	EISCONN		56	/* Socket is already connected */
 | 
			
		||||
#define	ENOTCONN	57	/* Socket is not connected */
 | 
			
		||||
#define	ESHUTDOWN	58	/* Can't send after socket shutdown */
 | 
			
		||||
/* ETOOMANYREFS is not documented */
 | 
			
		||||
#define	ETOOMANYREFS	59	/* Too many references: can't splice */
 | 
			
		||||
#define	ETIMEDOUT	60	/* Connection timed out */
 | 
			
		||||
#define	ECONNREFUSED	61	/* Connection refused */
 | 
			
		||||
 
 | 
			
		||||
	/* */
 | 
			
		||||
#define	ELOOP		62	/* Too many levels of symbolic links */
 | 
			
		||||
#define	ENAMETOOLONG	63	/* File name too long */
 | 
			
		||||
 
 | 
			
		||||
/* In BSD4.2, ENOTEMPTY is defined as 64. */
 | 
			
		||||
/* Just use BSD4.3 & Sun UNIX 4.2 definitions */
 | 
			
		||||
#define	EHOSTDOWN	64	/* Host is down */
 | 
			
		||||
#define	EHOSTUNREACH	65	/* No route to host */
 | 
			
		||||
#define	ENOTEMPTY	66	/* Directory not empty */
 | 
			
		||||
 | 
			
		||||
/* quotas & mush */
 | 
			
		||||
/* EPROCLIM and EUSERS are not documented */
 | 
			
		||||
#define	EPROCLIM	67	/* Too many processes */
 | 
			
		||||
#define	EUSERS		68	/* Too many users */
 | 
			
		||||
#define	EDQUOT		69	/* Disc quota exceeded */
 | 
			
		||||
 | 
			
		||||
/* Network File System */
 | 
			
		||||
#define	ESTALE		70	/* Stale NFS file handle */
 | 
			
		||||
#define	EREMOTE		71	/* Too many levels of remote in path */
 | 
			
		||||
 | 
			
		||||
/* streams */
 | 
			
		||||
/* only ENOMSG is documented */
 | 
			
		||||
#define	ENOSTR		72	/* Device is not a stream */
 | 
			
		||||
#define	ETIME		73	/* Timer expired */
 | 
			
		||||
#define	ENOSR		74	/* Out of streams resources */
 | 
			
		||||
#define	ENOMSG		75	/* No message of desired type */
 | 
			
		||||
#define	EBADMSG		76	/* Trying to read unreadable message */
 | 
			
		||||
 | 
			
		||||
#define	EIDRM		77	/* Identifier removed */
 | 
			
		||||
 | 
			
		||||
/* SystemV Record Locking */
 | 
			
		||||
#define	EDEADLK		78	/* Deadlock condition. */
 | 
			
		||||
#define	ENOLCK		79	/* No record locks available. */
 | 
			
		||||
 | 
			
		||||
#endif	/* __BSD4_2 */
 | 
			
		||||
 | 
			
		||||
extern int errno;	/* error number */
 | 
			
		||||
 | 
			
		||||
#endif	/* _ERRNO_HEADER_ */
 | 
			
		||||
							
								
								
									
										118
									
								
								lang/cem/libcc.ansi/headers/float.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										118
									
								
								lang/cem/libcc.ansi/headers/float.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,118 @@
 | 
			
		|||
/*
 | 
			
		||||
 * float.h - implementation limits
 | 
			
		||||
 */
 | 
			
		||||
/* $Header$ */
 | 
			
		||||
 | 
			
		||||
#ifndef	_FLOAT_HEADER_
 | 
			
		||||
#define	_FLOAT_HEADER_
 | 
			
		||||
 | 
			
		||||
#ifdef	vax
 | 
			
		||||
#define	FLT_DIG			6
 | 
			
		||||
#define	FLT_EPSILON		5.96046448e-08
 | 
			
		||||
#define	FLT_MANT_DIG		8
 | 
			
		||||
#define	FLT_MAX			1.70141173e+38
 | 
			
		||||
#define	FLT_MAX_10_EXP		38
 | 
			
		||||
#define	FLT_MAX_EXP		127
 | 
			
		||||
#define	FLT_MIN			2.93873588e-39
 | 
			
		||||
#define	FLT_MIN_10_EXP		-39
 | 
			
		||||
#define	FLT_MIN_EXP		-127
 | 
			
		||||
 | 
			
		||||
#define	DBL_DIG			16
 | 
			
		||||
#define	DBL_EPSILON		1.38777878078144568e-17
 | 
			
		||||
#define	DBL_MANT_DIG		8
 | 
			
		||||
#define	DBL_MAX			1.70141183460469229e+38
 | 
			
		||||
#define	DBL_MAX_10_EXP		38
 | 
			
		||||
#define	DBL_MAX_EXP		127
 | 
			
		||||
#define	DBL_MIN			2.93873587705571877e-39
 | 
			
		||||
#define	DBL_MIN_10_EXP		39
 | 
			
		||||
#define	DBL_MIN_EXP		-127
 | 
			
		||||
 | 
			
		||||
#define	LDBL_DIG		16
 | 
			
		||||
#define	LDBL_EPSILON		1.38777878078144568e-17
 | 
			
		||||
#define	LDBL_MANT_DIG		8
 | 
			
		||||
#define	LDBL_MAX		1.70141183460469229e+38
 | 
			
		||||
#define	LDBL_MAX_10_EXP		38
 | 
			
		||||
#define	LDBL_MAX_EXP		127
 | 
			
		||||
#define	LDBL_MIN		2.93873587705571877e-39
 | 
			
		||||
#define	LDBL_MIN_10_EXP		39
 | 
			
		||||
#define	LDBL_MIN_EXP		-127
 | 
			
		||||
 | 
			
		||||
#define	FLT_ROUNDS		1
 | 
			
		||||
#define	FLT_RADIX		2
 | 
			
		||||
 | 
			
		||||
#else
 | 
			
		||||
#ifdef	pdp
 | 
			
		||||
/* The values are not certain, because there are no pdp's here anymore. The
 | 
			
		||||
 * values given here are the same as for the vax. 
 | 
			
		||||
 */
 | 
			
		||||
#define	FLT_DIG			6
 | 
			
		||||
#define	FLT_EPSILON		5.96046448e-08
 | 
			
		||||
#define	FLT_MANT_DIG		8
 | 
			
		||||
#define	FLT_MAX			1.70141173e+38
 | 
			
		||||
#define	FLT_MAX_10_EXP		38
 | 
			
		||||
#define	FLT_MAX_EXP		127
 | 
			
		||||
#define	FLT_MIN			2.93873588e-39
 | 
			
		||||
#define	FLT_MIN_10_EXP		-39
 | 
			
		||||
#define	FLT_MIN_EXP		-127
 | 
			
		||||
 | 
			
		||||
#define	DBL_DIG			16
 | 
			
		||||
#define	DBL_EPSILON		1.38777878078144568e-17
 | 
			
		||||
#define	DBL_MANT_DIG		8
 | 
			
		||||
#define	DBL_MAX			1.70141183460469229e+38
 | 
			
		||||
#define	DBL_MAX_10_EXP		38
 | 
			
		||||
#define	DBL_MAX_EXP		127
 | 
			
		||||
#define	DBL_MIN			2.93873587705571877e-39
 | 
			
		||||
#define	DBL_MIN_10_EXP		39
 | 
			
		||||
#define	DBL_MIN_EXP		-127
 | 
			
		||||
 | 
			
		||||
#define	LDBL_DIG		16
 | 
			
		||||
#define	LDBL_EPSILON		1.38777878078144568e-17
 | 
			
		||||
#define	LDBL_MANT_DIG		8
 | 
			
		||||
#define	LDBL_MAX		1.70141183460469229e+38
 | 
			
		||||
#define	LDBL_MAX_10_EXP		38
 | 
			
		||||
#define	LDBL_MAX_EXP		127
 | 
			
		||||
#define	LDBL_MIN		2.93873587705571877e-39
 | 
			
		||||
#define	LDBL_MIN_10_EXP		39
 | 
			
		||||
#define	LDBL_MIN_EXP		-127
 | 
			
		||||
 | 
			
		||||
#define	FLT_ROUNDS		1
 | 
			
		||||
#define	FLT_RADIX		2
 | 
			
		||||
 | 
			
		||||
#else		/* floating point emulation */
 | 
			
		||||
#define	FLT_DIG			6
 | 
			
		||||
#define	FLT_EPSILON		5.96046448e-08
 | 
			
		||||
#define	FLT_MANT_DIG		8
 | 
			
		||||
#define	FLT_MAX			1.70141173e+38
 | 
			
		||||
#define	FLT_MAX_10_EXP		38
 | 
			
		||||
#define	FLT_MAX_EXP		127
 | 
			
		||||
#define	FLT_MIN			2.93873588e-39
 | 
			
		||||
#define	FLT_MIN_10_EXP		-39
 | 
			
		||||
#define	FLT_MIN_EXP		-127
 | 
			
		||||
 | 
			
		||||
#define	DBL_DIG			15
 | 
			
		||||
#define	DBL_EPSILON		1.1102230246251565e-16
 | 
			
		||||
#define	DBL_MANT_DIG		11
 | 
			
		||||
#define	DBL_MAX			8.9884656743115823e+307
 | 
			
		||||
#define	DBL_MAX_10_EXP		307
 | 
			
		||||
#define	DBL_MAX_EXP		1023
 | 
			
		||||
#define	DBL_MIN			5.5626846462680062e-309
 | 
			
		||||
#define	DBL_MIN_10_EXP		-309
 | 
			
		||||
#define	DBL_MIN_EXP		-1023
 | 
			
		||||
 | 
			
		||||
#define	LDBL_DIG		15
 | 
			
		||||
#define	LDBL_EPSILON		1.1102230246251565e-16
 | 
			
		||||
#define	LDBL_MANT_DIG		11
 | 
			
		||||
#define	LDBL_MAX		8.9884656743115823e+307
 | 
			
		||||
#define	LDBL_MAX_10_EXP		307
 | 
			
		||||
#define	LDBL_MAX_EXP		1023
 | 
			
		||||
#define	LDBL_MIN		5.5626846462680062e-309
 | 
			
		||||
#define	LDBL_MIN_10_EXP		-309
 | 
			
		||||
#define	LDBL_MIN_EXP		-1023
 | 
			
		||||
 | 
			
		||||
#define	FLT_ROUNDS		1
 | 
			
		||||
#define	FLT_RADIX		2
 | 
			
		||||
 | 
			
		||||
#endif	/* pdp */
 | 
			
		||||
#endif	/* vax */
 | 
			
		||||
 | 
			
		||||
#endif	/* _FLOAT_HEADER_ */
 | 
			
		||||
							
								
								
									
										51
									
								
								lang/cem/libcc.ansi/headers/limits.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								lang/cem/libcc.ansi/headers/limits.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,51 @@
 | 
			
		|||
/*
 | 
			
		||||
 * limits.h - implementation limits
 | 
			
		||||
 */
 | 
			
		||||
/* $Header$ */
 | 
			
		||||
 | 
			
		||||
#ifndef	_LIMITS_HEADER_
 | 
			
		||||
#define	_LIMITS_HEADER_
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
** Define _SIGNED_CHARS_ for machines with signed characters.
 | 
			
		||||
** Define _WORD_32_ for machines with 32 bits integers.
 | 
			
		||||
**
 | 
			
		||||
** These defines should probably be set by the compiler when the
 | 
			
		||||
** -vi option is used.
 | 
			
		||||
*/
 | 
			
		||||
#define	_SIGNED_CHARS_
 | 
			
		||||
#define	_WORD_32_
 | 
			
		||||
 | 
			
		||||
#define	CHAR_BIT		8
 | 
			
		||||
#define	SCHAR_MIN		(-127)
 | 
			
		||||
#define	SCHAR_MAX		(+127)
 | 
			
		||||
#define	UCHAR_MAX		255
 | 
			
		||||
#define	MB_LEN_MAX		1
 | 
			
		||||
 | 
			
		||||
#define	SHRT_MIN		(-32767)
 | 
			
		||||
#define	SHRT_MAX		(+32767)
 | 
			
		||||
#define	USHRT_MAX		65535
 | 
			
		||||
 | 
			
		||||
#define	LONG_MIN		(-2147483647L)
 | 
			
		||||
#define	LONG_MAX		(+2147483647L)
 | 
			
		||||
#define	ULONG_MAX		4294967295L
 | 
			
		||||
 | 
			
		||||
#ifdef	_SIGNED_CHARS_
 | 
			
		||||
#define	CHAR_MAX		SCHAR_MAX
 | 
			
		||||
#define	CHAR_MIN		SCHAR_MIN
 | 
			
		||||
#else	/* defined(_UNSIGNED_CHARS_) */
 | 
			
		||||
#define	CHAR_MAX		UCHAR_MAX
 | 
			
		||||
#define	CHAR_MIN		0
 | 
			
		||||
#endif	/* _SIGNED_CHARS */
 | 
			
		||||
 | 
			
		||||
#ifdef	_WORD_32_
 | 
			
		||||
#define	INT_MIN			LONG_MIN
 | 
			
		||||
#define	INT_MAX			LONG_MAX
 | 
			
		||||
#define	UINT_MAX		ULONG_MAX
 | 
			
		||||
#else	/*defined(_WORD_16_)*/
 | 
			
		||||
#define	INT_MIN			SHRT_MIN
 | 
			
		||||
#define	INT_MAX			SHRT_MAX
 | 
			
		||||
#define	UINT_MAX		USHRT_MAX
 | 
			
		||||
#endif	/* WORD_32_ */
 | 
			
		||||
 | 
			
		||||
#endif	/* _LIMITS_HEADER_ */
 | 
			
		||||
							
								
								
									
										44
									
								
								lang/cem/libcc.ansi/headers/locale.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								lang/cem/libcc.ansi/headers/locale.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,44 @@
 | 
			
		|||
/*
 | 
			
		||||
 * locale.h - localization
 | 
			
		||||
 */
 | 
			
		||||
/* $Header$ */
 | 
			
		||||
 | 
			
		||||
#ifndef	_LOCALE_HEADER_
 | 
			
		||||
#define	_LOCALE_HEADER_
 | 
			
		||||
 | 
			
		||||
struct lconv {
 | 
			
		||||
	char	*decimal_point;		/* "." */
 | 
			
		||||
	char	*thousands_sep;		/* "" */
 | 
			
		||||
	char	*grouping;		/* "" */
 | 
			
		||||
	char	*int_curr_symbol;	/* "" */
 | 
			
		||||
	char	*currency_symbol;	/* "" */
 | 
			
		||||
	char	*mon_decimal_point;	/* "" */
 | 
			
		||||
	char	*mon_thousands_sep;	/* "" */
 | 
			
		||||
	char	*mon_grouping;		/* "" */
 | 
			
		||||
	char	*positive_sign;		/* "" */
 | 
			
		||||
	char	*negative_sign;		/* "" */
 | 
			
		||||
	char	frac_digits;		/* CHAR_MAX */
 | 
			
		||||
	char	p_cs_precedes;		/* CHAR_MAX */
 | 
			
		||||
	char	p_sep_by_space;		/* CHAR_MAX */
 | 
			
		||||
	char	n_cs_precedes;		/* CHAR_MAX */
 | 
			
		||||
	char	n_sep_by_space;		/* CHAR_MAX */
 | 
			
		||||
	char	p_sign_posn;		/* CHAR_MAX */
 | 
			
		||||
	char	n_sign_posn;		/* CHAR_MAX */
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#ifndef	NULL
 | 
			
		||||
#define	NULL		0
 | 
			
		||||
#endif	/* NULL */
 | 
			
		||||
 | 
			
		||||
#define	LC_ALL		1
 | 
			
		||||
#define	LC_COLLATE	2
 | 
			
		||||
#define	LC_CTYPE	3
 | 
			
		||||
#define	LC_MONETARY	4
 | 
			
		||||
#define	LC_NUMERIC	5
 | 
			
		||||
#define	LC_TIME		6
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
char		*setlocale(int category, const char *locale);
 | 
			
		||||
struct	lconv	*localeconv(void);
 | 
			
		||||
 | 
			
		||||
#endif	/* _LOCALE_HEADER_ */
 | 
			
		||||
							
								
								
									
										41
									
								
								lang/cem/libcc.ansi/headers/math.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								lang/cem/libcc.ansi/headers/math.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,41 @@
 | 
			
		|||
/*
 | 
			
		||||
 * math.h - mathematics
 | 
			
		||||
 */
 | 
			
		||||
/* $Header$ */
 | 
			
		||||
 | 
			
		||||
#ifndef	_MATH_HEADER_
 | 
			
		||||
#define	_MATH_HEADER_
 | 
			
		||||
 | 
			
		||||
#include	<float.h>
 | 
			
		||||
#define	HUGE_VAL	DBL_MAX
 | 
			
		||||
 | 
			
		||||
double	acos(double x);
 | 
			
		||||
double	asin(double x);
 | 
			
		||||
double	atan(double x);
 | 
			
		||||
double	atan2(double y, double x);
 | 
			
		||||
 | 
			
		||||
double	cos(double x);
 | 
			
		||||
double	sin(double x);
 | 
			
		||||
double	tan(double x);
 | 
			
		||||
 | 
			
		||||
double	cosh(double x);
 | 
			
		||||
double	sinh(double x);
 | 
			
		||||
double	tanh(double x);
 | 
			
		||||
 | 
			
		||||
double	exp(double x);
 | 
			
		||||
double	log(double x);
 | 
			
		||||
double	log10(double x);
 | 
			
		||||
 | 
			
		||||
double	sqrt(double x);
 | 
			
		||||
double	ceil(double x);
 | 
			
		||||
double	fabs(double x);
 | 
			
		||||
double	floor(double x);
 | 
			
		||||
 | 
			
		||||
double	pow(double x, double y);
 | 
			
		||||
 | 
			
		||||
double	frexp(double x, int *exp);
 | 
			
		||||
double	ldexp(double x, int exp);
 | 
			
		||||
double	modf(double x, double *iptr);
 | 
			
		||||
double	fmod(double x, double y);
 | 
			
		||||
 | 
			
		||||
#endif	/* _MATH_HEADER_ */
 | 
			
		||||
							
								
								
									
										29
									
								
								lang/cem/libcc.ansi/headers/mathconst.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								lang/cem/libcc.ansi/headers/mathconst.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,29 @@
 | 
			
		|||
/*
 | 
			
		||||
 * mathconst.h - mathematic constants
 | 
			
		||||
 */
 | 
			
		||||
/* $Header$ */
 | 
			
		||||
 | 
			
		||||
#ifndef	_MATHCONST_HEADER_
 | 
			
		||||
#define	_MATHCONST_HEADER_
 | 
			
		||||
 | 
			
		||||
/* some constants (Hart & Cheney) */
 | 
			
		||||
#define	M_PI		3.14159265358979323846264338327950288
 | 
			
		||||
#define	M_2PI		6.28318530717958647692528676655900576
 | 
			
		||||
#define	M_3PI_4		2.35619449019234492884698253745962716
 | 
			
		||||
#define	M_PI_2		1.57079632679489661923132169163975144
 | 
			
		||||
#define	M_3PI_8		1.17809724509617246442349126872981358
 | 
			
		||||
#define	M_PI_4		0.78539816339744830961566084581987572
 | 
			
		||||
#define	M_PI_8		0.39269908169872415480783042290993786
 | 
			
		||||
#define	M_1_PI		0.31830988618379067153776752674502872
 | 
			
		||||
#define	M_2_PI		0.63661977236758134307553505349005744
 | 
			
		||||
#define	M_4_PI		1.27323954473516268615107010698011488
 | 
			
		||||
#define	M_E		2.71828182845904523536028747135266250
 | 
			
		||||
#define	M_LOG2E		1.44269504088896340735992468100189213
 | 
			
		||||
#define	M_LOG10E	0.43429448190325182765112891891660508
 | 
			
		||||
#define	M_LN2		0.69314718055994530941723212145817657
 | 
			
		||||
#define	M_LN10		2.30258509299404568401799145468436421
 | 
			
		||||
#define	M_SQRT2		1.41421356237309504880168872420969808
 | 
			
		||||
#define	M_1_SQRT2	0.70710678118654752440084436210484904
 | 
			
		||||
#define	M_EULER		0.57721566490153286060651209008240243
 | 
			
		||||
 | 
			
		||||
#endif	/* _MATHCONST_HEADER_ */
 | 
			
		||||
							
								
								
									
										17
									
								
								lang/cem/libcc.ansi/headers/setjmp.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								lang/cem/libcc.ansi/headers/setjmp.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,17 @@
 | 
			
		|||
/*
 | 
			
		||||
 * setjmp.h - restore calling environment
 | 
			
		||||
 *
 | 
			
		||||
 * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
 | 
			
		||||
 * See the copyright notice in the ACK home directory, in the file "Copyright".
 | 
			
		||||
 */
 | 
			
		||||
/* $Header$ */
 | 
			
		||||
 | 
			
		||||
#ifndef	_SETJMP_HEADER_
 | 
			
		||||
#define	_SETJMP_HEADER_
 | 
			
		||||
 | 
			
		||||
typedef char jmp_buf[256];
 | 
			
		||||
 | 
			
		||||
int	setjmp(jmp_buf env);
 | 
			
		||||
void	longjmp(jmp_buf env, int val);
 | 
			
		||||
 | 
			
		||||
#endif	/* _SETJMP_HEADER_ */
 | 
			
		||||
							
								
								
									
										116
									
								
								lang/cem/libcc.ansi/headers/signal.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										116
									
								
								lang/cem/libcc.ansi/headers/signal.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,116 @@
 | 
			
		|||
/*
 | 
			
		||||
 * signal.h - signal handling
 | 
			
		||||
 *
 | 
			
		||||
 * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
 | 
			
		||||
 * See the copyright notice in the ACK home directory, in the file "Copyright".
 | 
			
		||||
 */
 | 
			
		||||
/* $Header$ */
 | 
			
		||||
#ifndef	_SIGNAL_HEADER_
 | 
			
		||||
#define	_SIGNAL_HEADER_
 | 
			
		||||
 | 
			
		||||
typedef	int		sig_atomic_t;
 | 
			
		||||
 | 
			
		||||
#define	SIG_ERR		(void (*)())-1
 | 
			
		||||
#if	defined(em22) || defined(em24) || defined(em44)
 | 
			
		||||
#define	SIG_DFL		((void (*)())-2)
 | 
			
		||||
#define	SIG_IGN		((void (*)())-3)
 | 
			
		||||
#else
 | 
			
		||||
#define	SIG_DFL		((void (*)())0)
 | 
			
		||||
#define	SIG_IGN		((void (*)())1)
 | 
			
		||||
#endif	/* SIG_ERR */
 | 
			
		||||
 | 
			
		||||
#define	SIGHUP	1	/* hangup */
 | 
			
		||||
#define	SIGINT	2	/* interrupt */
 | 
			
		||||
#define	SIGQUIT	3	/* quit */
 | 
			
		||||
#define	SIGILL	4	/* illegal instruction (not reset when caught) */
 | 
			
		||||
#define	SIGTRAP	5	/* trace trap (not reset when caught) */
 | 
			
		||||
#define	SIGIOT	6	/* IOT instruction */
 | 
			
		||||
#define	SIGABRT	6	/* ANSI abort trap */
 | 
			
		||||
#define	SIGEMT	7	/* EMT instruction */
 | 
			
		||||
#define	SIGFPE	8	/* floating point exception */
 | 
			
		||||
#define	SIGKILL	9	/* kill (cannot be caught or ignored) */
 | 
			
		||||
#define	SIGBUS	10	/* bus error */
 | 
			
		||||
#define	SIGSEGV	11	/* segmentation violation */
 | 
			
		||||
#define	SIGSYS	12	/* bad argument to system call */
 | 
			
		||||
#define	SIGPIPE	13	/* write on a pipe with no one to read it */
 | 
			
		||||
#define	SIGALRM	14	/* alarm clock */
 | 
			
		||||
#define	SIGTERM	15	/* software termination signal from kill */
 | 
			
		||||
#ifdef	__USG
 | 
			
		||||
#define	SIGUSR1	16	/* user defined signal 1 */
 | 
			
		||||
#define	SIGUSR2	17	/* user defined signal 2 */
 | 
			
		||||
#define	SIGCLD	18	/* death of a child */
 | 
			
		||||
#define	SIGPWR	19	/* power-fail signal */
 | 
			
		||||
#define	_NSIG	20
 | 
			
		||||
#elif	defined(__BSD4_2)
 | 
			
		||||
#define	SIGURG	16	/* urgent condition */
 | 
			
		||||
#define	SIGSTOP	17	/* stop signal not from tty */
 | 
			
		||||
#define	SIGTSTP	18	/* stop signal from tty */
 | 
			
		||||
#define	SIGCONT	19	/* continue a stopped process */
 | 
			
		||||
#define	SIGCHLD	20	/* death of a child */
 | 
			
		||||
#define	SIGCLD	20	/* System V compat. */
 | 
			
		||||
#define	SIGTTIN	21	/* background tty read */
 | 
			
		||||
#define	SIGTTOU	22	/* background tty write */
 | 
			
		||||
#define	SIGIO	23	/* I/O possible signal */
 | 
			
		||||
#define	SIGPOLL	SIGIO	/* System V compat. */
 | 
			
		||||
#define	SIGXCPU	24	/* exceeded CPU time limit */
 | 
			
		||||
#define	SIGXFSZ	25	/* exceeded file size limit */
 | 
			
		||||
#define	SIGVTALRM 26	/* virtual time alarm */
 | 
			
		||||
#define	SIGPROF	27	/* profiling time alarm */
 | 
			
		||||
#define	SIGWINCH 28	/* window has changed */
 | 
			
		||||
#define	SIGLOST 29	/* resource lost */
 | 
			
		||||
#define SIGUSR1 30	/* user defined signal 1 */
 | 
			
		||||
#define SIGUSR2 31	/* user defined signal 2 */
 | 
			
		||||
#define	_NSIG	32
 | 
			
		||||
#else
 | 
			
		||||
#define	_NSIG	16
 | 
			
		||||
#endif	/* __USG or __BSD4_2 */
 | 
			
		||||
 | 
			
		||||
#ifdef	__BSD4_2
 | 
			
		||||
struct	sigvec {
 | 
			
		||||
	int	(*sv_handler)();	/* handler */
 | 
			
		||||
	int	sv_mask;		/* mask to apply */
 | 
			
		||||
	int	sv_flags;
 | 
			
		||||
};
 | 
			
		||||
#define	SV_ONSTACK	0x0001		/* take signal on signal stack */
 | 
			
		||||
#define	SV_INTERRUPT	0x0002		/* do not restart system on signal return */
 | 
			
		||||
#define	SV_RESETHAND	0x0004		/* reset signal handler to SIG_DFL when signal taken */
 | 
			
		||||
#define	sv_onstack	sv_flags	/* compat. */
 | 
			
		||||
 | 
			
		||||
struct	sigstack {
 | 
			
		||||
	char	*ss_sp;			/* signal stack pointer */
 | 
			
		||||
	int	ss_onstack;		/* current status */
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
struct	sigcontext {
 | 
			
		||||
	int	sc_onstack;		/* sigstack state to restore */
 | 
			
		||||
	int	sc_mask;		/* signal mask to restore */
 | 
			
		||||
	int	sc_sp;			/* sp to restore */
 | 
			
		||||
#ifdef	vax
 | 
			
		||||
	int	sc_fp;			/* fp to restore */
 | 
			
		||||
	int	sc_ap;			/* ap to restore */
 | 
			
		||||
#endif	/* vax */
 | 
			
		||||
	int	sc_pc;			/* pc to retore */
 | 
			
		||||
	int	sc_ps;			/* psl to restore */
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#define	BADSIG	SIG_ERR			/* compat. */
 | 
			
		||||
#define	sigmask(m)	(1 << ((m)-1))
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * These are only defined for shutting up the compiler.
 | 
			
		||||
 */
 | 
			
		||||
#ifdef	__STDC__
 | 
			
		||||
int	sigvec(int sig, struct sigvec *vec, struct sigvec *ovec);
 | 
			
		||||
int	sigstack(struct sigstack *ss, struct sigstack *oss);
 | 
			
		||||
int	sigblock(int mask);
 | 
			
		||||
int	sigsetmask(int mask);
 | 
			
		||||
int	sigpause(int sigmask);
 | 
			
		||||
#endif	/* __STDC__ */
 | 
			
		||||
#endif	/* __BSD4_2 */
 | 
			
		||||
 | 
			
		||||
#ifdef	__STDC__
 | 
			
		||||
void	(*signal(int sig, void (*func)(int)))(int);
 | 
			
		||||
int	raise(int sig);
 | 
			
		||||
#endif	/* __STDC__ */
 | 
			
		||||
 | 
			
		||||
#endif	/* _SIGNAL_HEADER_ */
 | 
			
		||||
							
								
								
									
										18
									
								
								lang/cem/libcc.ansi/headers/stdarg.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								lang/cem/libcc.ansi/headers/stdarg.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,18 @@
 | 
			
		|||
/*
 | 
			
		||||
 * stdarg.h - variable arguments
 | 
			
		||||
 *
 | 
			
		||||
 * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
 | 
			
		||||
 * See the copyright notice in the ACK home directory, in the file "Copyright".
 | 
			
		||||
 */
 | 
			
		||||
/* $Header$ */
 | 
			
		||||
 | 
			
		||||
#ifndef	_STDARG_HEADER_
 | 
			
		||||
#define	_STDARG_HEADER_
 | 
			
		||||
 | 
			
		||||
typedef	char	*va_list;
 | 
			
		||||
 | 
			
		||||
#define	va_start(ap, parmN)	(ap = (char *)&parmN)
 | 
			
		||||
#define	va_arg(ap, type)	((type *)(ap += sizeof(type)))[0]
 | 
			
		||||
#define	va_end(ap)
 | 
			
		||||
 | 
			
		||||
#endif	/* _STDARG_HEADER_ */
 | 
			
		||||
							
								
								
									
										35
									
								
								lang/cem/libcc.ansi/headers/stddef.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								lang/cem/libcc.ansi/headers/stddef.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,35 @@
 | 
			
		|||
/*
 | 
			
		||||
 * stddef.h - common definitions
 | 
			
		||||
 *
 | 
			
		||||
 * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
 | 
			
		||||
 * See the copyright notice in the ACK home directory, in the file "Copyright".
 | 
			
		||||
 */
 | 
			
		||||
/* $Header$ */
 | 
			
		||||
 | 
			
		||||
#ifndef	_STDDEF_HEADER_
 | 
			
		||||
#define	_STDDEF_HEADER_
 | 
			
		||||
 | 
			
		||||
#ifndef	NULL
 | 
			
		||||
#define	NULL		0
 | 
			
		||||
#endif	/* NULL */
 | 
			
		||||
 | 
			
		||||
/* ??? cast to char pointer necessary? */
 | 
			
		||||
#define	offsetof(type, ident) \
 | 
			
		||||
	(size_t) &(((type *)0)->ident)
 | 
			
		||||
 | 
			
		||||
#ifndef	_TYPE_PTRDIFF_
 | 
			
		||||
#define	_TYPE_PTRDIFF_
 | 
			
		||||
typedef int	ptrdiff_t;	/* result of substracting two pointers */
 | 
			
		||||
#endif	/* _TYPE_PTRDIFF_ */
 | 
			
		||||
 | 
			
		||||
#ifndef	_TYPE_SIZE_
 | 
			
		||||
#define	_TYPE_SIZE_
 | 
			
		||||
typedef unsigned int	size_t;		/* type returned by sizeof */
 | 
			
		||||
#endif	/* _TYPE_SIZE_ */
 | 
			
		||||
 | 
			
		||||
#ifndef	_TYPE_WCHAR_
 | 
			
		||||
#define	_TYPE_WCHAR_
 | 
			
		||||
typedef char	wchar_t;		/* type expanded character set */
 | 
			
		||||
#endif	/* _TYPE_WCHAR_ */
 | 
			
		||||
 | 
			
		||||
#endif	/* _STDEF_HEADER_ */
 | 
			
		||||
							
								
								
									
										125
									
								
								lang/cem/libcc.ansi/headers/stdio.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										125
									
								
								lang/cem/libcc.ansi/headers/stdio.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,125 @@
 | 
			
		|||
/*
 | 
			
		||||
 * stdio.h - input/output definitions
 | 
			
		||||
 *
 | 
			
		||||
 * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
 | 
			
		||||
 * See the copyright notice in the ACK home directory, in the file "Copyright".
 | 
			
		||||
 */
 | 
			
		||||
/* $Header$ */
 | 
			
		||||
 | 
			
		||||
#ifndef	_STDIO_HEADER_
 | 
			
		||||
#define	_STDIO_HEADER_
 | 
			
		||||
 | 
			
		||||
#include	<stdarg.h>
 | 
			
		||||
 | 
			
		||||
#define	_NFILES		20
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Focus point of all stdio activity.
 | 
			
		||||
 */
 | 
			
		||||
typedef struct _iobuf {
 | 
			
		||||
	int		_fd;
 | 
			
		||||
	int		_count;
 | 
			
		||||
	int		_flags;
 | 
			
		||||
	char		*_tname;
 | 
			
		||||
	unsigned char	*_buf;
 | 
			
		||||
	unsigned char	*_ptr;
 | 
			
		||||
} FILE;
 | 
			
		||||
 | 
			
		||||
#define	_IOFBF		0000
 | 
			
		||||
#define	_IOREAD		0001
 | 
			
		||||
#define	_IOWRITE	0002
 | 
			
		||||
#define	_IONBF		0004
 | 
			
		||||
#define	_IOMYBUF	0010
 | 
			
		||||
#define	_IOEOF		0020
 | 
			
		||||
#define	_IOERR		0040
 | 
			
		||||
#define	_IOLBF		0100
 | 
			
		||||
 | 
			
		||||
#define	SEEK_SET	0
 | 
			
		||||
#define	SEEK_CUR	1
 | 
			
		||||
#define	SEEK_END	2
 | 
			
		||||
 | 
			
		||||
#define	stdin		(&_stdin)
 | 
			
		||||
#define	stdout		(&_stdout)
 | 
			
		||||
#define	stderr		(&_stderr)
 | 
			
		||||
 | 
			
		||||
#define	BUFSIZ		1024
 | 
			
		||||
#ifndef	NULL
 | 
			
		||||
#define	NULL		0
 | 
			
		||||
#endif	/* NULL */
 | 
			
		||||
#ifndef	EOF
 | 
			
		||||
#define	EOF		(-1)
 | 
			
		||||
#endif	/* EOF */
 | 
			
		||||
 | 
			
		||||
#define	FOPEN_MAX	(_NFILES - 3)
 | 
			
		||||
#ifdef	__BSD4_2
 | 
			
		||||
#define	FILENAME_MAX	255
 | 
			
		||||
#else
 | 
			
		||||
#define	FILENAME_MAX	14
 | 
			
		||||
#endif	/* __BSD4_2 */
 | 
			
		||||
#define	TMP_MAX		1000
 | 
			
		||||
#define	L_tmpnam	(sizeof("/usr/tmp/") + 15)
 | 
			
		||||
 | 
			
		||||
#ifndef	_TYPE_FPOS_
 | 
			
		||||
#define	_TYPE_FPOS_
 | 
			
		||||
typedef long int	fpos_t;
 | 
			
		||||
#endif	/* _TYPE_FPOS */
 | 
			
		||||
 | 
			
		||||
#ifndef	_TYPE_SIZE_
 | 
			
		||||
#define	_TYPE_SIZE_
 | 
			
		||||
typedef unsigned int	size_t;
 | 
			
		||||
#endif	/* _TYPE_SIZE_ */
 | 
			
		||||
 | 
			
		||||
#define	getchar()	getc(stdin)
 | 
			
		||||
#define	putchar(c)	putc(c,stdout)
 | 
			
		||||
#define	getc(p)		(--(p)->_count >= 0 ? (int) (*(p)->_ptr++) : \
 | 
			
		||||
				_fillbuf(p))
 | 
			
		||||
#define	putc(c, p)	(--(p)->_count >= 0 ? \
 | 
			
		||||
			 (int) (*(p)->_ptr++ = (c)) : \
 | 
			
		||||
			 _flushbuf((c),(p)))
 | 
			
		||||
 | 
			
		||||
#define	feof(p)		(((p)->_flags & _IOEOF) != 0)
 | 
			
		||||
#define	ferror(p)	(((p)->_flags & _IOERR) != 0)
 | 
			
		||||
#define	fileno(p)	((p)->_fd)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FILE	*_iotable[_NFILES];
 | 
			
		||||
FILE	_stdin, _stdout, _stderr;
 | 
			
		||||
 | 
			
		||||
#ifdef	__STDC__
 | 
			
		||||
int	remove(const char *filename);
 | 
			
		||||
int	rename(const char *old, const char *new);
 | 
			
		||||
FILE	*tmpfile(void);
 | 
			
		||||
char	*tmpnam(char *s);
 | 
			
		||||
int	fclose(FILE *stream);
 | 
			
		||||
int	fflush(FILE *stream);
 | 
			
		||||
FILE	*fopen(const char *filename, const char *mode);
 | 
			
		||||
FILE	*freopen(const char *filename, const char *mode, FILE *stream);
 | 
			
		||||
void	setbuf(FILE *stream, char *buf);
 | 
			
		||||
int	setvbuf(FILE *stream, char *buf, int mode, size_t size);
 | 
			
		||||
int	fprintf(FILE *stream, const char *format, ...);
 | 
			
		||||
int	fscanf(FILE *stream, const char *format, ...);
 | 
			
		||||
int	printf(const char *format, ...);
 | 
			
		||||
int	scanf(const char *format, ...);
 | 
			
		||||
int	sprintf(char *s, const char *format, ...);
 | 
			
		||||
int	sscanf(char *s, const char *format, ...);
 | 
			
		||||
int	vfprintf(FILE *stream, const char *format, va_list arg);
 | 
			
		||||
int	vprintf(const char *format, va_list arg);
 | 
			
		||||
int	vsprintf(char *s, const char *format, va_list arg);
 | 
			
		||||
int	fgetc(FILE *stream);
 | 
			
		||||
char	*fgets(char *s, int n, FILE *stream);
 | 
			
		||||
int	fputc(int c, FILE *stream);
 | 
			
		||||
int	fputs(const char *s, FILE *stream);
 | 
			
		||||
char	*gets(char *s);
 | 
			
		||||
int	ungetc(int c, FILE *stream);
 | 
			
		||||
size_t	fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
 | 
			
		||||
size_t	fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);
 | 
			
		||||
int	fgetpos(FILE *stream, fpos_t *pos);
 | 
			
		||||
int	fseek(FILE *stream, long offset, int whence);
 | 
			
		||||
int	fsetpos(FILE *stream, const fpos_t *pos);
 | 
			
		||||
long	ftell(FILE *stream);
 | 
			
		||||
void	rewind(FILE *stream);
 | 
			
		||||
void	clearerr(FILE *stream);
 | 
			
		||||
int	perror(const char *s);
 | 
			
		||||
#endif	/* __STDC__ */
 | 
			
		||||
 | 
			
		||||
#endif	/* _STDIO_HEADER_ */
 | 
			
		||||
							
								
								
									
										68
									
								
								lang/cem/libcc.ansi/headers/stdlib.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										68
									
								
								lang/cem/libcc.ansi/headers/stdlib.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,68 @@
 | 
			
		|||
/*
 | 
			
		||||
 * stdlib.h - standard library
 | 
			
		||||
 *
 | 
			
		||||
 * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
 | 
			
		||||
 * See the copyright notice in the ACK home directory, in the file "Copyright".
 | 
			
		||||
 */
 | 
			
		||||
/* $Header$ */
 | 
			
		||||
 | 
			
		||||
#ifndef	_STDLIB_HEADER_
 | 
			
		||||
#define	_STDLIB_HEADER_
 | 
			
		||||
 | 
			
		||||
#ifndef	NULL
 | 
			
		||||
#define	NULL		0
 | 
			
		||||
#endif	/* NULL */
 | 
			
		||||
 | 
			
		||||
#define	EXIT_FAILURE	1
 | 
			
		||||
#define	EXIT_SUCCESS	0
 | 
			
		||||
#define	RAND_MAX	32767
 | 
			
		||||
#define	MB_CUR_MAX	1
 | 
			
		||||
 | 
			
		||||
typedef struct { int quot, rem; } div_t;
 | 
			
		||||
typedef struct { long quot, rem; } ldiv_t;
 | 
			
		||||
 | 
			
		||||
#ifndef	_TYPE_SIZE_
 | 
			
		||||
#define	_TYPE_SIZE_
 | 
			
		||||
typedef unsigned int	size_t;
 | 
			
		||||
#endif	/* _TYPE_SIZE_ */
 | 
			
		||||
 | 
			
		||||
#ifndef	_TYPE_WCHAR_
 | 
			
		||||
#define	_TYPE_WCHAR_
 | 
			
		||||
typedef int	wchar_t;
 | 
			
		||||
#endif	/* _TYPE_WCHAR_ */
 | 
			
		||||
 | 
			
		||||
#ifdef	__STDC__
 | 
			
		||||
double		atof(const char *nptr);
 | 
			
		||||
int		atoi(const char *nptr);
 | 
			
		||||
long		atol(const char *nptr);
 | 
			
		||||
double		strtod(const char *nptr, char **endptr);
 | 
			
		||||
long		strtol(const char *nptr, char **endptr, int base);
 | 
			
		||||
unsigned long int	strtoul(const char *nptr, char **endptr, int base);
 | 
			
		||||
int		rand(void);
 | 
			
		||||
void		srand(unsigned int seed);
 | 
			
		||||
void		*calloc(size_t nmemb, size_t size);
 | 
			
		||||
void		free(void *ptr);
 | 
			
		||||
void		*malloc(size_t size);
 | 
			
		||||
void		*realloc(void *ptr, size_t size);
 | 
			
		||||
void		abort(void);
 | 
			
		||||
int		atexit(void (*func)(void));
 | 
			
		||||
void		exit(int status);
 | 
			
		||||
char		*getenv(const char *name);
 | 
			
		||||
int		system(const char *string);
 | 
			
		||||
void		*bsearch(const void *key, const void *base,
 | 
			
		||||
			size_t nmemb, size_t size,
 | 
			
		||||
			int (*compar)(const void *, const void *));
 | 
			
		||||
void		qsort(void *base, size_t nmemb, size_t size,
 | 
			
		||||
			int (*compar)(const void *, const void *));
 | 
			
		||||
int		abs(int j);
 | 
			
		||||
div_t		div(int numer, int denom);
 | 
			
		||||
long		labs(long j);
 | 
			
		||||
ldiv_t		ldiv(long numer, long denom);
 | 
			
		||||
int		mblen(const char *s, size_t n);
 | 
			
		||||
int		mbtowc(wchar_t *pwc, const char *s, size_t n);
 | 
			
		||||
int		wctomb(const char *s, wchar_t wchar);
 | 
			
		||||
size_t		mbstowcs(wchar_t *pwcs, const char *s, size_t n);
 | 
			
		||||
size_t		wcstombs(char *s, const wchar_t *pwcs, size_t n);
 | 
			
		||||
#endif	/* __STDC__ */
 | 
			
		||||
 | 
			
		||||
#endif	/* _STDLIB_HEADER_ */
 | 
			
		||||
							
								
								
									
										46
									
								
								lang/cem/libcc.ansi/headers/string.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								lang/cem/libcc.ansi/headers/string.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,46 @@
 | 
			
		|||
/*
 | 
			
		||||
 * string.h - string handling
 | 
			
		||||
 *
 | 
			
		||||
 * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
 | 
			
		||||
 * See the copyright notice in the ACK home directory, in the file "Copyright".
 | 
			
		||||
 */
 | 
			
		||||
/* $Header$ */
 | 
			
		||||
 | 
			
		||||
#ifndef	_STRING_HEADER_
 | 
			
		||||
#define	_STRING_HEADER_
 | 
			
		||||
 | 
			
		||||
#ifndef	NULL
 | 
			
		||||
#define	NULL		0
 | 
			
		||||
#endif	/* NULL */
 | 
			
		||||
 | 
			
		||||
#ifndef	_TYPE_SIZE_
 | 
			
		||||
#define	_TYPE_SIZE_
 | 
			
		||||
typedef unsigned int	size_t;		/* type returned by sizeof */
 | 
			
		||||
#endif	/* _TYPE_SIZE_ */
 | 
			
		||||
 | 
			
		||||
#ifdef	__STDC__
 | 
			
		||||
void	*memcpy(void *s1, const void *s2, size_t n);
 | 
			
		||||
void	*memmove(void *s1, const void *s2, size_t n);
 | 
			
		||||
char	*strcpy(char *s1, const char *s2);
 | 
			
		||||
char	*strncpy(char *s1, const char *s2, size_t n);
 | 
			
		||||
char	*strcat(char *s1, const char *s2);
 | 
			
		||||
char	*strncat(char *s1, const char *s2, size_t n);
 | 
			
		||||
int	memcmp(const void *s1, const void *s2, size_t n);
 | 
			
		||||
int	strcmp(const char *s1, const char *s2);
 | 
			
		||||
int	strcoll(const char *s1, const char *s2);
 | 
			
		||||
int	strncmp(const char *s1, const char *s2, size_t n);
 | 
			
		||||
size_t	strxfrm(char *s1, const char *s2, size_t n);
 | 
			
		||||
void	*memchr(const void *s, int c, size_t n);
 | 
			
		||||
char	*strchr(const char *s, int c);
 | 
			
		||||
size_t	strcspn(const char *s1, const char *s2);
 | 
			
		||||
char	*strpbrk(const char *s1, const char *s2);
 | 
			
		||||
char	*strrchr(const char *s, int c);
 | 
			
		||||
size_t	strspn(const char *s1, const char *s2);
 | 
			
		||||
char	*strstr(const char *s1, const char *s2);
 | 
			
		||||
char	*strtok(char *s1, const char *s2);
 | 
			
		||||
void	*memset(void *s, int c, size_t n);
 | 
			
		||||
char	*strerror(int errnum);
 | 
			
		||||
size_t	strlen(const char *s);
 | 
			
		||||
#endif	/* __STDC__ */
 | 
			
		||||
 | 
			
		||||
#endif	/* _STRING_HEADER_ */
 | 
			
		||||
							
								
								
									
										51
									
								
								lang/cem/libcc.ansi/headers/time.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								lang/cem/libcc.ansi/headers/time.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,51 @@
 | 
			
		|||
/*
 | 
			
		||||
 * time.h - date and time
 | 
			
		||||
 */
 | 
			
		||||
/* $Header$ */
 | 
			
		||||
 | 
			
		||||
#ifndef	_TIME_HEADER_
 | 
			
		||||
#define	_TIME_HEADER_
 | 
			
		||||
 | 
			
		||||
#ifndef	NULL
 | 
			
		||||
#define	NULL		0
 | 
			
		||||
#endif	/* NULL */
 | 
			
		||||
 | 
			
		||||
#ifdef	__BSD4_2
 | 
			
		||||
#define	CLK_TCK		60		/* ticks per second */
 | 
			
		||||
#else
 | 
			
		||||
#define	CLK_TCK		1
 | 
			
		||||
#endif	/* __BSD4_2 */
 | 
			
		||||
 | 
			
		||||
#ifndef	_TYPE_SIZE_
 | 
			
		||||
#define	_TYPE_SIZE_
 | 
			
		||||
typedef unsigned int	size_t;		/* type returned by sizeof */
 | 
			
		||||
#endif	/* _TYPE_SIZE_ */
 | 
			
		||||
 | 
			
		||||
typedef	signed	long	time_t;		/* type returned by TOD clock */
 | 
			
		||||
typedef	signed	long	clock_t;	/* type returned by real time clock */
 | 
			
		||||
 | 
			
		||||
struct tm {
 | 
			
		||||
	int	tm_sec;			/* seconds after the minute - [0, 59] */
 | 
			
		||||
	int	tm_min;			/* minutes after the hour - [0, 59] */
 | 
			
		||||
	int	tm_hour;		/* hours since midnight - [0, 28] */
 | 
			
		||||
	int	tm_mday;		/* day of the month - [1, 31] */
 | 
			
		||||
	int	tm_mon;			/* months since January - [0, 11] */
 | 
			
		||||
	int	tm_year;		/* years since 1900 */
 | 
			
		||||
	int	tm_wday;		/* days since Sunday - [0, 6] */
 | 
			
		||||
	int	tm_yday;		/* days since January 1 - [0, 365] */
 | 
			
		||||
	int	tm_isdst;		/* Daylight Saving Time flag */
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
clock_t		clock(void);
 | 
			
		||||
double		difftime(time_t time1, time_t time0);
 | 
			
		||||
time_t		mktime(struct tm *timeptr);
 | 
			
		||||
time_t		time(time_t *timeptr);
 | 
			
		||||
char		*asctime(const struct tm *timeptr);
 | 
			
		||||
char		*ctime(const time_t *timer);
 | 
			
		||||
struct	tm	*gmtime(const time_t *timer);
 | 
			
		||||
struct	tm	*localtime(const time_t *timer);
 | 
			
		||||
size_t		strftime(char *s, size_t maxsize,
 | 
			
		||||
			const char *format,
 | 
			
		||||
			const struct tm *timeptr);
 | 
			
		||||
 | 
			
		||||
#endif	/* _TIME_HEADER_ */
 | 
			
		||||
							
								
								
									
										15
									
								
								lang/cem/libcc.ansi/stdlib/abort.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								lang/cem/libcc.ansi/stdlib/abort.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,15 @@
 | 
			
		|||
/*
 | 
			
		||||
 * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
 | 
			
		||||
 * See the copyright notice in the ACK home directory, in the file "Copyright".
 | 
			
		||||
 */
 | 
			
		||||
/* $Header$ */
 | 
			
		||||
 | 
			
		||||
#include	<signal.h>
 | 
			
		||||
#include	<stdlib.h>
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
abort(void)
 | 
			
		||||
{
 | 
			
		||||
	raise(SIGABRT);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										13
									
								
								lang/cem/libcc.ansi/stdlib/abs.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								lang/cem/libcc.ansi/stdlib/abs.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,13 @@
 | 
			
		|||
/*
 | 
			
		||||
 * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
 | 
			
		||||
 * See the copyright notice in the ACK home directory, in the file "Copyright".
 | 
			
		||||
 */
 | 
			
		||||
/* $Header$ */
 | 
			
		||||
 | 
			
		||||
#include	<stdlib.h>
 | 
			
		||||
 | 
			
		||||
int
 | 
			
		||||
abs(register int i)
 | 
			
		||||
{
 | 
			
		||||
	return i >= 0 ? i : -i;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										15
									
								
								lang/cem/libcc.ansi/stdlib/atof.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								lang/cem/libcc.ansi/stdlib/atof.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,15 @@
 | 
			
		|||
/*
 | 
			
		||||
 * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
 | 
			
		||||
 * See the copyright notice in the ACK home directory, in the file "Copyright".
 | 
			
		||||
 */
 | 
			
		||||
/* $Header$ */
 | 
			
		||||
 | 
			
		||||
#ifndef	NOFLOAT
 | 
			
		||||
#include	<stdlib.h>
 | 
			
		||||
 | 
			
		||||
double
 | 
			
		||||
atof(const char *nptr)
 | 
			
		||||
{
 | 
			
		||||
	return strtod(nptr, (char **) NULL);
 | 
			
		||||
}
 | 
			
		||||
#endif	/* NOFLOAT */
 | 
			
		||||
							
								
								
									
										13
									
								
								lang/cem/libcc.ansi/stdlib/atoi.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								lang/cem/libcc.ansi/stdlib/atoi.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,13 @@
 | 
			
		|||
/*
 | 
			
		||||
 * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
 | 
			
		||||
 * See the copyright notice in the ACK home directory, in the file "Copyright".
 | 
			
		||||
 */
 | 
			
		||||
/* $Header$ */
 | 
			
		||||
 | 
			
		||||
#include	<stdlib.h>
 | 
			
		||||
 | 
			
		||||
int
 | 
			
		||||
atoi(const char *nptr)
 | 
			
		||||
{
 | 
			
		||||
	return (int)strtol(nptr, (char **)NULL, 10);
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										13
									
								
								lang/cem/libcc.ansi/stdlib/atol.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								lang/cem/libcc.ansi/stdlib/atol.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,13 @@
 | 
			
		|||
/*
 | 
			
		||||
 * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
 | 
			
		||||
 * See the copyright notice in the ACK home directory, in the file "Copyright".
 | 
			
		||||
 */
 | 
			
		||||
/* $Header$ */
 | 
			
		||||
 | 
			
		||||
#include	<stdlib.h>
 | 
			
		||||
 | 
			
		||||
long
 | 
			
		||||
atol(const char *nptr)
 | 
			
		||||
{
 | 
			
		||||
	return strtol(nptr, (char **)NULL, 10);
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										28
									
								
								lang/cem/libcc.ansi/stdlib/bsearch.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								lang/cem/libcc.ansi/stdlib/bsearch.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,28 @@
 | 
			
		|||
/*
 | 
			
		||||
 * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
 | 
			
		||||
 * See the copyright notice in the ACK home directory, in the file "Copyright".
 | 
			
		||||
 */
 | 
			
		||||
/* $Header$ */
 | 
			
		||||
 | 
			
		||||
#include	<stdlib.h>
 | 
			
		||||
 | 
			
		||||
void *
 | 
			
		||||
bsearch(register const void *key, register const void *base,
 | 
			
		||||
	register size_t nmemb, register size_t size,
 | 
			
		||||
	int (*compar)(const void *, const void *))
 | 
			
		||||
{
 | 
			
		||||
	register void *mid_point;
 | 
			
		||||
	register int  cmp;
 | 
			
		||||
 | 
			
		||||
	while (nmemb > 0) {
 | 
			
		||||
		mid_point = base + size * (nmemb >> 1);
 | 
			
		||||
		if ((cmp = (*compar)(key, mid_point)) == 0)
 | 
			
		||||
			return(mid_point);
 | 
			
		||||
		if (cmp >= 0) {
 | 
			
		||||
			base  = mid_point + size;
 | 
			
		||||
			nmemb = (nmemb - 1) >> 1;
 | 
			
		||||
		} else
 | 
			
		||||
			nmemb >>= 1;
 | 
			
		||||
	}
 | 
			
		||||
	return((void *)NULL);
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										24
									
								
								lang/cem/libcc.ansi/stdlib/calloc.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								lang/cem/libcc.ansi/stdlib/calloc.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,24 @@
 | 
			
		|||
/*
 | 
			
		||||
 * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
 | 
			
		||||
 * See the copyright notice in the ACK home directory, in the file "Copyright".
 | 
			
		||||
 */
 | 
			
		||||
/* $Header$ */
 | 
			
		||||
 | 
			
		||||
#include	<stdlib.h>
 | 
			
		||||
 | 
			
		||||
#define ALIGN(sz)	(((sz)+(sizeof(long)-1)/sizeof(long))*sizeof(long))
 | 
			
		||||
 | 
			
		||||
void *
 | 
			
		||||
calloc(size_t nelem, size_t elsize)
 | 
			
		||||
{
 | 
			
		||||
	register void *p;
 | 
			
		||||
	register long *q;
 | 
			
		||||
	unsigned int size = ALIGN(nelem * elsize);
 | 
			
		||||
 | 
			
		||||
	if ((p = malloc(size)) == (void *)NULL)
 | 
			
		||||
		return (void *)NULL;
 | 
			
		||||
	/* "The space is intialized to all bits zero" */
 | 
			
		||||
	q = (long *) (p + size);
 | 
			
		||||
	while ((void *) q > p) *--q = 0;
 | 
			
		||||
	return p;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										17
									
								
								lang/cem/libcc.ansi/stdlib/div.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								lang/cem/libcc.ansi/stdlib/div.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,17 @@
 | 
			
		|||
/*
 | 
			
		||||
 * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
 | 
			
		||||
 * See the copyright notice in the ACK home directory, in the file "Copyright".
 | 
			
		||||
 */
 | 
			
		||||
/* $Header$ */
 | 
			
		||||
 | 
			
		||||
#include	<stdlib.h>
 | 
			
		||||
 | 
			
		||||
div_t
 | 
			
		||||
div(register int numer, register int denom)
 | 
			
		||||
{
 | 
			
		||||
	div_t r;
 | 
			
		||||
 | 
			
		||||
	r.quot = numer / denom;
 | 
			
		||||
	r.rem = numer % denom;
 | 
			
		||||
	return r;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										42
									
								
								lang/cem/libcc.ansi/stdlib/exit.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								lang/cem/libcc.ansi/stdlib/exit.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,42 @@
 | 
			
		|||
/*
 | 
			
		||||
 * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
 | 
			
		||||
 * See the copyright notice in the ACK home directory, in the file "Copyright".
 | 
			
		||||
 */
 | 
			
		||||
/* $Header$ */
 | 
			
		||||
 | 
			
		||||
#include	<stdlib.h>
 | 
			
		||||
 | 
			
		||||
#define	NEXITS	32
 | 
			
		||||
 | 
			
		||||
static void (*functab[NEXITS])(void);
 | 
			
		||||
static int funccnt = 0;
 | 
			
		||||
 | 
			
		||||
extern void _cleanup(void);
 | 
			
		||||
extern void _exit(int);
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
_calls(void)
 | 
			
		||||
{
 | 
			
		||||
	register int i = funccnt;
 | 
			
		||||
	
 | 
			
		||||
	/* "Called in reversed order of their registration" */
 | 
			
		||||
	while (--i >= 0)
 | 
			
		||||
		(*functab[i])();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
exit(int status)
 | 
			
		||||
{
 | 
			
		||||
	_calls();
 | 
			
		||||
	_cleanup() ;
 | 
			
		||||
	_exit(status) ;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int
 | 
			
		||||
atexit(void (*func)(void))
 | 
			
		||||
{
 | 
			
		||||
	if (funccnt >= NEXITS)
 | 
			
		||||
		return 1;
 | 
			
		||||
	functab[funccnt++] = func;
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										28
									
								
								lang/cem/libcc.ansi/stdlib/getenv.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								lang/cem/libcc.ansi/stdlib/getenv.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,28 @@
 | 
			
		|||
/*
 | 
			
		||||
 * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
 | 
			
		||||
 * See the copyright notice in the ACK home directory, in the file "Copyright".
 | 
			
		||||
 */
 | 
			
		||||
/* $Header$ */
 | 
			
		||||
 | 
			
		||||
#include	<stdlib.h>
 | 
			
		||||
 | 
			
		||||
extern char **environ;
 | 
			
		||||
 | 
			
		||||
char *
 | 
			
		||||
getenv(const char *name)
 | 
			
		||||
{
 | 
			
		||||
	register char **v = environ;
 | 
			
		||||
	register char *p, *q;
 | 
			
		||||
 | 
			
		||||
	if (v == (char **)NULL || name == (char *)NULL)
 | 
			
		||||
		return (char *)NULL;
 | 
			
		||||
	while ((p = *v++) != (char *)NULL) {
 | 
			
		||||
		q = name;
 | 
			
		||||
		while (*q && (*q++ == *p++))
 | 
			
		||||
			/* EMPTY */ ;
 | 
			
		||||
		if (*q || (*p != '='))
 | 
			
		||||
			continue;
 | 
			
		||||
		return(p+1);
 | 
			
		||||
	}
 | 
			
		||||
	return((char *)NULL);
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										13
									
								
								lang/cem/libcc.ansi/stdlib/labs.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								lang/cem/libcc.ansi/stdlib/labs.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,13 @@
 | 
			
		|||
/*
 | 
			
		||||
 * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
 | 
			
		||||
 * See the copyright notice in the ACK home directory, in the file "Copyright".
 | 
			
		||||
 */
 | 
			
		||||
/* $Header$ */
 | 
			
		||||
 | 
			
		||||
#include	<stdlib.h>
 | 
			
		||||
 | 
			
		||||
long
 | 
			
		||||
labs(register long l)
 | 
			
		||||
{
 | 
			
		||||
	return l >= 0 ? l : -l;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										17
									
								
								lang/cem/libcc.ansi/stdlib/ldiv.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								lang/cem/libcc.ansi/stdlib/ldiv.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,17 @@
 | 
			
		|||
/*
 | 
			
		||||
 * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
 | 
			
		||||
 * See the copyright notice in the ACK home directory, in the file "Copyright".
 | 
			
		||||
 */
 | 
			
		||||
/* $Header$ */
 | 
			
		||||
 | 
			
		||||
#include	<stdlib.h>
 | 
			
		||||
 | 
			
		||||
ldiv_t
 | 
			
		||||
ldiv(register long numer, register long denom)
 | 
			
		||||
{
 | 
			
		||||
	ldiv_t r;
 | 
			
		||||
 | 
			
		||||
	r.quot = numer / denom;
 | 
			
		||||
	r.rem = numer % denom;
 | 
			
		||||
	return r;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										127
									
								
								lang/cem/libcc.ansi/stdlib/malloc.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										127
									
								
								lang/cem/libcc.ansi/stdlib/malloc.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,127 @@
 | 
			
		|||
/*
 | 
			
		||||
 * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
 | 
			
		||||
 * See the copyright notice in the ACK home directory, in the file "Copyright".
 | 
			
		||||
 */
 | 
			
		||||
/* $Header$ */
 | 
			
		||||
 | 
			
		||||
#include	<stdlib.h>
 | 
			
		||||
 | 
			
		||||
#define	CLICK_SIZE	4096
 | 
			
		||||
 | 
			
		||||
#if	EM_WSIZE == EM_PSIZE
 | 
			
		||||
typedef unsigned int vir_bytes;
 | 
			
		||||
#else
 | 
			
		||||
typedef long vir_bytes;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define ALIGN(x, a)	(((x) + (a - 1)) & ~(a - 1))
 | 
			
		||||
#define BUSY		1
 | 
			
		||||
#define NEXT(p)		(* (void **) (p))
 | 
			
		||||
 | 
			
		||||
#ifdef pdp
 | 
			
		||||
#define BUGFIX	64	/* cannot set break in top 64 bytes */
 | 
			
		||||
#else
 | 
			
		||||
#define BUGFIX	0
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
extern void bcopy(void *, void *, size_t);
 | 
			
		||||
extern void *sbrk(unsigned int);
 | 
			
		||||
extern void *brk(unsigned int);
 | 
			
		||||
static void *bottom, *top;
 | 
			
		||||
 | 
			
		||||
static int
 | 
			
		||||
grow(size_t len)
 | 
			
		||||
{
 | 
			
		||||
	register void *p;
 | 
			
		||||
	register int click = CLICK_SIZE;
 | 
			
		||||
 | 
			
		||||
	p = sbrk(0);
 | 
			
		||||
	len += (void *) ALIGN((vir_bytes) p, sizeof(void *)) - p;
 | 
			
		||||
	while (click >= 4) {
 | 
			
		||||
		size_t len1 = ALIGN((vir_bytes)p+len+sizeof(char *),click)-(vir_bytes)p;
 | 
			
		||||
		void *p1 = p;
 | 
			
		||||
 | 
			
		||||
		if (p + len1 + BUGFIX < p || (p1 = sbrk(len1)) == (void *) -1) {
 | 
			
		||||
			click >>= 1;
 | 
			
		||||
			continue;
 | 
			
		||||
		}
 | 
			
		||||
		p = p1;
 | 
			
		||||
		if (top + sizeof(void *) != p) {
 | 
			
		||||
			/* someone else has done an sbrk */
 | 
			
		||||
			NEXT(top) = (void *) ((vir_bytes) p | BUSY);
 | 
			
		||||
		} else {
 | 
			
		||||
			for (p = bottom; NEXT(p) != NULL; p = (void *) (* (vir_bytes *) p & ~BUSY))
 | 
			
		||||
				;
 | 
			
		||||
		}
 | 
			
		||||
		top = p + len1 - sizeof(void *);
 | 
			
		||||
		NEXT(p) = top;
 | 
			
		||||
		NEXT(top) = NULL;
 | 
			
		||||
		return 1;
 | 
			
		||||
	}
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void *
 | 
			
		||||
malloc(size_t size)
 | 
			
		||||
{
 | 
			
		||||
	register void *p, *next, *new;
 | 
			
		||||
	register size_t len = ALIGN(size, sizeof(void *)) + sizeof(void *);
 | 
			
		||||
 | 
			
		||||
	if ((p = bottom) == NULL) {
 | 
			
		||||
		p = sbrk(sizeof(void *));
 | 
			
		||||
		sbrk((void *) ALIGN((vir_bytes) p, sizeof(void *)) - p);
 | 
			
		||||
		p = (void *) ALIGN((vir_bytes) p, sizeof(void *));
 | 
			
		||||
		top = bottom = p;
 | 
			
		||||
		NEXT(p) = NULL;
 | 
			
		||||
	}
 | 
			
		||||
	while ((next = NEXT(p)) != NULL)
 | 
			
		||||
		if ((vir_bytes) next & BUSY)		/* already in use */
 | 
			
		||||
			p = (void *) ((vir_bytes) next & ~BUSY);
 | 
			
		||||
		else {
 | 
			
		||||
			while ((new = NEXT(next)) != NULL
 | 
			
		||||
				&& !((vir_bytes) new & BUSY))
 | 
			
		||||
			    next = new;
 | 
			
		||||
			if (next - p >= len) {			/* fits */
 | 
			
		||||
				if ((new = p + len) < next)	/* too big */
 | 
			
		||||
					NEXT(new) = next;
 | 
			
		||||
				NEXT(p) = (void *) ((vir_bytes) new | BUSY);
 | 
			
		||||
				return(p + sizeof(void *));
 | 
			
		||||
			}
 | 
			
		||||
			p = next;
 | 
			
		||||
		}
 | 
			
		||||
	return grow(len) ? malloc(size) : (void *)NULL;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void *
 | 
			
		||||
realloc(void *old, size_t size)
 | 
			
		||||
{
 | 
			
		||||
	register void *p = old - sizeof(void *), *next, *new;
 | 
			
		||||
	register size_t len = ALIGN(size, sizeof(void *)) + sizeof(void *), n;
 | 
			
		||||
 | 
			
		||||
	next = (void *) (* (vir_bytes *) p & ~BUSY);
 | 
			
		||||
	n = next - old;					/* old size */
 | 
			
		||||
	while ((new = NEXT(next)) != NULL && !((vir_bytes) new & BUSY))
 | 
			
		||||
		next = new;
 | 
			
		||||
	if (next - p >= len) {				/* does it still fit */
 | 
			
		||||
		if ((new = p + len) < next) {		/* even too big */
 | 
			
		||||
			NEXT(new) = next;
 | 
			
		||||
			NEXT(p) = (void *) ((vir_bytes) new | BUSY);
 | 
			
		||||
		}
 | 
			
		||||
		else
 | 
			
		||||
			NEXT(p) = (void *) ((vir_bytes) next | BUSY);
 | 
			
		||||
		return(old);
 | 
			
		||||
	}
 | 
			
		||||
	if ((new = malloc(size)) == NULL)		/* it didn't fit */
 | 
			
		||||
		return((void *)NULL);
 | 
			
		||||
	bcopy(old, new, n);				/* n < size */
 | 
			
		||||
	* (vir_bytes *) p &= ~BUSY;
 | 
			
		||||
	return(new);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
free(void *p)
 | 
			
		||||
{
 | 
			
		||||
	if (p != (void *)NULL)
 | 
			
		||||
		*(vir_bytes *) (p - sizeof(void *)) &= ~BUSY;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										20
									
								
								lang/cem/libcc.ansi/stdlib/mblen.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								lang/cem/libcc.ansi/stdlib/mblen.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,20 @@
 | 
			
		|||
/*
 | 
			
		||||
 * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
 | 
			
		||||
 * See the copyright notice in the ACK home directory, in the file "Copyright".
 | 
			
		||||
 */
 | 
			
		||||
/* $Header$ */
 | 
			
		||||
 | 
			
		||||
#include	<stdlib.h>
 | 
			
		||||
#include	<limits.h>
 | 
			
		||||
 | 
			
		||||
int
 | 
			
		||||
mblen(const char *s, size_t n)
 | 
			
		||||
{
 | 
			
		||||
	if (s == (char *)NULL)
 | 
			
		||||
		return 0;
 | 
			
		||||
	if (*s == '\0')
 | 
			
		||||
		return 0;
 | 
			
		||||
	if (n < 1 || n > MB_CUR_MAX)
 | 
			
		||||
		return -1;
 | 
			
		||||
	return MB_LEN_MAX;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										24
									
								
								lang/cem/libcc.ansi/stdlib/mbstowcs.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								lang/cem/libcc.ansi/stdlib/mbstowcs.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,24 @@
 | 
			
		|||
/*
 | 
			
		||||
 * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
 | 
			
		||||
 * See the copyright notice in the ACK home directory, in the file "Copyright".
 | 
			
		||||
 */
 | 
			
		||||
/* $Header$ */
 | 
			
		||||
 | 
			
		||||
#include	<stdlib.h>
 | 
			
		||||
#include	<locale.h>
 | 
			
		||||
#include	<limits.h>
 | 
			
		||||
 | 
			
		||||
size_t
 | 
			
		||||
mbstowcs(register wchar_t *pwcs, register const char *s, size_t n)
 | 
			
		||||
{
 | 
			
		||||
	register int i = 0;
 | 
			
		||||
 | 
			
		||||
	while (i < n) {
 | 
			
		||||
		i++;
 | 
			
		||||
		*pwcs++ = *s++;
 | 
			
		||||
		if (*s == '\0')
 | 
			
		||||
			return i;
 | 
			
		||||
	}
 | 
			
		||||
	return n;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										22
									
								
								lang/cem/libcc.ansi/stdlib/mbtowc.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								lang/cem/libcc.ansi/stdlib/mbtowc.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,22 @@
 | 
			
		|||
/*
 | 
			
		||||
 * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
 | 
			
		||||
 * See the copyright notice in the ACK home directory, in the file "Copyright".
 | 
			
		||||
 */
 | 
			
		||||
/* $Header$ */
 | 
			
		||||
 | 
			
		||||
#include	<stdlib.h>
 | 
			
		||||
#include	<limits.h>
 | 
			
		||||
 | 
			
		||||
int
 | 
			
		||||
mbtowc(register wchar_t *pwc, register const char *s, size_t n)
 | 
			
		||||
{
 | 
			
		||||
	if (s == (char *)NULL)
 | 
			
		||||
		return 0;
 | 
			
		||||
	if (*s == '\0')
 | 
			
		||||
		return 0;
 | 
			
		||||
	if (n < 1 || n > MB_CUR_MAX)
 | 
			
		||||
		return -1;
 | 
			
		||||
	if (pwc != (wchar_t *)NULL)
 | 
			
		||||
		*pwc = *s;
 | 
			
		||||
	return MB_CUR_MAX;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										137
									
								
								lang/cem/libcc.ansi/stdlib/qsort.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										137
									
								
								lang/cem/libcc.ansi/stdlib/qsort.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,137 @@
 | 
			
		|||
/*
 | 
			
		||||
 * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
 | 
			
		||||
 * See the copyright notice in the ACK home directory, in the file "Copyright".
 | 
			
		||||
 */
 | 
			
		||||
/* $Header$ */
 | 
			
		||||
 | 
			
		||||
#include	<stdlib.h>
 | 
			
		||||
 | 
			
		||||
static	void qsort1(void *, void *, size_t);
 | 
			
		||||
static	int (*qcompar)(const void *, const void *);
 | 
			
		||||
static	void qexchange(void *, void *, size_t);
 | 
			
		||||
static	void q3exchange(void *, void *, void *, size_t);
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
qsort(void *base, size_t nel, size_t width,
 | 
			
		||||
      int (*compar)(const void *, const void *))
 | 
			
		||||
{
 | 
			
		||||
	qcompar = compar;
 | 
			
		||||
	qsort1(base, base + (nel - 1) * width, width);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
qsort1(void *a1, void *a2, register size_t width)
 | 
			
		||||
{
 | 
			
		||||
	register const void *left, *right;
 | 
			
		||||
	register const void *lefteq, *righteq;
 | 
			
		||||
	int cmp;
 | 
			
		||||
 | 
			
		||||
	for (;;) {
 | 
			
		||||
		if (a2 <= a1) return;
 | 
			
		||||
		left = a1;
 | 
			
		||||
		right = a2;
 | 
			
		||||
		lefteq = righteq = a1 + width * (((a2-a1)+width)/(2*width));
 | 
			
		||||
		/*
 | 
			
		||||
		   Pick an element in the middle of the array.
 | 
			
		||||
		   We will collect the equals around it.
 | 
			
		||||
		   "lefteq" and "righteq" indicate the left and right
 | 
			
		||||
		   bounds of the equals respectively.
 | 
			
		||||
		   Smaller elements end up left of it, larger elements end
 | 
			
		||||
		   up right of it.
 | 
			
		||||
		*/
 | 
			
		||||
again:
 | 
			
		||||
		while (left < lefteq && (cmp = (*qcompar)(left, lefteq)) <= 0) {
 | 
			
		||||
			if (cmp < 0) {
 | 
			
		||||
				/* leave it where it is */
 | 
			
		||||
				left += width;
 | 
			
		||||
			}
 | 
			
		||||
			else {
 | 
			
		||||
				/* equal, so exchange with the element to
 | 
			
		||||
				   the left of the "equal"-interval.
 | 
			
		||||
				*/
 | 
			
		||||
				lefteq -= width;
 | 
			
		||||
				qexchange(left, lefteq, width);
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		while (right > righteq) {
 | 
			
		||||
			if ((cmp = (*qcompar)(right, righteq)) < 0) {
 | 
			
		||||
				/* smaller, should go to left part
 | 
			
		||||
				*/
 | 
			
		||||
				if (left < lefteq) {
 | 
			
		||||
					/* yes, we had a larger one at the
 | 
			
		||||
					   left, so we can just exchange
 | 
			
		||||
					*/
 | 
			
		||||
					qexchange(left, right, width);
 | 
			
		||||
					left += width;
 | 
			
		||||
					right -= width;
 | 
			
		||||
					goto again;
 | 
			
		||||
				}
 | 
			
		||||
				/* no more room at the left part, so we
 | 
			
		||||
				   move the "equal-interval" one place to the
 | 
			
		||||
				   right, and the smaller element to the
 | 
			
		||||
				   left of it.
 | 
			
		||||
				   This is best expressed as a three-way
 | 
			
		||||
				   exchange.
 | 
			
		||||
				*/
 | 
			
		||||
				righteq += width;
 | 
			
		||||
				q3exchange(left, righteq, right, width);
 | 
			
		||||
				lefteq += width;
 | 
			
		||||
				left = lefteq;
 | 
			
		||||
			}
 | 
			
		||||
			else if (cmp == 0) {
 | 
			
		||||
				/* equal, so exchange with the element to
 | 
			
		||||
				   the right of the "equal-interval"
 | 
			
		||||
				*/
 | 
			
		||||
				righteq += width;
 | 
			
		||||
				qexchange(right, righteq, width);
 | 
			
		||||
			}
 | 
			
		||||
			else	/* just leave it */ right -= width;
 | 
			
		||||
		}
 | 
			
		||||
		if (left < lefteq) {
 | 
			
		||||
			/* larger element to the left, but no more room,
 | 
			
		||||
			   so move the "equal-interval" one place to the
 | 
			
		||||
			   left, and the larger element to the right
 | 
			
		||||
			   of it.
 | 
			
		||||
			*/
 | 
			
		||||
			lefteq -= width;
 | 
			
		||||
			q3exchange(right, lefteq, left, width);
 | 
			
		||||
			righteq -= width;
 | 
			
		||||
			right = righteq;
 | 
			
		||||
			goto again;
 | 
			
		||||
		}
 | 
			
		||||
		/* now sort the "smaller" part */
 | 
			
		||||
		qsort1(a1, lefteq - width, width);
 | 
			
		||||
		/* and now the larger, saving a subroutine call
 | 
			
		||||
		   because of the for(;;)
 | 
			
		||||
		*/
 | 
			
		||||
		a1 = righteq + width;
 | 
			
		||||
	}
 | 
			
		||||
	/*NOTREACHED*/
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
qexchange(register void *p, register void *q,
 | 
			
		||||
	  register size_t n)
 | 
			
		||||
{
 | 
			
		||||
	register int c;
 | 
			
		||||
 | 
			
		||||
	while (n-- > 0) {
 | 
			
		||||
		c = *p;
 | 
			
		||||
		*p++ = *q;
 | 
			
		||||
		*q++ = c;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
q3exchange(register void *p, register void *q, register void *r,
 | 
			
		||||
	   register size_t n)
 | 
			
		||||
{
 | 
			
		||||
	register int c;
 | 
			
		||||
 | 
			
		||||
	while (n-- > 0) {
 | 
			
		||||
		c = *p;
 | 
			
		||||
		*p++ = *r;
 | 
			
		||||
		*r++ = *q;
 | 
			
		||||
		*q++ = c;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										20
									
								
								lang/cem/libcc.ansi/stdlib/rand.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								lang/cem/libcc.ansi/stdlib/rand.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,20 @@
 | 
			
		|||
/*
 | 
			
		||||
 * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
 | 
			
		||||
 * See the copyright notice in the ACK home directory, in the file "Copyright".
 | 
			
		||||
 */
 | 
			
		||||
/* $Header$ */
 | 
			
		||||
 | 
			
		||||
#include	<stdlib.h>
 | 
			
		||||
 | 
			
		||||
static unsigned long int next = 1;
 | 
			
		||||
 | 
			
		||||
int rand(void)
 | 
			
		||||
{
 | 
			
		||||
	next = next * 1103515245 + 12345;
 | 
			
		||||
	return((unsigned int)(next/(2 * (RAND_MAX +1)) % (RAND_MAX+1));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void srand(unsigned int seed)
 | 
			
		||||
{
 | 
			
		||||
	next = seed;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										103
									
								
								lang/cem/libcc.ansi/stdlib/strtod.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										103
									
								
								lang/cem/libcc.ansi/stdlib/strtod.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,103 @@
 | 
			
		|||
/*
 | 
			
		||||
 * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
 | 
			
		||||
 * See the copyright notice in the ACK home directory, in the file "Copyright".
 | 
			
		||||
 */
 | 
			
		||||
/* $Header$ */
 | 
			
		||||
 | 
			
		||||
#ifndef	NOFLOAT
 | 
			
		||||
#include	<ctype.h>
 | 
			
		||||
#include	<limits.h>
 | 
			
		||||
#include	<math.h>
 | 
			
		||||
#include	<stdlib.h>
 | 
			
		||||
 | 
			
		||||
#define	MAX	(LONG_MAX/10)
 | 
			
		||||
 | 
			
		||||
double
 | 
			
		||||
strtod(register const char *p, register char **pp)
 | 
			
		||||
{
 | 
			
		||||
	register int c;
 | 
			
		||||
	int exp = 0, sign = 1, expsign = 0;
 | 
			
		||||
	double fl;
 | 
			
		||||
	long lowl = 0, highl = 0, pos = 1;
 | 
			
		||||
	int dotseen = 0;
 | 
			
		||||
	int digit_seen = 0;
 | 
			
		||||
 | 
			
		||||
	if (pp) *pp = p;
 | 
			
		||||
	while (isspace(*p)) p++;
 | 
			
		||||
	c = *p;
 | 
			
		||||
 | 
			
		||||
	switch (c) {
 | 
			
		||||
	case '-':
 | 
			
		||||
		sign = -1;
 | 
			
		||||
		/* fallthrough */
 | 
			
		||||
	case '+': 
 | 
			
		||||
		p++;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	while (isdigit(c = *p++) || (c == '.' && ! dotseen++)) {
 | 
			
		||||
		if (c == '.') continue;
 | 
			
		||||
		digit_seen = 1;
 | 
			
		||||
		if (highl < MAX) {
 | 
			
		||||
			highl = (highl << 3) + (highl << 1) + (c - '0');
 | 
			
		||||
		}
 | 
			
		||||
		else if (pos < MAX) {
 | 
			
		||||
			pos = (pos << 3) + (pos << 1);
 | 
			
		||||
			lowl = (lowl << 3) + (lowl << 1) + (c - '0');
 | 
			
		||||
		}
 | 
			
		||||
		else exp++;
 | 
			
		||||
		if (dotseen) exp--;
 | 
			
		||||
	}
 | 
			
		||||
	if (! digit_seen) return 0.0;
 | 
			
		||||
	fl = highl;
 | 
			
		||||
	if (pos > 1) {
 | 
			
		||||
		fl = pos * fl + lowl;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (pp) *pp = p-1;
 | 
			
		||||
 | 
			
		||||
	if (c == 'E' || c == 'e') {
 | 
			
		||||
		int exp1 = 0;
 | 
			
		||||
		int sign = 1;
 | 
			
		||||
 | 
			
		||||
		switch (*p) {
 | 
			
		||||
		case '-':
 | 
			
		||||
			sign = -1;
 | 
			
		||||
			/* fallthrough */
 | 
			
		||||
		case '+':
 | 
			
		||||
			p++;
 | 
			
		||||
		}
 | 
			
		||||
		if (isdigit(c = *p)) {
 | 
			
		||||
			do {
 | 
			
		||||
				exp1 = 10 * exp1 + c - '0';
 | 
			
		||||
			} while (isdigit(c = *++p));
 | 
			
		||||
			if (pp) *pp = p;
 | 
			
		||||
		}
 | 
			
		||||
		exp += sign * exp1;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (fl == 0.0) return 0.0;
 | 
			
		||||
 | 
			
		||||
	if (exp < 0) {
 | 
			
		||||
		expsign = 1;
 | 
			
		||||
		exp = -exp;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (exp != 0) {
 | 
			
		||||
                int oldexp = exp;
 | 
			
		||||
                double exp5 = 5.0;
 | 
			
		||||
                double correction = 1.0;
 | 
			
		||||
 
 | 
			
		||||
                while (exp) {
 | 
			
		||||
                        if (exp % 2) correction *= exp5;
 | 
			
		||||
                        exp /= 2;
 | 
			
		||||
                        if (exp != 0) exp5 *= exp5;
 | 
			
		||||
                }
 | 
			
		||||
                if (expsign) fl = fl / correction;
 | 
			
		||||
                else    fl = fl * correction;
 | 
			
		||||
 
 | 
			
		||||
                fl = ldexp(fl, expsign ? -oldexp : oldexp);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return sign * fl;
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
							
								
								
									
										53
									
								
								lang/cem/libcc.ansi/stdlib/strtol.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								lang/cem/libcc.ansi/stdlib/strtol.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,53 @@
 | 
			
		|||
/*
 | 
			
		||||
 * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
 | 
			
		||||
 * See the copyright notice in the ACK home directory, in the file "Copyright".
 | 
			
		||||
 */
 | 
			
		||||
/* $Header$ */
 | 
			
		||||
 | 
			
		||||
#include	<stdlib.h>
 | 
			
		||||
#include	<ctype.h>
 | 
			
		||||
 | 
			
		||||
long int
 | 
			
		||||
strtol(register const char *p, char **pp, int base)
 | 
			
		||||
{
 | 
			
		||||
	register long val, v;
 | 
			
		||||
	register int c;
 | 
			
		||||
	int sign = 1;
 | 
			
		||||
 | 
			
		||||
	if (pp) *pp = p;
 | 
			
		||||
	while (isspace(*p)) p++;
 | 
			
		||||
	c = *p;
 | 
			
		||||
 | 
			
		||||
	switch (c) {
 | 
			
		||||
	case '-':
 | 
			
		||||
		sign = -1;
 | 
			
		||||
		/* fallthrough */
 | 
			
		||||
	case '+':
 | 
			
		||||
		p++;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/* this is bizare */
 | 
			
		||||
	if (base==16 && *p=='0' && (*(p+1)=='x' || *(p+1)=='X'))
 | 
			
		||||
		p += 2;
 | 
			
		||||
 | 
			
		||||
	while (isdigit(c = *p++) || isalpha(c)) {
 | 
			
		||||
		if (isalpha(c))
 | 
			
		||||
			v = 10 + (isupper(c) ? c - 'A' : c - 'a');
 | 
			
		||||
		else
 | 
			
		||||
			v = c - '0';
 | 
			
		||||
		if (v >= base) {
 | 
			
		||||
			p--;
 | 
			
		||||
			break;
 | 
			
		||||
		}
 | 
			
		||||
		val = (val * base) + v;
 | 
			
		||||
	}
 | 
			
		||||
	if (pp) *pp = p-1;
 | 
			
		||||
	return sign * val;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
unsigned long int
 | 
			
		||||
strtoul(register const char *p, char **pp, int base)
 | 
			
		||||
{
 | 
			
		||||
	return (unsigned long)strtol(p, pp, base);
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										47
									
								
								lang/cem/libcc.ansi/stdlib/system.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								lang/cem/libcc.ansi/stdlib/system.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,47 @@
 | 
			
		|||
/*
 | 
			
		||||
 * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
 | 
			
		||||
 * See the copyright notice in the ACK home directory, in the file "Copyright".
 | 
			
		||||
 */
 | 
			
		||||
/* $Header$ */
 | 
			
		||||
 | 
			
		||||
#include	<stdlib.h>
 | 
			
		||||
#include	<signal.h>
 | 
			
		||||
 | 
			
		||||
extern int fork(void);
 | 
			
		||||
extern int wait(int *);
 | 
			
		||||
extern void _exit(int);
 | 
			
		||||
extern void execl(char *, ...);
 | 
			
		||||
extern void close(int);
 | 
			
		||||
 | 
			
		||||
#define	FAIL	127
 | 
			
		||||
 | 
			
		||||
int
 | 
			
		||||
system(const char *str)
 | 
			
		||||
{
 | 
			
		||||
	int pid, exitstatus, waitval;
 | 
			
		||||
	int i;
 | 
			
		||||
 | 
			
		||||
	if ((pid = fork()) < 0) return str ? -1 : 0;
 | 
			
		||||
 | 
			
		||||
	if (pid == 0) {
 | 
			
		||||
		for (i = 3; i <= 20; i++)
 | 
			
		||||
			close(i);
 | 
			
		||||
		if (!str) str = "cd .";		/* just testing for a shell */
 | 
			
		||||
		execl("/bin/sh", "sh", "-c", str, (char *) NULL);
 | 
			
		||||
		/* get here if execl fails ... */
 | 
			
		||||
		_exit(FAIL);	/* see manual page */
 | 
			
		||||
	}
 | 
			
		||||
	while ((waitval = wait(&exitstatus)) != pid) {
 | 
			
		||||
		if (waitval == -1) break;
 | 
			
		||||
	}
 | 
			
		||||
	if (waitval == -1) {
 | 
			
		||||
		/* no child ??? or maybe interrupted ??? */
 | 
			
		||||
		exitstatus = -1;
 | 
			
		||||
	}
 | 
			
		||||
	if (!str) {
 | 
			
		||||
		if (exitstatus == FAIL << 8)		/* execl() failed */
 | 
			
		||||
			exitstatus = 0;
 | 
			
		||||
		else exitstatus = 1;			/* /bin/sh exists */
 | 
			
		||||
	}
 | 
			
		||||
	return exitstatus;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										23
									
								
								lang/cem/libcc.ansi/stdlib/wcstombs.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								lang/cem/libcc.ansi/stdlib/wcstombs.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,23 @@
 | 
			
		|||
/*
 | 
			
		||||
 * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
 | 
			
		||||
 * See the copyright notice in the ACK home directory, in the file "Copyright".
 | 
			
		||||
 */
 | 
			
		||||
/* $Header$ */
 | 
			
		||||
 | 
			
		||||
#include	<stdlib.h>
 | 
			
		||||
#include	<locale.h>
 | 
			
		||||
#include	<limits.h>
 | 
			
		||||
 | 
			
		||||
size_t
 | 
			
		||||
wcstombs(register char *s, register const wchar_t *pwcs, size_t n)
 | 
			
		||||
{
 | 
			
		||||
	register int i = 0;
 | 
			
		||||
 | 
			
		||||
	while (i < n) {
 | 
			
		||||
		i++;
 | 
			
		||||
		*s++ = *pwcs++;
 | 
			
		||||
		if (*s == '\0')
 | 
			
		||||
			return i;
 | 
			
		||||
	}
 | 
			
		||||
	return n;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										19
									
								
								lang/cem/libcc.ansi/stdlib/wctomb.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								lang/cem/libcc.ansi/stdlib/wctomb.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,19 @@
 | 
			
		|||
/*
 | 
			
		||||
 * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
 | 
			
		||||
 * See the copyright notice in the ACK home directory, in the file "Copyright".
 | 
			
		||||
 */
 | 
			
		||||
/* $Header$ */
 | 
			
		||||
 | 
			
		||||
#include	<stdlib.h>
 | 
			
		||||
#include	<limits.h>
 | 
			
		||||
 | 
			
		||||
int
 | 
			
		||||
wctomb(char *s, wchar_t wchar)
 | 
			
		||||
{
 | 
			
		||||
	if (s != (char *)NULL) {
 | 
			
		||||
		*s = wchar;
 | 
			
		||||
		return MB_LEN_MAX;
 | 
			
		||||
	} else
 | 
			
		||||
		return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	Add table
		
		Reference in a new issue