xref: /plan9-contrib/sys/include/ape/unistd.h (revision 387c4c53c623eb3009f51a4454197017e92468df)
13e12c5d1SDavid du Colombier #ifndef	__UNISTD_H
23e12c5d1SDavid du Colombier #define	__UNISTD_H
33e12c5d1SDavid du Colombier #ifndef _POSIX_SOURCE
43e12c5d1SDavid du Colombier    This header file is not defined in pure ANSI
53e12c5d1SDavid du Colombier #endif
63e12c5d1SDavid du Colombier #pragma lib "/$M/lib/ape/libap.a"
73e12c5d1SDavid du Colombier 
87dd7cddfSDavid du Colombier #define _POSIX_VERSION	199309L
97dd7cddfSDavid du Colombier #define _POSIX_ASYNC_IO -1
107dd7cddfSDavid du Colombier #define _POSIX_CHOWN_RESTRICTED 1
117dd7cddfSDavid du Colombier #define _POSIX_NO_TRUNC 1
127dd7cddfSDavid du Colombier #define _POSIX_PRIO_IO -1
137dd7cddfSDavid du Colombier #define _POSIX_SYNC_IO -1
147dd7cddfSDavid du Colombier #define _POSIX_VDISABLE -1
153e12c5d1SDavid du Colombier 
163e12c5d1SDavid du Colombier #ifndef _SIZE_T
173e12c5d1SDavid du Colombier #define _SIZE_T
183e12c5d1SDavid du Colombier typedef unsigned long size_t;
193e12c5d1SDavid du Colombier #endif
203e12c5d1SDavid du Colombier #ifndef _SSIZE_T
213e12c5d1SDavid du Colombier #define _SSIZE_T
223e12c5d1SDavid du Colombier typedef long ssize_t;
233e12c5d1SDavid du Colombier #endif
243e12c5d1SDavid du Colombier #ifndef NULL
25f19e7b74SDavid du Colombier #ifndef NULL
26f19e7b74SDavid du Colombier #ifdef __cplusplus
273e12c5d1SDavid du Colombier #define NULL 0
28f19e7b74SDavid du Colombier #else
29f19e7b74SDavid du Colombier #define NULL ((void*)0)
30f19e7b74SDavid du Colombier #endif
31f19e7b74SDavid du Colombier #endif
323e12c5d1SDavid du Colombier #endif
333e12c5d1SDavid du Colombier 
343e12c5d1SDavid du Colombier /* access */
353e12c5d1SDavid du Colombier #define	R_OK		4
363e12c5d1SDavid du Colombier #define	W_OK		2
373e12c5d1SDavid du Colombier #define	X_OK		1
383e12c5d1SDavid du Colombier #define	F_OK		0	/* test for existence */
393e12c5d1SDavid du Colombier 
403e12c5d1SDavid du Colombier /* lockf */
413e12c5d1SDavid du Colombier #define	F_ULOCK		0	/* unlock a previously locked region */
423e12c5d1SDavid du Colombier #define	F_LOCK		1	/* lock a region for exclusive use */
433e12c5d1SDavid du Colombier #define	F_TLOCK		2	/* test and lock a region for exclusive use */
443e12c5d1SDavid du Colombier #define	F_TEST		3	/* test a region for a previous lock */
453e12c5d1SDavid du Colombier 
463e12c5d1SDavid du Colombier /* lseek */
477dd7cddfSDavid du Colombier #ifndef SEEK_SET		/* also defined in stdio.h */
483e12c5d1SDavid du Colombier #define	SEEK_SET	0
493e12c5d1SDavid du Colombier #define	SEEK_CUR	1
503e12c5d1SDavid du Colombier #define	SEEK_END	2
517dd7cddfSDavid du Colombier #endif
523e12c5d1SDavid du Colombier 
533e12c5d1SDavid du Colombier /* sysconf argument */
543e12c5d1SDavid du Colombier #define	_SC_ARG_MAX		1	/* max chars in args to exec */
553e12c5d1SDavid du Colombier #define	_SC_CHILD_MAX		2	/* max child process per process */
563e12c5d1SDavid du Colombier #define	_SC_CLK_TCK		3	/* number of clock() units per second */
573e12c5d1SDavid du Colombier #define	_SC_NGROUPS_MAX		4	/* max supplementary groups per process */
583e12c5d1SDavid du Colombier #define	_SC_OPEN_MAX		5
593e12c5d1SDavid du Colombier #define _SC_STREAM_MAX		6
603e12c5d1SDavid du Colombier #define _SC_TZNAME_MAX		7
613e12c5d1SDavid du Colombier #define	_SC_JOB_CONTROL		8	/* posix job control */
623e12c5d1SDavid du Colombier #define	_SC_SAVED_IDS		9	/* saved suid/sgid per process */
633e12c5d1SDavid du Colombier #define	_SC_VERSION		10	/* this version */
64*387c4c53SDavid du Colombier #define _SC_LOGIN_NAME_MAX	11	/* max length of a login name */
653e12c5d1SDavid du Colombier 
663e12c5d1SDavid du Colombier /* pathconf argument */
673e12c5d1SDavid du Colombier #define _PC_LINK_MAX		1
683e12c5d1SDavid du Colombier #define _PC_MAX_CANON		2
693e12c5d1SDavid du Colombier #define _PC_MAX_INPUT		3
703e12c5d1SDavid du Colombier #define _PC_NAME_MAX		4
713e12c5d1SDavid du Colombier #define _PC_PATH_MAX		5
723e12c5d1SDavid du Colombier #define _PC_PIPE_BUF		6
733e12c5d1SDavid du Colombier #define _PC_CHOWN_RESTRICTED	7
743e12c5d1SDavid du Colombier #define _PC_NO_TRUNC		8
753e12c5d1SDavid du Colombier #define _PC_VDISABLE		9
763e12c5d1SDavid du Colombier 
773e12c5d1SDavid du Colombier /* standard filenos */
783e12c5d1SDavid du Colombier #define STDIN_FILENO		0
793e12c5d1SDavid du Colombier #define STDOUT_FILENO		1
803e12c5d1SDavid du Colombier #define STDERR_FILENO		2
813e12c5d1SDavid du Colombier 
823e12c5d1SDavid du Colombier #ifdef __cplusplus
833e12c5d1SDavid du Colombier extern "C" {
843e12c5d1SDavid du Colombier #endif
853e12c5d1SDavid du Colombier 
863e12c5d1SDavid du Colombier /* process primitives */
873e12c5d1SDavid du Colombier extern int execl(const char *, const char *, ...);
883e12c5d1SDavid du Colombier extern int execv(const char *, const char **);
893e12c5d1SDavid du Colombier extern int execle(const char *, const char *, const char *,  ...);
903e12c5d1SDavid du Colombier extern int execve(const char *, const char **, const char **);
913e12c5d1SDavid du Colombier extern int execlp(const char *, const char *, ...);
923e12c5d1SDavid du Colombier extern int execvp(const char *, const char **);
933e12c5d1SDavid du Colombier extern void _exit(int);
943e12c5d1SDavid du Colombier extern unsigned int alarm(unsigned int);
953e12c5d1SDavid du Colombier extern int pause(void);
963e12c5d1SDavid du Colombier extern unsigned int sleep(unsigned int);
973e12c5d1SDavid du Colombier #ifdef __TYPES_H
983e12c5d1SDavid du Colombier extern pid_t fork(void);
993e12c5d1SDavid du Colombier #endif
1003e12c5d1SDavid du Colombier 
1013e12c5d1SDavid du Colombier /* process environment */
1023e12c5d1SDavid du Colombier extern char *getlogin(void);
1033e12c5d1SDavid du Colombier extern char *cuserid(char *);
1043e12c5d1SDavid du Colombier extern char *ttyname(int);
1053e12c5d1SDavid du Colombier extern int isatty(int);
1063e12c5d1SDavid du Colombier extern long sysconf(int);
1073e12c5d1SDavid du Colombier #ifdef __TYPES_H
1083e12c5d1SDavid du Colombier extern pid_t getpid(void);
1093e12c5d1SDavid du Colombier extern pid_t getppid(void);
1103e12c5d1SDavid du Colombier extern uid_t getuid(void);
1113e12c5d1SDavid du Colombier extern uid_t geteuid(void);
1123e12c5d1SDavid du Colombier extern gid_t getgid(void);
1133e12c5d1SDavid du Colombier extern gid_t getegid(void);
1143e12c5d1SDavid du Colombier extern int setuid(uid_t);
1153e12c5d1SDavid du Colombier extern int setgid(gid_t);
1163e12c5d1SDavid du Colombier extern int getgroups(int, gid_t *);
1173e12c5d1SDavid du Colombier extern pid_t getpgrp(void);
1183e12c5d1SDavid du Colombier extern int setpgid(pid_t, pid_t);
1193e12c5d1SDavid du Colombier extern pid_t setsid(void);
1203e12c5d1SDavid du Colombier #endif
1213e12c5d1SDavid du Colombier 
1223e12c5d1SDavid du Colombier /* files and directories */
1233e12c5d1SDavid du Colombier extern int chdir(const char *);
1243e12c5d1SDavid du Colombier extern int link(const char *, const char *);
1253e12c5d1SDavid du Colombier extern char *getcwd(char *, size_t);
1263e12c5d1SDavid du Colombier extern int unlink(const char *);
1273e12c5d1SDavid du Colombier extern int rmdir(const char *);
1283e12c5d1SDavid du Colombier extern int rename(const char *, const char *);
1293e12c5d1SDavid du Colombier extern int access(const char *, int);
1303e12c5d1SDavid du Colombier extern long pathconf(const char *, int);
1313e12c5d1SDavid du Colombier extern long fpathconf(int, int);
1323e12c5d1SDavid du Colombier #ifdef __TYPES_H
1333e12c5d1SDavid du Colombier extern int chown(const char *, uid_t, gid_t);
1343e12c5d1SDavid du Colombier #endif
1353e12c5d1SDavid du Colombier 
1363e12c5d1SDavid du Colombier /* input and output primitives */
1373e12c5d1SDavid du Colombier extern int pipe(int *);
1383e12c5d1SDavid du Colombier extern int dup(int);
1393e12c5d1SDavid du Colombier extern int dup2(int, int);
1403e12c5d1SDavid du Colombier extern int close(int);
1413e12c5d1SDavid du Colombier extern ssize_t read(int, void *, size_t);
1427dd7cddfSDavid du Colombier extern ssize_t write(int, const void *, size_t);
1433e12c5d1SDavid du Colombier #ifdef __TYPES_H
144592359c9SDavid du Colombier extern int ftruncate(int, off_t);
1453e12c5d1SDavid du Colombier extern off_t lseek(int, off_t, int);
1463e12c5d1SDavid du Colombier #endif
1473e12c5d1SDavid du Colombier 
1483e12c5d1SDavid du Colombier /* device- and class-specific functions */
1493e12c5d1SDavid du Colombier #ifdef __TYPES_H
1503e12c5d1SDavid du Colombier extern pid_t tcgetpgrp(int);
1513e12c5d1SDavid du Colombier extern int tcsetpgrp(int, pid_t);
1523e12c5d1SDavid du Colombier #endif
1533e12c5d1SDavid du Colombier 
1542d069feaSDavid du Colombier #ifdef _REENTRANT_SOURCE
1552d069feaSDavid du Colombier extern char *getlogin_r(char *, int);
1562d069feaSDavid du Colombier #endif
1572d069feaSDavid du Colombier 
158219b2ee8SDavid du Colombier /* berkeley specific functions */
159219b2ee8SDavid du Colombier #ifdef _BSD_EXTENSION
160219b2ee8SDavid du Colombier #include <bsd.h>
161219b2ee8SDavid du Colombier #endif
162219b2ee8SDavid du Colombier 
1633e12c5d1SDavid du Colombier #ifdef __cplusplus
1643e12c5d1SDavid du Colombier }
1653e12c5d1SDavid du Colombier #endif
1663e12c5d1SDavid du Colombier 
1673e12c5d1SDavid du Colombier 
1683e12c5d1SDavid du Colombier #endif
169