sl@0: /** @file  ../include/unistd.h
sl@0: @internalComponent
sl@0: */
sl@0: 
sl@0: /** @fn  access(const char *fn, int flags)
sl@0: @param fn
sl@0: @param flags
sl@0: 
sl@0: @return   Upon successful completion, the value 0 is returned; otherwise the
sl@0: value -1 is returned and the global variable errno is set to indicate the
sl@0: error.
sl@0: 
sl@0:   The access system calls check the accessibility of the file named in the fn argument for the access permissions indicated by the flags argument.
sl@0:  The value of flags is either the bitwise-inclusive OR of the access permissions to be 
sl@0: checked (R_OK for read permission, W_OK for write permission, and X_OK for execute/search permission), or the existence test ( F_OK. )
sl@0: 
sl@0:  For additional information on file access permissions see File Access Permissions.
sl@0: 
sl@0: Examples:
sl@0: @code
sl@0: /* Detailed description: This sample code checks read-ok accessibility of file Example.c
sl@0:  *
sl@0:  * Precondtions: Example.txt file should be present in working directory.
sl@0:  */
sl@0: #include <unistd.h>
sl@0: int main()
sl@0: {
sl@0:   if(access("Example.c" ,R_OK)  < 0)  
sl@0:   {
sl@0:     printf("Read operation on the file is not permitted") ;
sl@0:     return -1 ;
sl@0:   }
sl@0:   printf("Read operation permitted on Example.c file") ;
sl@0:   return 0 ;
sl@0: }
sl@0: 
sl@0: @endcode
sl@0:  Output
sl@0: @code
sl@0: Read operation permitted on Example.c file
sl@0: 
sl@0: @endcode
sl@0: 
sl@0: Limitations:
sl@0: 
sl@0: The fn parameter should not exceed 256 characters in length. 
sl@0: 
sl@0: KErrNotReady of Symbian error code is mapped to ENOENT, which typically means drive
sl@0: not found or filesystem not mounted on the drive.
sl@0: 
sl@0: @see chmod()
sl@0: @see stat()
sl@0: 
sl@0: 
sl@0: 
sl@0: @capability Deferred @ref RFs::Entry(const TDesC16&, TEntry&)
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @fn  chdir(const char *_path)
sl@0: @param _path
sl@0: 
sl@0: Note: This description also covers the following functions -
sl@0:  fchdir() 
sl@0: 
sl@0: @return   Upon successful completion, the value 0 is returned; otherwise the
sl@0: value -1 is returned and the global variable errno is set to indicate the
sl@0: error.
sl@0: 
sl@0:   The path argument points to the pathname of a directory.
sl@0: The chdir system call
sl@0: causes the named directory
sl@0: to become the current working directory, that is,
sl@0: the starting point for path searches of pathnames not beginning with a slash, ‘/.’
sl@0: 
sl@0:  The fchdir system call causes the directory referenced by the file descriptor fd to become the current working directory, the starting point for path 
sl@0:   searches of pathnames not beginning with a slash, ‘/.’
sl@0: 
sl@0: 
sl@0: 
sl@0: Examples:
sl@0: @code
sl@0: /*
sl@0:  *  Detailed description   : This test code demonstrates usage of chdir system call
sl@0:  *
sl@0:  *  Preconditions : "Example" directory should be present in current working
sl@0:    directory.
sl@0:  */
sl@0: #include <unistd.h>
sl@0: int main()
sl@0: {
sl@0:   if(chdir("Example") < 0 )  
sl@0:   {
sl@0:      printf("Failed to change working directory");
sl@0:      return -1 ;
sl@0:   }
sl@0:   printf("Working directory changed");
sl@0:   return 0 ;
sl@0: }
sl@0: 
sl@0: @endcode
sl@0:  Output
sl@0: @code
sl@0: Working directory changed
sl@0: 
sl@0: @endcode
sl@0: @code
sl@0: #include<unistd.h>
sl@0: #include<stdio.h>
sl@0: int test_fchdir()
sl@0: {
sl@0:    int retVal;
sl@0:    int rmdr;
sl@0:    int mkdr = mkdir("test_dir", S_IWUSR);
sl@0:    if( !mkdr )
sl@0:    {
sl@0:      int opn = open("test_dir", O_RDONLY);
sl@0:      if( opn != -1 )
sl@0:      {
sl@0:        retVal = fchdir( opn );
sl@0:        if( !retVal )
sl@0:        {
sl@0:          printf("Fchdir passed");
sl@0:        }
sl@0:        else
sl@0:        {
sl@0:          printf("Failed");
sl@0:        }
sl@0:        int cls = close(opn);
sl@0:      }
sl@0:      else
sl@0:      {
sl@0:        printf("Failed");
sl@0:      }
sl@0:      rmdr = rmdir("test_dir");  
sl@0:    }
sl@0:    else
sl@0:    {
sl@0:      printf("Failed");
sl@0:    }
sl@0: }
sl@0: 
sl@0: @endcode
sl@0:  Output
sl@0: @code
sl@0: Fchdir passed
sl@0: 
sl@0: @endcode
sl@0: 
sl@0: Limitations:
sl@0: 
sl@0: The path parameter should not exceed 256 characters in length. 
sl@0: KErrNotReady of Symbian error code is mapped to ENOENT, which typically means drive
sl@0: not found or filesystem not mounted on the drive.
sl@0: 
sl@0: @capability Deferred @ref RFs::SetSessionPath(const TDesC16&)
sl@0: @capability Deferred @ref RFs::Att(const TDesC16&, unsigned&)
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @fn  chown(const char *path, uid_t owner, gid_t group)
sl@0: @param path
sl@0: @param owner
sl@0: @param group
sl@0: 
sl@0: Note: This description also covers the following functions -
sl@0:  lchown() 
sl@0: 
sl@0: @return   These functions always return 0.
sl@0: 
sl@0:  
sl@0: 
sl@0:  The chown and lchown functions are build supported but not available functionally.
sl@0: 
sl@0:  Symbian OS does not support the concepts of multiple users and groups.
sl@0: 
sl@0: Limitations:
sl@0: 
sl@0: KErrNotReady of symbian error code is mapped to ENOENT, which typically means drive
sl@0: not found or filesystem not mounted on the drive.
sl@0: 
sl@0: 
sl@0:  
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @fn  close(int fd)
sl@0: @param fd
sl@0: @return   The close() function returns the value 0 if successful; otherwise it returns 
sl@0: the value -1 and sets the global variable errno to indicate the error.
sl@0: 
sl@0:   The close system call deletes a descriptor from the per-process object reference 
sl@0: table. If this is the last reference to the underlying object the object will 
sl@0: be deactivated. For example, on the last close of a file the current seek pointer associated with the file is lost; on the last close of a socket any file descriptor for that file is closed by that process.
sl@0: 
sl@0: If 'fd' refers to a shared memory object that is still referenced at the last close, the 
sl@0: contents of the memory object persists till it is unreferenced. 
sl@0: If this is the last close of the shared memory object and the close results in unreferencing of the memory 
sl@0: object and the memory object is unlinked, (only in this scenario) the memory object is removed.
sl@0: 
sl@0:  When a process exits all associated file descriptors are freed. As there is 
sl@0:   a limit on active descriptors per processes the close system call is useful when a large quantity of file descriptors 
sl@0:   are being handled.
sl@0: 
sl@0: 
sl@0: 
sl@0: Examples:
sl@0: @code
sl@0: /* Detailed description   : This test code demonstrates usage of close  system call
sl@0:  *
sl@0:  * Preconditions :  None.
sl@0:  */
sl@0: #include <stdio.h>
sl@0: #include <unistd.h>
sl@0: #include <sys/types.h>
sl@0: #include <fcntl.h>
sl@0: int main()
sl@0: {
sl@0:   int fd = 0;
sl@0:   fd = open("Example.txt" , O_CREAT | O_RDWR , 0666);
sl@0:   if(fd < 0 ) 
sl@0:   {
sl@0:     printf("Failed to open file Example.txt");
sl@0:     return -1;
sl@0:   }
sl@0:  if(close(fd) < 0 )
sl@0:  {
sl@0:    printf("Failed to close  file Example.txt");
sl@0:    return -1;
sl@0:  }
sl@0:  printf("File Example.txt closed" );
sl@0:  return 0;
sl@0: }
sl@0: 
sl@0: @endcode
sl@0:  Output
sl@0: @code
sl@0: File Example.txt closed
sl@0: 
sl@0: @endcode
sl@0: @see accept()
sl@0: @see fcntl()
sl@0: @see flock()
sl@0: @see open()
sl@0: @see pipe()
sl@0: @see socket()
sl@0: @see shm_open()
sl@0: @see shm_unlink()
sl@0:  
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @fn  dup(int aFid)
sl@0: @param aFid
sl@0: 
sl@0: Note: This description also covers the following functions -
sl@0:  dup2() 
sl@0: 
sl@0: @return   The value -1 is returned if an error occurs in either call.
sl@0: The external variable errno indicates the cause of the error.
sl@0: 
sl@0:   The dup system call
sl@0: duplicates an existing object descriptor and returns its value to
sl@0: the calling process ( newd = dup (aFid, ).); The argument aFid is a small non-negative integer index in
sl@0: the per-process descriptor table.
sl@0: 
sl@0:  The new descriptor returned by the call
sl@0: is the lowest numbered descriptor
sl@0: currently not in use by the process.
sl@0: 
sl@0:  The object referenced by the descriptor does not distinguish
sl@0: between aFid and newd in any way.
sl@0: Thus if newd and aFid are duplicate references to an open
sl@0: file, read , write and lseek calls all move a single pointer into the file,
sl@0: and append mode, non-blocking I/O and asynchronous I/O options
sl@0: are shared between the references.
sl@0: If a separate pointer into the file is desired, a different
sl@0: object reference to the file must be obtained by issuing an
sl@0: additional open system call.
sl@0: 
sl@0:  In dup2, the value of the new descriptor newd is specified.
sl@0: If this descriptor is already in use and oldd != newd, the descriptor is first deallocated as if the close system call had been used.
sl@0: If aFid is not a valid descriptor, then newd is not closed.
sl@0: If aFid == newd and aFid is a valid descriptor, then dup2 is successful, and does nothing.
sl@0: 
sl@0:  Limitation: 
sl@0:  
sl@0: @code
sl@0: dup2(int oldfd, int newfd); 
sl@0: @endcode
sl@0: The return value of dup2 can be different 
sl@0:   from the one user expected to be (newfd). Users of dup2 must therefor use the 
sl@0:   return value of dup2 as the new allocated fd rather than the one passed in (newfd). 
sl@0:   As described above, if dup2 is successful the newfd and return values are the 
sl@0:   same, .
sl@0: 
sl@0: Examples:
sl@0: @code
sl@0: /*
sl@0:  *Detailed description : Sample usage of dup system call
sl@0:  */
sl@0: #include <unistd.h>
sl@0: #include <fcntl.h>
sl@0: #include <stdio.h>
sl@0: int main()
sl@0: {
sl@0:   int fd;
sl@0:   FILE *Fil;
sl@0:   int Newfd;
sl@0:   fd = open("Example.txt" , O_CREAT | O_RDWR , 0666);
sl@0:   if(fd < 0 )  {
sl@0:      printf("Failed to open file Example.txt");
sl@0:      return -1;
sl@0:   }
sl@0:   Newfd  = dup(fd );
sl@0:   if(Newfd < 0 ) 
sl@0:   {
sl@0:     printf("Failed to duplicate file descriptor");
sl@0:     return -1 ;
sl@0:   }
sl@0:   close(fd);
sl@0:   close(Newfd);
sl@0:   printf("New Duped fd is %d" , Newfd);
sl@0:   return 0;
sl@0: }
sl@0: 
sl@0: @endcode
sl@0:  Output
sl@0: @code
sl@0: New Duped fd is 4
sl@0: 
sl@0: @endcode
sl@0: @code
sl@0: /*
sl@0:  *Detailed description : Sample usage of dup system call
sl@0:  */
sl@0: #include <unistd.h>
sl@0: #include <fcntl.h>
sl@0: #include <errno.h>
sl@0: #include <stdio.h>
sl@0: int main()
sl@0: {
sl@0:   int fd;
sl@0:   FILE *Fil;
sl@0:   int Newfd;
sl@0:   fd = open("Example.txt" , O_CREAT | O_RDWR , 0666);
sl@0:   if(fd < 0 )  {
sl@0:      printf("Failed to open file Example.txt");
sl@0:      return -1;
sl@0:   }
sl@0:   Newfd  = dup2(fd  , 4);
sl@0:   if(Newfd < 0 )  {
sl@0:     printf("Failed to duplicate file descriptor");
sl@0:     return -1;
sl@0:   }
sl@0:   close(fd);
sl@0:   close(Newfd);
sl@0:   printf("New Duped fd is %d" , Newfd);
sl@0:   return 0;
sl@0: }
sl@0: 
sl@0: @endcode
sl@0:  Output
sl@0: @code
sl@0: New Duped fd is 4
sl@0: 
sl@0: @endcode
sl@0: @see accept()
sl@0: @see close()
sl@0: @see fcntl()
sl@0: @see getdtablesize()
sl@0: @see open()
sl@0: @see pipe()
sl@0: @see socket()
sl@0: 
sl@0: 
sl@0:  
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @fn  dup2(int aFid1, int aFid2)
sl@0: @param aFid1
sl@0: @param aFid2
sl@0: 
sl@0: Refer to  dup() for the documentation
sl@0: @see accept()
sl@0: @see close()
sl@0: @see fcntl()
sl@0: @see getdtablesize()
sl@0: @see open()
sl@0: @see pipe()
sl@0: @see socket()
sl@0: 
sl@0: 
sl@0:  
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @fn  fpathconf(int fd, int name)
sl@0: @param fd
sl@0: @param name
sl@0: 
sl@0: Refer to  pathconf() for the documentation
sl@0: 
sl@0: 
sl@0:  
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @fn  getcwd(char *_buf, size_t _size)
sl@0: @param _buf
sl@0: @param _size
sl@0: @return   Upon successful completion a pointer to the pathname is returned. Otherwise 
sl@0: a NULL pointer is returned and the global variable errno is set to indicate the error. In addition, getwd copies the error message associated with errno into the memory referenced by buf.
sl@0: 
sl@0:   The getcwd function copies the absolute pathname of the current working directory
sl@0: into the memory referenced by buf and returns a pointer to buf. The size argument is the _size, in bytes, of the array referenced by buf.
sl@0: 
sl@0:  If _buf is NULL, space is allocated as indicated by size to store the pathname and the current working directory is
sl@0: returned as long as the _size bytes are sufficient to hold the working directory name.
sl@0: This space may later be free’d.
sl@0: 
sl@0:  This routine has traditionally been used by programs to save the
sl@0: name of a working directory for the purpose of returning to it.
sl@0: A much faster and less error-prone method of accomplishing this is to
sl@0: open the current directory ((‘.’) and use the fchdir function to return.
sl@0: 
sl@0: Examples:
sl@0: @code
sl@0: #include<unistd.h>
sl@0: #include<stdio.h>
sl@0: #include <stdlib.h>
sl@0: #define BUF_SIZE 100
sl@0:   
sl@0: int main()
sl@0: {
sl@0:  //change directory to c:
sl@0:  int c;
sl@0:  long size = BUF_SIZE;
sl@0:  char *buf = NULL;
sl@0:  char *ptr = NULL;
sl@0:   
sl@0:  c = chdir("c:\");
sl@0:   
sl@0:  buf = (char *)malloc((size_t)size);
sl@0:   
sl@0:  if (buf != NULL && c == 0)
sl@0:  {
sl@0:   //call getcwd to fetch teh current directory
sl@0:   ptr = getcwd(buf, (size_t)size);
sl@0:   printf("getcwd returned: %s", ptr);
sl@0:  }
sl@0:    
sl@0:  return 0;
sl@0: }
sl@0: 
sl@0: @endcode
sl@0:  Output
sl@0: @code
sl@0: getcwd returned: c:
sl@0: 
sl@0: @endcode
sl@0: 
sl@0: Notes:
sl@0: 
sl@0:  The getcwd function
sl@0: returns the default working directory as c:\\private\\XXXXXXXX (where XXXXXXXX is the UID of the process) as the default session path is
sl@0: initialised to c:\\private\\current_process'_UID, in case of Symbian OS.
sl@0: @see chdir()
sl@0: @see malloc()
sl@0: @see strerror()
sl@0: 
sl@0: 
sl@0:  
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @fn  getegid(void)
sl@0: Refer to  getgid() for the documentation
sl@0: 
sl@0: 
sl@0:  
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @fn  geteuid(void)
sl@0: Refer to  getuid() for the documentation
sl@0: 
sl@0: 
sl@0:  
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @fn  getgid(void)
sl@0: 
sl@0: 
sl@0: Note: This description also covers the following functions -
sl@0:  getegid() 
sl@0: 
sl@0: @return   These functions always return 0.
sl@0: 
sl@0:   getgid and getegid are build supported but not available functionally. Symbian OS 
sl@0: does not support multiple users and groups.
sl@0: 
sl@0: 
sl@0: 
sl@0:  
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: 
sl@0: /** @fn  getgroups(int size, gid_t grouplist[])
sl@0: @param size
sl@0: @param grouplist
sl@0: @return   These functions always return 0.
sl@0: 
sl@0:   The getgroups function build supported but not available functionally. Symbian 
sl@0: OS does not support multiple users and groups.
sl@0: 
sl@0: 
sl@0: 
sl@0: 
sl@0: 
sl@0:  
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @fn  getpgrp(void)
sl@0: Note: This description also covers the following functions -
sl@0:  getpgid() 
sl@0: 
sl@0: @return   These functions always return 0.
sl@0: 
sl@0:   getpgrp and getpgid are build supported but not available functionally. Symbian OS 
sl@0: does not support multiple users and groups.
sl@0: 
sl@0: 
sl@0: 
sl@0: 
sl@0: 
sl@0:  
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @fn  getpid(void)
sl@0: 
sl@0: Note: This description also covers the following functions -
sl@0:  getppid() 
sl@0: 
sl@0:   The getpid system call returns the process ID of the calling process. Though 
sl@0: the ID is guaranteed to be unique it should NOT be used for constructing temporary file names for security reasons; 
sl@0: see mkstemp instead.
sl@0: 
sl@0:  The getppid system call
sl@0: returns the process ID of the parent
sl@0: of the calling process.
sl@0: 
sl@0: Examples:
sl@0: @code
sl@0: /*
sl@0:  * Detailed description : Sample usage of getpid system call
sl@0:  */
sl@0: #include <unistd.h>
sl@0: int main() 
sl@0: {
sl@0:   pid_t pid ;
sl@0:   if((pid = getpid()) < 0 ) 
sl@0:   {
sl@0:      printf("getpid system call failed") ;
sl@0:      return -1 ;
sl@0:   }
sl@0:   printf("pid of this process is %d " , pid) ;
sl@0:   return 0 ;
sl@0: }
sl@0: 
sl@0: @endcode
sl@0: 
sl@0: 
sl@0:  
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @fn  getppid(void)
sl@0: Refer to  getpid() for the documentation
sl@0: 
sl@0: 
sl@0:  
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @fn  getuid(void)
sl@0: Note: This description also covers the following functions -
sl@0:  geteuid() 
sl@0: 
sl@0: @return   These functions always return 0.
sl@0: 
sl@0:   getuid and geteuid are build supported but not available functionally. Symbian OS 
sl@0: does not support multiple users and groups.
sl@0: 
sl@0: 
sl@0: 
sl@0:  
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @fn  isatty(int fd)
sl@0: @param fd
sl@0: @return   The isatty returns 1 if fd is an open descriptor connected to a terminal; returns 0 otherwise.
sl@0: 
sl@0:   This function operate on the system file descriptors for character special devices.
sl@0: 
sl@0:  The isatty function
sl@0: determines if the file descriptor fd refers to a valid
sl@0: terminal type device.
sl@0: 
sl@0: Examples:
sl@0: @code
sl@0: #include<unistd.h>
sl@0: #include<stdio.h>
sl@0: #include<fcntl.h> //O_APPEND
sl@0:  
sl@0: int main()
sl@0: {
sl@0:  int x = isatty(0); //stdin (fd = 0)
sl@0:  int y = isatty(1); //stdout (fd = 1)
sl@0:  int z = isatty(2); //stderr (fd = 2)
sl@0:  
sl@0:  printf("{Expected: 1 1 1} %d %d %d", x, y, z);
sl@0:  
sl@0:  int i = isatty(5); //some invalid fd
sl@0:   
sl@0:  int fd_file = open("c:\some.txt", O_APPEND);
sl@0:   
sl@0:  int j = isatty(fd_file); //valid fd of a text file
sl@0:   
sl@0:  int fd_pipe[3];
sl@0:  int p = pipe(fd_pipe);
sl@0:   
sl@0:  int k = isatty(fd_pipe[1]); //valid fd of a pipe
sl@0:        
sl@0:  close(fd_file);         
sl@0:  close(fd_pipe[0]);      
sl@0:  close(fd_pipe[1]);
sl@0:       
sl@0:  printf("{Expected: 0 0 0} %d %d %d", i, j, k);
sl@0:  
sl@0:  unlink("c:\some.txt");
sl@0:  
sl@0:  return 0;
sl@0: }
sl@0: 
sl@0: @endcode
sl@0:  Output
sl@0: @code
sl@0: {Expected: 1 1 1} 1 1 1
sl@0: {Expected: 0 0 0} 0 0 0
sl@0: 
sl@0: @endcode
sl@0: @see ioctl()
sl@0: 
sl@0: 
sl@0:  
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @fn  link(const char *oldpath, const char *newpath)
sl@0: @param oldpath
sl@0: @param newpath
sl@0: @return   Returns 0 on successful completion. Otherwise returns -1 and sets errno to indicate the error.
sl@0: 
sl@0:   The link system call atomically creates the specified directory entry (hard 
sl@0: link) newpath with the attributes of the underlying object pointed at by oldpath. Note that if the link is successful the link count of the underlying 
sl@0: object is not incremented: On Symbian OS link functionality is simulated and the 
sl@0: underlying object is not aware of a existing link. Link is supported only on regular files and fifos. It is not on directories. Creation 
sl@0: of link on a existing link file is not supported.
sl@0: 
sl@0:  If oldpath is removed, the file newpath is also deleted as the platform recognizes the underlying object only by oldpath.
sl@0: 
sl@0:  The object pointed at by the oldpath argument must exist for the hard link to succeed and both oldpath and newpath must be in the same file system. The oldpath argument may not be a directory. Creation time stamp of the file 
sl@0:   is not supported and access time stamp is equal to modification time stamp. 
sl@0:   A newly created file will not alter the time stamp of parent directory.
sl@0: 
sl@0: Examples:
sl@0: @code
sl@0: /*
sl@0:  * Detailed description  : Example to create link to a file
sl@0:  * Precondition : "Parent.txt" should exist in c: drive
sl@0:  *
sl@0:  */
sl@0: #include <unistd.h>
sl@0: #include <stdio.h>
sl@0: int main(void)
sl@0:  {
sl@0:     if(link("C:\Parent.txt","C:\Link") < 0)
sl@0:     {
sl@0:          printf("Link creation to parent file failed");
sl@0:          return -1;
sl@0:     }
sl@0:     printf("Link to parent file created");
sl@0:     return 0;
sl@0:  }
sl@0: 
sl@0: @endcode
sl@0:  Output
sl@0: @code
sl@0: Link to parent file created.
sl@0: 
sl@0: @endcode
sl@0: 
sl@0: Limitations:
sl@0: 
sl@0: - The oldpath and newpath parameters of the link() function should not exceed 256 characters in length. 
sl@0: - P.I.P.S. only simulates link files and does not distinguish between hard and symbolic links.
sl@0: 
sl@0: - KErrNotReady of Symbian error code is mapped to ENOENT, which typically means drive
sl@0: not found or filesystem not mounted on the drive.
sl@0: 
sl@0: @see readlink()
sl@0: @see symlink()
sl@0: @see unlink()
sl@0: 
sl@0: 
sl@0: 
sl@0: @capability Deferred @ref RFs::Delete(const TDesC16&)
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @fn lseek(int fd, off_t pos, int whence)
sl@0: @param fd
sl@0: @param pos
sl@0: @param whence
sl@0: @return Upon successful completion,  lseek returns the resulting offset location as measured in bytes from the beginning of the file. Otherwise, a value of -1 is returned and  errno is set to indicate the error.
sl@0: 
sl@0: The  lseek system call repositions the offset of the file descriptor  fildes to the argument  offset according to the directive  whence. The argument  fildes must be an open file descriptor. The  lseek system call repositions the file position pointer associated with the file descriptor  fildes as follows:
sl@0: 	If whence is SEEK_SET, the offset is set to offset bytes.
sl@0: 	If whence is SEEK_CUR, the offset is set to its current location plus offset bytes.
sl@0: 	If whence is SEEK_END, the offset is set to the size of the file plus offset bytes.
sl@0: Some devices are incapable of seeking. The value of the pointer associated with such a device is undefined.
sl@0: 
sl@0: If 'fd' refers to a shared memory object then lseek() on the shared memory object is supported by the current implementation.
sl@0: 
sl@0: Note : lseek function allows the file offset to be set beyond the existing end-of-file, data in the seeked slot is undefined, and hence the read operation in seeked slot is undefined untill data is actually written into it. lseek beyond existing end-of-file increases the file size accordingly.
sl@0: 
sl@0: Errors:
sl@0: 
sl@0: The  lseek system call will fail and the file position pointer will remain unchanged if:
sl@0: [EBADF]	The fildes argument is not an open file descriptor.
sl@0: [EINVAL] 	The whence argument is not a proper value or the resulting file offset would be negative for a non-character special file.
sl@0: [EOVERFLOW]	The resulting file offset would be a value which cannot be represented correctly in an object of type off_t(Not supported).
sl@0: [ESPIPE] 	The fildes argument is associated with a pipe, socket, or FIFO.
sl@0: 
sl@0: Examples:
sl@0: @code
sl@0: /*
sl@0:  * Detailed description  : Example for lseek usage.
sl@0:  */
sl@0: #include <stdio.h>
sl@0: #include <sys/stat.h>
sl@0: #include <fcntl.h>
sl@0: #include <sys/types.h>
sl@0: int main()
sl@0: {
sl@0: int fd = 0;
sl@0:  fd = open("lseek.txt"  , O_CREAT | O_RDWR , 0666);
sl@0:   if(lseek(fd , 0 , SEEK_SET) < 0 ) {
sl@0:      printf("Lseek on file lseek.txt failed \n");
sl@0:       return -1;
sl@0:   }
sl@0:   printf("Lseek on lseek.txt passed ");
sl@0:  return 0;
sl@0: }
sl@0: 
sl@0: @endcode
sl@0: Output
sl@0: @code
sl@0: Lseek on lseek.txt passed
sl@0: @endcode
sl@0: 
sl@0: @see dup()
sl@0: @see open()
sl@0: 
sl@0:  
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @fn  lseek64(int fildes, off64_t offset, int whence)
sl@0: @param fildes
sl@0: @param offset
sl@0: @param whence
sl@0: @return   Upon successful completion, lseek64 returns the resulting offset location as measured in bytes from the
sl@0: beginning of the file.
sl@0: Otherwise,
sl@0: a value of -1 is returned and errno is set to indicate
sl@0: the error.
sl@0: 
sl@0: For full documentation see: http://www.unix.org/version2/whatsnew/lfs20mar.html#3.0
sl@0: 
sl@0: @see lseek()
sl@0:  
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @fn  pathconf(const char *path, int name)
sl@0: @param path
sl@0: @param name
sl@0: 
sl@0: Note: This description also covers the following functions -
sl@0:  fpathconf() 
sl@0: 
sl@0: @return   If the call to pathconf or fpathconf is not successful, -1 is returned and errno is set appropriately.
sl@0: Otherwise, if the variable is associated with functionality that does
sl@0: not have a limit in the system, -1 is returned and errno is not modified.
sl@0: Otherwise, the current variable value is returned.
sl@0: 
sl@0: The pathconf and fpathconf system calls provide a method for applications to determine the current
sl@0: value of a configurable system limit or option variable associated
sl@0: with a pathname or file descriptor.
sl@0: 
sl@0: For pathconf, the path argument is the name of a file or directory.
sl@0: For fpathconf, the fd argument is an open file descriptor.
sl@0: The name argument specifies the system variable to be queried.
sl@0: Symbolic constants for each name value are found in the include file \<unistd.h\>.
sl@0: 
sl@0:  The available values are as follows:
sl@0: @code
sl@0:  _PC_LINK_MAX
sl@0:  	The maximum file link count.
sl@0: _PC_MAX_CANON
sl@0:  	The maximum number of bytes in terminal canonical input line.
sl@0: _PC_MAX_INPUT
sl@0:  	The minimum maximum number of bytes for which space is available in a terminal input queue.
sl@0: _PC_NAME_MAX
sl@0:  	The maximum number of bytes in a file name.
sl@0: _PC_PATH_MAX
sl@0:  	The maximum number of bytes in a pathname.
sl@0: _PC_PIPE_BUF
sl@0:  	The maximum number of bytes which will be written atomically to a pipe.
sl@0: _PC_CHOWN_RESTRICTED
sl@0:  	Return 1 if appropriate privilege is required for the chown system call, otherwise 0. -p1003.1-2001 requires appropriate privilege in all cases, but this behavior was optional in prior editions of the standard.
sl@0: _PC_NO_TRUNC
sl@0:  	Return greater than zero if attempts to use pathname components longer than
sl@0: .Brq Dv NAME_MAX will result in an [ENAMETOOLONG] error; otherwise, such components will be truncated to
sl@0: .Brq Dv NAME_MAX. -p1003.1-2001 requires the error in all cases, but this behavior was optional in prior editions of the standard, and some non- POSIX -compliant file systems do not support this behavior.
sl@0: _PC_VDISABLE
sl@0:  	Returns the terminal character disabling value.
sl@0: _PC_ASYNC_IO
sl@0:  	Return 1 if asynchronous I/O is supported, otherwise 0.
sl@0: _PC_PRIO_IO
sl@0:  	Returns 1 if prioritised I/O is supported for this file, otherwise 0.
sl@0: _PC_SYNC_IO
sl@0:  	Returns 1 if synchronised I/O is supported for this file, otherwise 0.
sl@0: _PC_ALLOC_SIZE_MIN
sl@0:  	Minimum number of bytes of storage allocated for any portion of a file.
sl@0: _PC_FILESIZEBITS
sl@0:  	Number of bits needed to represent the maximum file size.
sl@0: _PC_REC_INCR_XFER_SIZE
sl@0:  	Recommended increment for file transfer sizes between _PC_REC_MIN_XFER_SIZE and _PC_REC_MAX_XFER_SIZE.
sl@0: _PC_REC_MAX_XFER_SIZE
sl@0:  	Maximum recommended file transfer size.
sl@0: _PC_REC_MIN_XFER_SIZE
sl@0:  	Minimum recommended file transfer size.
sl@0: _PC_REC_XFER_ALIGN
sl@0:  	Recommended file transfer buffer alignment.
sl@0: _PC_SYMLINK_MAX
sl@0:  	Maximum number of bytes in a symbolic link.
sl@0: _PC_ACL_EXTENDED
sl@0:  	Returns 1 if an Access Control List (ACL) can be set on the specified file, otherwise 0.
sl@0: _PC_ACL_PATH_MAX
sl@0:  	Maximum number of ACL entries per file.
sl@0: _PC_CAP_PRESENT
sl@0:  	Returns 1 if a capability state can be set on the specified file, otherwise 0.
sl@0: _PC_INF_PRESENT
sl@0:  	Returns 1 if an information label can be set on the specified file, otherwise 0.
sl@0: _PC_MAC_PRESENT
sl@0:  	Returns 1 if a Mandatory Access Control (MAC) label can be set on the specified file, otherwise 0.
sl@0: @endcode
sl@0:   
sl@0: Errors:
sl@0: 
sl@0: If any of the following conditions occur, the  pathconf and  fpathconf system calls shall return -1 and set  errno to the corresponding value.
sl@0: [EINVAL]	The value of the name argument is invalid.
sl@0: [EINVAL] 	The implementation does not support an association of the variable name with the associated file.
sl@0: The pathconf system call will fail if:
sl@0: [ENOTDIR] 	A component of the path prefix is not a directory.
sl@0: [ENAMETOOLONG] 	A component of a pathname exceeded
sl@0: .Brq Dv NAME_MAX characters (but see _PC_NO_TRUNC above), or an entire path name exceeded
sl@0: .Brq Dv PATH_MAX characters.
sl@0: [ENOENT] 	The named file does not exist.
sl@0: [EACCES] 	Search permission is denied for a component of the path prefix.
sl@0: [ELOOP] 	Too many symbolic links were encountered in translating the pathname.
sl@0: [EIO] 	An I/O error occurred while reading from or writing to the file system.
sl@0: The fpathconf system call will fail if:
sl@0: [EBADF] 	The fd argument is not a valid open file descriptor.
sl@0: [EIO] 	An I/O error occurred while reading from or writing to the file system.
sl@0: 
sl@0: Examples:
sl@0: @code
sl@0: #include<unistd.h>
sl@0: #include<stdio.h>
sl@0: int test_pathconf()
sl@0: {
sl@0:    int fp = open("test_pathconf1.txt", O_RDWR|O_CREAT);
sl@0:    if(fp != -1)
sl@0:    {
sl@0:      int n = pathconf("test_pathconf1.txt", _PC_LINK_MAX);
sl@0:      if( n < _POSIX_LINK_MAX )
sl@0:      {
sl@0:        return -1;
sl@0:      }
sl@0:      else
sl@0:      {
sl@0:        printf("_PC_LINK_MAX value: %d", n);
sl@0:        printf("Pathconf passed");
sl@0:        return 0;
sl@0:      }
sl@0:    }
sl@0:    else
sl@0:    {
sl@0:      printf("failed");
sl@0:      return -1;
sl@0:    }    
sl@0: }               
sl@0: 
sl@0: @endcode
sl@0:  Output
sl@0: @code
sl@0: _PC_LINK_MAX value: 1
sl@0: Pathconf passed
sl@0: 
sl@0: @endcode
sl@0: 
sl@0: 
sl@0: Note:
sl@0: 
sl@0: @code
sl@0:  The current implementation of the functions pathconf and fpathconf considers only the following configurable variables. _PC_LINK_MAX _PC_MAX_CANON _PC_MAX_INPUT _PC_NAME_MAX _PC_PATH_MAX _PC_PIPE_BUF _PC_CHOWN_RESTRICTED _PC_NO_TRUNC _PC_VDISABLE   Also, these functions return the limits as required by the POSIX
sl@0: standard instead of the actual system limits determined on the run. 
sl@0: @endcode
sl@0: 
sl@0:  
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @fn  pipe(int *fildes)
sl@0: @param fildes
sl@0: @return   The pipe function returns the value 0 if successful; otherwise the
sl@0: value -1 is returned and errno is set to indicate the error.
sl@0: 
sl@0:   The pipe system call
sl@0: creates a pipe, which is an object allowing
sl@0: bidirectional data flow,
sl@0: and allocates a pair of file descriptors.
sl@0: 
sl@0:  By convention, the first descriptor is normally used as the read end of the pipe, and the second is normally the write end, so that data written to fildes[1] appears on (i.e. can be read from) fildes[0]. This allows the output of one thread to be sent to another 
sl@0:   thread: the source's standard output is set up to be the write end of the 
sl@0:   pipe and the sink's standard input is set up to be the read end of the 
sl@0:   pipe. The pipe itself persists until all its associated descriptors are closed.
sl@0: 
sl@0:  A pipe that has had an end closed is considered widowed. Writing on such a pipe causes the writing process to fail and errno is set to EPIPE . Widowing a pipe is the only way to deliver end-of-file to a 
sl@0:   reader: After the reader consumes any buffered data, reading a widowed pipe 
sl@0:   returns a zero count.
sl@0: 
sl@0: Examples:
sl@0: @code
sl@0: #include <unistd.h>
sl@0: #include <stdio.h>
sl@0: 
sl@0: int main(void)
sl@0: {
sl@0:     int fds[2];
sl@0:     if (pipe(fds) == -1) {
sl@0:        printf("Pipe creation failed");
sl@0:     }
sl@0:     /* fds[0] - opened for read */
sl@0:     /* fds[1] - opened for write */
sl@0:     close(fds[0]);
sl@0:     close(fds[1]);
sl@0:     return 0;
sl@0: }
sl@0: 
sl@0: @endcode
sl@0: @see read()
sl@0: @see write()
sl@0: 
sl@0: 
sl@0:  
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @fn  read(int fd, void *buf, size_t cnt)
sl@0: @param fd
sl@0: @param buf
sl@0: @param cnt
sl@0: 
sl@0: Note: This description also covers the following functions -
sl@0:  readv() 
sl@0: 
sl@0: @return   If successful, the number of bytes actually read is returned. Upon reading 
sl@0: end-of-file, zero is returned. Otherwise, -1 is returned and the global variable errno is set to indicate the error.
sl@0: 
sl@0:   The read system call
sl@0: attempts to read cnt bytes of data from the object referenced by the descriptor fd into the buffer pointed to by buf. The readv system call
sl@0: performs the same action, but scatters the input data
sl@0: into the iovcnt buffers specified by the members of the iov array: iov[0], iov[1], ..., iov[iovcnt-1].
sl@0: 
sl@0:  For readv the iovec structure is defined as:
sl@0: 
sl@0:  struct iovec {
sl@0: void   *iov_base;  // Base address. 
sl@0: size_t iov_len;    // Length. 
sl@0: };
sl@0: 
sl@0:  Each iovec entry specifies the base address and length of an area
sl@0: in memory where data should be placed.
sl@0: The readv system call
sl@0: will always fill an area completely before proceeding
sl@0: to the next.
sl@0: 
sl@0:  On objects capable of seeking, the read starts at a position
sl@0: given by the pointer associated with fd (see lseek )
sl@0: Upon return from read, the pointer is incremented by the number of bytes actually read.
sl@0: 
sl@0: If 'fd' refers to a shared memory object then read() on the shared memory object is supported by the current implementation.
sl@0: 
sl@0:  Objects that are not capable of seeking always read from the current
sl@0: position.
sl@0: The value of the pointer associated with such an
sl@0: object is undefined.
sl@0: 
sl@0:  Upon successful completion, read, and readv return the number of bytes actually read and placed in the buffer.
sl@0: The system guarantees to read the number of bytes requested if
sl@0: the descriptor references a normal file that has that many bytes left
sl@0: before the end-of-file, but in no other case.
sl@0: 
sl@0: Errors:
sl@0: 
sl@0: The  read, and  readv system calls will succeed unless:
sl@0: [EBADF] 	The d argument is not a valid file or socket descriptor open for reading.
sl@0: [ECONNRESET]The d argument refers to a socket, and the remote socket end is forcibly closed.
sl@0: [EFAULT] 	The buf argument points outside the allocated address space(Not supported).
sl@0: [EIO] 	An I/O error occurred while reading from the file system(Not supported).
sl@0: [EINTR] 	A read from a slow device was interrupted before any data arrived by the delivery of a signal(Not supported).
sl@0: [EINVAL] 	The pointer associated with d was negative.
sl@0: [EAGAIN] 	The file was marked for non-blocking I/O, and no data were ready to be read.
sl@0: [EISDIR] 	The file descriptor is associated with a directory residing on a file system that does not allow regular read operations on directories (e.g. NFS)(Not supported).
sl@0: [EOPNOTSUPP] 	The file descriptor is associated with a file system and file type that do not allow regular read operations on it(Not supported).
sl@0: [EOVERFLOW] 	The file descriptor is associated with a regular file, nbytes is greater than 0, offset is before the end-of-file, and offset is greater than or equal to the offset maximum established for this file system(Not supported).
sl@0: [EINVAL] 	The value nbytes is greater than INT_MAX.
sl@0: In addition, readv and preadv may return one of the following errors:
sl@0: [EINVAL] 	The iovcnt argument was less than or equal to 0, or greater than IOV_MAX.
sl@0: [EINVAL] 	One of the iov_len values in the iov array was negative.
sl@0: [EINVAL] 	The sum of the iov_len values in the iov array overflowed a 32-bit integer.
sl@0: [EFAULT] 	Part of the iov array points outside the process’s allocated address space.
sl@0: 
sl@0: Examples:
sl@0: @code
sl@0: /* Detailed description :This example demonstrates usage of read-system call, this
sl@0:  * Example reads 10 bytes from a file specified
sl@0:  *
sl@0:  * Preconditions: Example.txt file should be present in C: and should contain
sl@0:  * string Hello World.
sl@0:  *
sl@0:  */  
sl@0: #include <unistd.h>
sl@0: #include <sys/types.h>
sl@0: #include <sys/stat.h>
sl@0: #include <fcntl.h>
sl@0: int main()
sl@0: {
sl@0:   int fd = 0;
sl@0:   char Buff[12] = {0};
sl@0:  
sl@0:   fd = open("C:\Example.txt" , O_RDONLY );
sl@0:  
sl@0:   if(fd < 0 )  {
sl@0:      printf("Failed to open C:\Example.txt file");
sl@0:      return -1;
sl@0:   }
sl@0:  
sl@0:   if(read(fd , Buff , 11) < 11)   {
sl@0:      printf("Failed to read specified number of bytes from file");
sl@0:      return -1;
sl@0:   }
sl@0:  
sl@0:   printf("file contains %s 
sl@0: " , Buff);
sl@0:   return 0;
sl@0: }
sl@0: 
sl@0: @endcode
sl@0:  Output
sl@0: @code
sl@0: file contains Hello World
sl@0: 
sl@0: @endcode
sl@0: @code
sl@0: /*
sl@0:  * Detailed description: Sample usage of readv system call
sl@0:  * Preconditions: Example.txt file should be present in working directory containing  Hello world   in it
sl@0:  *
sl@0:  */
sl@0: #include <stdio.h>
sl@0: #include <sys/types.h>
sl@0: #include <sys/uio.h>
sl@0: #include <fcntl.h>
sl@0: int main()
sl@0: {
sl@0:   int fd = 0;
sl@0:   struct iovec io_vec[1];
sl@0:   char Buf[12] = { 0 };
sl@0:   io_vec[0].iov_base  = Buf;
sl@0:   io_vec[0].iov_len = 11;
sl@0:   fd = open("Example.txt" , O_RDONLY );
sl@0:   if(fd < 0 )  {
sl@0:     printf("File open failed");
sl@0:     return -1;
sl@0:   }
sl@0:   if(readv(fd , io_vec , 1) <  11 )   {
sl@0:     printf("Failed to read fron Example.txt file");
sl@0:     return -1;
sl@0:   }
sl@0:   printf("Read succes %s"  , io_vec[0].iov_base);
sl@0:   return 0;
sl@0: }
sl@0: 
sl@0: @endcode
sl@0:  Output
sl@0: @code
sl@0: Read succes Hello World
sl@0: 
sl@0: @endcode
sl@0: @see dup()
sl@0: @see fcntl()
sl@0: @see getdirentries()
sl@0: @see open()
sl@0: @see pipe()
sl@0: @see select()
sl@0: @see socket()
sl@0: @see socketpair()
sl@0: @see fread()
sl@0: @see readdir()
sl@0: 
sl@0: 
sl@0:  
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @fn  rmdir(const char *_path)
sl@0: @param _path
sl@0: @return   The rmdir() function returns the value 0 if successful; otherwise the
sl@0: value -1 is returned and the global variable errno is set to indicate the
sl@0: error.
sl@0: 
sl@0: The rmdir system call removes a directory file whose name is given by path. 
sl@0: The directory must not have any entries other than '.' and '..'.
sl@0: Examples:
sl@0: @code
sl@0: /*
sl@0:  *  Detailed description: This test code demonstrates usage of rmdir systemcall, it removes directory
sl@0:  *  Example from the current working directory.
sl@0:  *
sl@0:  *  Preconditions: Expects empty directory "Example" in current working directory.
sl@0:  */
sl@0: #include  <unistd.h>
sl@0: int main()
sl@0: {
sl@0:   if(rmdir("Example") < 0 )  
sl@0:   {
sl@0:      printf("Rmdir failed");
sl@0:      return -1;
sl@0:   }
sl@0:   printf("Directory Example removed");
sl@0:   return 0;
sl@0: }
sl@0: 
sl@0: @endcode
sl@0:  Output
sl@0: Directory Example removed
sl@0: @code
sl@0: 
sl@0: @endcode
sl@0: 
sl@0: Limitations:
sl@0: 
sl@0: The _path parameter of the rmdir() function should not exceed 256 characters in length. 
sl@0: 
sl@0: KErrNotReady of Symbian error code is mapped to ENOENT, which typically means drive
sl@0: not found or filesystem not mounted on the drive.
sl@0: 
sl@0: @capability Deferred @ref RFs::RmDir(const TDesC16&)
sl@0: @capability Deferred @ref RFs::Att(const TDesC16&, unsigned&)
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @fn  setgid(gid_t gid)
sl@0: @param gid
sl@0: 
sl@0: Refer to  setuid() for the documentation
sl@0: 
sl@0: 
sl@0:  
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @fn  setpgid(pid_t pid, pid_t pgid)
sl@0: @param pid
sl@0: @param pgid
sl@0: 
sl@0: Note: This description also covers the following functions -
sl@0:  setpgrp() 
sl@0: 
sl@0: @return   These functions always return 0.
sl@0: 
sl@0:   These functions are build supported but not available functionally. Symbian 
sl@0: OS does not support multiple users and groups.
sl@0: 
sl@0: 
sl@0: 
sl@0:  
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @fn  setsid(void)
sl@0: 
sl@0: @return   These functions always return 0.
sl@0: 
sl@0:   These functions are build supported but not available functionally. Symbian 
sl@0: OS does not support multiple users and groups.
sl@0: 
sl@0: 
sl@0: 
sl@0:  
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @fn  setuid(uid_t uid)
sl@0: @param uid
sl@0: 
sl@0: Note: This description also covers the following functions -
sl@0:  seteuid()  setgid()  setegid() 
sl@0: 
sl@0: @return   These functions always return 0.
sl@0: 
sl@0:   These functions are build supported but not available functionally. Symbian 
sl@0: OS does not support multiple users and groups.
sl@0: 
sl@0: 
sl@0: 
sl@0:  
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @fn  sleep(unsigned int secs)
sl@0: @param secs
sl@0: @return   If the sleep function returns because the requested time has elapsed, the value
sl@0: returned will be zero.
sl@0: 
sl@0:   The sleep function suspends execution of the calling process until seconds seconds have elapse
sl@0: 
sl@0:  Time interval is internally represented using 32 bit value(range +-2147483647). 
sl@0:   Any time interval greater 2147483647 returns 0 without sleeping. Hence Maximum 
sl@0:   sleep time supported here is 35 minutes, 47 seconds.
sl@0: 
sl@0: 
sl@0: 
sl@0: Examples:
sl@0: @code
sl@0: /*
sl@0:  * Detailed description: This test code shows usage of sleep system call , here sample code
sl@0:  * sleeps for 2 seconds.
sl@0:  */
sl@0: #include <unistd.h>
sl@0: int main()
sl@0: {
sl@0:   if(sleep(2) < 0 )  
sl@0:   {
sl@0:     printf("Sleep failed");
sl@0:     return -1;
sl@0:   }
sl@0:   printf("Sleep successful");
sl@0:   return 0;
sl@0: }
sl@0: 
sl@0: @endcode
sl@0:  Output
sl@0: @code
sl@0: Sleep successful
sl@0: 
sl@0: @endcode
sl@0: @see nanosleep()
sl@0: 
sl@0: 
sl@0:  
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @fn  sysconf(int name)
sl@0: @param name
sl@0: @return   If the call to sysconf is not successful, -1 is returned and errno is set appropriately.
sl@0: Otherwise, if the variable is associated with functionality that is not
sl@0: supported, -1 is returned and errno is not modified.
sl@0: Otherwise, the current variable value is returned.
sl@0: 
sl@0: This interface is defined by -p1003.1-88 .A far more complete interface is available using sysctl.
sl@0: 
sl@0: 
sl@0: The sysconf function provides a method for applications to determine the 
sl@0:   current value of a configurable system limit or option variable. The name argument specifies the system variable to be queried. Symbolic 
sl@0:   constants for each name value are found in the include file \#include \<unistd.h\> . Shell programmers who need access 
sl@0:   to these parameters should use the getconf utility.
sl@0: 
sl@0: The available values are as follows:
sl@0: @code
sl@0:  _SC_ARG_MAX
sl@0:   The maximum number of argument to execve.
sl@0:  _SC_CHILD_MAX
sl@0:   The maximum number of simultaneous processes per user id.(Not supported)
sl@0:  _SC_CLK_TCK
sl@0:   The frequency of the statistics clock in ticks per second.
sl@0:  _SC_IOV_MAX
sl@0:   The maximum number of elements in the I/O vector used by readv , writev , recvmsg ,
sl@0:  and sendmsg .
sl@0:  _SC_NGROUPS_MAX
sl@0:   The maximum number of supplemental groups.(Not supported)
sl@0:  _SC_NPROCESSORS_CONF
sl@0:   The number of processors configured.(Not supported)
sl@0:  _SC_NPROCESSORS_ONLN
sl@0:   The number of processors currently online.(Not supported)
sl@0:  _SC_OPEN_MAX
sl@0:   The maximum number of open files per user id.(Not supported)
sl@0:  _SC_STREAM_MAX
sl@0:   The minimum maximum number of streams that a process may have open( Not supported)
sl@0:  at any one time.
sl@0:  _SC_TZNAME_MAX
sl@0:   The minimum maximum number of types supported for the name of a
sl@0:  timezone.(Not supported)
sl@0:  _SC_JOB_CONTROL
sl@0:   Return 1 if job control is available on this system, otherwise -1.
sl@0:  _SC_SAVED_IDS
sl@0:   Returns 1 if saved set-group and saved set-user ID is available,
sl@0:  otherwise -1.(Not supported)
sl@0:  _SC_VERSION
sl@0:   The version of -p1003.1 with which the system
sl@0:  attempts to comply.(Not supported)
sl@0:  _SC_BC_BASE_MAX
sl@0:   The maximum ibase/obase values in the bc utility.(Not supported)
sl@0:  _SC_BC_DIM_MAX
sl@0:   The maximum array size in the bc utility.(Not supported)
sl@0:  _SC_BC_SCALE_MAX
sl@0:   The maximum scale value in the bc utility.(Not supported)
sl@0:  _SC_BC_STRING_MAX
sl@0:   The maximum string length in the bc utility.(Not supported)
sl@0:  _SC_COLL_WEIGHTS_MAX
sl@0:   The maximum number of weights that can be assigned to any entry of
sl@0:  the LC_COLLATE order keyword in the locale definition file.(Not supported)
sl@0:  _SC_EXPR_NEST_MAX
sl@0:   The maximum number of expressions that can be nested within
sl@0:  parenthesis by the expr utility.(Not supported)
sl@0:  _SC_LINE_MAX
sl@0:   The maximum length in bytes of a text-processing utility's input
sl@0:  line.(Not supported)
sl@0:  _SC_RE_DUP_MAX
sl@0:   The maximum number of repeated occurrences of a regular expression
sl@0:  permitted when using interval notation.(Not supported)
sl@0:  _SC_2_VERSION
sl@0:   The version of -p1003.2 with which the system attempts to comply.( Not supported)
sl@0:  _SC_2_C_BIND
sl@0:   Return 1 if the system's C-language development facilities support the
sl@0:  C-Language Bindings Option, otherwise -1.
sl@0:  _SC_2_C_DEV
sl@0:   Return 1 if the system supports the C-Language Development Utilities Option,
sl@0:  otherwise -1.
sl@0:  _SC_2_CHAR_TERM
sl@0:   Return 1 if the system supports at least one terminal type capable of
sl@0:  all operations described in -p1003.2 ,
sl@0:  otherwise -1.
sl@0:  _SC_2_FORT_DEV
sl@0:   Return 1 if the system supports the FORTRAN Development Utilities Option,
sl@0:  otherwise -1.
sl@0:  _SC_2_FORT_RUN
sl@0:   Return 1 if the system supports the FORTRAN Runtime Utilities Option,
sl@0:  otherwise -1.
sl@0:  _SC_2_LOCALEDEF
sl@0:   Return 1 if the system supports the creation of locales, otherwise -1.
sl@0:  _SC_2_SW_DEV
sl@0:   Return 1 if the system supports the Software Development Utilities Option,
sl@0:  otherwise -1.
sl@0:  _SC_2_UPE
sl@0:   Return 1 if the system supports the User Portability Utilities Option,
sl@0:  otherwise -1.
sl@0:  _SC_PAGESIZE
sl@0:   Returns size of a page in bytes.  (Some systems use PAGE_SIZE instead.)
sl@0: @endcode
sl@0: 
sl@0:  Note: Some of the  return values may not be posix compliant.
sl@0: 
sl@0: Examples:
sl@0: @code
sl@0: /*
sl@0:  *  Detailed description  : This test code demonstrates usage of sysconf system call , here it get max command
sl@0:     line arguments that can be passed to process.
sl@0: */
sl@0: #include <unistd.h>
sl@0: int main()
sl@0: {
sl@0:   int ret = 0 ;
sl@0:   ret = sysconf(_SC_ARG_MAX) ;
sl@0:   if(ret < 0 )  {
sl@0:     printf("Sysconf call failed") ;
sl@0:     return -1 ;
sl@0:  }
sl@0:  printf("Max command line arguments = %d" , ret) ;
sl@0:  return 0 ;
sl@0: }
sl@0: 
sl@0: @endcode
sl@0:  Output
sl@0: @code
sl@0: max-number of commandline args supproted by system.
sl@0: 
sl@0: @endcode
sl@0: @see pathconf()
sl@0: @see confstr()
sl@0: 
sl@0: 
sl@0: Bugs:
sl@0: 
sl@0:  The value for _SC_STREAM_MAX is a minimum maximum, and is required to be 
sl@0: the same as ANSI C's FOPEN_MAX, so the returned value is a ridiculously small 
sl@0: and misleading number. 
sl@0: 
sl@0:  
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @fn  unlink(const char *pathname)
sl@0: @param pathname
sl@0: @return   Upon successful completion, 0 is returned. Otherwise, -1 is returned and errno is set to indicate the error.
sl@0: 
sl@0:  
sl@0:  The unlink system call removes the link named by pathname from its file system.
sl@0: 
sl@0:  Symbian OS simulates links so there is no reference count and files are unaware 
sl@0:   of links. Calling unlink on a file will always close the file, regardless of 
sl@0:   whether there is another link.
sl@0: 
sl@0:  The pathname argument may not be a directory.
sl@0: 
sl@0: Examples:
sl@0: @code
sl@0: /*
sl@0:  * Detailed description  : Example to unlink a link file
sl@0:  * Precondition : A link file by name "Link" should exist in
sl@0:  *                c: drive.
sl@0:  */
sl@0: #include <unistd.h>
sl@0: #include <stdio.h>
sl@0: int main(void)
sl@0: {
sl@0:     char rdbuff[25];
sl@0:     if(unlink("C:\Link"))
sl@0:     {
sl@0:          printf("unlink on link file failed");
sl@0:     }
sl@0:     printf("Unlink on link file succeeded");
sl@0: }
sl@0: 
sl@0: @endcode
sl@0:  Output
sl@0: @code
sl@0: Unlink on link file succeeded.
sl@0: 
sl@0: @endcode
sl@0: 
sl@0: Limitations:
sl@0: 
sl@0: - The path parameter of the unlink() function should not exceed 256 characters in length. 
sl@0: - P.I.P.S. only simulates link files and does not distinguish between hard and symbolic links.
sl@0: - KErrNotReady of Symbian error code is mapped to ENOENT, which typically means drive
sl@0: not found or filesystem not mounted on the drive.
sl@0: 
sl@0: @see close()
sl@0: @see link()
sl@0: @see rmdir()
sl@0: @see symlink()
sl@0: 
sl@0: 
sl@0: 
sl@0: @capability Deferred @ref RFs::Att(const TDesC16&, unsigned&)
sl@0: @capability Deferred @ref RFs::SetAtt(const TDesC16&, unsigned, unsigned)
sl@0: @capability Deferred @ref RFs::Delete(const TDesC16&)
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @fn  write(int fd, const void *buf, size_t cnt)
sl@0: @param fd
sl@0: @param buf
sl@0: @param cnt
sl@0: 
sl@0: @return   Upon successful completion the number of bytes which were written
sl@0: is returned.
sl@0: Otherwise a -1 is returned and the global variable errno is set to indicate the error.
sl@0: 
sl@0: The write system call attempts to write cnt bytes of data to the object referenced by the descriptor fd from the buffer pointed to by buf .
sl@0: The writev system call performs the same action, but gathers the output data from the iovcnt buffers specified by the members of the iov array: iov[0], iov[1], ..., iov[iovcnt-1].
sl@0: The pwrite and pwritev system calls perform the same functions, but write to the specified position in the file without modifying the file pointer.
sl@0: 
sl@0: Notes: 
sl@0: 
sl@0: 1. This description also covers the pwrite(), writev() and pwritev() functions.
sl@0:  
sl@0: 2. An attempt to write on a broken pipe generates the SIGPIPE signal, which may cause termination of the process, if it is not handled.
sl@0: 
sl@0:  For writev and pwritev, the iovec structure is defined as:
sl@0: 
sl@0: @code
sl@0:  struct iovec {
sl@0: void   *iov_base;  //Base address.
sl@0: size_t iov_len;    // Length.
sl@0: };
sl@0: @endcode
sl@0: 
sl@0:  Each iovec entry specifies the base address and length of an area
sl@0: in memory from which data should be written.
sl@0: The writev system call
sl@0: will always write a complete area before proceeding
sl@0: to the next.
sl@0: 
sl@0:  On objects capable of seeking, the write starts at a position
sl@0: given by the pointer associated with fd ,
sl@0: see lseek .
sl@0: Upon return from write ,
sl@0: the pointer is incremented by the number of bytes which were written.
sl@0: 
sl@0: If 'fd' refers to a shared memory object then write() on the shared memory object is supported by the current implementation.
sl@0: 
sl@0:  Objects that are not capable of seeking always write from the current
sl@0: position.
sl@0: The value of the pointer associated with such an object
sl@0: is undefined.
sl@0: 
sl@0:  When using non-blocking I/O on objects such as sockets that are subject
sl@0: to flow control, write and writev may write fewer bytes than requested;
sl@0: the return value must be noted,
sl@0: and the remainder of the operation should be retried when possible.
sl@0: 
sl@0: Examples:
sl@0: @code
sl@0: /* Detailed description: This sample code creates an Example.txt file in the current working
sl@0:  * directory(if file existes then it is truncated) and writes "Hello World" string
sl@0:  * to the file.
sl@0:  *
sl@0:  * Preconditions: Example.txt if present, it should not be read-only.
sl@0:  */
sl@0: int main()
sl@0: {
sl@0:  int fd = 0 ;
sl@0:  char Buf[] = "Hello World" ;
sl@0:  fd = open("Example.txt" , O_CREAT | O_TRUNC | O_RDWR  ,0666) ;
sl@0:  if(fd < 0 )
sl@0:  {
sl@0:     printf("Failed to open file Example.txt") ;
sl@0:     return -1 ;
sl@0:  }
sl@0:  if(write(fd , Buf , sizeof(Buf)) < sizeof(Buf))
sl@0:   {
sl@0:     printf("Failed to write string %s to file" , Buf) ;
sl@0:     return -1 ;
sl@0:   }
sl@0:   printf("String %s written to file 
sl@0: " , Buf) ;
sl@0:   return 0 ;
sl@0:  }
sl@0: 
sl@0: @endcode
sl@0:  Output
sl@0: @code
sl@0: String Hello World written to file
sl@0: 
sl@0: @endcode
sl@0: @code
sl@0: /*
sl@0:  * Detailed description  : Sample usage of readv system call
sl@0:  */
sl@0: #include <stdio.h>
sl@0: #include <sys/types.h>
sl@0: #include <sys/uio.h>
sl@0: #include <fcntl.h>
sl@0: int main()
sl@0: {
sl@0:   int fd = 0 ;
sl@0:   struct iovec io_vec[1] ;
sl@0:   char Buf[12] = "Hello world" ;
sl@0:   io_vec[0].iov_base  = Buf ;
sl@0:   io_vec[0].iov_len = 11 ;
sl@0:   fd = open("Example.txt" , O_CREAT | O_RDWR , 0666 ) ;
sl@0:   if(fd < 0 )  {
sl@0:     printf("File open failed") ;
sl@0:     return -1 ;
sl@0:   }
sl@0:   if(writev(fd , io_vec , 1) <  11 )   {
sl@0:     printf("Failed to read fron Example.txt file") ;
sl@0:     return -1 ;
sl@0:   }
sl@0:   printf("writev succes %s written"  , io_vec[0].iov_base) ;
sl@0:   return 0 ; }
sl@0: 
sl@0: @endcode
sl@0:  Output
sl@0: @code
sl@0: writev succes Hello world written
sl@0: 
sl@0: @endcode
sl@0: @see fcntl()
sl@0: @see lseek()
sl@0: @see open()
sl@0: @see pipe()
sl@0: @see select()
sl@0: 
sl@0: 
sl@0:  
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @fn  confstr(int name, char *buf, size_t len)
sl@0: @param name
sl@0: @param buf
sl@0: @param len
sl@0: @return   If the call to confstr is not successful, 0 is returned and errno is set appropriately.
sl@0: Otherwise, if the variable does not have a configuration defined value,
sl@0: 0 is returned and errno is not modified.
sl@0: Otherwise, the buffer size needed to hold the entire configuration-defined
sl@0: value is returned.
sl@0: If this size is greater than the argument len, the string in buf was truncated.
sl@0: 
sl@0:   The confstr function provides a method for applications to get configuration
sl@0: defined string values.
sl@0: 
sl@0: The name argument specifies the system variable to be queried. Symbolic 
sl@0:   constants for each name value are found in the include file \#include \<unistd.h.\> The len argument specifies the size of the buffer referenced by the argument buf. If len is non-zero, buf is a non-null pointer, and name has a value, up to len - 1 bytes of the value are copied into the buffer buf. The copied value is always null terminated.
sl@0:  The available values are as follows:
sl@0: 
sl@0: @code
sl@0:  _CS_PATH
sl@0:   Return a value for the PATH environment variable that finds all the standard utilities.
sl@0: 
sl@0: @endcode
sl@0: 
sl@0: Examples:
sl@0: @code
sl@0: #include<unistd.h>
sl@0: #include<stdio.h>
sl@0: #include <stdlib.h>
sl@0:  
sl@0: int main()
sl@0: {
sl@0:  int n = 0;
sl@0:  char *buf = NULL;
sl@0:  int len = 0;
sl@0:    
sl@0:  n = confstr(_CS_PATH, NULL, 0);
sl@0:     
sl@0:  printf("{Expected: 31} %d", n);
sl@0:        
sl@0:  if( n == 0 )
sl@0:     return -1;
sl@0:                     
sl@0:  buf = (char *)malloc(n);
sl@0:   
sl@0:  if ( buf == NULL )
sl@0:  {
sl@0:     printf("malloc failed!!");
sl@0:     return -1;
sl@0:  }
sl@0:              
sl@0:  len = confstr(_CS_PATH, buf, n);
sl@0:                 
sl@0:  printf("PATH in buffer: \n%s", buf);
sl@0:  printf("length: %d", len);
sl@0:  free(buf);
sl@0:  
sl@0:  return 0;
sl@0: }
sl@0: 
sl@0: @endcode
sl@0:  Output
sl@0: @code
sl@0: PATH in buffer:
sl@0: /usr/bin:/bin:/usr/sbin:/sbin:
sl@0: length: 31
sl@0: 
sl@0: @endcode
sl@0: @see pathconf()
sl@0: @see sysconf()
sl@0: 
sl@0: 
sl@0:  
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @fn getopt(int nargc, char * const nargv[], const char *ostr)
sl@0: @param nargc
sl@0: @param nargv
sl@0: @param ostr
sl@0: @return The  getopt function returns the next known option character in  optstring. If  getopt encounters a character not found in  optstring or if it detects a missing option argument, it returns ‘?’ (question mark. If  optstring has a leading ‘:’ then a missing option argument causes ‘:’ to be returned instead of ‘?.’ In either case, the variable  optopt is set to the character that caused the error. The  getopt function returns -1 when the argument list is exhausted.
sl@0: 
sl@0: The  getopt function incrementally parses a command line argument list  argv and returns the next  known option character. An option character is  known if it has been specified in the string of accepted option characters,  optstring.
sl@0: 
sl@0: The option string optstring may contain the following elements: individual characters, and characters followed by a colon to indicate an option argument is to follow. For example, an option string x recognizes an option "-x", and an option string x: recognizes an option and argument "-x argument." It does not matter to getopt if a following argument has leading white space.
sl@0: 
sl@0: On return from getopt, optarg points to an option argument, if it is anticipated, and the variable optind contains the index to the next argv argument for a subsequent call to getopt. The variable optopt saves the last known option character returned by getopt.
sl@0: 
sl@0: The variables opterr and optind are both initialized to 1. The optind variable may be set to another value before a set of calls to getopt in order to skip over more or less argv entries.
sl@0: 
sl@0: In order to use getopt to evaluate multiple sets of arguments, or to evaluate a single set of arguments multiple times, the variable optreset must be set to 1 before the second and each additional set of calls to getopt, and the variable optind must be reinitialized.
sl@0: 
sl@0: The getopt function returns -1 when the argument list is exhausted. The interpretation of options in the argument list may be cancelled by the option ‘--’ (double dash) which causes getopt to signal the end of argument processing and return -1. When all options have been processed (i.e., up to the first non-option argument), getopt returns -1. 
sl@0: 
sl@0: Examples:
sl@0: @code
sl@0: #include <unistd.h>
sl@0: #include <stdio.h>
sl@0: #include <fcntl.h>
sl@0: #include <errno.h>
sl@0: #include <string.h>
sl@0:  
sl@0: int main()
sl@0: {
sl@0:         int argc = 3;
sl@0:          
sl@0:         char *argv[] =
sl@0:          {
sl@0:                  "getopt","-f","hi"
sl@0:          };
sl@0:         
sl@0:         int bflag, ch, fd;
sl@0:         bflag = 0;
sl@0:          
sl@0:         while ((ch = getopt(argc, argv, "bf:")) != -1) {
sl@0:         
sl@0:         switch (ch) {
sl@0:         case 'b':
sl@0:                 bflag = 1;
sl@0:                 printf("option is 'b' \n");
sl@0:                 break;
sl@0:         case 'f':
sl@0:                 printf("option is 'f' \n");
sl@0:                 if ((fd = open(optarg, O_RDONLY, 0)) != 0) {
sl@0:                         (void)fprintf(stderr,
sl@0:                            "myname: %s: %s\n", optarg, strerror(errno));                
sl@0:                 }                             
sl@0:                 break;
sl@0:         case '?':
sl@0:                 printf("missing option!");
sl@0:         default:
sl@0:                 printf("unknown option!");
sl@0:         }
sl@0:        
sl@0: }
sl@0: argc -= optind;
sl@0: return 0;
sl@0: }
sl@0: 
sl@0: @endcode
sl@0:  Output
sl@0: @code
sl@0: option is ’f’
sl@0: myname: hi: No such file or directory
sl@0: @endcode
sl@0: @see getopt_long()
sl@0: 
sl@0: Bugs:
sl@0: 
sl@0: The  getopt function was once specified to return  EOF instead of -1. This was changed by  -p1003.2-92 to decouple  getopt from
sl@0:  	\#include \<stdio.h\>
sl@0: 
sl@0: A single dash "-" may be specified as a character in optstring, however it should never have an argument associated with it. This allows getopt to be used with programs that expect "-" as an option flag. This practice is wrong, and should not be used in any current development. It is provided for backward compatibility only. Care should be taken not to use ‘-’ as the first character in optstring to avoid a semantic conflict with GNU getopt, which assigns different meaning to an optstring that begins with a ‘-.’ By default, a single dash causes getopt to return -1.
sl@0: 
sl@0: It is also possible to handle digits as option letters. This allows getopt to be used with programs that expect a number ("-3") as an option. This practice is wrong, and should not be used in any current development. It is provided for backward compatibility only. The following code fragment works in most cases.
sl@0: 
sl@0: @code
sl@0: int ch;
sl@0: long length;
sl@0: char *p, *ep;
sl@0: while ((ch = getopt(argc, argv, "0123456789")) != -1)
sl@0:         switch (ch) {
sl@0:         case ’0’: case ’1’: case ’2’: case ’3’: case ’4’:
sl@0:         case ’5’: case ’6’: case ’7’: case ’8’: case ’9’:
sl@0:                 p = argv[optind - 1];
sl@0:                 if (p[0] == ’-’ Am]Am] p[1] == ch Am]Am] !p[2]) {
sl@0:                         length = ch - ’0’;
sl@0:                         ep = "";
sl@0:                 } else if (argv[optind] Am]Am] argv[optind][1] == ch) {
sl@0:                         length = strtol((p = argv[optind] + 1),
sl@0:                             Am]ep, 10);
sl@0:                         optind++;
sl@0:                         optreset = 1;
sl@0:                 } else
sl@0:                         usage();
sl@0:                 if (*ep != ’\0’)
sl@0:                         errx(EX_USAGE, "illegal number -- %s", p);
sl@0:                 break;
sl@0:         }
sl@0: @endcode
sl@0: 
sl@0:  
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @fn  fsync(int fd)
sl@0: @param fd
sl@0: @return   Upon successful completion, fsync() returns 0. Otherwise, it returns -1 and sets 
sl@0: errno to indicate the error. If the fsync() function fails, outstanding I/O operations 
sl@0: are not guaranteed to have been completed.
sl@0: 
sl@0:   The fsync system call
sl@0: causes all modified data and attributes of fd to be moved to a permanent storage device.
sl@0: This normally results in all in-core modified copies
sl@0: of buffers for the associated file to be written to a disk.
sl@0: 
sl@0:  The fsync system call should be used by programs that require a file to 
sl@0:   be in a known state, for example, when building a simple transaction facility.
sl@0: 
sl@0: Examples:
sl@0: @code
sl@0: /*
sl@0:  * Detailed description : Simple usage of fsync system call.
sl@0:  * Preconditions : Example.txt if present should not a ready-only file
sl@0:  */
sl@0: #include <unistd.h>
sl@0: #include <fcntl.h>
sl@0: int main()
sl@0: {
sl@0:   int fd = 0;
sl@0:   fd = open("Example.txt" , O_CREAT | O_RDWR , 0666);
sl@0:   if(fd < 0 )  
sl@0:   {
sl@0:      printf("Failed to open file Example.txt");
sl@0:      return -1;
sl@0:   }
sl@0:   if(fsync(fd) < 0 )  
sl@0:   {
sl@0:      printf("fsync system call failed");
sl@0:      return -1;
sl@0:   }
sl@0:   close(fd);
sl@0:   printf("fsync system call succeeded");
sl@0:   return 0;
sl@0: }
sl@0: 
sl@0: @endcode
sl@0:  Output
sl@0: @code
sl@0: fsync system call succeeded
sl@0: 
sl@0: @endcode
sl@0: @see fsync()
sl@0: @see sync()
sl@0: 
sl@0: 
sl@0:  
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @fn  fdatasync(int filedesc)
sl@0: @param filedesc
sl@0: @return   If successful the function returns 0, otherwise it returns (-1) and sets errno 
sl@0:   to indicate the error.
sl@0: 
sl@0:   The fdatasync system call
sl@0: causes all modified data and attributes of fd to be moved to a permanent storage device.
sl@0: This normally results in all in-core modified copies
sl@0: of buffers for the associated file to be written to a disk.
sl@0: The fdatasync() function forces all the queued I/O operations associated that
sl@0: file, as indicated by the file descriptor fd, to the synchronized I/O completion
sl@0: state.
sl@0: 
sl@0:  The functionality shall be equivalent to fsync() with the symbol _POSIX_SYNCHRONIZED_IO 
sl@0:   defined. This has an exception that all I/O operations shall be completed before 
sl@0:   the call.
sl@0: 
sl@0: 
sl@0: 
sl@0:  The fdatasync should be used by programs that require a file to be in 
sl@0:   a known state, for example when building a simple transaction facility.
sl@0: 
sl@0: 
sl@0: 
sl@0: Examples:
sl@0: @code
sl@0: #include<unistd.h>
sl@0: #include<stdio.h>
sl@0: #define KMAXCHARS 100
sl@0: int test_fdatasync()
sl@0: {
sl@0:    char* array = "abcdefghijklmnopqrstuvwxyz";
sl@0:    struct stat buf;
sl@0:    if((fd = open(file , O_CREAT | O_RDWR , 0666))  < 0)
sl@0:    {
sl@0:       printf("Failed  to create file");
sl@0:    }
sl@0:    size_t size = write(fd,array, KMAXCHARS);
sl@0:    if(fdatasync(fd) < 0)
sl@0:    {
sl@0:      printf("Fdatasync failed");
sl@0:      int retrn = remove(file);
sl@0:      return -1;
sl@0:    }
sl@0:   int retVal2 = fstat( fp, &buf; );
sl@0:   if(!retVal2)
sl@0:   {
sl@0:     size_t bufsize = buf.st_size;
sl@0:     if (bufsize == size)
sl@0:     {
sl@0:       printf("file size = %d", size);
sl@0:       printf("Fdatasync passed");
sl@0:       int retrn = remove(file);
sl@0:       return 0;
sl@0:     }
sl@0:   }
sl@0: }
sl@0: 
sl@0: @endcode
sl@0:  Output
sl@0: @code
sl@0: file size = 50
sl@0: Fdatasync passed
sl@0: 
sl@0: @endcode
sl@0: @see sync()
sl@0: @see fsync()
sl@0: 
sl@0: 
sl@0:  
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @fn ftruncate(int filedesc, off_t length)
sl@0: @param filedesc
sl@0: @param length
sl@0: 
sl@0: Refer to truncate() for documentation
sl@0: 
sl@0: @see open()
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @fn ftruncate64(int filedesc, off64_t length)
sl@0: @param filedesc
sl@0: @param length
sl@0: 
sl@0: For full documentation see: http://www.unix.org/version2/whatsnew/lfs20mar.html#3.0
sl@0: 
sl@0: @see ftruncate()
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @fn  readlink(const char *path, char *buf, int bufsize)
sl@0: @param path
sl@0: @param buf
sl@0: @param bufsize
sl@0: @return   The call returns the count of characters placed in the buffer
sl@0: if it succeeds, or a -1 if an error occurs, placing the error
sl@0: code in the global variable errno.
sl@0: 
sl@0:   The readlink system call
sl@0: places the contents of the symbolic link path in the buffer buf, which has size bufsize. The readlink system call does not append a NULL character to buf.
sl@0: 
sl@0: Examples:
sl@0: @code
sl@0: /*
sl@0: * Detailed description: Example to read a link file
sl@0: * Precondition: "Parent.txt" should exist in c: drive with some contents
sl@0: *                of length atleast 25 characters.  And a link file by name           
sl@0: *                "C:\Link" pointing to parent file should exist.
sl@0: *
sl@0: */
sl@0: #include <unistd.h>
sl@0: #include <stdio.h>
sl@0: int main(void)
sl@0: {
sl@0:     char rdbuff[25];
sl@0:     int retval;
sl@0:    if((retval = (readlink("C:\Link", rdbuff, (sizeof(char)*25)))) < 0)
sl@0:     {
sl@0:        printf("Read through link file failed");
sl@0:        perror(" ");
sl@0:        return -1;
sl@0:     }
sl@0:     printf("Read through link file succeeded");
sl@0: }
sl@0: 
sl@0: @endcode
sl@0:  Output
sl@0: @code
sl@0: Read through link file succeeded.
sl@0: 
sl@0: @endcode
sl@0: 
sl@0: Limitations:
sl@0: 
sl@0: The path parameter of the readlink() function should not exceed 256 characters in length. 
sl@0: 
sl@0: @see lstat()
sl@0: @see stat()
sl@0: @see symlink()
sl@0: @see symlink()
sl@0: 
sl@0: 
sl@0: 
sl@0: @capability Deferred @ref RFs::Entry(const TDesC16&, TEntry&)
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @fn gethostname(char *name, size_t size)
sl@0: @param name
sl@0: @param size
sl@0: @return On successful completion, 0 is returned. Otherwise, -1 is returned
sl@0: 
sl@0: The gethostname() function returns the standard host name for the current machine. The size argument specifies the size of the array pointed to by the name argument. The returned name is null-terminated, except that if size is an insufficient length to hold the host name, then the returned name is truncated and it is unspecified whether the returned name is null-terminated. 
sl@0: Host names are limited to 255 bytes
sl@0: 
sl@0: @see uname()
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @fn  setegid(gid_t gid)
sl@0: @param gid
sl@0: 
sl@0: Refer to  setuid() for the documentation
sl@0: 
sl@0: 
sl@0:  
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @fn  seteuid(uid_t uid)
sl@0: @param uid
sl@0: 
sl@0: Refer to  setuid() for the documentation
sl@0: 
sl@0: 
sl@0:  
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @fn  symlink(const char *oldpath, const char *newpath)
sl@0: @param oldpath
sl@0: @param newpath
sl@0: @return   Upon successful completion, 0 is returned. Otherwise, -1 is returned and errno set to indicate the error.
sl@0: 
sl@0:  
sl@0: 
sl@0:  A symbolic link newpath is created to oldpath (newpath is the name of the file created, oldpath is the string used in creating the symbolic link). Either name 
sl@0:   may be an arbitrary path name. 
sl@0: 
sl@0:  The creation time stamp is not supported, only access and modification time 
sl@0:   stamps. Creating a link in a directory will not alter the time stamps of the 
sl@0:   directory itself.
sl@0: 
sl@0:  
sl@0: 
sl@0: Examples:
sl@0: @code
sl@0: /*
sl@0: * Detailed description  : Example to create symlink to a file.
sl@0: * Precondition : "Parent.txt" should exist in c: drive.
sl@0: * Remarks      : Symlink behaviour is exactly similar to link api.
sl@0: */
sl@0: #include <unistd.h>
sl@0: #include <stdio.h>
sl@0: int main(void)
sl@0:  {
sl@0:     if(symlink("C:\Parent.txt","C:\Link") < 0)
sl@0:     {
sl@0:          printf("simulated link creation to parent file failed");
sl@0:          return -1  ;
sl@0:     }
sl@0:     printf("simulated link to parent file created");
sl@0:     return 0 ;
sl@0:  }
sl@0: 
sl@0: @endcode
sl@0:  Output
sl@0: @code
sl@0: simulated link to parent file created.
sl@0: 
sl@0: @endcode
sl@0: 
sl@0: Limitations:
sl@0: 
sl@0: - The oldpath and newpath parameters of the symlink() function should not exceed 256 characters in length. 
sl@0: - P.I.P.S. does not support links across file systems.
sl@0: - P.I.P.S. does not support symlink on directories or existing link files.
sl@0: - P.I.P.S. only simulates link files and does not distinguish between hard and symbolic links so link() and symlink() on P.I.P.S. are identical.
sl@0: - KErrNotReady of Symbian error code is mapped to ENOENT, which typically means drive
sl@0: not found or filesystem not mounted on the drive.
sl@0: 
sl@0: @see link()
sl@0: @see lstat()
sl@0: @see readlink()
sl@0: @see unlink()
sl@0: @see symlink()
sl@0: 
sl@0: 
sl@0: 
sl@0: @capability Deferred @ref RFs::Delete(const TDesC16&)
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @fn  fchdir(int filedesc)
sl@0: @param filedesc
sl@0: 
sl@0: Refer to  chdir() for the documentation
sl@0: 
sl@0: 
sl@0: 
sl@0: @capability Deferred @ref RFs::SetSessionPath(const TDesC16&)
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @fn  getpgid(pid_t pid)
sl@0: @param pid
sl@0: 
sl@0: Refer to  getpgrp() for the documentation
sl@0: 
sl@0: 
sl@0:  
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @fn  lchown(const char *path, uid_t owner, gid_t group)
sl@0: @param path
sl@0: @param owner
sl@0: @param group
sl@0: 
sl@0: Refer to  chown() for the documentation
sl@0: 
sl@0: 
sl@0:  
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @fn  nice(int incr)
sl@0: @param incr
sl@0:  
sl@0: 
sl@0:  The nice function obtains the scheduling priority of the process from 
sl@0:   the system and sets it to the priority value specified in incr. The priority is a value in the range -20 to 20. The default priority 
sl@0:   is 0. Lower priorities cause more favorable scheduling.
sl@0: 
sl@0: 
sl@0: 
sl@0: Examples:
sl@0: @code
sl@0: #include<unistd.h>
sl@0: #include<stdio.h>
sl@0: int test_nice()
sl@0: {
sl@0:    int retVal;
sl@0:    errno = 0;
sl@0:    int i = -10;
sl@0:    int ret_get1 = getpriority(PRIO_PROCESS,0);
sl@0:    retVal = nice(i);
sl@0:    int ret_get2 = getpriority(PRIO_PROCESS,0);
sl@0:    if((retVal == -1)&&(errno))
sl@0:    {
sl@0:       printf("failed");
sl@0:       return -1;
sl@0:    }
sl@0:    else
sl@0:    {
sl@0:      if(!(i - (ret_get2 - retget1)))
sl@0:      printf("Nice value: %d", i)
sl@0:      printf("nice passed");
sl@0:    }
sl@0:    return 0;
sl@0: }       
sl@0: 
sl@0: @endcode
sl@0:  Output
sl@0: @code
sl@0: Nice value: -10
sl@0: nice passed
sl@0: 
sl@0: @endcode
sl@0: @see getpriority()
sl@0: 
sl@0: 
sl@0:  
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @fn  setpgrp(pid_t _pid, pid_t _pgrp)
sl@0: @param _pid
sl@0: @param _pgrp
sl@0: 
sl@0: Refer to  setpgid() for the documentation
sl@0: 
sl@0: 
sl@0:  
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @fn  setregid(gid_t rgid, gid_t egid)
sl@0: @param rgid
sl@0: @param egid
sl@0: @return   These functions always return 0.
sl@0: 
sl@0:   These functions are build supported but not available functionally. Symbian 
sl@0: OS does not support multiple users and groups.
sl@0: 
sl@0: 
sl@0: 
sl@0:  
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @fn  setreuid(uid_t ruid, uid_t euid)
sl@0: @param ruid
sl@0: @param euid
sl@0: @return   These functions always return 0.
sl@0: 
sl@0:   These functions are build supported but not available functionally. Symbian 
sl@0: OS does not support multiple users and groups.
sl@0: 
sl@0: 
sl@0: 
sl@0:  
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @fn swab(const void *from, void *to, ssize_t len)
sl@0: @param from
sl@0: @param to
sl@0: @param len
sl@0: 
sl@0: The function  swab copies  len bytes from the location referenced by  from to the location referenced by  to, swapping adjacent bytes.
sl@0: 
sl@0: The argument len must be an even number.
sl@0: 
sl@0: Examples
sl@0: @code
sl@0: #include <string.h>
sl@0: #include <stdio.h>
sl@0: int main()
sl@0: {
sl@0:     int i=0x00003366,j=0x0;
sl@0:     swab((void *)&i,(void *)&j,2);
sl@0:     if(j==0x6633)
sl@0:        printf("Ouput val = %#x\n",j);
sl@0:     return 0;
sl@0: }
sl@0: @endcode
sl@0: 
sl@0: output
sl@0: @code
sl@0: Ouput val = 0x6633
sl@0: @endcode
sl@0: @see bzero()
sl@0: @see memset()
sl@0: 
sl@0:  
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @fn  usleep(useconds_t microseconds)
sl@0: @param microseconds
sl@0: @return   The usleep function returns the value 0 if successful; otherwise the value -1 is
sl@0: returned and the global variable errno is set to indicate the error.
sl@0: 
sl@0:   The usleep function suspends execution of the calling process until either microseconds microseconds have elapsed or a signal is delivered to the process and its
sl@0: action is to invoke a signal-catching function or to terminate the
sl@0: process.
sl@0: System activity may lengthen the sleep by an indeterminate amount.
sl@0: 
sl@0:  This function is implemented using nanosleep by pausing for microseconds microseconds or until a signal occurs.
sl@0: Consequently, in this implementation,
sl@0: sleeping has no effect on the state of process timers,
sl@0: and there is no special handling for SIGALRM.
sl@0: 
sl@0: Limitations:
sl@0: 
sl@0: The signal related functionaities aren’t applicable to the symbian implementation as there is no support for signals from symbian.
sl@0: 
sl@0: Examples:
sl@0: @code
sl@0: #include<unistd.h>
sl@0: #include<stdio.h>
sl@0:  
sl@0: int main()
sl@0: {
sl@0:  unsigned long t = 2; 
sl@0:  int i;
sl@0:   
sl@0:  i = usleep(t);
sl@0:  printf("Expected: 0 usleep returned: %d", i);
sl@0:   
sl@0:  return 0;
sl@0: }
sl@0: 
sl@0: @endcode
sl@0:  Output
sl@0: @code
sl@0: Expected: 0 usleep returned: 0
sl@0: 
sl@0: @endcode
sl@0: @see nanosleep()
sl@0: @see sleep()
sl@0: 
sl@0: 
sl@0:  
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @fn truncate(const char *file, off_t length)
sl@0: @param file
sl@0: @param length
sl@0: @return   Upon successful completion, both truncate() and ftruncate() shall return 0; otherwise, -1 shall be returned and errno set to indicate the error.
sl@0: 
sl@0: 
sl@0: The  truncate system call causes the file named by  file or referenced by  filedesc to be truncated to  length bytes in size. If the file was larger than this size, the extra data is lost. If the file was smaller than this size, it will be extended as if by writing bytes with the value zero. With  ftruncate, the file must be open for writing.
sl@0: 
sl@0: Examples:
sl@0: @code
sl@0: //example for truncate
sl@0: #include<unistd.h>
sl@0: #include<stdio.h>
sl@0: #include <sys/stat.h>
sl@0: int test_truncate()
sl@0: {
sl@0:         int retVal, retVal2, retSize, retSize2;
sl@0:         struct stat buf;
sl@0:         ssize_t size;
sl@0:         char *buffer = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwx";
sl@0:         int fp = open("c:\test.txt", O_RDWR|O_CREAT);
sl@0:         size = write(fp,buffer,50);
sl@0:         close(fp);
sl@0:         retVal2 = stat("c:\test.txt", &buf );
sl@0:         if ( !retVal2 )
sl@0:         {
sl@0:         retSize = buf.st_size;
sl@0:         printf("Size before: %d", retSize);
sl@0:         retVal = truncate("c:\test.txt", retSize/2 );
sl@0:         }
sl@0:         else
sl@0:         {
sl@0:         printf("Failed");
sl@0:         }
sl@0:         retVal2 = stat( "c:\test.txt", &buf );
sl@0:         if ( !retVal2 )
sl@0:                 {
sl@0:                 retSize2 = buf.st_size;
sl@0:                 if( retSize2 == (retSize/2 ) )
sl@0:                         {
sl@0:                         printf("\nSize after: %d\n", retSize2);
sl@0:                         printf("Truncate passed");
sl@0:                         return 0;
sl@0:                         }
sl@0:                 else
sl@0:                         {
sl@0:                         printf("Failed");
sl@0:                         return -1;
sl@0:                         }
sl@0:                 }
sl@0:         else
sl@0:                 {
sl@0:                 printf("Failed");
sl@0:                 return -1;
sl@0:                 }
sl@0: }
sl@0: @endcode
sl@0:  Output
sl@0: @code
sl@0: Size before: 50
sl@0: Size after: 25
sl@0: Ttruncate Passed
sl@0: @endcode
sl@0: 
sl@0: Errors:
sl@0: 
sl@0: The truncate and ftruncate succeed unless:
sl@0: [EBADF] The filedesc argument is not a valid descriptor for a regular file.
sl@0: [EINVAL] The filedesc argument references to an object other than a file. 
sl@0: [EINVAL] The filedesc descriptor is not open for writing.
sl@0: 
sl@0: 
sl@0: Bugs:
sl@0: 
sl@0: These calls should be generalized to allow ranges of bytes in a file to be discarded.
sl@0: Use of truncate to extend a file is not portable. 
sl@0: @see open()
sl@0: 
sl@0:  
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @fn truncate64(const char *file, off64_t length)
sl@0: @param file
sl@0: @param length
sl@0: @return   Upon successful completion, both truncate64() and ftruncate64() shall return 0; otherwise, -1 shall be returned and errno set to indicate the error.
sl@0: 
sl@0: For full documentation see: http://www.unix.org/version2/whatsnew/lfs20mar.html#3.0
sl@0: 
sl@0: @see truncate()
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @fn  brk(const void*)
sl@0: 
sl@0: @return   Function always returns 0.
sl@0: 
sl@0:   The brk function is used to change the amount of memory allocated in a
sl@0: process's data segment.It does this by moving the location of the "break".
sl@0: This functionality is not supported by the Symbian OS platform and hence
sl@0: is only build supported.
sl@0: 
sl@0: 
sl@0: 
sl@0: @see mmap()
sl@0: @see free()
sl@0: @see malloc()
sl@0: 
sl@0: 
sl@0:  
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @fn  getdtablesize(void)
sl@0: @return  
sl@0: 
sl@0:   Each process has a fixed size descriptor table,
sl@0: which is guaranteed to have at least 20 slots.
sl@0: The entries in
sl@0: the descriptor table are numbered with small integers starting at 0.
sl@0: The getdtablesize system call returns the size of this table.
sl@0: 
sl@0: Examples:
sl@0: @code
sl@0: #include <stdio.h>
sl@0: int main()
sl@0: {
sl@0:         printf("maximum number of files that can be opened by a process is %d",getdtablesize());
sl@0: }
sl@0: 
sl@0: @endcode
sl@0:  Output
sl@0: @code
sl@0: maximum number of files that can be opened by a process is 1024
sl@0: 
sl@0: @endcode
sl@0: @see close()
sl@0: @see dup()
sl@0: @see open()
sl@0: 
sl@0: 
sl@0:  
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @fn  getpagesize(void)
sl@0:   The getpagesize function
sl@0: returns the number of bytes in a page.
sl@0: Page granularity is the granularity of many of the memory
sl@0: management calls.
sl@0: 
sl@0:  The page size is a system
sl@0: page size and may not be the same as the underlying
sl@0: hardware page size.
sl@0: 
sl@0: Examples:
sl@0: @code
sl@0: #include<unistd.h>
sl@0: #include<stdio.h>
sl@0: int test_getpagesize()
sl@0: {
sl@0:    int retVal = 0;
sl@0:    retVal = getpagesize();
sl@0:    if( retVal >= 0)
sl@0:    {
sl@0:       printf("getpagesize passed");
sl@0:       printf("
sl@0:  retVal  = %d " retVal);
sl@0:       return retVal;
sl@0:    }
sl@0:    else
sl@0:    {
sl@0:    printf("Failed");
sl@0:    return -1;
sl@0:    }
sl@0: }       
sl@0: 
sl@0: @endcode
sl@0:  Output
sl@0: @code
sl@0: getpagesize passed
sl@0: retVal = 4096
sl@0: 
sl@0: @endcode
sl@0: @see sbrk()
sl@0: 
sl@0: 
sl@0:  
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @fn  initgroups(const char *, gid_t)
sl@0: 
sl@0: @return   These functions always return 0.
sl@0: 
sl@0:  
sl@0: 
sl@0:  The getgroups function is build supported but not available functionally. 
sl@0:   Symbian OS does not support multiple users and groups.
sl@0: 
sl@0: 
sl@0: 
sl@0: 
sl@0: 
sl@0:  
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @fn issetugid(void)
sl@0: @return  The issetugid() function returns 1 if the process  was  made setuid  or  setgid  as  the result of the last or a previous call to execve(). Otherwise it returns 0
sl@0: 
sl@0: The issetugid() function enables library functions (in  lib-termlib,   libc,  or  other  libraries)  to  guarantee  safe behavior when  used  in  setuid  or  setgid  programs.  Some library  functions  might be passed insufficient informationand not know whether the current program was started  setuidor  setgid  because  a  higher level calling code might have made changes to the uid, euid, gid, or egid. These low-levellibrary  functions are therefore unable to determine if theyare being run with elevated or normal privileges.
sl@0: 
sl@0: Errors:
sl@0: 
sl@0: The issetugid() function is  always  successful.  No  return value is reserved to indicate an error.
sl@0: g
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @fn mkstemp(char *template)
sl@0: @param template
sl@0: @return The  mkstemp function returns -1 if no suitable file could be created and an error code is placed in the global variable.  errno.
sl@0: 
sl@0: The  mkstemp function takes the given file name template and overwrites a portion of it to create a file with that name and returns a file descriptor opened for reading and writing. This file name is guaranteed not to exist at the time of function invocation and is suitable for use by the application. The template may be any file name with some number of ‘X s’ appended to it, for example  /tmp/temp.XXXXXX. The trailing ‘X s’ are replaced with a unique alphanumeric combination. The number of unique file names  mkstemp can return depends on the number of ‘X s’ provided; six ‘X s’ will result in  mkstemp selecting one of 56800235584 (62 ** 6) possible temporary file names.
sl@0: 
sl@0: Errors:
sl@0: 
sl@0: The  mkstemp function may set  errno to one of the following values:
sl@0: [ENOTDIR]	The pathname portion of the template is not an existing directory.
sl@0: The mkstemp function may also set errno to any value specified by the stat function.
sl@0: The mkstemp function may also set errno to any value specified by the open function.
sl@0: 
sl@0: Examples:
sl@0: @code
sl@0: #include <stdlib.h>
sl@0: #include <stdio.h> //printf, SEEK_SET
sl@0: #include <unistd.h>
sl@0:  
sl@0: int main( void )
sl@0: {
sl@0:  char arr[] = "c:\\someXXXXXXXX";
sl@0:  char buf[10];
sl@0:   
sl@0:  //create a temporary file using mkstemp()
sl@0:  int fd = mkstemp(arr);
sl@0:   
sl@0:  if(fd != -1)
sl@0:  {
sl@0:     //write to the file
sl@0:     write(fd, "hello", 5);
sl@0:     //seek to the beginning of the file
sl@0:     lseek(fd, 0, SEEK_SET); //beg of the file
sl@0:     //read from the file
sl@0:     read(fd, buf, 5);
sl@0:     buf[5] = '\0';
sl@0:     //close the file
sl@0:     close(fd);
sl@0:  }
sl@0:  
sl@0:  printf("buf read: %s", buf);
sl@0:  return 0;
sl@0: }
sl@0: @endcode
sl@0: 
sl@0: Output
sl@0: @code
sl@0: buf read: hello
sl@0: @endcode
sl@0: 
sl@0: Limitations:
sl@0: 
sl@0: The template parameter of the mkstemp() function should not exceed 256 characters in length. 
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @fn  mkstemp64(char *template)
sl@0: @param template
sl@0: @return   The mkstemp64 function
sl@0: returns -1 if no suitable file could be created
sl@0: and an error code is placed in the global variable. errno.
sl@0: 
sl@0: The mkstemp64() function generates a unique temporary file name from template. The last six characters of template must be XXXXXX and these are replaced with a string that makes the filename unique.
sl@0: 
sl@0: The mkstemp64() function is a 64-bit version of mkstemp.
sl@0: 
sl@0: @see mkstemp()
sl@0:  
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @fn  select(int maxfd, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *tvptr)
sl@0: @param maxfd
sl@0: @param readfds
sl@0: @param writefds
sl@0: @param exceptfds
sl@0: @param tvptr
sl@0: @return   The select system call
sl@0: returns the number of ready descriptors that are contained in
sl@0: the descriptor sets,
sl@0: or -1 if an error occurred.
sl@0: If the time limit expires, select returns 0.
sl@0: If select returns with an error,
sl@0: the descriptor sets will be unmodified.
sl@0: 
sl@0:   The select system call
sl@0: examines the I/O descriptor sets whose addresses are passed in readfds, writefds, and exceptfds to see if some of their descriptors
sl@0: are ready for reading, are ready for writing, or have an exceptional
sl@0: condition pending, respectively.
sl@0: The only exceptional condition detectable is out-of-band
sl@0: data received on a socket.
sl@0: The first maxfd descriptors are checked in each set;
sl@0: i.e., the descriptors from 0 through maxfd -1 in the descriptor sets are examined.
sl@0: On return, select replaces the given descriptor sets
sl@0: with subsets consisting of those descriptors that are ready
sl@0: for the requested operation.
sl@0: The select system call
sl@0: returns the total number of ready descriptors in all the sets.
sl@0: 
sl@0:  The descriptor sets are stored as bit fields in arrays of integers.
sl@0: The following macros are provided for manipulating such descriptor sets: 
sl@0: 
sl@0: @code
sl@0: FD_ZERO (&fdset;); initializes a descriptor set fdset to the null set. 
sl@0: FD_SET (fd, &fdset;); includes a particular descriptor fd in fdset. 
sl@0: FD_CLR (fd, &fdset;); removes fd from fdset. 
sl@0: FD_ISSET (fd, &fdset;); is non-zero if fd is a member of fdset, zero otherwise.
sl@0: @endcode
sl@0: 
sl@0: The behavior of these macros is undefined if
sl@0: a descriptor value is less than zero or greater than or equal to FD_SETSIZE, which is normally at least equal
sl@0: to the maximum number of descriptors supported by the system.
sl@0: 
sl@0:  If tvptr is not a null pointer, it specifies the maximum interval to wait for the
sl@0: selection to complete.
sl@0: System activity can lengthen the interval by
sl@0: an indeterminate amount.
sl@0: 
sl@0:  To effect a poll, the tvptr argument should not be a null pointer,
sl@0: but it should point to a zero-valued timeval structure.
sl@0: 
sl@0:  Any of readfds, writefds, and exceptfds may be given as null pointers if no descriptors are of interest.
sl@0: 
sl@0: Errors:
sl@0: 
sl@0: An error return from  select indicates:
sl@0: [EBADF] 	One of the descriptor sets specified an invalid descriptor.
sl@0: [EFAULT] 	One of the arguments readfds, writefds, exceptfds, or tvptr points to an invalid address.
sl@0: [EINVAL] 	The specified time limit is invalid. One of its components is negative or too large.
sl@0: [EINVAL] 	The maxfd argument was invalid.
sl@0: 
sl@0: Limitations:
sl@0: 
sl@0: select is not interrupted by signals, as signals are not supported by 
sl@0: Symbian OS. If tvptr is set to null, select does not block forever, but waits for a maximum of 10 seconds 
sl@0: and returns. select cannot be called a second time on the same socket descriptor 
sl@0: before the first select operation on the same socket descriptor completes. (i.e) Only 
sl@0: one select operation can be outstanding on a Socket. This is because of 
sl@0: the limitation of the underlying Ioctl operation. Only one Ioctl operation may be outstanding for each socket.
sl@0: Examples:
sl@0: @code
sl@0: #include <sys/select.h>
sl@0: #include <unistd.h>
sl@0: /*
sl@0: * A simple example of testing a single FD for readability
sl@0: * This example returns 1 when the fd is ready for reading.
sl@0: */
sl@0: #include <sys/select.h>
sl@0: #include <unistd.h>
sl@0: /*
sl@0: * A simple example of testing a single FD for readability
sl@0: * This example returns 1 when the fd is ready for reading.
sl@0: */
sl@0: int isready(int fd)
sl@0: {
sl@0:     int rc;
sl@0:     fd_set fds;
sl@0:     struct timeval tv;
sl@0:    
sl@0:     /*
sl@0:      * FD_ZERO() clears out the fd_set called fds, so that
sl@0:      * it doesn’t contain any file descriptors.
sl@0:      */
sl@0:     FD_ZERO(&fds);
sl@0:     /*
sl@0:      * FD_SET() adds the file descriptor "fd" to the fd_set,
sl@0:      * so that select() will return if fd is readable
sl@0:      */
sl@0:     FD_SET(fd,&fds);
sl@0:     tv.tv_sec = tv.tv_usec = 0;
sl@0:     /*
sl@0:      * The first argument to select is the highest file
sl@0:      * descriptor value plus 1.
sl@0:      */
sl@0:                         
sl@0:      /* The second argument to select() is the address of
sl@0:       * the fd_set that contains fd’s we’re waiting
sl@0:       * to be readable.
sl@0:       */
sl@0:                         
sl@0:      /* The third parameter is an fd_set that you want to
sl@0:       * know if you can write on -- this example doesn’t
sl@0:       * use it, so it passes 0, or NULL.
sl@0:       */
sl@0:      /* The fourth parameter is sockets you’re waiting for
sl@0:       * out-of-band data for.
sl@0:       */
sl@0:                 
sl@0:      /* The last parameter to select() is a time-out of how
sl@0:       * long select() should block.
sl@0:       */
sl@0:      rc = select(fd+1, &fds, NULL, NULL, &tv);
sl@0:      /* select() returns the number of fd’s that are ready       
sl@0:       * Once select() returns, the original fd_set has been
sl@0:       * modified so it now reflects the state of why select()
sl@0:       * woke up. i.e. If file descriptor 4 was originally in
sl@0:       * the fd_set, and then it became readable, the fd_set
sl@0:       * contains file descriptor 4 in it.
sl@0:       */
sl@0:      if (rc < 0)
sl@0:        return -1;
sl@0:      return FD_ISSET(fd,&fds) ? 1 : 0;
sl@0: }
sl@0: @endcode
sl@0: @see accept()
sl@0: @see connect()
sl@0: @see getdtablesize()
sl@0: @see gettimeofday()
sl@0: @see read()
sl@0: @see recv()
sl@0: @see send()
sl@0: @see write()
sl@0: 
sl@0: 
sl@0: Notes:
sl@0: 
sl@0:  The default size of FD_SETSIZE is currently set to 1024.
sl@0: In order to accommodate programs which might potentially
sl@0: use a larger number of open files with select, it is possible
sl@0: to increase this size by having the program define FD_SETSIZE before the inclusion of any header which includes 
sl@0: 
sl@0: \#include \< sys/types.h \> 
sl@0: 
sl@0: If maxfd is greater than the number of open files, select is not guaranteed to examine the unused file descriptors. For 
sl@0:   historical reasons, select will always examine the first 256 descriptors. 
sl@0: 
sl@0: The select system call appeared in BSD 4.2.
sl@0: 
sl@0: Bugs:
sl@0: 
sl@0: <code> -susv2 </code> allows systems to modify the original tvptr in place.
sl@0: Thus, it is unwise to assume that the tvptr value will be unmodified
sl@0: by the select system call.
sl@0:  
sl@0: 
sl@0:  
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @fn  setgroups(int, const gid_t *)
sl@0: 
sl@0: Refer to  getgrent() for the documentation
sl@0: 
sl@0: 
sl@0:  
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: 
sl@0: /** @fn  alarm(unsigned int seconds)
sl@0: @param seconds -
sl@0: @return -
sl@0: 
sl@0: For full documentation see: http://www.opengroup.org/onlinepubs/009695399/functions/alarm.html
sl@0: 
sl@0: The Symbian implementation of this API fully supports POSIX functionality.
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def environ	
sl@0: 
sl@0: Environment variable.
sl@0:   
sl@0: @publishedAll
sl@0: @released
sl@0: */
sl@0: 
sl@0: /** @def STDIN_FILENO
sl@0: 
sl@0: standard input file descriptor 
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def STDOUT_FILENO
sl@0: 
sl@0: standard output file descriptor
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def STDERR_FILENO
sl@0: 
sl@0: standard error file descriptor
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def F_ULOCK
sl@0: 
sl@0: unlock locked section
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def F_LOCK
sl@0: 
sl@0: lock a section for exclusive use
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def F_TLOCK
sl@0: 
sl@0: test and lock a section for exclusive use
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def F_TEST
sl@0: 
sl@0: test a section for locks by other procs
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_ARG_MAX
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_CHILD_MAX		
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0:  
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_CLK_TCK	
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 	 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_NGROUPS_MAX
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 		 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_OPEN_MAX	
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 	 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_JOB_CONTROL
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 		 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_SAVED_IDS	
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 	 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_VERSION	
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 	 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_BC_BASE_MAX	
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 	 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_BC_DIM_MAX	
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 	
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_BC_SCALE_MAX
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 	
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_BC_STRING_MAX
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 	
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_COLL_WEIGHTS_MAX	
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_EXPR_NEST_MAX	
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_LINE_MAX		
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_RE_DUP_MAX		
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_2_VERSION	
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 	
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_2_C_BIND		
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_2_C_DEV		
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_2_CHAR_TERM	
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 	
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_2_FORT_DEV		
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_2_FORT_RUN		
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_2_LOCALEDEF	
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 	
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_2_SW_DEV		
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_2_UPE		
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_STREAM_MAX		
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_TZNAME_MAX		
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_ASYNCHRONOUS_IO	
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_MAPPED_FILES	
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_MEMLOCK		
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_MEMLOCK_RANGE	
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_MEMORY_PROTECTION	
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_MESSAGE_PASSING	
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_PRIORITIZED_IO	
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_PRIORITY_SCHEDULING
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 	
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_REALTIME_SIGNALS	
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_SEMAPHORES	
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 	
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_FSYNC	
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 	
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_SHARED_MEMORY_OBJECTS 
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_SYNCHRONIZED_IO	
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_TIMERS		
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_AIO_LISTIO_MAX	
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_AIO_MAX		
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_AIO_PRIO_DELTA_MAX	
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_DELAYTIMER_MAX
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 	
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_MQ_OPEN_MAX	
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 	
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_PAGESIZE		
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_RTSIG_MAX		
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_SEM_NSEMS_MAX	
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_SEM_VALUE_MAX	
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_SIGQUEUE_MAX	
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_TIMER_MAX		
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_2_PBS		
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_2_PBS_ACCOUNTING	
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_2_PBS_CHECKPOINT	
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_2_PBS_LOCATE	
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */ 
sl@0: 
sl@0: /** @def _SC_2_PBS_MESSAGE	
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_2_PBS_TRACK	
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 	
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_ADVISORY_INFO	
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_BARRIERS		
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_CLOCK_SELECTION	
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_CPUTIME		
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_FILE_LOCKING	
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_GETGR_R_SIZE_MAX	
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_GETPW_R_SIZE_MAX	
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_HOST_NAME_MAX	
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_LOGIN_NAME_MAX	
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_MONOTONIC_CLOCK	
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_MQ_PRIO_MAX	
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 	
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_READER_WRITER_LOCKS	
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_REGEXP		
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_SHELL		
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_SPAWN		
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_SPIN_LOCKS		
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_SPORADIC_SERVER	
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_THREAD_ATTR_STACKADDR 
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_THREAD_ATTR_STACKSIZE 
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_THREAD_CPUTIME	
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_THREAD_DESTRUCTOR_ITERATIONS 
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_THREAD_KEYS_MAX	
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_THREAD_PRIO_INHERIT	
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_THREAD_PRIO_PROTECT	
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_THREAD_PRIORITY_SCHEDULING 
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_THREAD_PROCESS_SHARED 
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_THREAD_SAFE_FUNCTIONS 
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_THREAD_SPORADIC_SERVER 
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_THREAD_STACK_MIN	
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_THREAD_THREADS_MAX	
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_TIMEOUTS		
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_THREADS	
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 	
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_TRACE	
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 	
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_TRACE_EVENT_FILTER	
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_TRACE_INHERIT	
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_TRACE_LOG		
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_TTY_NAME_MAX	
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_TYPED_MEMORY_OBJECTS 
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_V6_ILP32_OFF32	
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_V6_ILP32_OFFBIG	
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_V6_LP64_OFF64	
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_V6_LPBIG_OFFBIG	
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_IPV6		
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_RAW_SOCKETS	
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 	
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_SYMLOOP_MAX	
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 	
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_ATEXIT_MAX		
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_IOV_MAX		
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_PAGE_SIZE		
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_XOPEN_CRYPT	
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 	
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_XOPEN_ENH_I18N	
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_XOPEN_LEGACY	
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_XOPEN_REALTIME	
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_XOPEN_REALTIME_THREADS 
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_XOPEN_SHM		
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_XOPEN_STREAMS	
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_XOPEN_UNIX		
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_XOPEN_VERSION	
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _SC_XOPEN_XCU_VERSION	
sl@0: 
sl@0: POSIX-style system configuration variable accessors (for the sysconf function).
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _CS_PATH
sl@0: 
sl@0: Keys for the confstr(3) function.
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _CS_POSIX_V6_ILP32_OFF32_CFLAGS		
sl@0: 
sl@0: Keys for the confstr(3) function.
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _CS_POSIX_V6_ILP32_OFF32_LDFLAGS	
sl@0: 
sl@0: Keys for the confstr(3) function.
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _CS_POSIX_V6_ILP32_OFF32_LIBS		
sl@0: 
sl@0: Keys for the confstr(3) function.
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS	
sl@0: 
sl@0: Keys for the confstr(3) function.
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS	
sl@0: 
sl@0: Keys for the confstr(3) function.
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _CS_POSIX_V6_LP64_OFF64_CFLAGS		
sl@0: 
sl@0: Keys for the confstr(3) function.
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _CS_POSIX_V6_LP64_OFF64_CFLAGS		
sl@0: 
sl@0: Keys for the confstr(3) function.
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _CS_POSIX_V6_LP64_OFF64_LDFLAGS		
sl@0: 
sl@0: Keys for the confstr(3) function.
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _CS_POSIX_V6_LP64_OFF64_LIBS		
sl@0: 
sl@0: Keys for the confstr(3) function.
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS	
sl@0: 
sl@0: Keys for the confstr(3) function.
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def optopt
sl@0: 
sl@0: character checked for validity
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def opterr
sl@0: 
sl@0: if error message should be printed
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def optind
sl@0: 
sl@0: index into parent argv vector
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def optarg
sl@0: 
sl@0: argument associated with option
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @def optreset
sl@0: 
sl@0: reset getopt
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @typedef typedef __off_t off_t
sl@0: 
sl@0: Used for file sizes.
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @typedef typedef __gid_t gid_t
sl@0: 
sl@0: Used for group IDs.
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @typedef typedef __pid_t pid_t
sl@0: 
sl@0: Used for process IDs and process group IDs.
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @typedef typedef __size_t	size_t	
sl@0: 
sl@0: Used for sizes of objects.
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @typedef typedef __uid_t	 uid_t
sl@0: 
sl@0: Used for user IDs.
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: /** @typedef typedef __useconds_t  useconds_t	
sl@0: 
sl@0: Used for time in microseconds.
sl@0: 
sl@0: @publishedAll
sl@0: @externallyDefinedApi
sl@0: */
sl@0: 
sl@0: 
sl@0: 
sl@0: 
sl@0: