# Remark: This script stumbles over #defines with unbalanced braces, e.g. in # kernel/trace/trace_events.c: # | #define do_for_each_event_file(tr, file) \ # | list_for_each_entry(tr, &ftrace_trace_arrays, list) { \ # | list_for_each_entry(file, &tr->events, list) # the opening brace is missing its closing counterpart. BEGIN { BRACES = 0; INIT = 0; EXIT = 0; DEBUG = 0 } /{/ { BRACES++ if (DEBUG) printf "{{{: BRACES = %d, INIT = %d, EXIT = %d\n", BRACES, INIT, EXIT } /}/ { BRACES-- if (BRACES == 0) { INIT = 0 EXIT = 0 } if (DEBUG) printf "}}}: BRACES = %d, INIT = %d, EXIT = %d\n", BRACES, INIT, EXIT } /\<__init\>/ { INIT = 1 if (DEBUG) printf "*i*: BRACES = %d, INIT = %d, EXIT = %d\n", BRACES, INIT, EXIT } /\<__exit\>/ { EXIT = 1 if (DEBUG) printf "*e*: BRACES = %d, INIT = %d, EXIT = %d\n", BRACES, INIT, EXIT } /\