home *** CD-ROM | disk | FTP | other *** search
/ Big Green CD 8 / BGCD_8_Dev.iso / NEXTSTEP / UNIX / Shells / zsh-3.0.5-MIHS / src / Src / rlimits.awk < prev    next >
Encoding:
AWK Script  |  1997-09-25  |  2.4 KB  |  75 lines

  1. # $Id$
  2. #
  3. # rlimits.awk: {g,n}awk script to generate rlimits.h
  4. # rewritten by Peter Stephenson <pws@ifh.de> from Geoff Wing
  5. # <mason@werple.apana.org.au>'s signames.awk
  6. # NB: On SunOS 4.1.3 - user-functions don't work properly, also \" problems
  7. # Without 0 + hacks some nawks compare numbers as strings
  8. #
  9. BEGIN {limidx = 0}
  10.  
  11. /^[\t ]*(#[\t ]*define[\t _]*RLIMIT_[A-Z]*[\t ]*[0-9][0-9]*|RLIMIT_[A-Z]*,[\t ]*)/ {
  12.     limindex = index($0, "RLIMIT_")
  13.     limtail = substr($0, limindex, 80)
  14.     split(limtail, tmp)
  15.     limnam = substr(tmp[1], 8, 20)
  16.     limnum = tmp[2]
  17.     # in this case I assume GNU libc resourcebits.h
  18.     if (limnum == "") {
  19.     limnum = limidx++
  20.     sub (",", "", limnam)
  21.     }
  22.     limrev[limnam] = limnum
  23.     if (lim[limnum] == "") {
  24.     lim[limnum] = limnam
  25.     if (limnum ~ /^[0-9]*$/) {
  26.         if (limnam == "MEMLOCK") { msg[limnum] = "memorylocked" }
  27.         if (limnam == "RSS")     { msg[limnum] = "resident" }
  28.         if (limnam == "VMEM")    { msg[limnum] = "vmemorysize" }
  29.         if (limnam == "NOFILE")  { msg[limnum] = "descriptors" }
  30.         if (limnam == "OFILE")   { msg[limnum] = "descriptors" }
  31.         if (limnam == "CORE")    { msg[limnum] = "coredumpsize" }
  32.         if (limnam == "STACK")   { msg[limnum] = "stacksize" }
  33.         if (limnam == "DATA")    { msg[limnum] = "datasize" }
  34.         if (limnam == "FSIZE")   { msg[limnum] = "filesize" }
  35.         if (limnam == "CPU")     { msg[limnum] = "cputime" }
  36.         if (limnam == "NPROC")   { msg[limnum] = "maxproc" }
  37.         if (limnam == "AS")      { msg[limnum] = "addressspace" }
  38.         if (limnam == "TCACHE")  { msg[limnum] = "cachedthreads" }
  39.         }
  40.     }
  41. }
  42. /^[\t ]*#[\t ]*define[\t _]*RLIM_NLIMITS[\t ]*[0-9][0-9]*/ {
  43.     limindex = index($0, "RLIM_")
  44.     limtail = substr($0, limindex, 80)
  45.     split(limtail, tmp)
  46.     nlimits = tmp[2]
  47. }
  48. # in case of GNU libc
  49. /^[\t ]*RLIM_NLIMITS[\t ]*=[\t ]*RLIMIT_NLIMITS/ {
  50.     nlimits = limidx
  51. }
  52.  
  53. END {
  54.     if (limrev["MEMLOCK"] != "") {
  55.         irss = limrev["RSS"]
  56.         msg[irss] = "memoryuse"
  57.     }
  58.     ps = "%s"
  59.  
  60.     printf("%s\n%s\n\n", "/** rlimits.h                                 **/", "/** architecture-customized limits for zsh **/")
  61.     printf("#define ZSH_NLIMITS %d\n\nstatic char *recs[ZSH_NLIMITS+1] = {\n", 0 + nlimits)
  62.  
  63.     for (i = 0; i < 0 + nlimits; i++)
  64.     if (msg[i] == "") {
  65.             badlimit++
  66.             printf("\t%c%s%c,\n", 034, lim[i], 034)
  67.     } else
  68.         printf("\t%c%s%c,\n", 034, msg[i], 034)
  69.     print "\tNULL"
  70.     print "};"
  71.     print ""
  72.     exit(badlimit)
  73. }
  74.