Formerly ../stdio/bug6.c.~3~
[kopensolaris-gnu/glibc.git] / posix / unistd.h
1 /* Copyright (C) 1991, 1992 Free Software Foundation, Inc.
2 This file is part of the GNU C Library.
3
4 The GNU C Library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Library General Public License as
6 published by the Free Software Foundation; either version 2 of the
7 License, or (at your option) any later version.
8
9 The GNU C Library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12 Library General Public License for more details.
13
14 You should have received a copy of the GNU Library General Public
15 License along with the GNU C Library; see the file COPYING.LIB.  If
16 not, write to the Free Software Foundation, Inc., 675 Mass Ave,
17 Cambridge, MA 02139, USA.  */
18
19 /*
20  *      POSIX Standard: 2.10 Symbolic Constants         <unistd.h>
21  */
22
23 #ifndef _UNISTD_H
24
25 #define _UNISTD_H       1
26 #include <features.h>
27
28 /* These may be used to determine what facilities are present at compile time.
29    Their values can be obtained at run time from sysconf.  */
30
31 /* POSIX Standard approved as IEEE Std 1003.1 as of August, 1988.  */
32 #define _POSIX_VERSION  199009L
33
34 #ifdef  __USE_POSIX2
35 #define _POSIX2_C_VERSION       199912L /* Invalid until 1003.2 is done.  */
36
37 /* If defined, the implementation supports the
38    C Language Bindings Option.  */
39 #define _POSIX2_C_BIND  1
40
41 /* If defined, the implementation supports the
42    C Language Development Utilities Option.  */
43 #define _POSIX2_C_DEV   1
44
45 /* If defined, the implementation supports the
46    FORTRAN Language Development Utilities Option.  */
47 #define _POSIX2_FORT_DEV        1
48
49 /* If defined, the implementation supports the
50    Software Development Utilities Option.  */
51 #define _POSIX2_SW_DEV  1
52 #endif
53
54
55 /* Get values of POSIX options:
56
57    If these symbols are defined, the corresponding features are
58    always available.  If not, they may be available sometimes.
59    The current values can be obtained with `sysconf'.
60
61    _POSIX_JOB_CONTROL   Job control is supported.
62    _POSIX_SAVED_IDS     Processes have a saved set-user-ID
63                         and a saved set-group-ID.
64
65    If any of these symbols is defined as -1, the corresponding option is not
66    true for any file.  If any is defined as other than -1, the corresponding
67    option is true for all files.  If a symbol is not defined at all, the value
68    for a specific file can be obtained from `pathconf' and `fpathconf'.
69
70    _POSIX_CHOWN_RESTRICTED      Only the super user can use `chown' to change
71                                 the owner of a file.  `chown' can only be used
72                                 to change the group ID of a file to a group of
73                                 which the calling process is a member.
74    _POSIX_NO_TRUNC              Pathname components longer than
75                                 NAME_MAX generate an error.
76    _POSIX_VDISABLE              If defined, if the value of an element of the
77                                 `c_cc' member of `struct termios' is
78                                 _POSIX_VDISABLE, no character will have the
79                                 effect associated with that element.
80    */
81
82 #include <posix_opt.h>
83
84
85 /* Standard file descriptors.  */
86 #define STDIN_FILENO    0       /* Standard input.  */
87 #define STDOUT_FILENO   1       /* Standard output.  */
88 #define STDERR_FILENO   2       /* Standard error output.  */
89
90
91 /* All functions that are not declared anywhere else.  */
92
93 #include <gnu/types.h>
94
95 #ifndef ssize_t
96 #define ssize_t __ssize_t
97 #endif
98
99 #define __need_size_t
100 #include <stddef.h>
101
102
103 /* Values for the second argument to access.
104    These may be OR'd together.  */
105 #define R_OK    4       /* Test for read permission.  */
106 #define W_OK    2       /* Test for write permission.  */
107 #define X_OK    1       /* Test for execute permission.  */
108 #define F_OK    0       /* Test for existence.  */
109
110 /* Test for access to NAME.  */
111 extern int EXFUN(__access, (CONST char *__name, int __type));
112 extern int EXFUN(access, (CONST char *__name, int __type));
113
114 #ifdef  __OPTIMIZE__
115 #define access(name, type)      __access((name), (type))
116 #endif  /* Optimizing.  */
117
118
119 /* Values for the WHENCE argument to lseek.  */
120 #ifndef _STDIO_H        /* <stdio.h> has the same definitions.  */
121 #define SEEK_SET        0       /* Seek from beginning of file.  */
122 #define SEEK_CUR        1       /* Seek from current position.  */
123 #define SEEK_END        2       /* Seek from end of file.  */
124 #endif
125
126 /* Move FD's file position to OFFSET bytes from the
127    beginning of the file (if WHENCE is SEEK_SET),
128    the current position (if WHENCE is SEEK_CUR),
129    or the end of the file (if WHENCE is SEEK_END).
130    Return the old file position.  */
131 extern __off_t EXFUN(__lseek, (int __fd, __off_t __offset, int __whence));
132 extern __off_t EXFUN(lseek, (int __fd, __off_t __offset, int __whence));
133
134 /* Close the file descriptor FD.  */
135 extern int EXFUN(__close, (int __fd));
136 extern int EXFUN(close, (int __fd));
137
138 /* Read NBYTES into BUF from FD.  Return the
139    number read, -1 for errors or 0 for EOF.  */
140 extern ssize_t EXFUN(__read, (int __fd, PTR __buf, size_t __nbytes));
141 extern ssize_t EXFUN(read, (int __fd, PTR __buf, size_t __nbytes));
142
143 /* Write N bytes of BUF to FD.  Return the number written, or -1.  */
144 extern ssize_t EXFUN(__write, (int __fd, CONST PTR __buf, size_t __n));
145 extern ssize_t EXFUN(write, (int __fd, CONST PTR __buf, size_t __n));
146
147 #ifdef  __OPTIMIZE__
148 #define lseek(fd, offset, whence)       __lseek((fd), (offset), (whence))
149 #define close(fd)                       __close(fd)
150 #define read(fd, buf, n)                __read((fd), (buf), (n))
151 #define write(fd, buf, n)               __write((fd), (buf), (n))
152 #endif  /* Optimizing.  */
153
154
155 /* Create a one-way communication channel (pipe).
156    If successul, two file descriptors are stored in PIPEDES;
157    bytes written on PIPEDES[1] can be read from PIPEDES[0].
158    Returns 0 if successful, -1 if not.  */
159 extern int EXFUN(pipe, (int __pipedes[2]));
160
161
162 /* Schedule an alarm.  In SECONDS seconds, the process will get a SIGALRM.
163    If SECONDS is zero, any currently scheduled alarm will be cancelled.
164    The function returns the number of seconds remaining until the last
165    alarm scheduled would have signaled, or zero if there wasn't one.
166    There is no return value to indicate an error, but you can set `errno'
167    to 0 and check its value after calling `alarm', and this might tell you.
168    The signal may come late due to processor scheduling.  */
169 extern unsigned int EXFUN(alarm, (unsigned int __seconds));
170
171 /* Make the process sleep for SECONDS seconds, or until a signal arrives
172    and is not ignored.  The function returns the number of seconds less
173    than SECONDS which it actually slept (thus zero if it slept the full time).
174    If a signal handler does a `longjmp' or modifies the handling of the
175    SIGALRM signal while inside `sleep' call, the handling of the SIGALRM
176    signal afterwards is undefined.  There is no return value to indicate
177    error, but if `sleep' returns SECONDS, it probably didn't work.  */
178 extern unsigned int EXFUN(sleep, (unsigned int __seconds));
179
180
181 /* Suspend the process until a signal arrives.
182    This always returns -1 and sets `errno' to EINTR.  */
183 extern int EXFUN(pause, (NOARGS));
184
185
186 /* Change the owner and group of FILE.  */
187 extern int EXFUN(chown, (CONST char *__file AND
188                          __uid_t __owner AND __gid_t __group));
189
190 #ifdef  __USE_BSD
191 /* Change the owner and group of the file that FD is open on.  */
192 extern int EXFUN(fchown, (int __fd AND __uid_t __owner AND __gid_t __group));
193 #endif
194
195 /* Change the process's working directory to PATH.  */
196 extern int EXFUN(chdir, (CONST char *__path));
197
198 /* Get the pathname of the current working directory,
199    and put it in SIZE bytes of BUF.  Returns NULL if the
200    directory couldn't be determined or SIZE was too small.
201    If successful, returns BUF.  In GNU, if BUF is NULL,
202    an array is allocated with `malloc'; the array is SIZE
203    bytes long, unless SIZE <= 0, in which case it is as
204    big as necessary.  */
205 extern char *EXFUN(getcwd, (char *__buf, size_t __size));
206
207 #ifdef  __USE_GNU
208 /* Return a malloc'd string containing the current directory name.
209    If the environment variable `PWD' is set, and its value is correct,
210    that value is used.  */
211 extern char *EXFUN(get_current_dir_name, (NOARGS));
212 #endif
213
214 #ifdef  __USE_BSD
215 /* Put the absolute pathname of the current working directory in BUF.
216    If successful, return BUF.  If not, put an error message in
217    BUF and return NULL.  BUF should be at least PATH_MAX bytes long.  */
218 extern char *EXFUN(getwd, (char *__buf));
219 #endif
220
221
222 /* Duplicate FD, returning a new file descriptor on the same file.  */
223 extern int EXFUN(dup, (int __fd));
224
225 /* Duplicate FD to FD2, closing FD2 and making it open on the same file.  */
226 extern int EXFUN(dup2, (int __fd, int __fd2));
227
228
229 /* NULL-terminated array of "NAME=VALUE" environment variables.  */
230 extern char **__environ;
231 extern char **environ;
232
233
234 /* Replace the current process, executing PATH with arguments ARGV and
235    environment ENVP.  ARGV and ENVP are terminated by NULL pointers.  */
236 extern int EXFUN(__execve, (CONST char *__path, char *CONST __argv[],
237                             char *CONST __envp[]));
238 extern int EXFUN(execve, (CONST char *__path, char *CONST __argv[],
239                           char *CONST __envp[]));
240
241 #define execve  __execve
242
243 /* Execute PATH with arguments ARGV and environment from `environ'.  */
244 extern int EXFUN(execv, (CONST char *__path, char *CONST __argv[]));
245
246 /* Execute PATH with all arguments after PATH until a NULL pointer,
247    and the argument after that for environment.  */
248 extern int EXFUN(execle, (CONST char *__path, CONST char *__arg, ...));
249
250 /* Execute PATH with all arguments after PATH until
251    a NULL pointer and environment from `environ'.  */
252 extern int EXFUN(execl, (CONST char *__path, CONST char *__arg, ...));
253
254 /* Execute FILE, searching in the `PATH' environment variable if it contains
255    no slashes, with arguments ARGV and environment from `environ'.  */
256 extern int EXFUN(execvp, (CONST char *__file, char *CONST __argv[]));
257
258 /* Execute FILE, searching in the `PATH' environment variable if
259    it contains no slashes, with all arguments after FILE until a
260    NULL pointer and environment from `environ'.  */
261 extern int EXFUN(execlp, (CONST char *__file, CONST char *arg, ...));
262
263
264 #ifndef __NORETURN
265 #ifdef  __GNUC__
266 /* The `volatile' keyword tells GCC that a function never returns.  */
267 #define __NORETURN      __volatile
268 #else   /* Not GCC.  */
269 #define __NORETURN
270 #endif  /* GCC.  */
271 #endif  /* __NORETURN not defined.  */
272
273 /* Terminate program execution with the low-order 8 bits of STATUS.  */
274 extern __NORETURN void EXFUN(_exit, (int __status));
275
276
277 /* Values for the NAME argument to `pathconf' and `fpathconf'.
278    These correspond to the _POSIX_* symbols above, but for
279    specific files or file descriptors.  */
280 #define _PC_LINK_MAX            0
281 #define _PC_MAX_CANON           1
282 #define _PC_MAX_INPUT           2
283 #define _PC_NAME_MAX            3
284 #define _PC_PATH_MAX            4
285 #define _PC_PIPE_BUF            5
286 #define _PC_CHOWN_RESTRICTED    6
287 #define _PC_NO_TRUNC            7
288 #define _PC_VDISABLE            8
289
290 /* Get file-specific configuration information about PATH.  */
291 extern long int EXFUN(__pathconf, (CONST char *__path, int __name));
292 extern long int EXFUN(pathconf, (CONST char *__path, int __name));
293
294 /* Get file-specific configuration about descriptor FD.  */
295 extern long int EXFUN(__fpathconf, (int __fd, int __name));
296 extern long int EXFUN(fpathconf, (int __fd, int __name));
297
298 #define pathconf        __pathconf
299 #define fpathconf       __fpathconf
300
301
302 /* Values for the argument to `sysconf'.
303    These correspond to the _POSIX_* symbols in <posix_limits.h> and above,
304    but may vary at run time.  */
305 enum
306   {
307     _SC_ARG_MAX,
308     _SC_CHILD_MAX,
309     _SC_CLK_TCK,
310     _SC_NGROUPS_MAX,
311     _SC_OPEN_MAX,
312     _SC_STREAM_MAX,
313     _SC_TZNAME_MAX,
314     _SC_JOB_CONTROL,
315     _SC_SAVED_IDS,
316     _SC_VERSION,
317
318     /* Values for the argument to `sysconf'
319        corresponding to _POSIX2_* symbols.  */
320     _SC_BC_BASE_MAX,
321     _SC_BC_DIM_MAX,
322     _SC_BC_SCALE_MAX,
323     _SC_BC_STRING_MAX,
324     _SC_EQUIV_CLASS_MAX,
325     _SC_EXPR_NEST_MAX,
326     _SC_LINE_MAX,
327     _SC_RE_DUP_MAX,
328
329     _SC_2_VERSION,
330     _SC_2_C_BIND,
331     _SC_2_C_DEV,
332     _SC_2_FORT_DEV,
333     _SC_2_SW_DEV
334   };
335
336
337 /* Get the value of the system variable NAME.  */
338 extern long int EXFUN(sysconf, (int __name));
339
340
341 #ifdef  __USE_POSIX2
342 /* Values for the argument to `confstr'.  */
343 #define _CS_PATH        0       /* The default search path.  */
344
345 /* Get the value of the string-valued system variable NAME.  */
346 extern size_t EXFUN(confstr, (int __name, char *__buf, size_t __len));
347 #endif
348
349
350 /* Get the process ID of the calling process.  */
351 extern __pid_t EXFUN(__getpid, (NOARGS));
352 extern __pid_t EXFUN(getpid, (NOARGS));
353
354 /* Get the process ID of the calling process's parent.  */
355 extern __pid_t EXFUN(__getppid, (NOARGS));
356 extern __pid_t EXFUN(getppid, (NOARGS));
357
358 #ifdef  __OPTIMIZE__
359 #define getpid()        __getpid()
360 #define getppid()       __getppid()
361 #endif  /* Optimizing.  */
362
363 /* Get the process group ID of process PID.  */
364 extern __pid_t EXFUN(__getpgrp, (__pid_t __pid));
365
366 #ifndef __FAVOR_BSD
367 /* Get the process group ID of the calling process.  */
368 extern __pid_t EXFUN(getpgrp, (NOARGS));
369 #else   /* Favor BSD.  */
370 #define getpgrp(pid)    __getpgrp(pid)
371 #endif
372
373 /* Set the process group ID of the process matching PID to PGID.
374    If PID is zero, the current process's process group ID is set.
375    If PGID is zero, the process ID of the process is used.  */
376 extern int EXFUN(setpgid, (__pid_t __pid, __pid_t __pgid));
377
378 #ifdef  __USE_BSD
379 /* Set the process group of PID to PGRP.  */
380 extern int EXFUN(setpgrp, (__pid_t __pid, __pid_t __pgrp));
381
382 #ifdef  __OPTIMIZE__
383 #define setpgrp(pid, pgrp)      setpgid((pid), (pgrp))
384 #endif  /* Optimizing.  */
385 #endif  /* Use BSD.  */
386
387 /* Create a new session with the calling process as its leader.
388    The process group IDs of the session and the calling process
389    are set to the process ID of the calling process, which is returned.  */
390 extern __pid_t EXFUN(setsid, (NOARGS));
391
392
393 /* Get the real user ID of the calling process.  */
394 extern __uid_t EXFUN(getuid, (NOARGS));
395
396 /* Get the effective user ID of the calling process.  */
397 extern __uid_t EXFUN(geteuid, (NOARGS));
398
399 /* Get the real group ID of the calling process.  */
400 extern __gid_t EXFUN(getgid, (NOARGS));
401
402 /* Get the effective group ID of the calling process.  */
403 extern __gid_t EXFUN(getegid, (NOARGS));
404
405 /* If SIZE is zero, return the number of supplementary groups
406    the calling process is in.  Otherwise, fill in the group IDs
407    of its supplementary groups in LIST and return the number written.  */
408 extern int EXFUN(getgroups, (int __size, __gid_t __list[]));
409
410 /* Set the user ID of the calling process to UID.
411    If the calling process is the super-user, set the real
412    and effective user IDs, and the saved set-user-ID to UID;
413    if not, the effective user ID is set to UID.  */
414 extern int EXFUN(setuid, (__uid_t __uid));
415
416 #ifdef  __USE_BSD
417 /* Set the real user ID of the calling process to RUID,
418    and the effective user ID of the calling process to EUID.  */
419 extern int EXFUN(__setreuid, (__uid_t __ruid, __uid_t __euid));
420 extern int EXFUN(setreuid, (__uid_t __ruid, __uid_t __euid));
421
422 #define setreuid        __setreuid
423 #endif  /* Use BSD.  */
424
425 /* Set the group ID of the calling process to GID.
426    If the calling process is the super-user, set the real
427    and effective group IDs, and the saved set-group-ID to GID;
428    if not, the effective group ID is set to GID.  */
429 extern int EXFUN(setgid, (__gid_t __gid));
430
431 #ifdef  __USE_BSD
432 /* Set the real group ID of the calling process to RGID,
433    and the effective group ID of the calling process to EGID.  */
434 extern int EXFUN(__setregid, (int __rgid, int __egid));
435 extern int EXFUN(setregid, (int __rgid, int __egid));
436
437 #ifdef  __OPTIMIZE__
438 #define setregid(rgid, egid)    __setregid((rgid), (egid))
439 #endif  /* Optimizing.  */
440 #endif  /* Use BSD.  */
441
442
443 /* Clone the calling process, creating an exact copy.
444    Return -1 for errors, 0 to the new process,
445    and the process ID of the new process to the old process.  */
446 extern __pid_t EXFUN(__fork, (NOARGS));
447 extern __pid_t EXFUN(fork, (NOARGS));
448
449 #define fork    __fork
450
451 #ifdef  __USE_BSD
452 /* Clone the calling process, but without copying the whole address space.
453    The the calling process is suspended until the the new process exits or is
454    replaced by a call to `execve'.  Return -1 for errors, 0 to the new process,
455    and the process ID of the new process to the old process.  */
456 extern __pid_t EXFUN(__vfork, (NOARGS));
457 extern __pid_t EXFUN(vfork, (NOARGS));
458
459 #define vfork   __vfork
460 #endif  /* Use BSD. */
461
462
463 /* Return the pathname of the terminal FD is open on, or NULL on errors.
464    The returned storage is good only until the next call to this function.  */
465 extern char *EXFUN(ttyname, (int __fd));
466
467 /* Return 1 if FD is a valid descriptor associated
468    with a terminal, zero if not.  */
469 extern int EXFUN(__isatty, (int __fd));
470 extern int EXFUN(isatty, (int __fd));
471
472 #ifdef  __OPTIMIZE__
473 #define isatty(fd)      __isatty(fd)
474 #endif  /* Optimizing.  */
475
476
477 /* Make a link to FROM named TO.  */
478 extern int EXFUN(__link, (CONST char *__from, CONST char *__to));
479 extern int EXFUN(link, (CONST char *__from, CONST char *__to));
480 #define link    __link
481
482 #ifdef  __USE_BSD
483 /* Make a symbolic link to FROM named TO.  */
484 extern int EXFUN(symlink, (CONST char *__from, CONST char *__to));
485
486 /* Read the contents of the symbolic link PATH into no more than
487    LEN bytes of BUF.  The contents are not null-terminated.
488    Returns the number of characters read, or -1 for errors.  */
489 extern int EXFUN(readlink, (CONST char *__path, char *__buf, size_t __len));
490 #endif  /* Use BSD.  */
491
492 /* Remove the link NAME.  */
493 extern int EXFUN(__unlink, (CONST char *__name));
494 extern int EXFUN(unlink, (CONST char *__name));
495
496 #ifdef  __OPTIMIZE__
497 #define unlink(name)    __unlink(name)
498 #endif  /* Optimizing.  */
499
500 /* Remove the directory PATH.  */
501 extern int EXFUN(rmdir, (CONST char *__path));
502
503
504 /* Return the foreground process group ID of FD.  */
505 extern __pid_t EXFUN(tcgetpgrp, (int __fd));
506
507 /* Set the foreground process group ID of FD set PGRP_ID.  */
508 extern int EXFUN(tcsetpgrp, (int __fd, __pid_t __pgrp_id));
509
510
511 /* Return the login name of the user.  */
512 extern char *EXFUN(getlogin, (NOARGS));
513
514 #ifdef  __USE_BSD
515 /* Set the login name returned by `getlogin'.  */
516 extern int EXFUN(setlogin, (CONST char *__name));
517 #endif
518
519
520 #ifdef  __USE_POSIX2
521 /* Process the arguments in ARGV (ARGC of them, minus
522    the program name) for options given in OPTS.
523
524    If `opterr' is zero, no messages are generated
525    for invalid options; it defaults to 1.
526    `optind' is the current index into ARGV.
527    `optarg' is the argument corresponding to the current option.
528    Return the option character from OPTS just read.
529    Return -1 when there are no more options.
530    For unrecognized options, or options missing arguments,
531    `optopt' is set to the option letter, and '?' is returned.
532
533    The OPTS string is a list of characters which are recognized option
534    letters, optionally followed by colons, specifying that that letter
535    takes an argument, to be placed in `optarg'.
536
537    If a letter in OPTS is followed by two colons, its argument is optional.
538    This behavior is specific to the GNU `getopt'.
539
540    The argument `--' causes premature termination of argument scanning,
541    explicitly telling `getopt' that there are no more options.
542
543    If OPTS begins with `--', then non-option arguments
544    are treated as arguments to the option '\0'.
545    This behavior is specific to the GNU `getopt'.  */
546 extern int EXFUN(getopt, (int __argc, char *CONST *__argv,
547                           CONST char *__opts));
548 extern int opterr;
549 extern int optind;
550 extern int optopt;
551 extern char *optarg;
552 #endif
553
554
555 #ifdef  __USE_BSD
556 /* Put the name of the current host in no more than LEN bytes of NAME.
557    The result is null-terminated if LEN is large enough for the full
558    name and the terminator.  */
559 extern int EXFUN(__gethostname, (char *__name, size_t __len));
560 extern int EXFUN(gethostname, (char *__name, size_t __len));
561
562 #ifdef  __OPTIMIZE__
563 #define gethostname(name, len)  __gethostname((name), (len))
564 #endif
565
566 /* Set the name of the current host to NAME, which is LEN bytes long.
567    This call is restricted to the super-user.  */
568 extern int EXFUN(sethostname, (CONST char *__name, size_t __len));
569
570 /* Return the current machine's Internet number.  */
571 extern long int EXFUN(gethostid, (NOARGS));
572
573 /* Set the current machine's Internet number to ID.
574    This call is restricted to the super-user.  */
575 extern int EXFUN(sethostid, (long int __id));
576
577
578 /* Return the number of bytes in a page.  This is the system's page size,
579    which is not necessarily the same as the hardware page size.  */
580 extern size_t EXFUN(__getpagesize, (NOARGS));
581 extern size_t EXFUN(getpagesize, (NOARGS));
582
583 #ifdef  __OPTIMIZE__
584 #define getpagesize()   __getpagesize()
585 #endif  /* Optimizing.  */
586
587
588 /* Return the maximum number of file descriptors
589    the current process could possibly have.  */
590 extern int EXFUN(getdtablesize, (NOARGS));
591
592
593 /* Make all changes done to FD actually appear on disk.  */
594 extern int EXFUN(fsync, (int __fd));
595
596 /* Make all changes done to all files actually appear on disk.  */
597 extern int EXFUN(sync, (NOARGS));
598
599
600 /* Revoke access permissions to all processes currently communicating
601    with the control terminal, and then send a SIGHUP signal to the process
602    group of the control terminal.  */
603 extern int EXFUN(vhangup, (NOARGS));
604
605
606 /* Turn accounting on if NAME is an existing file.  The system will then write
607    a record for each process as it terminates, to this file.  If NAME is NULL,
608    turn accounting off.  This call is restricted to the super-user.  */
609 extern int EXFUN(acct, (CONST char *__name));
610
611 /* Make PATH be the root directory (the starting point for absolute paths).
612    This call is restricted to the super-user.  */
613 extern int EXFUN(chroot, (CONST char *__path));
614
615 /* Make the block special device PATH available to the system for swapping.
616    This call is restricted to the super-user.  */
617 extern int EXFUN(swapon, (CONST char *__path));
618 #endif  /* Use BSD.  */
619
620
621 #endif  /* unistd.h  */