tproto.sh - ploot - simple plotting tools HTML git clone git://bitreich.org/ploot git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/ploot DIR Log DIR Files DIR Refs DIR Tags DIR README --- tproto.sh (1328B) --- 1 #!/bin/sh 2 awk=' 3 BEGIN { 4 tab = "\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t" 5 print "/**/" 6 } 7 8 END { 9 print "" 10 print "#endif" 11 } 12 13 # functions 14 15 args { 16 sub(/^[ \t]*/, " ") 17 args = args $0 18 } 19 20 /^[a-zA-Z0-9_]+\([][)(a-z_A-Z0-9*,. \t]*$/ { 21 if (match(type, "static") || match($0, ";$")) 22 next 23 24 symbol = $0 25 sub(/\(.*/, "", symbol) 26 sub(/[a-zA-Z0-9_]*\(/, "", $0) 27 if (symbol == "main") 28 next 29 30 args = $0 31 sub(/^[a-z]*\(/, "", args) 32 } 33 34 args && /\)$/ { 35 gsub(/[\n \t]+/, " ", args) 36 37 sub(/\)$/, "", args) 38 39 gsub(/[a-zA-Z0-9_]+\[[^]]*\]/, "[]", args) 40 gsub(/[*][a-zA-Z0-9_]+/, "*", args) 41 gsub(/[ ][a-zA-Z0-9_]+,/, ",", args) 42 gsub(/[ ][a-zA-Z0-9_]+$/, "", args) 43 gsub(/[ ][a-zA-Z0-9_]+\*/, "*", args) 44 gsub(/\.\.\.\$/, "...", args) 45 gsub(/void\)$/, "void", args) 46 47 printf("%s%s%s%s(%s);\n", 48 type, substr(tab, 1, 20 / 8 - (length(type) - 3) / 8), 49 symbol, substr(tab, 1, 30 / 8 - (length(symbol) - 1) / 8), 50 args) 51 52 args = "" 53 } 54 55 !args { 56 type = $0 57 } 58 59 # variables 60 61 /^[a-zA-Z][][ \t*a-z_A-Z0-9]*=.*[;{]$/ && $1 != "static" && $1 != "enum" { 62 sub(/ *=.*/, ";") 63 sub(/[ \t]*;$/, ";"); 64 print 65 } 66 ' 67 68 for file in src/*.c; do file=${file%.c} 69 grep -Fq '/**/' "$file.h" 2>/dev/null || continue 70 header=$(awk '$0 == "/**/" { exit(0) } 1' "$file.h" 71 awk "$awk" "$file.c") 72 printf '%s\n' "$header" >"$file.h" 73 done