tproto.sh - ploot - simple plotting tools
(HTM) 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