Annotation of embedaddon/php/ext/ereg/regex/mkh, revision 1.1.1.1

1.1       misho       1: #! /bin/sh
                      2: # mkh - pull headers out of C source
                      3: PATH=/bin:/usr/bin ; export PATH
                      4: 
                      5: # egrep pattern to pick out marked lines
                      6: egrep='^ =([   ]|$)'
                      7: 
                      8: # Sed program to process marked lines into lines for the header file.
                      9: # The markers have already been removed.  Two things are done here:  removal
                     10: # of backslashed newlines, and some fudging of comments.  The first is done
                     11: # because -o needs to have prototypes on one line to strip them down.
                     12: # Getting comments into the output is tricky; we turn C++-style // comments
                     13: # into /* */ comments, after altering any existing */'s to avoid trouble.
                     14: peel=' /\\$/N
                     15:        /\\\n[  ]*/s///g
                     16:        /\/\//s;\*/;* /;g
                     17:        /\/\//s;//\(.*\);/*\1 */;'
                     18: 
                     19: for a
                     20: do
                     21:        case "$a" in
                     22:        -o)     # old (pre-function-prototype) compiler
                     23:                # add code to comment out argument lists
                     24:                peel="$peel
                     25:                        "'/^\([^#\/][^\/]*[a-zA-Z0-9_)]\)(\(.*\))/s;;\1(/*\2*/);'
                     26:                shift
                     27:                ;;
                     28:        -b)     # funny Berkeley __P macro
                     29:                peel="$peel
                     30:                        "'/^\([^#\/][^\/]*[a-zA-Z0-9_)]\)(\(.*\))/s;;\1 __P((\2));'
                     31:                shift
                     32:                ;;
                     33:        -s)     # compiler doesn't like `static foo();'
                     34:                # add code to get rid of the `static'
                     35:                peel="$peel
                     36:                        "'/^static[     ][^\/]*[a-zA-Z0-9_)](.*)/s;static.;;'
                     37:                shift
                     38:                ;;
                     39:        -p)     # private declarations
                     40:                egrep='^ ==([   ]|$)'
                     41:                shift
                     42:                ;;
                     43:        -i)     # wrap in #ifndef, argument is name
                     44:                ifndef="$2"
                     45:                shift ; shift
                     46:                ;;
                     47:        *)      break
                     48:                ;;
                     49:        esac
                     50: done
                     51: 
                     52: if test " $ifndef" != " "
                     53: then
                     54:        echo "#ifndef $ifndef"
                     55:        echo "#define   $ifndef /* never again */"
                     56: fi
                     57: echo "/* ========= begin header generated by $0 ========= */"
                     58: echo '#ifdef __cplusplus'
                     59: echo 'extern "C" {'
                     60: echo '#endif'
                     61: for f
                     62: do
                     63:        echo
                     64:        echo "/* === $f === */"
                     65:        egrep "$egrep" $f | sed 's/^ ==*[       ]//;s/^ ==*$//' | sed "$peel"
                     66:        echo
                     67: done
                     68: echo '#ifdef __cplusplus'
                     69: echo '}'
                     70: echo '#endif'
                     71: echo "/* ========= end header generated by $0 ========= */"
                     72: if test " $ifndef" != " "
                     73: then
                     74:        echo "#endif"
                     75: fi
                     76: exit 0

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>