errno.h

#ifdef __cplusplus 
extern "C" {
#endif
#ifndef _POSIX_SOURCE
#ifndef H_SCCSID
#include <sccs.h>
#endif /* ! H_SCCSID */
/*
* 5713-AEQ COPYRIGHT IBM CORP 1989
* LICENSED MATERIAL - PROGRAM PROPERTY OF IBM
*/
H_SCCSID(@(#)errno.h	1.12       LCC)    /* Modified: 00:07:54 1/12/90 */

/* H_SCCSIDgen1(@(#)errno.afp.h	1.10	AIX)	/* Modified: 11:33:27 2/21/89 */
#endif /* NOT _POSIX_SOURCE */

/* @(#)errno.h	7.1 - 87/06/16 - 00:09:58 */
/* 
* Copyright (C)  1989, Locus Computing Corporation
 * All Rights Reserved
 */ 
/* 
 * (C) Copyright IBM Corp. 1989 
 * All Rights Reserved 
 * Licensed Materials - Property of IBM 
 */
/*
 * Error codes
 */

#include <sys/errno.h>
extern int errno;
#ifdef __cplusplus 
}
#endif

sys/errno.h

#ifdef __cplusplus 
extern "C" {
#endif
/*
 *		IX/370
 *		5667-126
 *	LICENSED MATERIALS - PROPERTY OF IBM
*	(c) Copyright 1985, 1986, 1989 IBM Corp.
*	(c) Copyright 1983, 1984, 1985, 1986,  1989 Locus Computing Corporation
 *	All Rights Reserved
 */

#ifndef _POSIX_SOURCE
#ifndef H_SCCSID
#include <sccs.h>
#endif /* ~H_SCCSID */
H_SCCSID(@(#)errno.h	16.12       LCC)    /* Modified: 15:12:59 1/16/90 */
#endif /* NOT _POSIX_SOURCE */

#ifndef _H_ERRNO
#define	_H_ERRNO

#ifndef _POSIX_SOURCE
#include <DOPTIONS.h>
#endif /* NOT _POSIX_SOURCE */

/*
 * Error codes
 */

#define	EPERM	1	/* Operation not permitted		*/
#define	ENOENT	2	/* No such file or directory		*/
#define	ESRCH	3	/* No such process			*/
#define	EINTR	4	/* Interrupted system call		*/
#define	EIO	5	/* Input/Output 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 child processes			*/
#define	EAGAIN	11	/* Resource temprarily unavailable	*/

#ifdef _BSD
#define	EWOULDBLOCK EAGAIN	/* for BSD compatibility	*/
#endif /* _BSD */

#define	ENOMEM	12	/* Not enough space			*/
#define	EACCES	13	/* Permission denied			*/
#define	EFAULT	14	/* Bad address				*/
#define	ENOTBLK	15	/* Block device required		*/
#define	EBUSY	16	/* Resource busy			*/
#define	EEXIST	17	/* File exists				*/
#define	EXDEV	18	/* Improper 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	/* Too many open files in system	*/
#define	EMFILE	24	/* Too many open files			*/
#define	ENOTTY	25	/* Inappropriate I/O control operation	*/
#define	ETXTBSY	26	/* Text file busy			*/
#define	EFBIG	27	/* File too large			*/
#define	ENOSPC	28	/* No space left on device		*/
#define	ESPIPE	29	/* Invalid seek				*/
#define	EROFS	30	/* Read only file system		*/
#define	EMLINK	31	/* Too many links			*/
#define	EPIPE	32	/* Broken pipe				*/

/* math software */
#define	EDOM	33	/* Domain error				*/
#define	ERANGE	34	/* Result too large			*/
#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	/* Record locking deadlock		*/

#define ENOTREADY	46	/* Device not ready		*/
#define EWRPROTECT	47	/* Write-protected media 	*/
#define EFORMAT		48	/* Unformatted or incompatible media */
#define ENOLCK		49	/* No locks available		*/
#define ENOCONNECT      50      /* Cannot establish connection  */
#define EBADCONNECT     51      /* Connection down     		*/
#define ESTALE          52      /* Missing file or filesystem   */
#define EDIST           53      /* Requests blocked by Administrator */

/* non-blocking and interrupt i/o */
#ifndef _BSD
#define EWOULDBLOCK	54	/* Operation would block	*/
#endif /* _BSD */
#define EINPROGRESS     55      /* Operation now in progress	*/
#define EALREADY        56      /* Operation already in progress */

/* ipc/network software */

	/* argument errors */
#define ENOTSOCK        57      /* Socket operation on non-socket	*/
#define EDESTADDRREQ    58      /* Destination address required		*/
#define EMSGSIZE        59      /* Message too long			*/
#define EPROTOTYPE      60      /* Protocol wrong type for socket	*/
#define ENOPROTOOPT     61      /* Protocol not available		*/
#define EPROTONOSUPPORT 62      /* Protocol not supported		*/
#define ESOCKTNOSUPPORT 63      /* Socket type not supported		*/
#define EOPNOTSUPP      64      /* Operation not supported on socket	*/
#define EPFNOSUPPORT    65      /* Protocol family not supported 	*/
#define EAFNOSUPPORT    66      /* Address family not supported by protocol */
#define EADDRINUSE      67      /* Address already in use		*/
#define EADDRNOTAVAIL   68      /* Cannot assign requested address 	*/

	/* operational errors */
#define ENETDOWN        69      /* Network is down			*/
#define ENETUNREACH     70      /* Network is unreachable		*/
#define ENETRESET       71      /* Network dropped connection on reset	*/
#define ECONNABORTED    72      /* Software caused connection abort	*/
#define ECONNRESET      73      /* Connection reset by peer		*/
#define ENOBUFS         74      /* No buffer space available		*/
#define EISCONN         75      /* Socket is already connected		*/
#define ENOTCONN        76      /* Socket is not connected		*/
#define ESHUTDOWN       77      /* Cannot send after socket shutdown	*/
#define ETIMEDOUT       78      /* Connection timed out			*/
#define ECONNREFUSED    79      /* Connection refused			*/

#define EHOSTDOWN       80      /* Host is down				*/
#define EHOSTUNREACH    81      /* No route to host			*/

#define ELOOP		85	/* Symbolic link loop			*/

#define ENAMETOOLONG	86	/* File name too long			*/
#ifdef _BSD
#define ENOTEMPTY	EEXIST
#else /* NOT _BSD */
#define	ENOTEMPTY	87	/* Directory not empty */
#endif /* NOT _BSD */

#define	EDQUOT		88	/* Disc quota exceeded			*/

/* errors for System V shared libraries. */
#define	ELIBACC		89	/* Shared library cannot be accessed	*/
#define	ELIBBAD		90	/* Shared library format is bad		*/
#define	ELIBSCN		91	/* .lib section in executable is corrupted */
#define	ELIBMAX		92	/* Too many shared libraries		*/


/* error codes for TCF code */
#define	ESITEDN1	94	/* Required site is not available	*/
#define	ESITEDN2	95	/* Operation terminated due to site failure */
#define	ENOSTORE	96	/* File or working directory is unavailable */
#define	ENLDEV		97	/* Not a local device.			*/
#define	EBADST		98	/* Bad site specification		*/
#define	ELDWRG		99	/* Load module not for this machine	*/
#define	ELOCALONLY	100	/* Operation restricted to local site	*/

#define	ELOCK		101	/* Lock conflict			*/
#define	ETABLE		102	/* Miscellaneous system table full	*/
#define	EXGFS		103	/* Improper mount operation requested	*/

#ifndef _POSIX_SOURCE
#define	EJOURNAL	105	/* Undefined journal operation		*/
#endif	/* NOT _POSIX_SOURCE */

#define	EPBUSY		106	/* Pack is busy				*/

#ifndef _POSIX_SOURCE
#define	ENSPEC		107	/*					*/
#define	EDLOCK		108	/*					*/
#endif	/* NOT _POSIX_SOURCE */

#define ENOSYS		109	/* Function not implemented		*/

#ifdef _KERNEL
/*
 *  The following codes are used only internally by the kernel as return
 *  codes, to be consistent with the fact that the return code in netmsg's
 *  is always the value of u.u_error.
 */

#define RQUOTA		113	/* soft quota limit reached */
#define	RIBUSY		114	/* inode busy (used for propagation in) */
#define	RNOCFLT		115	/* trying to open a specific version when
				 * there is no conflict */
#define	RILOCK		116	/* inode is ILOCKed, and although we have
				 * waited, it has not unlocked.  */
#define	RUNSTABLE	117	/* a configuration change has occurred, and
				 * the new CSS for this gfs is not yet ready
				 * to process opens */
#define	RNOTCSS		118	/* CSS request made at non-CSS site
				 * (for topchg) */
#define	RRMTFRK  	119	/* remote fork problem */
#define	RSLEEP	 	120	/* used for remote sleep wakeup */
#define	RRETRY		121	/* return after remote sleep indicating to 
				 * redo operation */
#define	RWCMIT		122	/* Not doing ss_commit because IWCOMMIT set */
#define	RNOTHERE	123	/* Pid you are looking for is not here and its
				 * whereabouts are unknown (cf. RTRYSITE) */
#define	RTRYSITE	124	/* Your pid's not here; try over yonder */
#define	RDELAYED	125	/* Delayed response will follow later	*/
#define	RPIPEMP		126	/* on fifo reads -- tells reader to sleep. */
#define RNFS		127	/* operation failed, NFS requires special att.*/
#define	RBNDELAY	128	/* operation w/NDELAY would have blocked */

#define RNFSFLOW	129     /* tcf retry nfs operation later */
#define MAXERR		129	/* Largest currently used error number */

	/* old names for temporary compatability */
#define	EUNSTABLE	RUNSTABLE
#define	ENOCFLT		RNOCFLT
#define	ENOTCSS		RNOTCSS
#define	EIBUSY		RIBUSY
#define	EILOCK		RILOCK

/* classify error numbers */
#define	ERR_NORM	1	/* can occur without any "real" error	*/
#define	ERR_PDEP	2	/* permanent, site dependent error	*/
#define	ERR_TDEP	3	/* temporary, site dependent error	*/
#define	ERR_TIND	4	/* temporary, site independent error	*/
#define	ERR_PIND	5	/* permanent, site independent error	*/
#define	ERR_DEFAULT	6	/* unexpected error, complain		*/
#define	ERR_RETRY	7	/* transient error, retry operation	*/

#endif	/* _KERNEL */

#endif	/* NOT _H_ERRNO */
#ifdef __cplusplus 
        void perror(const char*);
        extern int sys_nerr;
        extern char *sys_errlist[];
}
#endif

sys/signal.h

#ifdef __cplusplus
extern "C" {
#endif
#ifndef _POSIX_SOURCE
#ifndef H_SCCSID
#include <sccs.h>
#endif /* ! H_SCCSID */
H_SCCSID(@(#)signal.h	16.21	AIX)	/* Modified 6/26/91 21:47:02 */
#endif /* NOT _POSIX_SOURCE */
/*
* 5713-AEQ COPYRIGHT IBM CORP 1989
* LICENSED MATERIAL - PROGRAM PROPERTY OF IBM
*/


#ifndef _H_SIGNAL  /* else we've already been included */
#define _H_SIGNAL

#include <sys/scontext.h>

/**********************************************************************
  SIGNAL NUMBERS
**********************************************************************/

#ifndef _POSIX_SOURCE
#define NSIG _NSIG
#endif /* ! _POSIX_SOURCE */

#define SIGHUP	1	/* hangup */
#define SIGINT	2	/* interrupt (probably user typed intr key) */
#define SIGQUIT	3	/* quit */
#define SIGILL	4	/* illegal instruction */
#define SIGTRAP	5	/* trace trap */

#ifndef _POSIX_SOURCE
#define SIGIOT	6	/* IOT instruction */
#endif	/* NOT _POSIX_SOURCE */

#define SIGABRT	6	/* used by abort, replacing old IOT in the future */
#define SIGEMT	7	/* EMT instruction */
#define SIGFPE	8	/* floating point exception */
#define SIGKILL	9	/* kill (may not be caught, blocked, or ignored) */
#define SIGBUS	10	/* bus error */
#define SIGSEGV	11	/* segmentation violation (bad access to data) */
#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 */
/* signal 16 is also used by BSD in the vtrace system call */
#define SIGURG	16	/* urgent condition on IO channel */
#define SIGSTOP	17	/* stop (may not be caught, blocked, or ignored) */
#define SIGTSTP	18	/* interactive stop signal from TTY */
#define SIGCONT	19	/* continue if stopped (may not be ignored) */
#define SIGCHLD	20	/* A child has stopped or exited */

#ifndef _POSIX_SOURCE
#define SIGCLD	20	/* death of a child, Sys V style */
#endif	/* NOT _POSIX_SOURCE */

#define SIGTTIN	21	/* Read of control TTY attempted from background */
#define SIGTTOU	22	/* Write to control TTY attempted from background */
#define SIGIO	23	/* input/output possible or complete */

#ifndef _POSIX_SOURCE
#define SIGPOLL	SIGIO	/* selectable event pending (like SIGIO) */
#endif	/* NOT _POSIX_SOURCE */

#define SIGXCPU	24	/* exceeded CPU time limit */
#define SIGXFSZ	25	/* exceeded file size limit */

/* signal 26 reserved */

#define SIGMSG	27	/* HFT input data pending */
#define SIGWINCH 28	/* window size change */
#define SIGPWR	29	/* power failure imminent (save your data) */
#define SIGUSR1	30	/* user defined signal 1 */
#define SIGUSR2	31	/* user defined signal 2 */
#define SIGPROF	32	/* profiling time alarm */
#define SIGDANGER 33	/* system crash imminent */
#define SIGVTALRM 34	/* virtual time alarm */
#define SIGMIGRATE 35	/* migrate process to another CPU */
#define SIGPRE	36	/* programming error */

/* signals 37-59 reserved */

#define SIGGRANT 60	/* HFT monitor mode granted */
#define SIGRETRACT 61	/* HFT monitor mode retracted */
#define SIGSOUND 62	/* HFT sound sequence has completed */

/* signal 63 reserved */

#ifndef _POSIX_SOURCE
#define SIGAIO SIGIO	/* compatibility */
#define SIGIOINT SIGIO
#define SIGPTY SIGIO
#endif	/* NOT _POSIX_SOURCE */

/**********************************************************************
  COMPATIBILITY ASSISTANCE
**********************************************************************/


#if defined(_BSD) || defined(__RT) || defined(_KERNEL)
#define __SIGVOID int
#else /* new AIX */
#define __SIGVOID void
#endif	/* _BSD or __RT or _KERNEL */


/**********************************************************************
  SIGACTION STUFF
**********************************************************************/

#ifndef _POSIX_SOURCE
#define	SIGSETSZ	_SIGSETSZ
#endif

struct sigaction {		/* signal handlers are specified thus */
	__SIGVOID (*sa_handler)();
	int sa_flags;
	sigset_t sa_mask;
};


#ifndef _POSIX_SOURCE
				/*=== flag bits for sa_flags ===*/
#define SA_ONSTACK	0x1	/* handle signal on alternate stack */
#define SA_OLDSTYLE	0x2	/* reset handler, don't block while handling */
#define SA_RESTART	0x4	/* restart slow syscalls interrupted by sig */

#endif /* NOT _POSIX_SOURCE */


#define SA_NOCLDSTOP	0x8	/* receive SIGCLD only upon a child's death */
				/*=== sigprocmask() operation codes ===*/
#ifndef _POSIX_SOURCE
#define SA_SIGSETSTYLE 	0x80	/* for the SVR3 compatibility */
#endif /* NOT _POSIX_SOURCE */

#define SIG_BLOCK	0	/* add given signals to list of those blocked */
#define SIG_UNBLOCK	1	/* remove given signals from blocked list */
#define SIG_SETMASK	2	/* block (prevent delivery of) given signals */

#define SIG_ERR ((__SIGVOID(*)())-1)    /* error from signal() */
#define SIG_DFL ((__SIGVOID (*)())0)	/* default action */
#define SIG_IGN ((__SIGVOID (*)())1)	/* ignore signal */

#ifndef _POSIX_SOURCE
#define BADSIG  SIG_ERR
#endif /* NOT _POSIX_SOURCE */

#ifndef _KERNEL   /* ::::::::::::::::::::::::::::::::::::::::::::::::::: */
extern int sigaction(int, struct sigaction*, struct sigaction*), 
	sigprocmask(int, const sigset_t*, sigset*), 
	sigsuspend(sigset_t*);
extern int sigemptyset(sigset_t*), 
	sigaddset(sigset_t*, int), 
	sigdelset(sigset_t*, int), 
	sigfillset(sigset_t*);
extern int sigismember(sigset_t*, int), 
	sigpending(sigset_t*), 
	kill(int, int);


#ifndef _POSIX_SOURCE
extern int sigstack(struct sigstack*, struct sigstack*), 
	sigreturn(); /* applications shouldn't use sigreturn() */

#define siginitset sigemptyset	/* grunt */

#define SV_INTERRUPT 0x800   /* used by bsd compatibility routines */
#define SV_ONSTACK SA_ONSTACK

#define SIG_STK  SA_ONSTACK
#define SIG_STD  SA_OLDSTYLE	/* RT compatible */
#define sv_onstack sv_flags	/* ditto */


struct sigvec {
	__SIGVOID (*sv_handler)();  /* handler routine */
	int sv_mask;          /* mask while in handler */
	int sv_flags;         /* control flags #defined above */
};


extern int sigvec(int, struct sigvec*);        /* BSD/RT compatible sigvec() */
extern int sigblock(int);      /* BSD/RT compatible sigblock() */
extern int sigsetmask(int);    /* BSD/RT compatible sigsetmask() */
extern int sigpause(int);      /* BSD/RT compatible sigpause() */

extern void (*sigset(int, void(*)()))();/* SVR3 compatible sigset() */
extern int sighold(int);     /* SVR3 compatible sighold() */
extern int sigrelse(int);    /* SVR3 compatible sigrelse() */
extern int sigignore(int);   /* SVR3 compatible sigignore() */
extern void SIG_HOLD(); /* special placeholding library routine used
                           when blocking a signal in SVR3 compatible way */

extern __SIGVOID (*signal(int,void(*)()))();   /* BSD or SVR3 compatability interface */

extern int siginterrupt(int, int);  /* BSD43 compatible siginterrupt() */


#define sigmask(m)  (1L << ((m)-1))  /* signal number --> mask for sigblock */

#endif /* NOT _POSIX_SOURCE */

#endif /* NOT _KERNEL ::::::::::::::::::::::::::::::::::::::::::::::::::::: */

/**********************************************************************
  SIGNAL STACK AND HANDLER CONTEXT INFO
**********************************************************************/

/* Structure used in sigstack call.
 */
#ifndef _POSIX_SOURCE
struct	sigstack {
	char	*ss_sp;			/* signal stack pointer */
	int	ss_onstack;		/* current status */
};
#endif /* NOT _POSIX_SOURCE */


#ifndef _POSIX_SOURCE
/*
 * This  #define is for programs using the small signal interface
 * they only know about the element sc_mask, and only know about
 * the first 32 signals
 */
#define sc_mask	sc_smask.sigs[0]



typedef	struct ksigmask {	/* used in u struct */
	 unsigned long sigs[SIGSETSZ];
} ksigmask_t;


#ifdef  _KERNEL

#define	SIGNUMMASK	0377		/* to extract pure signal number */
#define SIGSPERLONG	32		/* number of signals represented */
					/* in a non-extended signal mask */

#undef sigmask
#define sigmask(m)  (1L << ((m)-1))     /* signal number --> mask */


/* u struct doesn't store 'setsize' field of sigset_t, just the mask words;
 * so we use this macro to make copying masks in and out of a sigset_t
 * easier.  ksigmask_t is used in the kernel only.
 *
 * (The various xxxSIGINMASK macros cleverly work with both sigset_t's
 * and ksigmask_t's, thanks to a not-entirely-accidental similarity of
 * field names.)
 */
#define MASKPART(x) (*((ksigmask_t*)((x).sigs)))



/***************************** Compatibility stuff soon to disappear... **/

#define xsigmask_t ksigmask_t
#define lowsigs sigs[0]
#define highsigs sigs[1]


struct sigvec {
	__SIGVOID (*sv_handler)();	/* handler routine */
	long sv_mask;		/* mask while in handler */
	int sv_flags;		/* control flags #defined above */
};


typedef struct xsigvec {	/* compatability, will disappear soon */
	__SIGVOID (*xsv_handler)();
	ksigmask_t xsv_mask;
	int xsv_flags;
} xsigvec_t;


extern int signew2old();
extern int masknew2old();
extern int maskold2new();

/**********************************************************************/

#endif /* _KERNEL */


/*
 * Macros for testing if a signal is set in an extended signal mask,
 * setting a signal in an extended signal mask, and clearing a signal
 * from an extended signal mask.  32 signals fit into a single long.
 *
 * These macros should NOT be used in new application code.  Applications
 * should use the siginitset(), sigaddset(), sigdelset(), sigfillset(),
 * and sigismember() functions.
 *
 * These SIGIN macros could be faster, but have been recoded this way to
 * pass through the metaware compiler without engendering silly and annoying
 * diagnostics about negative shift values in code which is never executed
 * and which could be elided at compile time in most cases (constant signal
 * numbers).
 *
 * Later... on the 386 the compiler was generating very prolix, slow
 * code for these macros, so assembly language kernel library support has
 * been added.  Perhaps we'll do this for other machines too.
 */

#if defined(_I386)  /* || others? */

#define SIGISINMASK(mask,sig)  _siginmask(&MASKPART(mask),(sig))
#define SETSIGINMASK(mask,sig)  _addinmask(&MASKPART(mask),(sig))
#define CLEARSIGINMASK(mask,sig)  _delinmask(&MASKPART(mask),(sig))

#else /* no library support */

#define SIGISINMASK(mask, sig) \
		((mask).sigs[(sig) > 32 ? 1 : 0] & \
			sigmask((sig) > 32 ? ((sig) - 32) : (sig)))

#define SETSIGINMASK(mask, sig) { \
	(mask).sigs[(sig) > 32 ? 1 : 0] |= \
		sigmask((sig) > 32 ? (sig)-32 : (sig)); \
}

#define CLEARSIGINMASK(mask, sig) { \
	(mask).sigs[(sig) > 32 ? 1 : 0] &= \
		~sigmask((sig) > 32 ? (sig)-32 : (sig)); \
}

#endif /* _I386 */


#define INITSIGMASK(mask) { \
	(mask).sigs[0] = 0L; \
	(mask).sigs[1] = 0L; \
}

#define ALLSIGMASK(mask) { \
	(mask).sigs[0]= 0xffffffffL; \
	(mask).sigs[1]= 0xffffffffL; \
}

#define COPYSIGMASK(mask1, mask2) { \
	(mask1).sigs[0] = (mask2).sigs[0]; \
	(mask1).sigs[1] = (mask2).sigs[1]; \
}

#define ANDSIGMASK(mask1, mask2) { \
	(mask1).sigs[0] &= (mask2).sigs[0]; \
	(mask1).sigs[1] &= (mask2).sigs[1]; \
}

#define AND3SIGMASK(mask0, mask1, mask2) { \
	(mask0).sigs[0] = (mask1).sigs[0]  & (mask2).sigs[0]; \
	(mask0).sigs[1] = (mask1).sigs[1] & (mask2).sigs[1]; \
}

