home *** CD-ROM | disk | FTP | other *** search
/ Unix System Administration Handbook 1997 October / usah_oct97.iso / news / cnews.tar / batch / bpfind < prev    next >
Text File  |  1995-04-27  |  2KB  |  97 lines

  1. #! /bin/sh
  2. # bpfind classpat site batchparmsfile
  3. # find batchparms line, break it down into bits
  4.  
  5. # =()<. ${NEWSCONFIG-@<NEWSCONFIG>@}>()=
  6. . ${NEWSCONFIG-/etc/news/bin/config}
  7.  
  8. PATH=$NEWSCTL/bin:$NEWSBIN/batch:$NEWSBIN:$NEWSPATH ; export PATH
  9.  
  10. classpat="$1"
  11. site="$2"
  12. shift ; shift
  13.  
  14. awk 'BEGIN {
  15.     site = "'"$site"'"
  16.     classok = 1
  17.     disable = 0
  18.     defclassok = 1
  19.     defdisable = 0
  20. }
  21. /^#/ { next }
  22. /^[     ]*$/ { next }
  23. $1 == site && $2 ~ /!/ { disable = 1 }
  24. $1 == site && $2 !~ /'"$classpat"'/ { classok = 0 }
  25. $1 == site { siteline = $0 }
  26. $1 == "/default/" && $2 ~ /!/ { defdisable = 1 }
  27. $1 == "/default/" && $2 !~ /'"$classpat"'/ { defclassok = 0 }
  28. $1 == "/default/" { defline = $0 }
  29. END {
  30.     q = "'"'"'"
  31.     if (disable == 1 || (siteline == "" && defdisable == 1)) {
  32.         print "bpokay=!"
  33.         exit
  34.     }
  35.     if (classok == 0 || (siteline == "" && defclassok == 0)) {
  36.         print "bpokay=x"
  37.         exit
  38.     }
  39.     if (siteline == "" && defline == "") {
  40.         print "bpokay=n"
  41.         print "bpgrump=" q "no applicable line" q
  42.         exit
  43.     }
  44.     if (siteline != "")
  45.         line = siteline
  46.     else
  47.         line = defline
  48.  
  49.     s = line
  50.     nf = 0
  51.     for (i = 1; i <= 4; i++) {
  52.         n = 1
  53.         while (substr(s, n) ~ /^[^     ]/)
  54.             n++
  55.         f[i] = substr(s, 1, n-1)
  56.         if (n > 1)
  57.             nf++
  58.         s = substr(s, n)
  59.         while (s ~ /^[     ]/)
  60.             s = substr(s, 2)
  61.     }
  62.     if (length(s) > 0) {
  63.         f[i] = s
  64.         nf++
  65.     }
  66.     if (nf != 5) {
  67.         print "bpokay=n"
  68.         print "bpgrump=" q "line has wrong field count, nf=" nf q
  69.         exit
  70.     }
  71.  
  72.     if (f[3] ~ /^[0-9]+-[0-9]*$/) {
  73.         dash = index(f[3], "-")
  74.         bpsize = substr(f[3], 1, dash-1)
  75.         bpmax = substr(f[3], dash+1)
  76.         if (bpmax == "")
  77.             bpmax = "1000000000"
  78.     } else {
  79.         bpsize = f[3]
  80.         bpmax = sprintf("%d", 3*f[3])
  81.     }
  82.  
  83.     if (f[5] ~ /'"'"'/) {
  84.         print "bpokay=n"
  85.         print "bpgrump=" q "command contains single quote" q
  86.         exit
  87.     }
  88.  
  89.     print "bpokay=y"
  90.     print "bpsite=" q f[1] q
  91.     print "bpclass=" q f[2] q
  92.     print "bpsize=" q bpsize q
  93.     print "bpmax=" q bpmax q
  94.     print "bpqueue=" q f[4] q
  95.     print "bpcmd=" q f[5] q
  96. }' $*
  97.