home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / unix / volume1 / bourne / part1 / ulimit.c < prev   
Encoding:
C/C++ Source or Header  |  1986-11-30  |  855 b   |  43 lines

  1. /*
  2.     ulimit -- system call emulation for Bourne shell on 4.2BSD
  3.  
  4.     last edit:    22-Aug-1983    D A Gwyn
  5. */
  6.  
  7. #include    <errno.h>
  8.  
  9. extern int    getrlimit(), setrlimit();
  10. extern int    errno;
  11.  
  12. long
  13. ulimit( cmd, newlimit )
  14.     int    cmd;            /* subcommand */
  15.     long    newlimit;        /* desired new limit */
  16.     {
  17.     struct    {
  18.         long    rlim_cur;
  19.         long    rlim_max;
  20.         }    limit;        /* data being gotten/set */
  21.  
  22.     switch ( cmd )
  23.         {
  24.     case 1:             /* get file size limit */
  25.         if ( getrlimit( 1, &limit ) != 0 )
  26.             return -1L;    /* errno is already set */
  27.         return limit.rlim_max / 512L;
  28.  
  29.     case 2:             /* set file size limit */
  30.         limit.rlim_cur = limit.rlim_max = newlimit * 512L;
  31.         return setrlimit( 1, &limit );
  32.  
  33.     case 3:             /* get maximum break value */
  34.         if ( getrlimit( 2, &limit ) != 0 )
  35.             return -1L;    /* errno is already set */
  36.         return limit.rlim_max;
  37.  
  38.     default:
  39.         errno = EINVAL;
  40.         return -1L;
  41.         }
  42.     }
  43.