Annotation of researchv10no/cmd/gre/deansify.awk, revision 1.1.1.1

1.1       root        1: # De-ANSI-fy C programs
                      2: 
                      3: # change void* to char *
                      4:        { gsub(/void *\*/, "char *") }
                      5: 
                      6: # remove args from function declarations and typedefs
                      7: # assume one per line (fitting on one line)
                      8: 
                      9: /^[a-zA-Z0-9_]+.*\([^(]*\);.*/ {
                     10:        if($0 !~ /^print\(/ && $0 !~ /^fprint\(/ && $0 !~ /^if\(/) {
                     11:                sub(/\([^(]*\);/, "();")
                     12:                print
                     13:                next
                     14:        }
                     15:     }
                     16: 
                     17: #    change function definition headers to old-style
                     18: #    function definition headers on one line, ending with ')',
                     19: #       with the return type (if not omitted) on previous line
                     20: #    assume no parentheses inside arg list
                     21: 
                     22: /^[a-zA-Z0-9_]+\(.*\)$/ {
                     23:        st = index($0, "(") + 1
                     24:        n = length($0) - st
                     25:        rawargs = substr($0, st, n)
                     26:        printf("%s(", substr($0, 1, st-2))
                     27:        if( rawargs == "void" ) {
                     28:                printf(")\n");
                     29:                next
                     30:        }
                     31:        nargs = split(rawargs, args, ", *")
                     32:        for(i = 1; i <= nargs; i++){
                     33:                if(! match(args[i], /[a-zA-Z0-9_]+ *$/)){
                     34:                        if(! match(args[i], /[a-zA-Z0-9_]+\[.*\]$/))
                     35:                                id = "OOPS"
                     36:                        else {
                     37:                                id = substr(args[i], RSTART)
                     38:                                sub(/\[.*\]/, "", id)
                     39:                        }
                     40:                } else
                     41:                        id = substr(args[i], RSTART, RLENGTH)
                     42:                printf("%s", id)
                     43:                if(i < nargs) printf(", ")
                     44:        }
                     45:        printf(")\n")
                     46:        for(i = 1; i <= nargs; i++)
                     47:                printf("\t%s;\n", args[i])
                     48:        next
                     49:     }
                     50: 
                     51: # remove pragmas
                     52: 
                     53: /^#[    ]*pragma/ { next }
                     54: 
                     55: # just print remaining lines
                     56:        { print }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.