Guest User

Untitled

a guest
Sep 1st, 2013
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 9.28 KB | None | 0 0
  1. /*
  2.  * Copyright 2004-2011 Haiku, Inc. All Rights Reserved.
  3.  * Distributed under the terms of the MIT License.
  4.  */
  5. #ifndef _UNISTD_H_
  6. #define _UNISTD_H_
  7.  
  8.  
  9. #include <null.h>
  10. #include <sys/types.h>
  11.  
  12.  
  13. /* access modes */
  14. #define R_OK    4
  15. #define W_OK    2
  16. #define X_OK    1
  17. #define F_OK    0
  18.  
  19. /* standard file descriptors */
  20. #define STDIN_FILENO    0
  21. #define STDOUT_FILENO   1
  22. #define STDERR_FILENO   2
  23.  
  24. /* function arguments needed by lockf() */
  25. #define F_ULOCK     0   /* unlock locked sections */
  26. #define F_LOCK      1   /* lock a section for exclusive use */
  27. #define F_TLOCK     2   /* test and lock a section for exclusive use */
  28. #define F_TEST      3   /* test a section for locks by other processes */
  29.  
  30. /* POSIX version support */
  31. #define _POSIX_VERSION          (199009L)   /* TODO: Update! */
  32.  
  33. #define _POSIX_CHOWN_RESTRICTED 1
  34. #define _POSIX_JOB_CONTROL      1
  35. #define _POSIX_NO_TRUNC         0
  36. #define _POSIX_SAVED_IDS        1
  37. #define _POSIX_VDISABLE         ((unsigned char)-2)
  38.     /* TODO: Check this! */
  39. /* TODO: Update these to the current POSIX version! Ideally after actually
  40.     supporting the features. */
  41. #define _POSIX_SEMAPHORES                   (200112L)
  42. #define _POSIX_THREADS                      (200112L)
  43. #define _POSIX_MAPPED_FILES                 (200809L)
  44. #define _POSIX_THREAD_PROCESS_SHARED        (200809L)
  45. #define _POSIX_THREAD_ATTR_STACKADDR        (-1)    /* currently unsupported */
  46. #define _POSIX_THREAD_ATTR_STACKSIZE        (200809L)
  47. #define _POSIX_THREAD_PRIORITY_SCHEDULING   (-1)    /* currently unsupported */
  48. #define _POSIX_REALTIME_SIGNALS             (200809L)
  49. #define _POSIX_MEMORY_PROTECTION            (200809L)
  50. #define _POSIX_MONOTONIC_CLOCK              (200809L)
  51. #define _POSIX_TIMERS                       (200809L)
  52. #define _POSIX_CPUTIME                      (200809L)
  53. #define _POSIX_THREAD_CPUTIME               (200809L)
  54.  
  55.  
  56. /* pathconf() constants */
  57. /* BeOS supported values, do not touch */
  58. #define _PC_CHOWN_RESTRICTED    1
  59. #define _PC_MAX_CANON           2
  60. #define _PC_MAX_INPUT           3
  61. #define _PC_NAME_MAX            4
  62. #define _PC_NO_TRUNC            5
  63. #define _PC_PATH_MAX            6
  64. #define _PC_PIPE_BUF            7
  65. #define _PC_VDISABLE            8
  66. #define _PC_LINK_MAX            25
  67. /* new values */
  68. #define _PC_SYNC_IO             26
  69. #define _PC_ASYNC_IO            27
  70. #define _PC_PRIO_IO             28
  71. #define _PC_SOCK_MAXBUF         29
  72. #define _PC_FILESIZEBITS        30
  73. #define _PC_REC_INCR_XFER_SIZE  31
  74. #define _PC_REC_MAX_XFER_SIZE   32
  75. #define _PC_REC_MIN_XFER_SIZE   33
  76. #define _PC_REC_XFER_ALIGN      34
  77. #define _PC_ALLOC_SIZE_MIN      35
  78. #define _PC_SYMLINK_MAX         36
  79. #define _PC_2_SYMLINKS          37
  80. #define _PC_XATTR_EXISTS        38
  81. #define _PC_XATTR_ENABLED       39
  82.  
  83. /* sysconf() constants */
  84. /* BeOS supported values, do not touch */
  85. #define _SC_ARG_MAX             15
  86. #define _SC_CHILD_MAX           16
  87. #define _SC_CLK_TCK             17
  88. #define _SC_JOB_CONTROL         18
  89. #define _SC_NGROUPS_MAX         19
  90. #define _SC_OPEN_MAX            20
  91. #define _SC_SAVED_IDS           21
  92. #define _SC_STREAM_MAX          22
  93. #define _SC_TZNAME_MAX          23
  94. #define _SC_VERSION             24
  95. /* new values */
  96. #define _SC_GETGR_R_SIZE_MAX    25
  97. #define _SC_GETPW_R_SIZE_MAX    26
  98. #define _SC_PAGE_SIZE           27
  99. #define _SC_PAGESIZE            _SC_PAGE_SIZE
  100. #define _SC_SEM_NSEMS_MAX       28
  101. #define _SC_SEM_VALUE_MAX       29
  102. #define _SC_SEMAPHORES          30
  103. #define _SC_THREADS             31
  104. /* TODO: check */
  105. #define _SC_IOV_MAX                     32
  106. #define _SC_UIO_MAXIOV                  _SC_IOV_MAX
  107. #define _SC_NPROCESSORS_MAX             33
  108. #define _SC_NPROCESSORS_CONF            34
  109. #define _SC_NPROCESSORS_ONLN            35
  110. #define _SC_CPUID_MAX                   36
  111. #define _SC_ATEXIT_MAX                  37
  112. #define _SC_PASS_MAX                    39
  113. #define _SC_PHYS_PAGES                  40
  114. #define _SC_AVPHYS_PAGES                41
  115. #define _SC_PIPE                        42
  116. #define _SC_SELECT                      43
  117. #define _SC_POLL                        44
  118. #define _SC_MAPPED_FILES                45
  119. #define _SC_THREAD_PROCESS_SHARED       46
  120. #define _SC_THREAD_STACK_MIN            47
  121. #define _SC_THREAD_ATTR_STACKADDR       48
  122. #define _SC_THREAD_ATTR_STACKSIZE       49
  123. #define _SC_THREAD_PRIORITY_SCHEDULING  50
  124. #define _SC_REALTIME_SIGNALS            51
  125. #define _SC_MEMORY_PROTECTION           52
  126. #define _SC_SIGQUEUE_MAX                53
  127. #define _SC_RTSIG_MAX                   54
  128. #define _SC_MONOTONIC_CLOCK             55
  129. #define _SC_DELAYTIMER_MAX              56
  130. #define _SC_TIMER_MAX                   57
  131. #define _SC_TIMERS                      58
  132. #define _SC_CPUTIME                     59
  133. #define _SC_THREAD_CPUTIME              60
  134.  
  135.  
  136. /* confstr() constants */
  137. #define _CS_PATH                1
  138.  
  139. /* lseek() constants */
  140. #ifndef SEEK_SET
  141. #   define SEEK_SET 0
  142. #endif
  143. #ifndef SEEK_CUR
  144. #   define SEEK_CUR 1
  145. #endif
  146. #ifndef SEEK_END
  147. #   define SEEK_END 2
  148. #endif
  149.  
  150.  
  151. #ifdef __cplusplus
  152. extern "C" {
  153. #endif
  154.  
  155. /* file functions */
  156. extern int      access(const char *path, int accessMode);
  157. extern int      faccessat(int fd, const char *path, int accessMode, int flag);
  158.  
  159. extern int      chdir(const char *path);
  160. extern int      fchdir(int fd);
  161. extern char     *getcwd(char *buffer, size_t size);
  162.  
  163. extern int      pipe(int fildes[2]);
  164. extern int      dup(int fd);
  165. extern int      dup2(int fd1, int fd2);
  166. extern int      close(int fd);
  167. extern int      link(const char *toPath, const char *path);
  168. extern int      linkat(int toFD, const char *toPath, int pathFD,
  169.                     const char *path, int flag);
  170. extern int      unlink(const char *name);
  171. extern int      unlinkat(int fd, const char *path, int flag);
  172. extern int      rmdir(const char *path);
  173.  
  174. extern ssize_t  readlink(const char *path, char *buffer, size_t bufferSize);
  175. extern ssize_t  readlinkat(int fd, const char *path, char *buffer,
  176.                     size_t bufferSize);
  177. extern int      symlink(const char *toPath, const char *symlinkPath);
  178. extern int      symlinkat(const char *toPath, int fd, const char *symlinkPath);
  179.  
  180. extern int      ftruncate(int fd, off_t newSize);
  181. extern int      truncate(const char *path, off_t newSize);
  182. extern int      ioctl(int fd, unsigned long op, ...);
  183.  
  184. extern ssize_t  read(int fd, void *buffer, size_t count);
  185. extern ssize_t  read_pos(int fd, off_t pos, void *buffer, size_t count);
  186. extern ssize_t  pread(int fd, void *buffer, size_t count, off_t pos);
  187. extern ssize_t  write(int fd, const void *buffer, size_t count);
  188. extern ssize_t  write_pos(int fd, off_t pos, const void *buffer,size_t count);
  189. extern ssize_t  pwrite(int fd, const void *buffer, size_t count, off_t pos);
  190. extern off_t    lseek(int fd, off_t offset, int whence);
  191.  
  192. extern int      sync(void);
  193. extern int      fsync(int fd);
  194.  
  195. extern int      chown(const char *path, uid_t owner, gid_t group);
  196. extern int      fchown(int fd, uid_t owner, gid_t group);
  197. extern int      lchown(const char *path, uid_t owner, gid_t group);
  198. extern int      fchownat(int fd, const char *path, uid_t owner, gid_t group,
  199.                     int flag);
  200.  
  201. extern int      mknod(const char *name, mode_t mode, dev_t dev);
  202. extern int      mknodat(int fd, const char *name, mode_t mode, dev_t dev);
  203.  
  204. extern int      getpagesize(void);
  205. extern int      getdtablesize(void);
  206. extern long     sysconf(int name);
  207. extern long     fpathconf(int fd, int name);
  208. extern long     pathconf(const char *path, int name);
  209. extern size_t   confstr(int name, char *buf, size_t len);
  210. extern int      lockf(int fd, int function, off_t size);
  211.  
  212. /* process functions */
  213. extern pid_t    fork(void);
  214. extern pid_t    vfork(void);
  215. extern int      execve(const char *path, char * const argv[], char * const envp[]);
  216. extern int      execl(const char *path, const char *arg, ...);
  217. extern int      execv(const char *path, char *const *argv);
  218. extern int      execlp(const char *file, const char *arg, ...);
  219. extern int      execle(const char *path, const char *arg , ... /*, char **envp */);
  220. extern int      exect(const char *path, char *const *argv);
  221. extern int      execvp(const char *file, char *const *argv);
  222.  
  223. extern void     _exit(int status) __attribute__ ((noreturn));
  224.  
  225. extern pid_t    tcgetpgrp(int fd);
  226. extern int      tcsetpgrp(int fd, pid_t pgrpid);
  227. extern void     *sbrk(long incr);
  228.  
  229. extern unsigned int alarm(unsigned int seconds);
  230. extern useconds_t   ualarm(useconds_t microSeconds, useconds_t interval);
  231. extern unsigned int sleep(unsigned int seconds);
  232. extern int          usleep(unsigned int microSeconds);
  233. extern int          pause(void);
  234.  
  235. /* process */
  236. extern pid_t    getpid(void);
  237. extern pid_t    getpgrp(void);
  238. extern pid_t    getppid(void);
  239. extern pid_t    getsid(pid_t pid);
  240. extern pid_t    getpgid(pid_t pid);
  241.  
  242. extern pid_t    setsid(void);
  243. extern int      setpgid(pid_t pid, pid_t pgid);
  244. extern pid_t    setpgrp(void);
  245.  
  246. extern int      chroot(const char *path);
  247.  
  248. /* access permissions */
  249. extern gid_t    getegid(void);
  250. extern uid_t    geteuid(void);
  251. extern gid_t    getgid(void);
  252. extern uid_t    getuid(void);
  253.  
  254. extern int      setgid(gid_t gid);
  255. extern int      setuid(uid_t uid);
  256. extern int      setegid(gid_t gid);
  257. extern int      seteuid(uid_t uid);
  258. extern int      setregid(gid_t rgid, gid_t egid);
  259. extern int      setreuid(uid_t ruid, uid_t euid);
  260.  
  261. extern int      getgrouplist(const char* user, gid_t baseGroup,
  262.                     gid_t* groupList, int* groupCount);
  263. extern int      getgroups(int groupCount, gid_t groupList[]);
  264. extern int      initgroups(const char* user, gid_t baseGroup);
  265. extern int      setgroups(int groupCount, const gid_t* groupList);
  266.  
  267. extern char     *getlogin(void);
  268. extern int      getlogin_r(char *name, size_t nameSize);
  269.  
  270. /* host name */
  271. extern int      sethostname(const char *hostName, size_t nameSize);
  272. extern int      gethostname(char *hostName, size_t nameSize);
  273.  
  274. /* tty */
  275. extern int      isatty(int fd);
  276. extern char     *ttyname(int fd);
  277. extern int      ttyname_r(int fd, char *buffer, size_t bufferSize);
  278.  
  279. /* misc */
  280. extern char     *crypt(const char *key, const char *salt);
  281. extern void     encrypt(char block[64], int edflag);
  282. extern int      getopt(int argc, char *const *argv, const char *shortOpts);
  283. extern void     swab(const void *src, void *dest, ssize_t nbytes);
  284.  
  285. /* getopt() related external variables */
  286. extern char *optarg;
  287. extern int optind, opterr, optopt;
  288.  
  289. #ifdef __cplusplus
  290. }
  291. #endif
  292.  
  293. #endif  /* _UNISTD_H_ */
Advertisement
Add Comment
Please, Sign In to add comment