[m-rev.] for review: make the deep profiler work again

Fergus Henderson fjh at cs.mu.OZ.AU
Fri Nov 15 22:32:55 AEDT 2002


On 15-Nov-2002, Zoltan Somogyi <zs at cs.mu.OZ.AU> wrote:
> On 15-Nov-2002, Fergus Henderson <fjh at cs.mu.OZ.AU> wrote:
> > Zoltan wrote:
> > > +:- pragma foreign_decl("C", "
> > > +#include <stdio.h>
> > > +#include <stdlib.h>
> > > +#include <unistd.h>
> > > +#include <sys/types.h>
> > > +#include <sys/stat.h>
> > > +#include <fcntl.h>
> > > +").
> > 
> > These includes need to be protected with #ifdefs,
> 
> Done.
> 
> > and/or the code in configure.in needs to check that these headers
> > exist before enabling the deep profiler.
> 
> Will do; I believe I can assume the presence of stdio.h, but I am not sure
> about stdlib.

<stdlib.h> is part of the 1989 C standard, so yes, you can assume it
will be present.

For future reference, I have attached a list of all the names (functions,
macros, headers, etc.) defined in C89.  The attachment also lists the
names defined in the first Posix (1003.1) standard.  There is
also a similar list at <www.unix-systems.org>.

> > What about `help' and `version'?
> 
> mdprof_cgi ignores its command line if QUERY_STRING is set, because web
> servers can pass the query URL in strangely-chopped-up bits and pieces
> on the command line. I could make mdprof_cgi respect these options
> if QUERY_STRING isn't set.

That would be good.

> > (`version' is particularly important in this case since
> > this file will get installed in a non-version-specific directory.)
> 
> What should we report? Of course 0.11 for the release, but we don't
> want it to keep on reporting 0.11. I could call library__version,
> but the deep_profiler can change version even if the library doesn't.

Just use library__version.  With the way we currently distribute the deep
profiler and library together as part of the mercury-compiler package,
using library__version will always be correct.  If we start distributing
the deep profiler separately, we can change add a separate version when
we do that.  (Note that the compiler and the ordinary profiler both use
library__version too, so they will need the same treatment if we split
them out into separate distributions.)

> I also note that mmc doesn't understand --version. The same issues
> apply there.

Yes, although for mmc the issue is less critical because
	(1) mmc is by default installed in a version-specific directory
and	(2) mmc prints the version number (and some other stuff)
	    if you invoke it with no options.

We should fix this at some point, but it's not release-critical.

> Done.
> 
> > In fact, this code should be extracted out into a subroutine
> > (called e.g. "make_directory_and_parent_dirs").
> 
> I will leave this change until later.

OK, but in the mean time please add an XXX comment.

> > > Index: deep_profiler/startup.m
> > > +:- pred maybe_report_stats(maybe(io__output_stream)::in,
> > > +	io__state::di, io__state::uo) is det.
> > > +
> > > +maybe_report_stats(yes(_)) --> [].
> > > +	% io__report_stats("standard"). XXX
> > > +maybe_report_stats(no) --> [].
> > 
> > The XXX comment should explain why this is commented out.
> 
> I added:
> 
> % XXX: io__report_stats writes to the current output stream, which in 
> % mdprof_cgi is the closed stream stdout. We want to write the report
> % to _OutputStream, but the library doesn't support that yet. We don't
> % want to set and unset the current output stream, since io__see/io__seen
> % don't use a stack of I/O streams.

The comment "the library doesn't support that yet" is wrong.
Just do

	io__set_current_output(OutputStream, OldOutputStream),
	io__report_stats("standard"),
	io__set_current_output(OldOutputStream, _)

> > > +% Get the lock on the named mutex file if the bool is `no'.
> > > +% If the bool is `yes', meaning debugging is enabled, do nothing.
> > > +
> > > +:- pred get_lock(bool::in, string::in,
> > > +	io__state::di, io__state::uo) is det.
> > 
> > Does this acquire a lock on the named file, thus preventing other
> > threads/processes from accessing it, or does it use (the existence or
> > nonexistence of) the named file to implement a mutex lock?
> > If the latter, then IMHO the comment is misleading.
> 
> I don't think it is since Unix doesn't support mandatory locks, but I added
> 
> % (The mutex file exists iff some process holds the lock.)
> 
> to both comments.

I was thinking more along the lines of changing "get the lock on the
named mutex file" to "acquire the lock with the specified name".

-- 
Fergus Henderson <fjh at cs.mu.oz.au>  |  "I have always known that the pursuit
The University of Melbourne         |  of excellence is a lethal habit"
WWW: <http://www.cs.mu.oz.au/~fjh>  |     -- the last words of T. S. Garp.
-------------- next part --------------
From: ddm26 at cas.org (De Mickey)
Message-ID: <1994Jul27.141717.29920 at chemabs.uucp>
Summary: list of POSIX and ANSI C identifiers
Date: Wed, 27 Jul 1994 14:17:17 GMT

OK, here is a list, somewhat along the lines you are asking
for, that I put together some time back.  It includes the
identifiers you should find in conforming ANSI C and POSIX.1
headers.  If you find any bugs, omissions, etc., please let
me know.   Anybody got a similar list for XPG3 and/or XPG4?

A present from me to comp.std.c :-)

De Mickey
ddm26 at cas.org

--------
ANSI C and POSIX.1 Symbol/Header Cross Reference
================================================

The following list provides a cross reference table between
ANSI/ISO Standard C and POSIX P1003.1 symbols
The table includes the following fields (in order):

    Std                   -  which standard defines the symbol
                             ANSI/ISO Standard C, or POSIX P1003.1

    Pimary Header         -  the header where the symbol is declared
                             or defined.  Symbols that are defined
                             in multiple headers have multiple
                             entries in the cross-reference table.

    Symbol Type           -  macro, function, variable, struct, or
                             typedef.  Note that any function can also
                             (optionally) exist as a macro, and that
                             some symbols can be either macros or
                             functions depending on the implemention.

    Symbol                -  actual identifier.  Functions and
                             function-like macros are shown with parens

    Prerequisite Headers  -  other headers that should be included
                             before the primary header in code using
                             this function


       Primary          Symbol                   Prerequisite
Std.   Header           Type      Symbol         Headers
====   =======          ======    ======         ============
ANSI   <assert.h>       macro     NDEBUG
ANSI   <ctype.h>        function  isalnum()
POSIX  <dirent.h>       function  readdir()      <sys/types.h>
POSIX  <dirent.h>       struct    dirent
POSIX  <dirent.h>       typedef   DIR
POSIX  <errno.h>        macro     EINTR

ANSI   <assert.h>       macro     NDEBUG
ANSI   <assert.h>       macro     assert()
ANSI   <ctype.h>        function  isalnum()
ANSI   <ctype.h>        function  isalpha()
ANSI   <ctype.h>        function  iscntrl()
ANSI   <ctype.h>        function  isdigit()
ANSI   <ctype.h>        function  isgraph()
ANSI   <ctype.h>        function  islower()
ANSI   <ctype.h>        function  isprint()
ANSI   <ctype.h>        function  ispunct()
ANSI   <ctype.h>        function  isspace()
ANSI   <ctype.h>        function  isupper()
ANSI   <ctype.h>        function  isxdigit()
ANSI   <ctype.h>        function  tolower()
ANSI   <ctype.h>        function  toupper()
POSIX  <dirent.h>       function  closedir()     <sys/types.h>
POSIX  <dirent.h>       function  opendir()      <sys/types.h>
POSIX  <dirent.h>       function  readdir()      <sys/types.h>
POSIX  <dirent.h>       function  rewinddir()    <sys/types.h>
POSIX  <dirent.h>       struct    dirent
POSIX  <dirent.h>       typedef   DIR
POSIX  <errno.h>        macro     E2BIG
POSIX  <errno.h>        macro     EACCES
POSIX  <errno.h>        macro     EAGAIN
POSIX  <errno.h>        macro     EBADF
POSIX  <errno.h>        macro     EBUSY
POSIX  <errno.h>        macro     ECHILD
POSIX  <errno.h>        macro     EDEADLK
ANSI   <errno.h>        macro     EDOM
POSIX  <errno.h>        macro     EEXIST
POSIX  <errno.h>        macro     EFAULT
POSIX  <errno.h>        macro     EFBIG
POSIX  <errno.h>        macro     EINTR
POSIX  <errno.h>        macro     EINVAL
POSIX  <errno.h>        macro     EIO
POSIX  <errno.h>        macro     EISDIR
POSIX  <errno.h>        macro     EMFILE
POSIX  <errno.h>        macro     EMLINK
POSIX  <errno.h>        macro     ENAMETOOLONG
POSIX  <errno.h>        macro     ENFILE
POSIX  <errno.h>        macro     ENODEV
POSIX  <errno.h>        macro     ENOENT
POSIX  <errno.h>        macro     ENOEXEC
POSIX  <errno.h>        macro     ENOLCK
POSIX  <errno.h>        macro     ENOMEM
POSIX  <errno.h>        macro     ENOSPC
POSIX  <errno.h>        macro     ENOSYS
POSIX  <errno.h>        macro     ENOTDIR
POSIX  <errno.h>        macro     ENOTEMPTY
POSIX  <errno.h>        macro     ENOTTY
POSIX  <errno.h>        macro     ENXIO
POSIX  <errno.h>        macro     EPERM
POSIX  <errno.h>        macro     EPIPE
ANSI   <errno.h>        macro     ERANGE
POSIX  <errno.h>        macro     EROFS
POSIX  <errno.h>        macro     ESPIPE
POSIX  <errno.h>        macro     ESRCH
POSIX  <errno.h>        macro     EXDEV
ANSI   <errno.h>        variable  errno
POSIX  <fcntl.h>        function  creat()        <sys/types.h>  <sys/stat.h>
POSIX  <fcntl.h>        function  fcntl()        <sys/types.h>  <unistd.h>
POSIX  <fcntl.h>        function  open()         <sys/types.h>  <sys/stat.h>
POSIX  <fcntl.h>        macro     FD_CLOEXEC
POSIX  <fcntl.h>        macro     F_DUPFD
POSIX  <fcntl.h>        macro     F_GETFD
POSIX  <fcntl.h>        macro     F_GETFL
POSIX  <fcntl.h>        macro     F_GETLK
POSIX  <fcntl.h>        macro     F_RDLCK
POSIX  <fcntl.h>        macro     F_SETFD
POSIX  <fcntl.h>        macro     F_SETFL
POSIX  <fcntl.h>        macro     F_SETLK
POSIX  <fcntl.h>        macro     F_SETLKW
POSIX  <fcntl.h>        macro     F_UNLCK
POSIX  <fcntl.h>        macro     F_WRLCK
POSIX  <fcntl.h>        macro     O_ACCMODE
POSIX  <fcntl.h>        macro     O_APPEND
POSIX  <fcntl.h>        macro     O_CREAT
POSIX  <fcntl.h>        macro     O_EXCL
POSIX  <fcntl.h>        macro     O_NOCTTY
POSIX  <fcntl.h>        macro     O_NONBLOCK
POSIX  <fcntl.h>        macro     O_RDONLY
POSIX  <fcntl.h>        macro     O_RDWR
POSIX  <fcntl.h>        macro     O_TRUNC
POSIX  <fcntl.h>        macro     O_WRONLY
POSIX  <fcntl.h>        struct    flock
ANSI   <float.h>        macro     DBL_DIG
ANSI   <float.h>        macro     DBL_EPSILON
ANSI   <float.h>        macro     DBL_MANT_DIG
ANSI   <float.h>        macro     DBL_MAX
ANSI   <float.h>        macro     DBL_MAX_10_EXP
ANSI   <float.h>        macro     DBL_MAX_EXP
ANSI   <float.h>        macro     DBL_MIN
ANSI   <float.h>        macro     DBL_MIN_10_EXP
ANSI   <float.h>        macro     DBL_MIN_EXP
ANSI   <float.h>        macro     FLT_DIG
ANSI   <float.h>        macro     FLT_EPSILON
ANSI   <float.h>        macro     FLT_MANT_DIG
ANSI   <float.h>        macro     FLT_MAX
ANSI   <float.h>        macro     FLT_MAX_10_EXP
ANSI   <float.h>        macro     FLT_MAX_EXP
ANSI   <float.h>        macro     FLT_MIN
ANSI   <float.h>        macro     FLT_MIN_10_EXP
ANSI   <float.h>        macro     FLT_MIN_EXP
ANSI   <float.h>        macro     FLT_RADIX
ANSI   <float.h>        macro     FLT_ROUNDS
ANSI   <float.h>        macro     LDBL_DIG
ANSI   <float.h>        macro     LDBL_EPSILON
ANSI   <float.h>        macro     LDBL_MANT_DIG
ANSI   <float.h>        macro     LDBL_MAX
ANSI   <float.h>        macro     LDBL_MAX_10_EXP
ANSI   <float.h>        macro     LDBL_MAX_EXP
ANSI   <float.h>        macro     LDBL_MIN
ANSI   <float.h>        macro     LDBL_MIN_10_EXP
ANSI   <float.h>        macro     LDBL_MIN_EXP
POSIX  <grp.h>          function  getgrgid()     <sys/types.h>
POSIX  <grp.h>          function  getgrnam()     <sys/types.h>
POSIX  <grp.h>          struct    group
POSIX  <limits.h>       macro     ARG_MAX
ANSI   <limits.h>       macro     CHAR_BIT
ANSI   <limits.h>       macro     CHAR_MAX
ANSI   <limits.h>       macro     CHAR_MIN
POSIX  <limits.h>       macro     CHILD_MAX
ANSI   <limits.h>       macro     INT_MAX
ANSI   <limits.h>       macro     INT_MIN
POSIX  <limits.h>       macro     LINK_MAX
ANSI   <limits.h>       macro     LONG_MAX
ANSI   <limits.h>       macro     LONG_MIN
POSIX  <limits.h>       macro     MAX_CANON
POSIX  <limits.h>       macro     MAX_INPUT
ANSI   <limits.h>       macro     MB_LEN_MAX
POSIX  <limits.h>       macro     NAME_MAX
POSIX  <limits.h>       macro     NGROUPS_MAX
POSIX  <limits.h>       macro     OPEN_MAX
POSIX  <limits.h>       macro     PATH_MAX
POSIX  <limits.h>       macro     PIPE_BUF
ANSI   <limits.h>       macro     SCHAR_MAX
ANSI   <limits.h>       macro     SCHAR_MIN
ANSI   <limits.h>       macro     SHRT_MAX
ANSI   <limits.h>       macro     SHRT_MIN
POSIX  <limits.h>       macro     SSIZE_MAX
POSIX  <limits.h>       macro     STREAM_MAX
POSIX  <limits.h>       macro     TZNAME_MAX
ANSI   <limits.h>       macro     UCHAR_MAX
ANSI   <limits.h>       macro     UINT_MAX
ANSI   <limits.h>       macro     ULONG_MAX
ANSI   <limits.h>       macro     USHRT_MAX
POSIX  <limits.h>       macro     _POSIX_ARG_MAX
POSIX  <limits.h>       macro     _POSIX_CHILD_MAX
POSIX  <limits.h>       macro     _POSIX_LINK_MAX
POSIX  <limits.h>       macro     _POSIX_MAX_CANON
POSIX  <limits.h>       macro     _POSIX_MAX_INPUT
POSIX  <limits.h>       macro     _POSIX_NAME_MAX
POSIX  <limits.h>       macro     _POSIX_NGROUPS_MAX
POSIX  <limits.h>       macro     _POSIX_OPEN_MAX
POSIX  <limits.h>       macro     _POSIX_PATH_MAX
POSIX  <limits.h>       macro     _POSIX_PIPE_BUF
POSIX  <limits.h>       macro     _POSIX_SSIZE_MAX
POSIX  <limits.h>       macro     _POSIX_STREAM_MAX
POSIX  <limits.h>       macro     _POSIX_TZNAME_MAX
ANSI   <locale.h>       function  localeconv()
ANSI   <locale.h>       function  setlocale()
ANSI   <locale.h>       macro     LC_ALL
ANSI   <locale.h>       macro     LC_COLLATE
ANSI   <locale.h>       macro     LC_CTYPE
ANSI   <locale.h>       macro     LC_MONETARY
ANSI   <locale.h>       macro     LC_NUMERIC
ANSI   <locale.h>       macro     LC_TIME
ANSI   <locale.h>       macro     NULL
ANSI   <locale.h>       struct    lconv
ANSI   <math.h>         function  acos()
ANSI   <math.h>         function  asin()
ANSI   <math.h>         function  atan()
ANSI   <math.h>         function  atan2()
ANSI   <math.h>         function  ceil()
ANSI   <math.h>         function  cos()
ANSI   <math.h>         function  cosh()
ANSI   <math.h>         function  exp()
ANSI   <math.h>         function  fabs()
ANSI   <math.h>         function  floor()
ANSI   <math.h>         function  fmod()
ANSI   <math.h>         function  frexp()
ANSI   <math.h>         function  ldexp()
ANSI   <math.h>         function  log()
ANSI   <math.h>         function  log10()
ANSI   <math.h>         function  modf()
ANSI   <math.h>         function  pow()
ANSI   <math.h>         function  sin()
ANSI   <math.h>         function  sinh()
ANSI   <math.h>         function  sqrt()
ANSI   <math.h>         function  tan()
ANSI   <math.h>         function  tanh()
ANSI   <math.h>         macro     HUGE_VAL
POSIX  <pwd.h>          function  getpwnam()     <sys/types.h>
POSIX  <pwd.h>          function  getpwuid()     <sys/types.h>
POSIX  <pwd.h>          struct    passwd
ANSI   <setjmp.h>       function  longjmp()
ANSI   <setjmp.h>       function  setjmp()
POSIX  <setjmp.h>       function  siglongjmp()
POSIX  <setjmp.h>       function  sigsetjmp()
ANSI   <setjmp.h>       typedef   jmp_buf
POSIX  <setjmp.h>       typedef   sigjmp_buf
POSIX  <signal.h>       function  kill()         <sys/types.h>
ANSI   <signal.h>       function  raise()
POSIX  <signal.h>       function  sigaction()
POSIX  <signal.h>       function  sigaddset()
POSIX  <signal.h>       function  sigdelset()
POSIX  <signal.h>       function  sigemptyset()
POSIX  <signal.h>       function  sigfillset()
POSIX  <signal.h>       function  sigismember()
ANSI   <signal.h>       function  signal()
POSIX  <signal.h>       function  sigpending()
POSIX  <signal.h>       function  sigprocmask()
POSIX  <signal.h>       function  sugsuspend()
POSIX  <signal.h>       macro     SA_NOCLDSTOP
POSIX  <signal.h>       macro     SIGABRT
ANSI   <signal.h>       macro     SIGABRT
POSIX  <signal.h>       macro     SIGALRM
POSIX  <signal.h>       macro     SIGCHLD
POSIX  <signal.h>       macro     SIGCONT
POSIX  <signal.h>       macro     SIGFPE
ANSI   <signal.h>       macro     SIGFPE
POSIX  <signal.h>       macro     SIGHUP
POSIX  <signal.h>       macro     SIGILL
ANSI   <signal.h>       macro     SIGILL
POSIX  <signal.h>       macro     SIGINT
ANSI   <signal.h>       macro     SIGINT
POSIX  <signal.h>       macro     SIGKILL
POSIX  <signal.h>       macro     SIGPIPE
POSIX  <signal.h>       macro     SIGQUIT
POSIX  <signal.h>       macro     SIGSEGV
ANSI   <signal.h>       macro     SIGSEGV
POSIX  <signal.h>       macro     SIGSTOP
POSIX  <signal.h>       macro     SIGTERM
ANSI   <signal.h>       macro     SIGTERM
POSIX  <signal.h>       macro     SIGTSTP
POSIX  <signal.h>       macro     SIGTTIN
POSIX  <signal.h>       macro     SIGTTOU
POSIX  <signal.h>       macro     SIGUSR1
POSIX  <signal.h>       macro     SIGUSR2
POSIX  <signal.h>       macro     SIG_BLOCK
ANSI   <signal.h>       macro     SIG_DFL
POSIX  <signal.h>       macro     SIG_DLF
POSIX  <signal.h>       macro     SIG_ERR
ANSI   <signal.h>       macro     SIG_ERR
ANSI   <signal.h>       macro     SIG_IGN
POSIX  <signal.h>       macro     SIG_SETMASK
POSIX  <signal.h>       macro     SIG_UNBLOCK
POSIX  <signal.h>       struct    sigaction
ANSI   <signal.h>       typedef   sig_atomic_t
POSIX  <signal.h>       typeset   sigset_t
ANSI   <stdarg.h>       macro     va_arg()
ANSI   <stdarg.h>       macro     va_end()
ANSI   <stdarg.h>       macro     va_start()
ANSI   <stdarg.h>       typedef   va_list
ANSI   <stddef.h>       macro     NULL
ANSI   <stddef.h>       macro     offsetof()
ANSI   <stddef.h>       typedef   ptrdiff_t
ANSI   <stddef.h>       typedef   size_t
ANSI   <stddef.h>       typedef   wchar_t
ANSI   <stdio.h>        function  clearerr()
ANSI   <stdio.h>        function  fclose()
POSIX  <stdio.h>        function  fdopen()
ANSI   <stdio.h>        function  feof()
ANSI   <stdio.h>        function  ferror()
ANSI   <stdio.h>        function  fflush()
ANSI   <stdio.h>        function  fgetc()
ANSI   <stdio.h>        function  fgetpos()
ANSI   <stdio.h>        function  fgets()
POSIX  <stdio.h>        function  fileno()
ANSI   <stdio.h>        function  fopen()
ANSI   <stdio.h>        function  fprintf()
ANSI   <stdio.h>        function  fputc()
ANSI   <stdio.h>        function  fputs()
ANSI   <stdio.h>        function  fread()
ANSI   <stdio.h>        function  freopen()
ANSI   <stdio.h>        function  fscanf()
ANSI   <stdio.h>        function  fseek()
ANSI   <stdio.h>        function  fsetpos()
ANSI   <stdio.h>        function  ftell()
ANSI   <stdio.h>        function  fwrite()
ANSI   <stdio.h>        function  getc()
ANSI   <stdio.h>        function  getchar()
ANSI   <stdio.h>        function  gets()
ANSI   <stdio.h>        function  perror()
ANSI   <stdio.h>        function  printf()
ANSI   <stdio.h>        function  putc()
ANSI   <stdio.h>        function  putchar()
ANSI   <stdio.h>        function  puts()
ANSI   <stdio.h>        function  remove()
ANSI   <stdio.h>        function  rename()
ANSI   <stdio.h>        function  rewind()
ANSI   <stdio.h>        function  scanf()
ANSI   <stdio.h>        function  setbuf()
ANSI   <stdio.h>        function  setvbuf()
ANSI   <stdio.h>        function  sprintf()
ANSI   <stdio.h>        function  sscanf()
ANSI   <stdio.h>        function  tmpfile()
ANSI   <stdio.h>        function  tmpnam()
ANSI   <stdio.h>        function  ungetc()
ANSI   <stdio.h>        function  vfprintf()
ANSI   <stdio.h>        function  vprintf()
ANSI   <stdio.h>        function  vsprintf()
ANSI   <stdio.h>        macro     BUFSIZ
ANSI   <stdio.h>        macro     EOF
ANSI   <stdio.h>        macro     FILENAME_MAX
ANSI   <stdio.h>        macro     FOPEN_MAX
POSIX  <stdio.h>        macro     L_ctermid
ANSI   <stdio.h>        macro     L_tmpnam
ANSI   <stdio.h>        macro     NULL
ANSI   <stdio.h>        macro     SEEK_CUR
ANSI   <stdio.h>        macro     SEEK_END
ANSI   <stdio.h>        macro     SEEK_SET
POSIX  <stdio.h>        macro     STREAM_MAX
ANSI   <stdio.h>        macro     TMP_MAX
ANSI   <stdio.h>        macro     _IOFBF
ANSI   <stdio.h>        macro     _IOLBF
ANSI   <stdio.h>        macro     _IONBF
ANSI   <stdio.h>        typedef   FILE
ANSI   <stdio.h>        typedef   fpos_t
ANSI   <stdio.h>        typedef   size_t
ANSI   <stdio.h>        variable  stderr
ANSI   <stdio.h>        variable  stdin
ANSI   <stdio.h>        variable  stdout
ANSI   <stdlib.h>       function  abort()
ANSI   <stdlib.h>       function  abs()
ANSI   <stdlib.h>       function  atexit()
ANSI   <stdlib.h>       function  atof()
ANSI   <stdlib.h>       function  atoi()
ANSI   <stdlib.h>       function  atol()
ANSI   <stdlib.h>       function  bsearch()
ANSI   <stdlib.h>       function  calloc()
ANSI   <stdlib.h>       function  div()
ANSI   <stdlib.h>       function  exit()
ANSI   <stdlib.h>       function  free()
ANSI   <stdlib.h>       function  getenv()
ANSI   <stdlib.h>       function  labs()
ANSI   <stdlib.h>       function  ldiv()
ANSI   <stdlib.h>       function  malloc()
ANSI   <stdlib.h>       function  mblen()
ANSI   <stdlib.h>       function  mbstowcs()
ANSI   <stdlib.h>       function  mbtowc()
ANSI   <stdlib.h>       function  qsort()
ANSI   <stdlib.h>       function  rand()
ANSI   <stdlib.h>       function  realloc()
ANSI   <stdlib.h>       function  srand()
ANSI   <stdlib.h>       function  strtod()
ANSI   <stdlib.h>       function  strtol()
ANSI   <stdlib.h>       function  strtoul()
ANSI   <stdlib.h>       function  system()
ANSI   <stdlib.h>       function  wcstombs()
ANSI   <stdlib.h>       function  wctomb()
ANSI   <stdlib.h>       macro     EXIT_FAILURE
ANSI   <stdlib.h>       macro     EXIT_SUCCESS
ANSI   <stdlib.h>       macro     MB_CUR_MAX
ANSI   <stdlib.h>       macro     NULL
ANSI   <stdlib.h>       macro     RAND_MAX
ANSI   <stdlib.h>       typedef   div_t
ANSI   <stdlib.h>       typedef   ldiv_t
ANSI   <stdlib.h>       typedef   size_t
ANSI   <stdlib.h>       typedef   wchar_t
ANSI   <string.h>       function  memchr()
ANSI   <string.h>       function  memcmp()
ANSI   <string.h>       function  memcpy()
ANSI   <string.h>       function  memmove()
ANSI   <string.h>       function  memset()
ANSI   <string.h>       function  strcat()
ANSI   <string.h>       function  strchr()
ANSI   <string.h>       function  strcmp()
ANSI   <string.h>       function  strcoll()
ANSI   <string.h>       function  strcpy()
ANSI   <string.h>       function  strcspn()
ANSI   <string.h>       function  strerror()
ANSI   <string.h>       function  strlen()
ANSI   <string.h>       function  strncat()
ANSI   <string.h>       function  strncmp()
ANSI   <string.h>       function  strncpy()
ANSI   <string.h>       function  strpbrk()
ANSI   <string.h>       function  strrchr()
ANSI   <string.h>       function  strspn()
ANSI   <string.h>       function  strstr()
ANSI   <string.h>       function  strtok()
ANSI   <string.h>       function  strxfrm()
ANSI   <string.h>       macro     NULL
ANSI   <string.h>       typedef   size_t
POSIX  <sys/stat.h>     function  chmod()        <sys/types.h>
POSIX  <sys/stat.h>     function  fstat()        <sys/types.h>
POSIX  <sys/stat.h>     function  mkdir()        <sys/types.h>
POSIX  <sys/stat.h>     function  mkfifo()       <sys/types.h>
POSIX  <sys/stat.h>     function  stat()         <sys/types.h>
POSIX  <sys/stat.h>     function  umask()        <sys/types.h>
POSIX  <sys/stat.h>     macro     S_IRGRP
POSIX  <sys/stat.h>     macro     S_IROTH
POSIX  <sys/stat.h>     macro     S_IRUSR
POSIX  <sys/stat.h>     macro     S_IRWXG
POSIX  <sys/stat.h>     macro     S_IRWXO
POSIX  <sys/stat.h>     macro     S_IRWXU
POSIX  <sys/stat.h>     macro     S_ISBLK()
POSIX  <sys/stat.h>     macro     S_ISCHR()
POSIX  <sys/stat.h>     macro     S_ISDIR()
POSIX  <sys/stat.h>     macro     S_ISFIFO()
POSIX  <sys/stat.h>     macro     S_ISGID
POSIX  <sys/stat.h>     macro     S_ISREG()
POSIX  <sys/stat.h>     macro     S_ISUID
POSIX  <sys/stat.h>     macro     S_IWGRP
POSIX  <sys/stat.h>     macro     S_IWOTH
POSIX  <sys/stat.h>     macro     S_IWUSR
POSIX  <sys/stat.h>     macro     S_IXGRP
POSIX  <sys/stat.h>     macro     S_IXOTH
POSIX  <sys/stat.h>     macro     S_IXUSR
POSIX  <sys/stat.h>     struct    stat
POSIX  <sys/times.h>    function  times()
POSIX  <sys/times.h>    struct    tms
POSIX  <sys/times.h>    typedef   clock_t
POSIX  <sys/types.h>    typedef   dev_t
POSIX  <sys/types.h>    typedef   gid_t
POSIX  <sys/types.h>    typedef   ino_t
POSIX  <sys/types.h>    typedef   mode_t
POSIX  <sys/types.h>    typedef   nlink_t
POSIX  <sys/types.h>    typedef   off_t
POSIX  <sys/types.h>    typedef   pid_t
POSIX  <sys/types.h>    typedef   size_t
POSIX  <sys/types.h>    typedef   ssize_t
POSIX  <sys/types.h>    typedef   uid_t
POSIX  <sys/utsname.h>  function  uname()
POSIX  <sys/utsname.h>  struct    utsname
POSIX  <sys/wait.h>     function  wait()         <sys/types.h>
POSIX  <sys/wait.h>     function  waitpid()      <sys/types.h>
POSIX  <sys/wait.h>     macro     WEXITSTATUS
POSIX  <sys/wait.h>     macro     WIFEXITED
POSIX  <sys/wait.h>     macro     WIFSIGNALED
POSIX  <sys/wait.h>     macro     WIFSTOPPED
POSIX  <sys/wait.h>     macro     WNOHANG
POSIX  <sys/wait.h>     macro     WSTOPSIG
POSIX  <sys/wait.h>     macro     WTERMSIG
POSIX  <sys/wait.h>     macro     WUNTRACED
POSIX  <termios.h>      function  cfgetispeed()
POSIX  <termios.h>      function  cfgetospeed()
POSIX  <termios.h>      function  cfsetispeed()
POSIX  <termios.h>      function  cfsetospeed()
POSIX  <termios.h>      function  tcdrain()
POSIX  <termios.h>      function  tcflow()
POSIX  <termios.h>      function  tcflush()
POSIX  <termios.h>      function  tcgetattr()
POSIX  <termios.h>      function  tcsendbreak()
POSIX  <termios.h>      function  tcsetattr()
POSIX  <termios.h>      macro     B0
POSIX  <termios.h>      macro     B110
POSIX  <termios.h>      macro     B1200
POSIX  <termios.h>      macro     B134
POSIX  <termios.h>      macro     B150
POSIX  <termios.h>      macro     B1800
POSIX  <termios.h>      macro     B19200
POSIX  <termios.h>      macro     B200
POSIX  <termios.h>      macro     B2400
POSIX  <termios.h>      macro     B300
POSIX  <termios.h>      macro     B38400
POSIX  <termios.h>      macro     B4800
POSIX  <termios.h>      macro     B50
POSIX  <termios.h>      macro     B600
POSIX  <termios.h>      macro     B75
POSIX  <termios.h>      macro     B9600
POSIX  <termios.h>      macro     BRKINT
POSIX  <termios.h>      macro     CLOCAL
POSIX  <termios.h>      macro     CREAD
POSIX  <termios.h>      macro     CS5
POSIX  <termios.h>      macro     CS6
POSIX  <termios.h>      macro     CS7
POSIX  <termios.h>      macro     CS8
POSIX  <termios.h>      macro     CSIZE
POSIX  <termios.h>      macro     CSTOPB
POSIX  <termios.h>      macro     ECHO
POSIX  <termios.h>      macro     ECHOE
POSIX  <termios.h>      macro     ECHOK
POSIX  <termios.h>      macro     ECHONL
POSIX  <termios.h>      macro     HUPCL
POSIX  <termios.h>      macro     ICANON
POSIX  <termios.h>      macro     ICRNL
POSIX  <termios.h>      macro     IEXTEN
POSIX  <termios.h>      macro     IGNBRK
POSIX  <termios.h>      macro     IGNCR
POSIX  <termios.h>      macro     IGNPAR
POSIX  <termios.h>      macro     INLCR
POSIX  <termios.h>      macro     INPCK
POSIX  <termios.h>      macro     ISIG
POSIX  <termios.h>      macro     ISTRIP
POSIX  <termios.h>      macro     IXOFF
POSIX  <termios.h>      macro     IXON
POSIX  <termios.h>      macro     NCCS
POSIX  <termios.h>      macro     NOFLSH
POSIX  <termios.h>      macro     OPOST
POSIX  <termios.h>      macro     PARENB
POSIX  <termios.h>      macro     PARMRK
POSIX  <termios.h>      macro     PARODD
POSIX  <termios.h>      macro     TCIFLUSH
POSIX  <termios.h>      macro     TCIOFF
POSIX  <termios.h>      macro     TCIOFLUSH
POSIX  <termios.h>      macro     TCION
POSIX  <termios.h>      macro     TCOFLUSH
POSIX  <termios.h>      macro     TCOOFF
POSIX  <termios.h>      macro     TCOON
POSIX  <termios.h>      macro     TCSADRAIN
POSIX  <termios.h>      macro     TCSAFLUSH
POSIX  <termios.h>      macro     TCSANOW
POSIX  <termios.h>      macro     TOSTOP
POSIX  <termios.h>      macro     VEOF
POSIX  <termios.h>      macro     VEOL
POSIX  <termios.h>      macro     VERASE
POSIX  <termios.h>      macro     VINTR
POSIX  <termios.h>      macro     VKILL
POSIX  <termios.h>      macro     VMIN
POSIX  <termios.h>      macro     VQUIT
POSIX  <termios.h>      macro     VSTART
POSIX  <termios.h>      macro     VSTOP
POSIX  <termios.h>      macro     VSUSP
POSIX  <termios.h>      macro     VTIME
POSIX  <termios.h>      struct    termios
POSIX  <termios.h>      typedef   cc_t
POSIX  <termios.h>      typedef   speed_t
POSIX  <termios.h>      typedef   tcflag_t
ANSI   <time.h>         function  asctime()
ANSI   <time.h>         function  clock()
ANSI   <time.h>         function  ctime()
ANSI   <time.h>         function  difftime()
ANSI   <time.h>         function  gmtime()
ANSI   <time.h>         function  localtime()
ANSI   <time.h>         function  mktime()
ANSI   <time.h>         function  strftime()
ANSI   <time.h>         function  time()
POSIX  <time.h>         function  tzset()
ANSI   <time.h>         macro     CLOCKS_PER_SEC
POSIX  <time.h>         macro     CLOCK_TCK
ANSI   <time.h>         macro     NULL
ANSI   <time.h>         struct    tm
ANSI   <time.h>         typedef   clock_t
ANSI   <time.h>         typedef   size_t
ANSI   <time.h>         typedef   time_t
ANSI   <time.h>         variable  tzname
POSIX  <unistd.h>       function  _exit()
POSIX  <unistd.h>       function  access()
POSIX  <unistd.h>       function  alarm()
POSIX  <unistd.h>       function  chdir()
POSIX  <unistd.h>       function  chown()        <sys/types.h>
POSIX  <unistd.h>       function  close()
POSIX  <unistd.h>       function  ctermid()      <stdio.h>
POSIX  <unistd.h>       function  dup()
POSIX  <unistd.h>       function  dup2()
POSIX  <unistd.h>       function  execl()
POSIX  <unistd.h>       function  execle()
POSIX  <unistd.h>       function  execlp()
POSIX  <unistd.h>       function  execv()
POSIX  <unistd.h>       function  execve()
POSIX  <unistd.h>       function  execvp()
POSIX  <unistd.h>       function  fork()         <sys/types.h>
POSIX  <unistd.h>       function  fpathconf()
POSIX  <unistd.h>       function  getcwd()
POSIX  <unistd.h>       function  getegid()      <sys/types.h>
POSIX  <unistd.h>       function  geteuid()      <sys/types.h>
POSIX  <unistd.h>       function  getgid()       <sys/types.h>
POSIX  <unistd.h>       function  getgroups()    <sys/types.h>
POSIX  <unistd.h>       function  getlogin()
POSIX  <unistd.h>       function  getpgrp()      <sys/types.h>
POSIX  <unistd.h>       function  getpid()       <sys/types.h>
POSIX  <unistd.h>       function  getppid()      <sys/types.h>
POSIX  <unistd.h>       function  getuid()       <sys/types.h>
POSIX  <unistd.h>       function  isatty()
POSIX  <unistd.h>       function  link()
POSIX  <unistd.h>       function  lseek()        <sys/types.h>
POSIX  <unistd.h>       function  pathconf()
POSIX  <unistd.h>       function  pause()
POSIX  <unistd.h>       function  pipe()
POSIX  <unistd.h>       function  read()
POSIX  <unistd.h>       function  rmdir()
POSIX  <unistd.h>       function  setgid()       <sys/types.h>
POSIX  <unistd.h>       function  setpgid()      <sys/types.h>
POSIX  <unistd.h>       function  setsid()       <sys/types.h>
POSIX  <unistd.h>       function  setuid()       <sys/types.h>
POSIX  <unistd.h>       function  sleep()
POSIX  <unistd.h>       function  sysconf()
POSIX  <unistd.h>       function  tcgetpgrp()    <sys/types.h>
POSIX  <unistd.h>       function  tcsetpgrp()    <sys/types.h>
POSIX  <unistd.h>       function  ttyname()
POSIX  <unistd.h>       function  unlink()
POSIX  <unistd.h>       function  write()
POSIX  <unistd.h>       macro     F_OK
POSIX  <unistd.h>       macro     NULL
POSIX  <unistd.h>       macro     R_OK
POSIX  <unistd.h>       macro     SEEK_CUR
POSIX  <unistd.h>       macro     SEEK_END
POSIX  <unistd.h>       macro     SEEK_SET
POSIX  <unistd.h>       macro     STDERR_FILENO
POSIX  <unistd.h>       macro     STDIN_FILENO
POSIX  <unistd.h>       macro     STDOUT_FILENO
POSIX  <unistd.h>       macro     W_OK
POSIX  <unistd.h>       macro     X_OK
POSIX  <unistd.h>       macro     _PC_CHOWN_RESTRICTED
POSIX  <unistd.h>       macro     _PC_LINK_MAX
POSIX  <unistd.h>       macro     _PC_MAX_CANON
POSIX  <unistd.h>       macro     _PC_MAX_INPUT
POSIX  <unistd.h>       macro     _PC_NAME_MAX
POSIX  <unistd.h>       macro     _PC_NO_TRUNC
POSIX  <unistd.h>       macro     _PC_PATH_MAX
POSIX  <unistd.h>       macro     _PC_PIPE_BUF
POSIX  <unistd.h>       macro     _PC_VDISABLE
POSIX  <unistd.h>       macro     _POSIX_CHOWN_RESTRICTED
POSIX  <unistd.h>       macro     _POSIX_JOB_CONTROL
POSIX  <unistd.h>       macro     _POSIX_NO_TRUNC
POSIX  <unistd.h>       macro     _POSIX_SAVED_IDS
POSIX  <unistd.h>       macro     _POSIX_VDISABLE
POSIX  <unistd.h>       macro     _POSIX_VERSION
POSIX  <unistd.h>       macro     _SC_ARG_MAX
POSIX  <unistd.h>       macro     _SC_CHILD_MAX
POSIX  <unistd.h>       macro     _SC_CLK_TCK
POSIX  <unistd.h>       macro     _SC_JOB_CONTROL
POSIX  <unistd.h>       macro     _SC_NGROUPS_MAX
POSIX  <unistd.h>       macro     _SC_OPEN_MAX
POSIX  <unistd.h>       macro     _SC_SAVED_IDS
POSIX  <unistd.h>       macro     _SC_STREAM_MAX
POSIX  <unistd.h>       macro     _SC_TZNAME_MAX
POSIX  <unistd.h>       macro     _SC_VERSION
POSIX  <unistd.h>       typedef   size_t
POSIX  <unistd.h>       typedef   ssize_t
POSIX  <utime.h>        function  utime()        <sys/types.h>
POSIX  <utime.h>        struct    utimbuf

-- 
De Mickey  ddm26 at cas.org


More information about the reviews mailing list