#define ORSIGMASK(mask1, mask2) { \
	(mask1).sigs[0] |= (mask2).sigs[0]; \
	(mask1).sigs[1] |= (mask2).sigs[1]; \
}

#define OR3SIGMASK(mask0, mask1, mask2) { \
	(mask0).sigs[0] = (mask1).sigs[0]  | (mask2).sigs[0]; \
	(mask0).sigs[1] = (mask1).sigs[1] | (mask2).sigs[1]; \
}

#define ANDNOTSIGMASK(mask1, mask2) { \
	(mask1).sigs[0] &= ~((mask2).sigs[0]); \
	(mask1).sigs[1] &= ~((mask2).sigs[1]); \
}

#endif /* NOT _POSIX_SOURCE */

#endif /* NOT _H_SIGNAL */
#ifdef __cplusplus
}
#endif

sys/stat.h

#ifdef __cplusplus
extern "C" {
#endif
/*
 *		IX/370
 *		5667-126
 *	LICENSED MATERIALS - PROPERTY OF IBM
 *	(c) Copyright 1985, 1986, 1989 IBM Corp.
 *	(c) Copyright 1983, 1984, 1985, 1986,  1989 Locus Computing Corporation
 *	All Rights Reserved
 */


#ifndef _POSIX_SOURCE
#ifndef H_SCCSID
#include <sccs.h>
#endif /* ~H_SCCSID */
H_SCCSID(@(#)stat.h	16.7       LCC)    /* Modified: 19:52:20 1/11/90 */
#endif /* NOT _POSIX_SOURCE */

#ifndef _H_STAT
#define _H_STAT

#include <sys/types.h>

struct stat
{
	dev_t       st_dev;
	ino_t       st_ino;
	mode_t      st_mode;
	nlink_t     st_nlink;
	u_short_t   st_spare0;
	uid_t       st_uid;
	gid_t       st_gid;
	dev_t       st_rdev;
	off_t       st_size;
	time_t      st_atime;
	u_long_t    st_spare1;
	time_t      st_mtime;
	u_long_t    st_spare2;
	time_t      st_ctime;
	u_long_t    st_spare3;
	u_long_t    st_blksize;
	u_long_t    st_blocks;
	u_long_t    st_gen;
	u_long_t    st_type;
	u_long_t    st_vfs;
	u_long_t    st_flag;
	u_long_t    st_cmtcnt;
	fstore_t    st_fstore;
	u_long_t    st_version;
	siteno_t    st_css;
	siteno_t    st_ss;
	siteno_t    st_rdevsite;
	short       st_spare4;
	long        st_nid;
	uid_t       st_uid_raw;
	gid_t       st_gid_raw;
	u_long_t    st_uid_rev_tag;
	u_long_t    st_gid_rev_tag;
};

#ifndef _POSIX_SOURCE

/*
 * Type definitions
 */
#define	VNON	0
#define VBAD	1
#define VREG	2
#define VDIR	3	
#define VHDIR	4
#define VBLK	5
#define VCHR	6
#define VLNK	7
#define VSOCK	8
#define VFIFO	9
#define	VMPC	10

/*
 * Defines to tell whether or not a file or directory
 * is mounted upon, and whether it is local or remote.
 */
#define	FS_NOFLAG	0x0		/* Clear flag		*/
#define FS_VMP		0x1		/* Virtual mount point	*/
#define FS_REMOTE	0x2		/* Remote file primary copy
					 * not local */
#define FS_MOUNT	FS_VMP
#define FS_SHORT	0x4000

#define STATSIZE \
 (((int)(char *)&(((struct stat *)0)->st_spare4)) + (sizeof(short)))

/*
 * Definitions for rev_tags
 */
#define	IDTAG_CALLER	1
#define	IDTAG_OTHER	2
#define	IDTAG_SOMEONE	3
#define	IDTAG_NO_ONE	4

#define FULLSTATSIZE \
 (((int)(char *)&(((struct stat *)0)->st_gid_rev_tag)) + (sizeof(u_long)))

#define STX_LINK	0x0001
#define STX_MOUNT	0x0002
#define STX_HIDDEN	0x0004
#define STX_TRANS	0x0000
#define STX_TRANS_NONE	0x0008
#define STX_TRANS_OTHER	0x0010

#endif /* ! _POSIX_SOURCE */

#define	_S_IFMT   0x3000f000	/* type of file */
#define	_S_IFDIR  0x4000	/* directory */
#define S_ISDIR(m) (((m) & (_S_IFMT)) == (_S_IFDIR))
#define	_S_IFCHR  0x2000	/* character special */
#define S_ISCHR(m) (((m) & (_S_IFMT)) == (_S_IFCHR))
#define	_S_IFBLK  0x6000	/* block special */
#define S_ISBLK(m) (((m) & (_S_IFMT)) == (_S_IFBLK))
#define	_S_IFREG  0x8000	/* regular */
#define S_ISREG(m) (((m) & (_S_IFMT)) == (_S_IFREG))
#define	_S_IFIFO  0x1000	/* named pipe */
#define S_ISFIFO(m) (((m) & (_S_IFMT)) == (_S_IFIFO))

#ifndef _POSIX_SOURCE
#define	S_IFMT	_S_IFMT
#define	S_IFDIR	_S_IFDIR
#define	S_IFCHR	_S_IFCHR
#define	S_IFBLK	_S_IFBLK
#define	S_IFREG	_S_IFREG
#define	S_IFIFO	_S_IFIFO

#define	S_IFLNK 0xa000  	/* symbolic link */
#define S_ISLNK(m) (((m) & (S_IFMT)) == (S_IFLNK))
#define S_IFSOCK 0xc000		/* named socket */
#define S_ISSOCK(m) (((m) & (S_IFMT)) == (S_IFSOCK))
#define S_IFMPX (S_IFCHR|S_ISVTX)  /* multiplex character special file */
#define S_ISMPX(m) (((m) & (S_IFMT|S_ISVTX)) == (S_IFMPX))
#define S_IHIDDEN 0x8000000	/* hidden directory */
#define S_ISHIDDEN(m) (((m) & (S_IFMT|S_IHIDDEN)) == (S_IFDIR|S_IHIDDEN))

#endif /* ! _POSIX_SOURCE */


#define	S_ISUID	 04000		/* set user id on execution */
#define	S_ISGID	 02000		/* set group id on execution */

#ifndef _POSIX_SOURCE
#define S_ENFMT  S_ISGID        /* record locking enforcement flag */
#define	S_ISVTX	 01000		/* save swapped text even after use */
#define	S_IREAD	 00400		/* read permission, owner */
#define	S_IWRITE 00200		/* write permission, owner */
#define	S_IEXEC	 00100		/* execute/search permission, owner */

/*  /usr/group definitions  */
#define S_PERM	 00777		/* all permission fields */
#endif /* ! _POSIX_SOURCE */

#define S_IRWXU  00700          /* read,write,execute permission: owner */
#define S_IRUSR  00400          /* read permission: owner */
#define S_IWUSR  00200          /* write permission: owner */
#define S_IXUSR  00100          /* execute/search permission: owner */
#define S_IRWXG  00070          /* read,write,execute permission: group */
#define S_IRGRP  00040          /* read permission: group */
#define S_IWGRP  00020          /* write permission: group */
#define S_IXGRP  00010          /* execute/search permission: group */
#define S_IRWXO  00007          /* read,write,execute permission: other */
#define S_IROTH  00004          /* read permission: other */
#define S_IWOTH  00002          /* write permission: other */
#define S_IXOTH  00001          /* execute/search permission: other */

#ifndef _KERNEL
extern mode_t umask(mode_t);                              
extern int mkdir(const char*, mode_t), 
	mkfifo(const char*, mode_t), 
	stat(const char*, struct stat*), 
	fstat(int, struct stat*), 
	chmod(const char*, mode_t);
#endif	/* !_KERNEL */

#endif /* ~_H_STAT */
#ifdef __cplusplus
}
#endif

sys/ioctl.h

#ifdef __cplusplus
extern "C" {
#endif
/*
 *		IX/370
 *		5667-126
 *	LICENSED MATERIALS - PROPERTY OF IBM
 *	(c) Copyright 1985, 1986, 1989 IBM Corp.
 *	(c) Copyright 1983, 1984, 1985, 1986,  1989 Locus Computing Corporation
 *	All Rights Reserved
 */

#ifndef _POSIX_SOURCE
#ifndef H_SCCSID
#include	<sccs.h>
#endif /* !H_SCCSID */
H_SCCSID(@(#)ioctl.h	1.2    IBM AIX)    /* Modified: 20:01:56 7/15/92 */
#endif /* ! _POSIX_SOURCE */

#ifndef	_H_IOCTL
#define	_H_IOCTL

#ifndef _POSIX_SOURCE

#include <sys/ioctlcmd.h>
#include <sys/types.h>
#include <sgtty.h>

/*
**	Structures definitions for ioctl args
*/

/*	tty control character stuff	*/
struct tchars {
	char	t_intrc;	/* interrupt */
	char	t_quitc;	/* quit */
	char	t_startc;	/* start output */
	char	t_stopc;	/* stop output */
	char	t_eofc;		/* end-of-file */
	char	t_brkc;		/* input delimiter (like nl) */
};
struct ltchars {
	char	t_suspc;	/* stop process signal */
	char	t_dsuspc;	/* delayed stop process signal */
	char	t_rprntc;	/* reprint line */
	char	t_flushc;	/* flush output (toggles) */
	char	t_werasc;	/* word erase */
	char	t_lnextc;	/* literal next character */
};
struct ttypagestat {
	int	tps_length;	/* screen length (vertical) */
	int	tps_lpos;	/* current vertical position */
	char	tps_statc;	/* show system status info */
	char	tps_pagec;	/* show next screenful */
	char	tps_pgoffc;	/* ignore paging till next input */
	char	tps_flag;	/* page the screen even in cbreak */
};

#ifdef _MBCS
/*
 * define a codeset structure template
 */
struct tcset {
	u_short		tdc_len;   /* length of table to be read/written */
	charlen_t 	tdc_codeset[CODESIZE];
};
#endif /* _MBCS */

/*
	Default control characters:
	Some of these defaults are duplicated in termio.h, namely,
	CUNDEF, CINTR, CQUIT, CEOF, CSTART, and CSTOP.  If you change any of
	these (I really doubt that anyone will want to...), make sure
	that termio.h gets exact duplicates, otherwise cpp will complain
	about multiple definitions whenever we compile the kernel.
*/
#define	CTRL(c)	('c'&037)
#define CUNDEF	0377
#define	CINTR	0177	/* DEL */
#define	CQUIT	026	/* cntl v */
#define	CEOF	04	/* cntl d */
#define	CSTART	021	/* cntl q */
#define	CSTOP	023	/* cntl s */
#define	CEOT	CEOF
#define	CBRK	CUNDEF
#define	CSUSP	CTRL(z)
#define	CDSUSP	CTRL(y)
#define	CRPRNT	CTRL(r)
#define	CFLUSH	CTRL(o)
#define	CWERASE	CTRL(w)
#define	CLNEXT	CUNDEF
#define	CSTAT	CTRL(t)
#define	CPAGE	(' ')
#define	CPGOFF	CTRL(m)

/*	disk partition stuff	*/
struct	dkpart {
	long	dk_numblks;	/* number of sectors in partition */
	long	dk_cyloff;	/* cylinder where partition starts */
};

/*	disk partition table ioctl commands	*/
#define	DKGETPART	_IOR(d, 0, struct dkpart) /* get disk partition entry */
#define	DKSETPART	_IOW(d, 1, struct dkpart) /* set disk partition entry */

#endif /* ! _POSIX_SOURCE */

/*
**	Ioctl commands:
*/
/* Window/terminal size structure.
 * This information is stored by the kernel
 * in order to provide a consistent interface,
 * but is not used by the kernel.
 *
 * Type are "unsigned short" so that types.h not required.
 */

#ifdef _POSIX_SOURCE
struct _Winsize 
#else
struct winsize 
#endif
{
	unsigned short	ws_row;			/* rows, in characters */
	unsigned short	ws_col;			/* columns, in characters */
	unsigned short	ws_xpixel;		/* horizontal size, pixels */
	unsigned short	ws_ypixel;		/* vertical size, pixels */
};

#ifndef _POSIX_SOURCE
/*
 * Pun for SUN.
 */
struct ttysize {
	unsigned short	ts_lines;
	unsigned short	ts_cols;
	unsigned short	ts_xxx;
	unsigned short	ts_yyy;
};
#define TIOCGSIZE	TIOCGWINSZ
#define TIOCSSIZE	TIOCSWINSZ

#ifndef NO_AUSTIN_HOOKS
/* ******************************* AUSTIN HOOK ************************ */
struct hfscreen	{
	unsigned short screen[25][80];
	};
struct hfcurpos {
	unsigned short row;
	unsigned short column;
	};

/* subcodes for HFSKEP ioctl	*/
#define KEPOPEN		0x01
#define KEPCLOSE	0x02
#define KEPIOCTL	0x03
#define KEPREAD		0x04
#define KEPWRITE	0x05
#define KEPRDSLP	0x06
/* ******************************************************************** */
#endif

/*	file control ioctl commands	*/
#define FIOCLEX		_ION(f, 1)		/* set exclusive use on fd */
#define FIONCLEX	_ION(f, 2)		/* remove exclusive use */
#define FIOGETOWN	_IOR(f, 123, int)	/* 4.2: get owner */
#define FIOSETOWN	_IOW(f, 124, int)	/* 4.2: set owner */
#define FIOASYNC	_IOW(f, 125, int)	/* 4.2: set/clr async i/o */
#define FIONBIO		_IOW(f, 126, int)	/* 4.2: set/clr non-blk i/o */
#define FIONREAD	_IOR(f, 127, long)	/* get # bytes to read */

/*	tty ioctl commands	*/
#define TIOCGETD	_IOR(t, 0, int)		/* get line discipline */
#define TIOCSETD	_IOW(t, 1, int)		/* set line discipline */
#define TIOCHPCL	_ION(t, 2)		/* hang up on last close */
#define TIOCMODG	_IOR(t, 3, int)		/* get modem control state */
#define TIOCMODS	_IOW(t, 4, int)		/* set modem control state */
#define		TIOCM_LE	0001		/* line enable */
#define		TIOCM_DTR	0002		/* data terminal ready */
#define		TIOCM_RTS	0004		/* request to send */
#define		TIOCM_ST	0010		/* secondary transmit */
#define		TIOCM_SR	0020		/* secondary receive */
#define		TIOCM_CTS	0040		/* clear to send */
#define		TIOCM_CAR	0100		/* carrier detect */
#define		TIOCM_RNG	0200		/* ring */
#define		TIOCM_DSR	0400		/* data set ready */
#define		TIOCM_RI	TIOCM_RNG	/* ring (alternate) */
#define		TIOCM_CD	TIOCM_CAR	/* carrier detect (alternate) */
#define TIOCGETP	_IOR(t, 8, struct sgttyb) /* get params -- gtty */
#define TIOCSETP	_IOW(t, 9, struct sgttyb) /* set params -- stty */
#define TIOCSETN	_IOW(t, 10, struct sgttyb) /* set, but no flushtty */
#define TIOCOSM   	_IOR(t, 11, int)	/* osm logging allowed */
#define TIOCNOSM  	_IOR(t, 12, int)	/* osm logging disallowed */
#define TIOCEXCL	_ION(t, 13)		/* set exclusive use of tty */
#define TIOCNXCL	_ION(t, 14)		/* reset exclusive use of tty */
#define TIOCFLUSH	_IOW(t, 16, int)	/* flush buffers */
#define TIOCSETC	_IOW(t, 17, struct tchars) /* set special chars */
#define TIOCGETC	_IOR(t, 18, struct tchars) /* get special chars */

#ifdef _MBCS
#define	TIOCSCLTBL	0x00007417		/* _IOW(t, 23)
						    set codeset info. */
#define	TIOCGCLTBL	0x00007418		/* _IOR(t, 24
						    get codeset info. */
#endif /* _MBCS */

#if defined(_BSD) && !defined(KERNEL)
#define		CRTBS		0x00010000	/* do backspacing for crt */
#define		PRTERA		0x00020000	/* \ ... / erase */
#define		CRTERA		0x00040000	/* " \b " to wipe out char */
#define		TILDE		0x00080000	/* hazeltine tilde kludge */
#define		MDMBUF		0x00100000	/* start/stop output on carrier intr */
#define		LITOUT		0x00200000	/* literal output */
#define		TOSTOP		0x00400000	/* SIGSTOP on background output */
#define		FLUSHO		0x00800000	/* flush output to terminal */
#define		NOHANG		0x01000000	/* no SIGHUP on carrier drop */
#define		L001000		0x02000000
#define		CRTKIL		0x04000000	/* kill line with " \b " */
#define		PASS8		0x08000000
#define		CTLECH		0x10000000	/* echo control chars as ^X */
#define		PENDIN		0x20000000	/* tp->t_rawq needs reread */
#define		DECCTQ		0x40000000	/* only ^Q starts after ^S */
#define		NOFLSH		0x80000000	/* no output flush on signal */
#endif /* _BSD && !KERNEL */

#define TIOCLBIS	_IOW(t, 127, int)	/* bis local mode bits */
#define TIOCLBIC	_IOW(t, 126, int)	/* bic local mode bits */
#define TIOCLSET	_IOW(t, 125, int)	/* set entire local mode word */
#define TIOCLGET	_IOR(t, 124, int)	/* get local modes */
#define TIOCSBRK	_ION(t, 123)		/* set break bit */
#define TIOCCBRK	_ION(t, 122)		/* clear break bit */
#define TIOCSDTR	_ION(t, 121)		/* set data terminal ready */
#define TIOCCDTR	_ION(t, 120)		/* clear data terminal ready */
#define TIOCGPGRP	_IOR(t, 119, long)	/* get pgrp of tty */
#define TIOCSPGRP	_IOW(t, 118, long)	/* set pgrp of tty */
#define TIOCSLTC	_IOW(t, 117, struct ltchars) /* set bsd special chars */
#define TIOCGLTC	_IOR(t, 116, struct ltchars) /* get bsd special chars */
#define TIOCOUTQ	_IOR(t, 115, int)	/* output queue size */
#define TIOCSTI		_IOW(t, 114, char)	/* simulate terminal input */
#define TIOCNOTTY	_ION(t, 113)		/* void tty association */
#define TIOCPKT		_IOW(t, 112, int)	/* 4.2: pty: set/clr pkt mode */
#define		TIOCPKT_DATA		0x00	/* data packet */
#define		TIOCPKT_FLUSHREAD	0x01	/* flush packet */
#define		TIOCPKT_FLUSHWRITE	0x02	/* flush packet */
#define		TIOCPKT_STOP		0x04	/* stop output */
#define		TIOCPKT_START		0x08	/* start output */
#define		TIOCPKT_NOSTOP		0x10	/* no more ^S, ^Q */
#define		TIOCPKT_DOSTOP		0x20	/* now do ^S ^Q */
#define TIOCSTOP	_ION(t, 111)		/* 4.2: stop output, like ^S */
#define TIOCSTART	_ION(t, 110)		/* 4.2: start output, like ^Q */
#define TIOCMSET	_IOW(t, 109, int)	/* set all modem bits */
#define TIOCMBIS	_IOW(t, 108, int)	/* bis modem bits */
#define TIOCMBIC	_IOW(t, 107, int)	/* bic modem bits */
#define TIOCMGET	_IOR(t, 106, int)	/* get all modem bits */
#define TIOCREMOTE	_IOW(t, 105, int)	/* 4.2: remote input editing */

#ifdef _POSIX_SOURCE
#define TIOCGWINSZ      _IOR(t, 104, struct _Winsize)    /* get window size */
#define TIOCSWINSZ      _IOW(t, 103, struct _Winsize)    /* set window size */
#else
#define TIOCGWINSZ      _IOR(t, 104, struct winsize)    /* get window size */
#define TIOCSWINSZ      _IOW(t, 103, struct winsize)    /* set window size */
#endif

#define TIOCUCNTL	_IOW(t, 102, int)	/* pty set/clr usr cntrl mode */
#define		UIOCCMD(n)	_IO(u, n)		/* usr cntl op "n" */

#define TIOCRESET	_ION(t, 101)		/* LCC: reset tty structure */
#define TIOCSCONS	_ION(t, 104)		/* 4.2: Select console line */
#define TIOCGPAGE	_IOR(t, 64, struct ttypagestat)	/* get page/stat info */
#define TIOCSPAGE	_IOW(t, 65, struct ttypagestat)	/* set page/stat info */

#define BBNTTNO		(('b'<<8)|1)		/* rfg:bbn tty empty? */

#define	OTTYDISC	0		/* old, v7 std tty driver */
#define	NETLDISC	1		/* line discip for berk net */
#define	NTTYDISC	2		/* new tty discipline */

/* SPECIAL BSD/SYSV MERGE IOCTL COMMANDS */
/* the following two values are reserved and noted as such in termio.h */
#define TCSETPSX   (TIOC|36)
#define TCGETPSX   (TIOC|37)

/*
 *	Additional tty mode flags for 4.[12] bsd
 */
#define	LCRTBS	0000001		/* correct backspacing for crt */
#define	LPRTERA 0000002		/* printing terminal \ ... / erase */
#define	LCRTERA	0000004		/* do "\b \b" to wipe out character */
#define	LTILDE	0000010		/* IIASA - hazeltine tilde kludge */
#define	LMDMBUF	0000020		/* IIASA - start/stop output on carrier intr */
#define	LLITOUT	0000040		/* IIASA - suppress any output translations */
#define	LTOSTOP	0000100		/* send stop for any background tty output */
#define	LFLUSHO	0000200		/* flush output sent to terminal */
#define	LNOHANG 0000400		/* IIASA - don't send hangup on carrier drop */
#define	LETXACK 0001000		/* IIASA - diablo style buffer hacking */
#define	LCRTKIL	0002000		/* erase whole line on kill with "\b \b" */
#define	LPASS8  0004000		/* allow all 8 bits to pass through on input */ 
#define	LCTLECH	0010000		/* echo control characters as ^X */
#define	LPENDIN	0020000		/* tp->t_rawq is waiting to be reread */
#define	LDECCTQ 0040000		/* only ^Q starts after ^S */
#define	LNOFLSH 0100000		/* disable flush after signal */

#define		uclaltchars	ttypagestat
#define		ut_length	tps_length
#define		ut_lpos		tps_lpos
#define		ut_statc	tps_statc
#define		ut_pagec	tps_pagec
#define		ut_npagec	tps_pgoffc
#define		ut_pgcbrk	tps_flag
#define		TIOGUCLA	TIOCGPAGE
#define		TIOSUCLA	TIOCSPAGE

/*
 *	Additional flags for terminal paging
 */
#define PGCBRK		0001	/* enable page-stop even in cbreak mode */
#define PGBELL		0002	/* ring bell on full page stop */
#define ERASBELL 	0004	/* ring bell on attempted erase-past-prompt */
/*	State bits don't really belong here, but shucks ....	*/
#define PAGESTOP	0010	/* state bit: tty is stopped on a full page */
#define PG0LPOS		0020	/* state bit: last page-start set t_lpos = 0 */
#define PG_ENB		0040	/* paging enabled (if length is also > 0) */

/*
 * General device I/O controls
 */
#define DIOCONLINE	_ION(D, 0)		/* turn device on-line */
#define DIOCOFFLINE	_ION(D, 1)		/* turn device off-line */
#define DIOCRESET	_ION(D, 2)		/* reset the device */
#ifdef b370
/*
 * 370 device I/O controls
 */
#define DEVADDR		_ION(D, 100)		/* virtual address of this device */
#endif /* b370 */

/*
 * osm device I/O controls
 */
#define OSMIOC_WRITE_ON	_ION(O, 0)		/* include console writes */
#define OSMIOC_WRITE_OFF _ION(O, 1)		/* exclude console writes */
#define OSMIOC_ECHO_ON	_ION(O, 2)		/* include input echoes */
#define OSMIOC_ECHO_OFF _ION(O, 3)		/* exclude input echoes */

/* socket i/o controls */
#define SIOCSHIWAT	_IOW(s,  0, int)		/* set high watermark */
#define SIOCGHIWAT	_IOR(s,  1, int)		/* get high watermark */
#define SIOCSLOWAT	_IOW(s,  2, int)		/* set low watermark */
#define SIOCGLOWAT	_IOR(s,  3, int)		/* get low watermark */
#define SIOCATMARK	_IOR(s,  7, int)		/* at oob mark? */
#define SIOCSPGRP	_IOW(s,  8, int)		/* set process group */
#define SIOCGPGRP	_IOR(s,  9, int)		/* get process group */

#define SIOCADDRT	_IOW(r, 10, struct rtentry)	/* add route */
#define SIOCDELRT	_IOW(r, 11, struct rtentry)	/* delete route */

#define SIOCSIFADDR	_IOW(i, 12, struct ifreq)	/* set ifnet address */
#define SIOCGIFADDR	_IOWR(i,13, struct ifreq)	/* get ifnet address */
#define SIOCSIFDSTADDR	_IOW(i, 14, struct ifreq)	/* set p-p address */
#define SIOCGIFDSTADDR	_IOWR(i,15, struct ifreq)	/* get p-p address */
#define SIOCSIFFLAGS	_IOW(i, 16, struct ifreq)	/* set ifnet flags */
#define SIOCGIFFLAGS	_IOWR(i,17, struct ifreq)	/* get ifnet flags */
#define SIOCGIFBRDADDR	_IOWR(i,18, struct ifreq)	/* get broadcast addr */
#define SIOCSIFBRDADDR	_IOW(i,19, struct ifreq)	/* set broadcast addr */
#define SIOCGIFCONF	_IOWR(i,20, struct ifconf)	/* get ifnet list */
#define SIOCGIFNETMASK	_IOWR(i,21, struct ifreq)	/* get net addr mask */
#define SIOCSIFNETMASK	_IOW(i,22, struct ifreq)	/* set net addr mask */
#define SIOCGIFMETRIC	_IOWR(i,23, struct ifreq)	/* get IF metric */
#define SIOCSIFMETRIC	_IOW(i,24, struct ifreq)	/* set IF metric */
#define SIOCGIFMTU	_IOWR(i,25, struct ifreq)	/* get IF mtu */
#define SIOCSIFMTU	_IOW(i,26, struct ifreq)	/* set IF mtu */
#define SIOCGIFREMMTU	_IOWR(i,27, struct ifreq)	/* get IF remmtu */
#define SIOCSIFREMMTU	_IOW(i,28, struct ifreq)	/* set IF remmtu */

#define SIOCSARP	_IOW(i, 30, struct arpreq)	/* set arp entry */
#define SIOCGARP	_IOWR(i,31, struct arpreq)	/* get arp entry */
#define SIOCDARP	_IOW(i, 32, struct arpreq)	/* delete arp entry */
#define SIOCSIFIUCV	_IOW(i, 33, struct ifreq)	/* set iucv state */
#define SIOCGIFIUCV	_IOWR(i,34, struct ifreq)	/* get iucv state */
#define	SIOCSARP_802_5	_IOW(i, 93, struct ie5_arpreq)	/* set arp entry */
#define	SIOCGARP_802_5	_IOWR(i,94, struct ie5_arpreq)	/* get arp entry */
#define	SIOCDARP_802_5	_IOW(i, 95, struct ie5_arpreq)	/* delete arp entry */
#define	IOCTYPE		0xff00
#define IOCINFO 	0xff01
#define IOCCONFIG	0xff02
#define IOCSTATS	0xff03

#ifdef b370
#define HDIORST		_ION(F,75)	/* reset driver (re-read vtoc) */
#define HDIOPAR		_ION(F,76)	/* get drive information (fba_dev) */
#endif

#ifdef	i386
/* Floppy/Micro diskette control */
#define FDIO	('F' << 8)
#define FDFMTON		(FDIO|1)	/* formatting on */
#define FDFMTOFF	(FDIO|2)	/* formatting off */
#define FDVERIFY	(FDIO|3)	/* enable last byte read back verify */
#define FDNOVERIFY	(FDIO|4)	/* disable last byte read back verify */

/* Hard disk control */
#define HDIO	('H' << 8)
#define HDIORST	(HDIO|1)	/* hard disk reset */
#define HDIOPAR	(HDIO|2)	/* hard disk parameters */
#define HDIOSTAT     (HDIO|9)	/* hard disk partition open status */
#define HDSETERRSCAN (HDIO|10)	/* set "scanning for errors" mode */
#define HDCLRERRSCAN (HDIO|11)	/* clear "scanning for errors" mode */
#define HDNUMDISKS _IOR(H,12,int) /* get the max number of disks supported */

#include <sys/i386/crtioctl.h>	/* CRT related ioctls in their own module */

#endif	/* i386 */
#endif /* !_POSIX_SOURCE */

#ifdef i386
/* ioctl commmands for posdev driver */
#define PIOCMACHINFO _IOR(p,0,struct mach_info)	
#endif /* i386 */
	int ioctl(int, int, ...);
#endif /* ~_H_IOCTL */
#ifdef __cplusplus
}
#endif

sys/ipc.h

#ifdef __cplusplus
extern "C" {
/* (MRL) USL had prototypes for 'msgget, semget, shmget, and ftok.  I have not 
	included them */

#endif
/*
 *		IX/370
 *		5667-126
 *	LICENSED MATERIALS - PROPERTY OF IBM
*	(c) Copyright 1985, 1986, 1989 IBM Corp.
*	(c) Copyright 1983, 1984, 1985, 1986,  1989 Locus Computing Corporation
 *	All Rights Reserved
 */

#ifndef H_SCCSID
#include <sccs.h>
#endif /* ~H_SCCSID */
H_SCCSID(@(#)ipc.h	16.6	AIX)	/* Modified: 18:19:35 9/22/89 */

#ifndef _h_IPC
#define _h_IPC

#ifndef _h_TYPES
#ifdef  KERNEL
#include <types.h>
#else  /* ~KERNEL */
#include <sys/types.h>
#endif /* ~KERNEL */
#endif  /* _h_TYPES */

/* Common IPC Access Structure */
struct ipc_perm {
	ushort	uid;	/* owner's user id */
	ushort	gid;	/* owner's group id */
	ushort	cuid;	/* creator's user id */
	ushort	cgid;	/* creator's group id */
	ushort	mode;	/* access modes */
	ushort	seq;	/* slot usage sequence number */
	key_t	key;	/* key */
};

/* Common ipc_perm mode definitions. */
#define	IPC_ALLOC	0100000		/* entry currently allocated */
#define IPC_TYPEDEP	0007000		/* for msg,sem,shm dependent defs */
#define IPC_PERMS	0000777		/* permission mode bits */

/* Common IPC operation flag definitions. */
#define	IPC_CREAT	0001000		/* create entry if key doesn't exist */
#define	IPC_EXCL	0002000		/* fail if key exists */
#define	IPC_NOWAIT	0004000		/* error if request must wait */

/* Keys. */
#define	IPC_PRIVATE	(key_t)0	/* private key */

/* Control Commands. */
#define	IPC_RMID	0	/* remove identifier */
#define	IPC_SET		1	/* set options */
#define	IPC_STAT	2	/* get options */

#endif /* ~_IPC_ */
#ifdef __cplusplus
}
#endif

sys/acct.h

#ifdef __cplusplus
extern "C" {
#endif
/*
 *		IX/370
 *		5667-126
 *	LICENSED MATERIALS - PROPERTY OF IBM
*	(c) Copyright 1985, 1986, 1989 IBM Corp.
*	(c) Copyright 1983, 1984, 1985, 1986, 1989 Locus Computing Corporation
 *	All Rights Reserved
 */

#ifndef H_SCCSID
#include <sccs.h>
#endif /* ~H_SCCSID */
H_SCCSID(@(#)acct.h	16.5	LCC)	/* Modified: 16:01:18 2/4/92 */
/* SCCSIDPUFF(@(#) acct.h 4.1 LM 12:50:31 4/23/85 C 22:11:45 4/23/85); */
#ifndef	_h_ACCT
#define	_h_ACCT

#ifndef _h_TYPES
#ifdef  KERNEL
#include <types.h>
#else  /* ~KERNEL */
#include <sys/types.h>
#endif /* ~KERNEL */
#endif /* ~_h_TYPES */

/*
 * Accounting structures;
 * these use a comp_t type which is a 3 bits base 8
 * exponent, 13 bit fraction ``floating point'' number.
 */
typedef	u_short comp_t;
struct	acct
{
	char	ac_flag;		/* Accounting flag */
	char	ac_stat;		/* Exit status */
	u_short	ac_uid;			/* Accounting user ID */
	u_short	ac_gid;			/* Accounting group ID */
	dev_t	ac_tty;			/* control typewriter */
	time_t	ac_btime;		/* Beginning time */
	comp_t	ac_utime;		/* acctng user time in clock ticks */
	comp_t	ac_stime;		/* acctng system time in clock ticks */
	comp_t	ac_etime;		/* acctng elapsed time in clock ticks */
	comp_t	ac_mem;			/* memory usage */
	comp_t	ac_io;			/* chars transferred */
	comp_t	ac_rw;			/* blocks read or written */
	char	ac_comm[8];		/* command name */
};	

#ifdef  KERNEL
extern	struct	acct	acctbuf;
extern	struct	inode	*acctp;		/* inode of accounting file */
#endif  /* KERNEL */

#define A_get_fsid(X)	((X>>2)&017)
#define A_put_fsid(X)	( X | ( (u.u_procp->p_fair) ? \
				((u.u_procp->p_fair->fs_id<<2) & 074) : 0 ) )
#define	AFORK	01		/* has executed fork, but no exec */
#define	ASU	02		/* used super-user privileges */
#define	ACCTF	0300		/* record type: 00 = acct */

#define ACORE	0010		/* dumped core */
#define AXSIG	0020		/* killed by a signal */
#define	ACOMPAT	0004		/* used compatibility mode */
#define	AHZ	HZ		/* 1/AHZ is the granularity of the data encoded
				   in various comp_t fields.  This is not
				   necessarily equal to hz.  */

#ifdef  b370

#ifdef	_c_MACHDEP
#define EXTERN
#else
#define	EXTERN	extern
#endif	/* _c_MACHDEP */

/*
 * Calculate the number of sec's and usec's. Allow for the possibility of
 * multi second time accumulations. It should be much less than a second
 * but just in case we'll do the right thing.                          
 *
 */
#define BUMPTIME(t) { \
	register struct timeval *tp = (t); \
	unsigned int    usec; \
 \
	usec = getcputime(); \
	charge_u->u_delta_time += usec; \
	tp->tv_usec += (usec); \
	while ( tp->tv_usec >= 1000000 ) \
	{ \
	        tp->tv_usec -= 1000000; \
	        tp->tv_sec++; \
        } \
}
extern long getcputime();

	/* The overhead process' user structures. */
EXTERN struct user *ovrhd_u;

#ifdef IO_OVERHEAD
EXTERN struct user *ioovrhd_u;
#endif	/* IO_OVERHEAD */

	/* Pointer to the user structure that gets charged for system time. */
EXTERN struct user *charge_u;

#endif  b370
#ifdef __cplusplus
/* (MRL) I am presuming that this function is available */
	int acct(const char *);
#endif

#endif /* ~_h_ACCT */
#ifdef __cplusplus
}
#endif

signal.h

#ifdef __cplusplus
extern "C" {
#endif
/*
 *	LICENSED MATERIALS - PROPERTY OF IBM
 *	(c) Copyright 1990 IBM Corporation
 *	All Rights Reserved
 */

#ifndef _POSIX_SOURCE
#ifndef H_SCCSID
#include <sccs.h>
#endif /* ! H_SCCSID */
H_SCCSID(@(#)signal.h	1.18       LCC)    /* Modified: 14:21:04 11/20/90 */
#endif /* NOT _POSIX_SOURCE */

#include<sys/signal.h>

extern	int	raise(int);

#ifdef __cplusplus
}
#endif

stat.h

#ifdef __cplusplus
extern "C" {
#endif
/*
 *		IX/370
 *		5667-126
 *	LICENSED MATERIALS - PROPERTY OF IBM
 *	(c) Copyright 1985, 1986, 1989 IBM Corp.
 *	(c) Copyright 1983, 1984, 1985, 1986,  1989 Locus Computing Corporation
 *	All Rights Reserved
 */


#ifndef _POSIX_SOURCE
#ifndef H_SCCSID
#include <sccs.h>
#endif /* ~H_SCCSID */
H_SCCSID(@(#)stat.h	16.7       LCC)    /* Modified: 19:52:20 1/11/90 */
#endif /* NOT _POSIX_SOURCE */

#ifndef _H_STAT
#define _H_STAT

#include <sys/types.h>

struct stat
{
	dev_t       st_dev;
	ino_t       st_ino;
	mode_t      st_mode;
	nlink_t     st_nlink;
	u_short_t   st_spare0;
	uid_t       st_uid;
	gid_t       st_gid;
	dev_t       st_rdev;
	off_t       st_size;
	time_t      st_atime;
	u_long_t    st_spare1;
	time_t      st_mtime;
	u_long_t    st_spare2;
	time_t      st_ctime;
	u_long_t    st_spare3;
	u_long_t    st_blksize;
	u_long_t    st_blocks;
	u_long_t    st_gen;
	u_long_t    st_type;
	u_long_t    st_vfs;
	u_long_t    st_flag;
	u_long_t    st_cmtcnt;
	fstore_t    st_fstore;
	u_long_t    st_version;
	siteno_t    st_css;
	siteno_t    st_ss;
	siteno_t    st_rdevsite;
	short       st_spare4;
	long        st_nid;
	uid_t       st_uid_raw;
	gid_t       st_gid_raw;
	u_long_t    st_uid_rev_tag;
	u_long_t    st_gid_rev_tag;
};

#ifndef _POSIX_SOURCE

/*
 * Type definitions
 */
#define	VNON	0
#define VBAD	1
#define VREG	2
#define VDIR	3	
#define VHDIR	4
#define VBLK	5
#define VCHR	6
#define VLNK	7
#define VSOCK	8
#define VFIFO	9
#define	VMPC	10

/*
 * Defines to tell whether or not a file or directory
 * is mounted upon, and whether it is local or remote.
 */
#define	FS_NOFLAG	0x0		/* Clear flag		*/
#define FS_VMP		0x1		/* Virtual mount point	*/
#define FS_REMOTE	0x2		/* Remote file primary copy
					 * not local */
#define FS_MOUNT	FS_VMP
#define FS_SHORT	0x4000

#define STATSIZE \
 (((int)(char *)&(((struct stat *)0)->st_spare4)) + (sizeof(short)))

/*
 * Definitions for rev_tags
 */
#define	IDTAG_CALLER	1
#define	IDTAG_OTHER	2
#define	IDTAG_SOMEONE	3
#define	IDTAG_NO_ONE	4

#define FULLSTATSIZE \
 (((int)(char *)&(((struct stat *)0)->st_gid_rev_tag)) + (sizeof(u_long)))

#define STX_LINK	0x0001
#define STX_MOUNT	0x0002
#define STX_HIDDEN	0x0004
#define STX_TRANS	0x0000
#define STX_TRANS_NONE	0x0008
#define STX_TRANS_OTHER	0x0010

#endif /* ! _POSIX_SOURCE */

#define	_S_IFMT   0x3000f000	/* type of file */
#define	_S_IFDIR  0x4000	/* directory */
#define S_ISDIR(m) (((m) & (_S_IFMT)) == (_S_IFDIR))
#define	_S_IFCHR  0x2000	/* character special */
#define S_ISCHR(m) (((m) & (_S_IFMT)) == (_S_IFCHR))
#define	_S_IFBLK  0x6000	/* block special */
#define S_ISBLK(m) (((m) & (_S_IFMT)) == (_S_IFBLK))
#define	_S_IFREG  0x8000	/* regular */
#define S_ISREG(m) (((m) & (_S_IFMT)) == (_S_IFREG))
#define	_S_IFIFO  0x1000	/* named pipe */
#define S_ISFIFO(m) (((m) & (_S_IFMT)) == (_S_IFIFO))

#ifndef _POSIX_SOURCE
#define	S_IFMT	_S_IFMT
#define	S_IFDIR	_S_IFDIR
#define	S_IFCHR	_S_IFCHR
#define	S_IFBLK	_S_IFBLK
#define	S_IFREG	_S_IFREG
#define	S_IFIFO	_S_IFIFO

#define	S_IFLNK 0xa000  	/* symbolic link */
#define S_ISLNK(m) (((m) & (S_IFMT)) == (S_IFLNK))
#define S_IFSOCK 0xc000		/* named socket */
#define S_ISSOCK(m) (((m) & (S_IFMT)) == (S_IFSOCK))
#define S_IFMPX (S_IFCHR|S_ISVTX)  /* multiplex character special file */
#define S_ISMPX(m) (((m) & (S_IFMT|S_ISVTX)) == (S_IFMPX))
#define S_IHIDDEN 0x8000000	/* hidden directory */
#define S_ISHIDDEN(m) (((m) & (S_IFMT|S_IHIDDEN)) == (S_IFDIR|S_IHIDDEN))

#endif /* ! _POSIX_SOURCE */


#define	S_ISUID	 04000		/* set user id on execution */
#define	S_ISGID	 02000		/* set group id on execution */

#ifndef _POSIX_SOURCE
#define S_ENFMT  S_ISGID        /* record locking enforcement flag */
#define	S_ISVTX	 01000		/* save swapped text even after use */
#define	S_IREAD	 00400		/* read permission, owner */
#define	S_IWRITE 00200		/* write permission, owner */
#define	S_IEXEC	 00100		/* execute/search permission, owner */

/*  /usr/group definitions  */
#define S_PERM	 00777		/* all permission fields */
#endif /* ! _POSIX_SOURCE */

#define S_IRWXU  00700          /* read,write,execute permission: owner */
#define S_IRUSR  00400          /* read permission: owner */
#define S_IWUSR  00200          /* write permission: owner */
#define S_IXUSR  00100          /* execute/search permission: owner */
#define S_IRWXG  00070          /* read,write,execute permission: group */
#define S_IRGRP  00040          /* read permission: group */
#define S_IWGRP  00020          /* write permission: group */
#define S_IXGRP  00010          /* execute/search permission: group */
#define S_IRWXO  00007          /* read,write,execute permission: other */
#define S_IROTH  00004          /* read permission: other */
#define S_IWOTH  00002          /* write permission: other */
#define S_IXOTH  00001          /* execute/search permission: other */

#ifndef _KERNEL
extern mode_t umask(mode_t);                              
extern int mkdir(const char*, mode_t), 
	mkfifo(const char*, mode_t), 
	stat(const char*, struct stat*), 
	fstat(int, struct stat*), 
	chmod(const char*, mode_t);
#endif	/* !_KERNEL */

#endif /* ~_H_STAT */
#ifdef __cplusplus
}
#endif

ctype.h

#ifdef __cplusplus
extern "C" {
#endif
/* 
 *	LICENSED MATERIALS - PROPERTY OF IBM
 * 	(c) Copyright IBM Corp. 1989, 1990 
 *	(c) Copyright Locus Computing Corporation 1989, 1990
 * 	All Rights Reserved 
 */

#ifndef _POSIX_SOURCE
#ifndef H_SCCSID
#include <sccs.h>
#endif /* ! H_SCCSID */
H_SCCSID(@(#)ctype.h	1.28	AIX)	/* Modified 6/26/91 21:45:52 */
#endif


#ifndef _h_CTYPE
#define _h_CTYPE

#define	_U	01		/* upper case */
#define	_L	02		/* lower case */
#define	_N	04		/* numeric    */
#define	_S	010		/* space */
#define	_P	020		/* punctuation */
#define	_C	040		/* control */
#define	_B	0100		/* blank */
#define	_X	0200		/* hex digit */
#define	_J	0400  		/* Japanese locale symbol mask */
#define	_k	01000 		/* Japanese Katakana */
#define	_H	02000 		/* Japanese Hiragana */
#define	_K	04000 		/* Japanese Kanji */

#ifdef	_MBCS 	/**************************  _MBCS  ************************/

/************** These make sense only in the MBCS environment **************/
/***** When _POSIX_SOURCE is defined mbcs.h and NLchar.h are removed **********/
/** for posix compliance, and ctab.h is added which is a portion of NLchar.h **/

#ifdef _POSIX_SOURCE
#ifndef	_h_NLCHAR
#include <ctab.h>
#endif
#else /* ! _POSIX_SOURCE */
#ifndef	_h_MBCS
#include <mbcs.h>
#endif
#ifndef	_h_NLCHAR
#include <NLchar.h>
#endif
#endif

#define _CTYPE		_MB_ctab->ct_ctype

#define	iswalpha(c)	(_CTYPE[__wcindx(c)+1]&(_U|_L))
#define	iswupper(c)	(_CTYPE[__wcindx(c)+1]&_U)
#define	iswlower(c)	(_CTYPE[__wcindx(c)+1]&_L)
#define	iswdigit(c)	(_CTYPE[__wcindx(c)+1]&_N)
#define	iswxdigit(c)	(_CTYPE[__wcindx(c)+1]&_X)
#define	iswalnum(c)	(_CTYPE[__wcindx(c)+1]&(_U|_L|_N))
#define	iswspace(c)	(_CTYPE[__wcindx(c)+1]&_S)
#define	iswpunct(c)	(_CTYPE[__wcindx(c)+1]&_P)
#define	iswprint(c)	(_CTYPE[__wcindx(c)+1]&(_P|_U|_L|_N|_B|_J))
#define	iswgraph(c)	(_CTYPE[__wcindx(c)+1]&(_P|_U|_L|_N))
#define	iswcntrl(c)	(_CTYPE[__wcindx(c)+1]&_C)

#define	iswascii(c)	(_CTYPE[__wcindx(c)+1]&(_P|_U|_L|_N|_B|_C))
#define	towupper(c)	( _MB_ctab->ct_caseconv[__wcindx(c)+1])
#define	towlower(c)	( _MB_ctab->ct_caseconv[__wcindx(c)+1])
#define	towascii(c)	((c)&0177)

#define isascii(c)      (!((c)&~0177))
#define	_toupper(c)	((c)-'a'+'A')
#define	_tolower(c)	((c)-'A'+'a')
#define	toascii(c)	((c)&0177)

extern	int	__c_temp;

#define	isalpha(c)  (isascii(__c_temp=c) && _CTYPE[__c_temp+1]&(_U|_L))
#define	isupper(c)  (isascii(__c_temp=c) && _CTYPE[__c_temp+1]&_U)
#define	islower(c)  (isascii(__c_temp=c) && _CTYPE[__c_temp+1]&_L)
#define	isdigit(c)  (isascii(__c_temp=c) && _CTYPE[__c_temp+1]&_N)
#define	isxdigit(c) (isascii(__c_temp=c) && _CTYPE[__c_temp+1]&_X)
#define	isalnum(c)  (isascii(__c_temp=c) && _CTYPE[__c_temp+1]&(_U|_L|_N))
#define	isspace(c)  (isascii(__c_temp=c) && _CTYPE[__c_temp+1]&_S)
#define	ispunct(c)  (isascii(__c_temp=c) && _CTYPE[__c_temp+1]&_P)
#define	isprint(c)  (isascii(__c_temp=c) && _CTYPE[__c_temp+1]&(_P|_U|_L|_N|_B))
#define	isgraph(c)  (isascii(__c_temp=c) && _CTYPE[__c_temp+1]&(_P|_U|_L|_N))
#define	iscntrl(c)  (isascii(__c_temp=c) && _CTYPE[__c_temp+1]&_C)


#define isjsjis(c)	(_CTYPE[__wcindx(c)+1]&_J)
#define isjhira(c)	(_CTYPE[__wcindx(c)+1]==(_J|_H))
#define isjkata(c)	(_CTYPE[__wcindx(c)+1]==(_J|_k))
#define isjkanji(c)	(_CTYPE[__wcindx(c)+1]==(_J|_K))
/*#define isj1bytekana(c)	 (_CTYPE[_wcindx(c)] == (_J|_k) &&
			   c & 0xffff >= 0x2f20 &&
			   c & 0xffff <= 0x2f7e)*/ 
#define isjalpha(c)	 (_CTYPE[__wcindx(c)+1]&(_J|_U|_L)==(_J|_U|_L))
#define isjupper(c)	 (_CTYPE[__wcindx(c)+1]&(_J|_U)==(_J|_U))
#define isjlower(c)	 (_CTYPE[__wcindx(c)+1]&(_J|_L)==(_J|_L))
#define isjpunct(c)	 (_CTYPE[__wcindx(c)+1]&(_J|_P)==(_J|_P))
#define isjdigit(c)	 (_CTYPE[__wcindx(c)+1]&(_J|_N)==(_J|_N))
#define isjxdigit(c)	 (_CTYPE[__wcindx(c)+1]&(_J|_X)==(_J|_X))
#define isjprint(c)	 (_CTYPE[__wcindx(c)+1]&(_J|_P|_U|_L|_N|_B)==(_J|_P|_U|_L|_N|_B))
#define isjgraph(c)	 ((_CTYPE[__wcindx(c)+1]&(_J|_P|_U|_L|_N))==(_J|_P|_U|_L|_N))

#define	tojupper(c)	( _MB_ctab->ct_caseconv[__wcindx(c)+1])
#define	tojlower(c)	( _MB_ctab->ct_caseconv[__wcindx(c)+1])
#define	tojhira(c)	( _MB_ctab->ct_caseconv[__wcindx(c)+1])
#define	tojkata(c)	( _MB_ctab->ct_caseconv[__wcindx(c)+1])

#else 		/************************** ! _MBCS  **********************/

#ifndef  CC4	/************************** ! CC4 & ! _MBCS ***************/

extern char	_ctype[];

#ifndef lint

#define	isalpha(c)	((_ctype+1)[c]&(_U|_L))
#define	isupper(c)	((_ctype+1)[c]&_U)
#define	islower(c)	((_ctype+1)[c]&_L)
#define	isdigit(c)	((_ctype+1)[c]&_N)
#define	isxdigit(c)	((_ctype+1)[c]&_X)
#define	isalnum(c)	((_ctype+1)[c]&(_U|_L|_N))
#define	isspace(c)	((_ctype+1)[c]&_S)
#define	ispunct(c)	((_ctype+1)[c]&_P)
#define	isprint(c)	((_ctype+1)[c]&(_P|_U|_L|_N|_B))
#define	isgraph(c)	((_ctype+1)[c]&(_P|_U|_L|_N))
#define	iscntrl(c)	((_ctype+1)[c]&_C)
#define isascii(c)      (!((c)&~0177))     /* ascii if 8th bit is zero */
#define	_toupper(c)	((c)-'a'+'A')
#define	_tolower(c)	((c)-'A'+'a')
#define	toascii(c)	((c)&0177)

#ifdef	_BSD
#define toupper(c)	_toupper(c)
#define tolower(c)	_tolower(c)
#endif	/* _BSD */
#endif	/* ! lint */

#else 		/************************** CC4 & ! _MBCS ******************/

extern	char	_ctype_[];

#define	isalpha(c)	((_ctype_+1)[c]&(_U|_L))
#define	isupper(c)	((_ctype_+1)[c]&_U)
#define	islower(c)	((_ctype_+1)[c]&_L)
#define	isdigit(c)	((_ctype_+1)[c]&_N)
#define	isxdigit(c)	((_ctype_+1)[c]&(_N|_X))
#define	isspace(c)	((_ctype_+1)[c]&_S)
#define ispunct(c)	((_ctype_+1)[c]&_P)
#define isalnum(c)	((_ctype_+1)[c]&(_U|_L|_N))
#define isprint(c)	((_ctype_+1)[c]&(_P|_U|_L|_N))
#define iscntrl(c)	((_ctype_+1)[c]&_C)
#define isascii(c)	((unsigned)(c)<=0177)
#define toupper(c)	((c)-'a'+'A')
#define tolower(c)	((c)-'A'+'a')
#define toascii(c)	((c)&0177)

#endif 		/************************** ! CC4      *********************/
#endif		/************************** ! _MBCS    *********************/

#endif		/************************** ! _h_CTYPE *********************/
}

a.out.h

#ifdef __cplusplus
extern "C" {
#endif
#ifndef H_SCCSID
#include <sccs.h>
#endif /* ! H_SCCSID */
H_SCCSID(@(#)a.out.h	1.11	AIX)	/* Modified 9/16/89 22:38:02 */
/* 
* (C) Copyright IBM Corp. 1989, 1989
 * All Rights Reserved 
 * Licensed Materials - Property of IBM 
 */
#include <sys/a.out.h>
#ifdef __cplusplus
}
#endif