home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 10 Tools
/
10-Tools.zip
/
splint3s.zip
/
splint-3.0.1.6
/
lib
/
posix.h
< prev
next >
Wrap
C/C++ Source or Header
|
2002-02-13
|
22KB
|
947 lines
/*
** posix.h
**
** This file should be processed with one of the standard libraries
** (standard.h or strict.h) to produce posix.lcd or posixstrict.lcd.
*/
/*@-nextlinemacros@*/
/*@+allimponly@*/
/*@+globsimpmodifiesnothing@*/
/*
* LCLint ISO C + POSIX Library
*
* $Id: posix.h,v 1.13 2002/01/07 03:37:25 drl7x Exp $
*/
/*
* In 1988, IEEE Std 1003.1-1988, commonly known as "POSIX" or the
* "IEEE Portable Operating System Interface for Computing Environments"
* was published as an American National Standard. In 1990, IEEE Std
* 1003.1-1990 was published as an International Standard. The two
* standards differ slightly, and where they do, the 1990 International
* standard was used for this lclint library. The differences are:
*
* 1988: cuserid()
* 1990: -removed- (but still in this lclint library)
*
* 1988: int read (int, void*, unsigned int)
* 1990: ssize_t read (int, void*, size_t)
*
* 1988: int write (int, const void*, unsigned int)
* 1990: ssize_t write (int, const void*, size_t)
*
* The other differences are in the semantics of functions.
*/
/*
* The reference for the ISO C part of this library was
* Plauger, Brodie's "Standard C - A Reference", Prentice Hall.
* The reference for the POSIX part of this library was
* Donald Lewine's "POSIX Programmer's Guide", O'Reilly.
* Transcription by Jens Schweikhardt <schweikhardt@rus.uni-stuttgart.de>
*/
/*
* Note that Amendment 1 to ISO C was published in 1995 after POSIX was out.
* Amendment 1 basically adds support for wide characters and iso 646
* source character sets. In particular, there are three new headers:
* <iso646.h>, <wchar.h>, and <wctype.h>
*/
/*
* Each header has annotations in this order:
*
* 1) type definitions (if any)
* 2) constant definitions (if any)
* 3) structure definitions (if any)
* 4) function prototypes and externals (if any)
*
* 5) type definitions augmented by POSIX (if any)
* 6) constant definitions augmented by POSIX (if any)
* 7) structure definitions augmented by POSIX (if any)
* 8) function prototypes and externals augmented by POSIX (if any)
*
* Builtins are mentioned in the header where they appear according to ISO.
*/
/*
** sys/types.h
*/
typedef /*@integraltype@*/ dev_t;
typedef /*@integraltype@*/ gid_t;
typedef /*@unsignedintegraltype@*/ ino_t; /*: is this definitely unsigned? */
typedef /*@integraltype@*/ mode_t;
typedef /*@integraltype@*/ nlink_t;
typedef /*@integraltype@*/ off_t;
typedef /*@integraltype@*/ pid_t;
typedef /*@integraltype@*/ uid_t;
/*
** dirent.h
*/
typedef /*@abstract@*/ /*@mutable@*/ void *DIR;
struct dirent {
char d_name[];
};
extern int closedir (DIR *dirp)
/*@modifies errno@*/;
/*drl 1/4/2001 added the dependent annotation as suggested by
Ralf Wildenhues */
extern /*@null@*/ /*@dependent@*/ DIR *opendir (const char *dirname)
/*@modifies errno, fileSystem@*/;
extern /*@null@*/ struct dirent *readdir (DIR *dirp)
/*@modifies errno@*/;
extern void rewinddir (DIR *dirp)
/*@*/;
/*
** errno.h
*/
/*@constant int E2BIG@*/
/*@constant int EACCES@*/
/*@constant int EAGAIN@*/
/*@constant int EBADF@*/
/*@constant int EBUSY@*/
/*@constant int ECHILD@*/
/*@constant int EDEADLK@*/
/*@constant int EEXIST@*/
/*@constant int EFAULT@*/
/*@constant int EFBIG@*/
/*@constant int EINTR@*/
/*@constant int EINVAL@*/
/*@constant int EIO@*/
/*@constant int EISDIR@*/
/*@constant int EMFILE@*/
/*@constant int EMLINK@*/
/*@constant int ENAMETOOLONG@*/
/*@constant int ENFILE@*/
/*@constant int ENODEV@*/
/*@constant int ENOENT@*/
/*@constant int ENOEXEC@*/
/*@constant int ENOLCK@*/
/*@constant int ENOMEM@*/
/*@constant int ENOSPC@*/
/*@constant int ENOSYS@*/
/*@constant int ENOTDIR@*/
/*@constant int ENOTEMPTY@*/
/*@constant int ENOTTY@*/
/*@constant int ENXIO@*/
/*@constant int EPERM@*/
/*@constant int EPIPE@*/
/*@constant int EROFS@*/
/*@constant int ESPIPE@*/
/*@constant int ESRCH@*/
/*@constant int EXDEV@*/
/*
** fcntl.h
*/
/*@constant int FD_CLOEXEC@*/
/*@constant int F_DUPFD@*/
/*@constant int F_GETFD@*/
/*@constant int F_GETFL@*/
/*@constant int F_GETLK@*/
/*@constant int F_RDLCK@*/
/*@constant int F_SETFD@*/
/*@constant int F_SETFL@*/
/*@constant int F_SETLK@*/
/*@constant int F_SETLKW@*/
/*@constant int F_UNLCK@*/
/*@constant int F_WRLCK@*/
/*@constant int O_ACCMODE@*/
/*@constant int O_APPEND@*/
/*@constant int O_CREAT@*/
/*@constant int O_EXCL@*/
/*@constant int O_NOCTTY@*/
/*@constant int O_NONBLOCK@*/
/*@constant int O_RDONLY@*/
/*@constant int O_RDWR@*/
/*@constant int O_TRUNC@*/
/*@constant int O_WRONLY@*/
/*@constant int SEEK_CUR@*/
/*@constant int SEEK_END@*/
/*@constant int SEEK_SET@*/
/*@constant int S_IRGRP@*/
/*@constant int S_IROTH@*/
/*@constant int S_IUSR@*/
/*@constant int S_IWXG@*/
/*@constant int S_IWXO@*/
/*@constant int S_IWXU@*/
/*@constant int S_ISGID@*/
/*@constant int S_ISUID@*/
/*@constant int S_IWGRP@*/
/*@constant int S_IWOTH@*/
/*@constant int S_IWUSR@*/
/*@constant int S_IXGRP@*/
/*@constant int S_IXOTH@*/
/*@constant int S_IXUSR@*/
struct flock {
short l_type;
short l_whence;
off_t l_start;
off_t l_len;
pid_t l_pid;
};
extern int creat (const char *path, mode_t mode)
/*@modifies errno@*/;
extern int fcntl (int fd, int cmd, ...)
/*@modifies errno@*/;
extern int open (const char *path, int oflag, ...)
/*:checkerror -1 - returns -1 on error */
/*@modifies errno@*/;
/*
** grp.h
*/
struct group {
char *gr_name;
gid_t gr_gid;
char **gr_mem;
};
extern /*@null@*/ struct group *
getgrgid (gid_t gid)
/*@modifies errno@*/;
extern /*@null@*/ struct group *
getgrnam (const char *nm)
/*@modifies errno@*/;
/*
** limits.h
*/
/* These are always defined: */
/*@constant int CHAR_BIT@*/
/*@constant char CHAR_MIN@*/
/*@constant char CHAR_MAX@*/
/*@constant int INT_MIN@*/
/*@constant int INT_MAX@*/
/*@constant long LONG_MIN@*/
/*@constant long LONG_MAX@*/
/*@constant int MB_LEN_MAX@*/
/*@constant signed char SCHAR_MIN@*/
/*@constant signed char SCHAR_MAX@*/
/*@constant short SHRT_MIN@*/
/*@constant short SHRT_MAX@*/
/*@constant unsigned char UCHAR_MAX@*/
/*@constant unsigned int UINT_MAX@*/
/*@constant unsigned long ULONG_MAX@*/
/*@constant unsigned short USHRT_MAX@*/
/* When _POSIX_SOURCE is defined */
/*@constant long ARG_MAX@*/
/*@constant long CHILD_MAX@*/
/*@constant long LINK_MAX@*/
/*@constant long MAX_CANON@*/
/*@constant size_t MAX_INPUT@*/ /* evans 2001-10-15 changed type to size_t from long */
/*@constant size_t NAME_MAX@*/ /* evans 2001-10-15 changed type to size_t from long */
/*@constant long NGROUPS_MAX@*/
/*@constant long OPEN_MAX@*/
/*@constant size_t PATH_MAX@*/ /* evans 2001-10-15 changed type to size_t from long */
/*@constant size_t PIPE_BUF@*/ /* evans 2001-10-15 changed type to size_t from long */
/*@constant long SSIZE_MAX@*/
/*@constant long STREAM_MAX@*/
/*@constant long TZNAME_MAX@*/
/*@constant long _POSIX_ARG_MAX@*/
/*@constant long _POSIX_CHILD_MAX@*/
/*@constant long _POSIX_LINK_MAX@*/
/*@constant long _POSIX_MAX_CANON@*/
/*@constant long _POSIX_MAX_INPUT@*/
/*@constant long _POSIX_NAME_MAX@*/
/*@constant long _POSIX_NGROUPS_MAX@*/
/*@constant long _POSIX_OPEN_MAX@*/
/*@constant long _POSIX_PATH_MAX@*/
/*@constant long _POSIX_PIPE_BUF@*/
/*@constant long _POSIX_SSIZE@*/
/*@constant long _POSIX_STREAM@*/
/*@constant long _POSIX_TZNAME_MAX@*/
/*
** pwd.h
*/
struct passwd {
char *pw_name;
uid_t pw_uid;
gid_t pw_gid;
char *pw_dir;
char *pw_shell;
} ;
extern /*@observer@*/ /*@null@*/ struct passwd *
getpwnam (const char *)
/*@modifies errno@*/ /*@ensures maxRead(result) == 0 /\ maxSet(result) == 0 @*/;
extern /*@observer@*/ /*@null@*/ struct passwd *
getpwuid (uid_t uid)
/*@modifies errno@*/ /*@ensures maxRead(result) == 0 /\ maxSet(result) == 0 @*/;
/*
** setjmp.h
*/
typedef /*@abstract@*/ /*@mutable@*/ void *sigjmp_buf;
extern /*@mayexit@*/ void
siglongjmp (sigjmp_buf env, int val)
/*@*/;
extern int
sigsetjmp (/*@out@*/ sigjmp_buf env, int savemask)
/*@modifies env@*/;
/*
** signal.h
*/
typedef /*@abstract@*/ sigset_t;
/*@constant int SA_NOCLDSTOP@*/
/*@constant int SIG_BLOCK@*/
/*@constant int SIG_SETMASK@*/
/*@constant int SIG_UNBLOCK@*/
/*@constant int SIGALRM@*/
/*@constant int SIGCHLD@*/
/*@constant int SIGCONT@*/
/*@constant int SIGHUP@*/
/*@constant int SIGKILL@*/
/*@constant int SIGPIPE@*/
/*@constant int SIGQUIT@*/
/*@constant int SIGSTOP@*/
/*@constant int SIGTSTP@*/
/*@constant int SIGTTIN@*/
/*@constant int SIGTTOU@*/
/*@constant int SIGUSR1@*/
/*@constant int SIGUSR2@*/
struct sigaction {
void (*sa_handler)();
sigset_t sa_mask;
int sa_flags;
} ;
extern /*@mayexit@*/ int
kill (pid_t pid, int sig)
/*@modifies errno@*/;
extern int
sigaction (int sig, const struct sigaction *act, /*@out@*/ /*@null@*/ struct sigaction *oact)
/*@modifies *oact, errno, systemState@*/;
extern int
sigaddset (sigset_t *set, int signo)
/*@modifies *set, errno@*/;
extern int
sigdelset (sigset_t *set, int signo)
/*@modifies *set, errno@*/;
extern int
sigemptyset (/*@out@*/ sigset_t *set)
/*@modifies *set, errno@*/;
extern int
sigfillset (/*@out@*/ sigset_t *set)
/*@modifies *set, errno@*/;
extern int
sigismember (const sigset_t *set, int signo)
/*@modifies errno@*/;
extern int
sigpending (/*@out@*/ sigset_t *set)
/*@modifies *set, errno@*/;
extern int
sigprocmask (int how, /*@null@*/ const sigset_t *set, /*@null@*/ /*@out@*/ sigset_t *oset)
/*@modifies *oset, errno, systemState@*/;
extern int
sigsuspend (const sigset_t *sigmask)
/*@modifies errno, systemState@*/;
/*
** stdio.h
*/
/*@constant int L_ctermid@*/
/*@constant int L_cuserid@*/
/*@constant int STREAM_MAX@*/
extern /*@null@*/ /*@dependent@*/ FILE *fdopen (int fd, const char *type)
/*@modifies errno, fileSystem@*/;
extern int fileno (FILE *fp) /*@modifies errno@*/;
/*
** sys/stat.h
*/
/*@constant int S_IRGRP@*/
/*@constant int S_IROTH@*/
/*@constant int S_IUSR@*/
/*@constant int S_IWXG@*/
/*@constant int S_IWXO@*/
/*@constant int S_IWXU@*/
/*@constant int S_ISGID@*/
/*@constant int S_ISUID@*/
/*@constant int S_IWGRP@*/
/*@constant int S_IWOTH@*/
/*@constant int S_IWUSR@*/
/*@constant int S_IXGRP@*/
/*@constant int S_IXOTH@*/
/*@constant int S_IXUSR@*/
struct stat {
mode_t st_mode;
ino_t st_ino;
dev_t st_dev;
nlink_t st_nlink;
uid_t st_uid;
gid_t st_gid;
off_t st_size;
time_t st_atime; /* evans 2001-08-23 - these were previously st_st_atime - POSIX spec says st_atime */
time_t st_mtime; /* evans 2001-08-23 - these were previously st_st_mtime - POSIX spec says st_mtime */
time_t st_ctime; /* evans 2001-08-23 - these were previously st_st_ctime - POSIX spec says st_ctime */
} ;
/*
** POSIX does not require that the S_I* be functions. They're
** macros virtually everywhere.
*/
# ifdef STRICT
/*@notfunction@*/
# define SBOOLINT lltX_bool /*@alt int@*/
# else
/*@notfunction@*/
# define SBOOLINT lltX_bool
# endif
extern SBOOLINT S_ISBLK (/*@sef@*/ mode_t m) /*@*/ ;
extern SBOOLINT S_ISCHR (/*@sef@*/ mode_t m) /*@*/ ;
extern SBOOLINT S_ISDIR (/*@sef@*/ mode_t m) /*@*/ ;
extern SBOOLINT S_ISFIFO (/*@sef@*/ mode_t m) /*@*/ ;
extern SBOOLINT S_ISREG (/*@sef@*/ mode_t m) /*@*/ ;
int chmod (const char *path, mode_t mode)
/*@modifies fileSystem, errno@*/ ;
int fstat (int fd, /*@out@*/ struct stat *buf)
/*@modifies errno, *buf@*/ ;
int mkdir (const char *path, mode_t mode)
/*@modifies fileSystem, errno@*/;
int mkfifo (const char *path, mode_t mode)
/*@modifies fileSystem, errno@*/;
int stat (const char *path, /*@out@*/ struct stat *buf)
/*:errorcode -1*/
/*@modifies errno, *buf@*/;
int umask (mode_t cmask)
/*@modifies systemState@*/;
/*
** sys/times.h
*/
struct tms {
clock_t tms_utime;
clock_t tms_stime;
clock_t tms_cutime;
clock_t tms_cstime;
};
extern clock_t
times (/*@out@*/ struct tms *tp)
/*@modifies *tp@*/;
/*
** sys/utsname.h
*/
struct utsname {
char sysname[];
char nodename[];
char release[];
char version[];
char machine[];
};
extern int
uname (/*@out@*/ struct utsname *name)
/*@modifies *name, errno@*/ ;
/*
** sys/wait.h
*/
extern int WEXITSTATUS (int status) /*@*/ ;
extern int WIFEXITED (int status) /*@*/ ;
extern int WIFSIGNALED (int status) /*@*/ ;
extern int WIFSTOPPED (int status) /*@*/ ;
extern int WSTOPSIG (int status) /*@*/ ;
extern int WTERMSIG (int status) /*@*/ ;
/*@constant int WUNTRACED@*/
pid_t wait (/*@out@*/ /*@null@*/ int *st)
/*@modifies *st, errno, systemState@*/;
pid_t waitpid (pid_t pid, /*@out@*/ /*@null@*/ int *st, int opt)
/*@modifies *st, errno, systemState@*/;
/*
** termios.h
*/
typedef unsigned char /*@alt unsigned short@*/ cc_t;
typedef unsigned long /*@alt long@*/ speed_t;
typedef unsigned long /*@alt long@*/ tcflag_t;
/*@constant int B0@*/
/*@constant int B50@*/
/*@constant int B75@*/
/*@constant int B110@*/
/*@constant int B134@*/
/*@constant int B150@*/
/*@constant int B200@*/
/*@constant int B300@*/
/*@constant int B600@*/
/*@constant int B1200@*/
/*@constant int B1800@*/
/*@constant int B2400@*/
/*@constant int B4800@*/
/*@constant int B9600@*/
/*@constant int B19200@*/
/*@constant int B38400@*/
/*@constant int BRKINT@*/
/*@constant int CLOCAL@*/
/*@constant int CREAD@*/
/*@constant int CS5@*/
/*@constant int CS6@*/
/*@constant int CS7@*/
/*@constant int CS8@*/
/*@constant int CSIZE@*/
/*@constant int CSTOPB@*/
/*@constant int ECHO@*/
/*@constant int ECHOE@*/
/*@constant int ECHOK@*/
/*@constant int ECHONL@*/
/*@constant int HUPCL@*/
/*@constant int ICANON@*/
/*@constant int ICRNL@*/
/*@constant int IEXTEN@*/
/*@constant int IGNBRK@*/
/*@constant int IGNCR@*/
/*@constant int IGNPAR@*/
/*@constant int IGNLCR@*/
/*@constant int INPCK@*/
/*@constant int ISIG@*/
/*@constant int ISTRIP@*/
/*@constant int IXOFF@*/
/*@constant int IXON@*/
/*@constant int NCCS@*/
/*@constant int NOFLSH@*/
/*@constant int OPOST@*/
/*@constant int PARENB@*/
/*@constant int PARMRK@*/
/*@constant int PARODD@*/
/*@constant int TCIFLUSH@*/
/*@constant int TCIOFF@*/
/*@constant int TCIOFLUSH@*/
/*@constant int TCION@*/
/*@constant int TCOFLUSH@*/
/*@constant int TCSADRAIN@*/
/*@constant int TCSAFLUSH@*/
/*@constant int TCSANOW@*/
/*@constant int TOSTOP@*/
/*@constant int VEOF@*/
/*@constant int VEOL@*/
/*@constant int VERASE@*/
/*@constant int VINTR@*/
/*@constant int VKILL@*/
/*@constant int VMIN@*/
/*@constant int VQUIT@*/
/*@constant int VSTART@*/
/*@constant int VSTOP@*/
/*@constant int VSUSP@*/
/*@constant int VTIME@*/
struct termios {
tcflag_t c_iflag;
tcflag_t c_oflag;
tcflag_t c_cflag;
tcflag_t c_lflag;
cc_t c_cc;
} ;
extern speed_t
cfgetispeed (const struct termios *p)
/*@*/;
extern speed_t
cfgetospeed (const struct termios *p)
/*@*/;
extern int
cfsetispeed (struct termios *p)
/*@modifies *p@*/;
extern int
cfsetospeed (struct termios *p)
/*@modifies *p@*/;
extern int
tcdrain (int fd)
/*@modifies errno@*/;
extern int
tcflow (int fd, int action)
/*@modifies errno@*/;
extern int
tcflush (int fd, int qs)
/*@modifies errno@*/;
extern int
tcgetattr (int fd, /*@out@*/ struct termios *p)
/*@modifies errno, *p@*/;
extern int
tcsendbreak (int fd, int d)
/*@modifies errno@*/;
extern int
tcsetattr (int fd, int opt, const struct termios *p)
/*@modifies errno@*/;
/*
** time.h
*/
/* Environ must be known before it can be used in `globals' clauses. */
/*@unchecked@*/ extern char **environ;
/*@constant int CLK_TCK@*/
extern void
tzset (void)
/*@globals environ@*/ /*@modifies systemState@*/;
/*
** unistd.h
*/
/*@constant int F_OK@*/
/*@constant int R_OK@*/
/*@constant int SEEK_CUR@*/
/*@constant int SEEK_END@*/
/*@constant int SEEK_SET@*/
/*@constant int STDERR_FILENO@*/
/*@constant int STDIN_FILENO@*/
/*@constant int STDOUT_FILENO@*/
/*@constant int W_OK@*/
/*@constant int X_OK@*/
/*@constant int _PC_CHOWN_RESTRUCTED@*/
/*@constant int _PC_MAX_CANON@*/
/*@constant int _PC_MAX_INPUT@*/
/*@constant int _PC_NAME_MAX@*/
/*@constant int _PC_NO_TRUNC@*/
/*@constant int _PC_PATH_MAX@*/
/*@constant int _PC_PIPE_BUF@*/
/*@constant int _PC_VDISABLE@*/
/*@constant int _POSIX_CHOWN_RESTRICTED@*/
/*@constant int _POSIX_JOB_CONTROL@*/
/*@constant int _POSIX_NO_TRUNC@*/
/*@constant int _POSIX_SAVED_IDS@*/
/*@constant int _POSIX_VDISABLE@*/
/*@constant int _POSIX_VERSION@*/
/*@constant int _SC_ARG_MAX@*/
/*@constant int _SC_CHILD_MAX@*/
/*@constant int _SC_CLK_TCK@*/
/*@constant int _SC_JOB_CONTROL@*/
/*@constant int _SC_NGROUPS_MAX@*/
/*@constant int _SC_OPEN_MAX@*/
/*@constant int _SC_SAVED_IDS@*/
/*@constant int _SC_STREAM_MAX@*/
/*@constant int _SC_TZNAME_MAX@*/
/*@constant int _SC_VERSION@*/
extern /*@exits@*/ void _exit (int status) /*@*/;
extern int access (const char *path, int mode) /*@modifies errno@*/;
extern unsigned int alarm (unsigned int) /*@modifies systemState@*/;
extern int chdir (const char *path) /*@modifies errno@*/;
extern int chown (const char *path, uid_t owner, gid_t group)
/*@modifies fileSystem, errno@*/;
extern int
close (int fd)
/*@modifies fileSystem, errno, systemState@*/;
/* state: record locks are unlocked */
extern char *
ctermid (/*@returned@*/ /*@out@*/ /*@null@*/ char *s)
/*@modifies *s, systemState@*/;
/* cuserid is in the 1988 version of POSIX but removed in 1990 */
extern char *
cuserid (/*@null@*/ /*@out@*/ char *s)
/*@modifies *s@*/;
extern int
dup2 (int fd, int fd2)
/*@modifies errno, fileSystem@*/;
extern int
dup (int fd)
/*@modifies errno, fileSystem@*/;
extern /*@mayexit@*/ int
execl (const char *path, const char *arg, ...)
/*@modifies errno@*/;
extern /*@mayexit@*/ int
execle (const char *file, const char *arg, ...)
/*@modifies errno@*/;
extern /*@mayexit@*/ int
execlp (const char *file, const char *arg, ...)
/*@modifies errno@*/;
extern /*@mayexit@*/ int
execv (const char *path, char *const argv[])
/*@modifies errno@*/;
extern /*@mayexit@*/ int
execve (const char *path, char *const argv[], char *const *envp)
/*@modifies errno@*/;
extern /*@mayexit@*/ int
execvp (const char *file, char *const argv[])
/*@modifies errno@*/;
extern pid_t
fork (void)
/*@modifies fileSystem, errno@*/;
extern long
fpathconf (int fd, int name)
/*@modifies errno@*/;
extern /*@null@*/ char *getcwd (/*@returned@*/ /*@out@*/ /*@notnull@*/ char *buf, size_t size)
/*@requires maxSet(buf) >= (size - 1)@*/
/*@ensures maxRead(buf) <= (size - 1)@*/
/*@modifies errno, *buf@*/ ;
extern gid_t
getegid (void)
/*@*/;
extern uid_t
geteuid (void)
/*@*/;
extern gid_t
getgid (void)
/*@*/;
extern int
getgroups (int gs, /*@out@*/ gid_t gl[])
/*@modifies errno, gl[]@*/;
extern /*@observer@*/ char *
getlogin (void)
/*@*/;
extern pid_t
getpgrp (void)
/*@*/;
extern pid_t
getpid (void)
/*@*/;
extern pid_t
getppid (void)
/*@*/;
extern uid_t
getuid (void)
/*@*/;
extern int
isatty (int fd)
/*@*/;
extern int
link (const char *o, const char *n)
/*@modifies errno, fileSystem@*/;
extern off_t
lseek (int fd, off_t offset, int whence)
/*@modifies errno@*/;
extern long
pathconf (const char *path, int name)
/*@modifies errno@*/;
extern int
pause (void)
/*@modifies errno@*/;
extern int
pipe (/*@out@*/ int fd[]) /* Out parameter noticed by Marc Espie. */
/*@modifies errno@*/;
extern ssize_t read (int fd, /*@out@*/ void *buf, size_t nbyte)
/*@modifies errno, *buf@*/ /*@requires maxSet(buf) >= (nbyte - 1) @*/
/*@ensures maxRead(buf) >= nbyte @*/ ;
extern int rmdir (const char *path)
/*@modifies fileSystem, errno@*/;
extern int setgid (gid_t gid)
/*@modifies errno, systemState@*/;
extern int setpgid (pid_t pid, pid_t pgid)
/*@modifies errno, systemState@*/;
extern pid_t setsid (void) /*@modifies systemState@*/;
extern int setuid (uid_t uid)
/*@modifies errno, systemState@*/;
unsigned int sleep (unsigned int sec) /*@modifies systemState@*/ ;
extern long sysconf (int name)
/*@modifies errno@*/;
extern pid_t tcgetpgrp (int fd)
/*@modifies errno@*/;
extern int tcsetpgrp (int fd, pid_t pgrpid)
/*@modifies errno, systemState@*/;
/* Q: observer ok? */
extern /*@null@*/ /*@observer@*/ char *ttyname (int fd)
/*@modifies errno@*/;
extern int unlink (const char *path)
/*@modifies fileSystem, errno@*/;
extern ssize_t write (int fd, const void *buf, size_t nbyte)
/*@modifies errno@*/;
/*
** utime.h
*/
struct utimbuf {
time_t actime;
time_t modtime;
} ;
extern int
utime (const char *path, /*@null@*/ const struct utimbuf *times)
/*@modifies fileSystem, errno@*/;
/*
** regex.h
*/
typedef /*@abstract@*/ /*@mutable@*/ void *regex_t;
typedef /*@integraltype@*/ regoff_t;
typedef struct
{
regoff_t rm_so;
regoff_t rm_eo;
} regmatch_t;
int regcomp (/*@out@*/ regex_t *preg, /*@nullterminated@*/ const char *regex, int cflags)
/*:statusreturn@*/
/*@modifies preg@*/ ;
int regexec (const regex_t *preg, /*@nullterminated@*/ const char *string, size_t nmatch, /*@out@*/ regmatch_t pmatch[], int eflags)
/*@requires maxSet(pmatch) >= nmatch@*/
/*@modifies pmatch@*/ ;
size_t regerror (int errcode, const regex_t *preg, /*@out@*/ char *errbuf, size_t errbuf_size)
/*@requires maxSet(errbuf) >= errbuf_size@*/
/*@modifies errbuf@*/ ;
void regfree (/*@only@*/ regex_t *preg) ;
/* regcomp flags */
/*@constant int REG_BASIC@*/
/*@constant int REG_EXTENDED@*/
/*@constant int REG_ICASE@*/
/*@constant int REG_NOSUB@*/
/*@constant int REG_NEWLINE@*/
/*@constant int REG_NOSPEC@*/
/*@constant int REG_PEND@*/
/*@constant int REG_DUMP@*/
/* regerror flags */
/*@constant int REG_NOMATCH@*/
/*@constant int REG_BADPAT@*/
/*@constant int REG_ECOLLATE@*/
/*@constant int REG_ECTYPE@*/
/*@constant int REG_EESCAPE@*/
/*@constant int REG_ESUBREG@*/
/*@constant int REG_EBRACK@*/
/*@constant int REG_EPAREN@*/
/*@constant int REG_EBRACE@*/
/*@constant int REG_BADBR@*/
/*@constant int REG_ERANGE@*/
/*@constant int REG_ESPACE@*/
/*@constant int REG_BADRPT@*/
/*@constant int REG_EMPTY@*/
/*@constant int REG_ASSERT@*/
/*@constant int REG_INVARG@*/
/*@constant int REG_ATOI@*/ /* non standard */
/*@constant int REG_ITOA@*/ /* non standard */
/* regexec flags */
/*@constant int REG_NOTBOL@*/
/*@constant int REG_NOTEOL@*/
/*@constant int REG_STARTEND@*/
/*@constant int REG_TRACE@*/
/*@constant int REG_LARGE@*/
/*@constant int REG_BACKR@*/