#!/bin/bash ulimit -t 5 ulimit -v 80000 export HOME=/tmp cd /tmp # read the config . /etc/pcblib.cgi.conf CGI=$CGI_param # import the lib . $pcb_rnd_util/cgi_common.sh gen() { cd $gendir ./$gen "$fp_params" } help_params() { awk -v "CGI=$CGI" "$@" ' BEGIN { prm=0 q="\"" fp_base=fp sub("[(].*", "", fp_base) thumbsize=1 } function urlencode(s) { gsub("[#]", "%23", s) return s } function proc_include(fn) { close(fn) while(getline < fn) proc_line() close(fn) } function proc_line() { if (/^[^\"]*@@include/) { proc_include(gendir $2) return } if ((match($0, "@@desc") || match($0, "@@params") || match($0, "@@purpose") || match($0, "@@example"))) { txt=$0 key=substr($0, RSTART, RLENGTH) sub(".*" key "[ \t]*", "", txt) HELP[key] = HELP[key] " " txt next } if (/@@thumbsize/) { sub(".*@@thumbsize", "", $0) if ($1 ~ ":") { sub("^:", "", $1) PDATA[$1,"thumbsize"] = $2 } else thumbsize=$1 return } if (/@@thumbnum/) { sub(".*@@thumbnum", "", $0) if ($1 ~ ":") { sub("^:", "", $1) PDATA[$1,"thumbnum"] = $2 } return } if (/@@param:/) { sub(".*@@param:", "", $0) p=$1 sub(p "[\t ]*", "", $0) PARAM[prm] = p PDESC[prm] = $0 prm++ return } # build PPROP[paramname,propname], e.g. PPROP[pin_mask, dim]=1 if (/@@optional:/ || /@@dim:/ || /@@bool:/) { key = $0 sub("^.*@@", "", key) val = key sub(":.*", "", key) sub("^[^:]*:", "", val) PPROP[val,key] = 1 return } # build PDATA[paramname,propname], e.g. PDATA[pin_mask, default]=123 if ((/@@default:/) || (/@@preview_args:/)) { key = $1 txt = $0 txt = substr(txt, length(key)+1, length(txt)) sub("^[ \t]*", "", txt) sub("^.*@@", "", key) val = key sub(":.*", "", key) sub("^[^:]*:", "", val) PDATA[val,key] = txt return } # build: # PDATAK[paramname,n]=key (name of the value) # PDATAV[paramname,n]=description (of the given value) # PDATAN[paramname]=n number of parameter values if (/@@enum:/) { key = $1 txt = $0 txt = substr(txt, length(key)+1, length(txt)) sub("^[ \t]*", "", txt) sub("^.*@@enum:", "", key) val = key sub(":.*", "", key) sub("^[^:]*:", "", val) idx = int(PDATAN[key]) PDATAK[key,idx] = val PDATAV[key,idx] = txt PDATAN[key]++ return } } { proc_line() } function thumb(prv, gthumbsize, lthumbsize, thumbnum ,lnk,lnk_gen, thumbsize,ann) { if (lthumbsize != "") thumbsize = lthumbsize else thumbsize = gthumbsize if (!thumbnum) ann="&annotation=none" lnk=q CGI "?cmd=" prv "&output=png&grid=none" ann "&thumb=" thumbsize q lnk_gen=q CGI "?cmd=" prv q print "" print "" print "" } END { if (header) { print "" HELP["@@purpose"] "" print "
" print HELP["@@desc"] } if (content) print "
Ordered list (positions): " HELP["@@params"] if (content) { print "
name | man dat ory | description | value (bold: default)" for(p = 0; p < prm; p++) { name=PARAM[p] print " | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
" name if (PPROP[name, "optional"]) print " | " else print " | yes" print " | " PDESC[p] print " | "
vdone=0
if (PDATAN[name] > 0) {
print "
Default: " PDATA[name, "default"] "" vdone++ } if (PPROP[name, "bool"]) { print "Boolean: yes/no, true/false, 1/0" if (PDATA[name, "default"] != "") print "; Default: " PDATA[name, "default"] "" if (PDATA[name, "preview_args"] != "") { print " " print "
|