| #!/bin/gawk -f | |
| # awk script that reads a patch from stdin and prints all #define statements | |
| # that match the following patttern: | |
| # +#ifndef <symbol> | |
| # +#define <symbol> <text> | |
| # +#endif | |
| BEGIN { | |
| previous_is_ifndef = 0 | |
| symbol = "" | |
| } | |
| { | |
| is_ifndef = match($0, "^+#ifndef (.*)$", a) | |
| if (is_ifndef) | |
| symbol = a[1] | |
| is_define = previous_is_ifndef && match($0, "^+#define " + symbol) | |
| if (is_define) | |
| define = $0 | |
| is_endif = match($0, "^+#endif$") | |
| if (before_previous_is_ifndef && previous_is_define && is_endif) | |
| print define | |
| before_previous_is_ifndef = previous_is_ifndef | |
| previous_is_ifndef = is_ifndef | |
| previous_is_define = is_define | |
| } |