- line = $0;
-
- # Find call expression.
- call_starts_at = match(line, /NEXT_PASS \(.+\)/);
- if (call_starts_at == 0)
- {
- print line;
- return;
- }
+ # Find call expression.
+ call_starts_at = match(line, fnname " \\(.+\\)");
+ if (call_starts_at == 0)
+ return 0;
+
+ # Length of the call expression.
+ len_of_call = RLENGTH;
+
+ len_of_start = length(fnname " (");
+ len_of_open = length("(");
+ len_of_close = length(")");
+
+ # Find arguments
+ len_of_args = len_of_call - (len_of_start + len_of_close);
+ args_start_at = call_starts_at + len_of_start;
+ args_str = substr(line, args_start_at, len_of_args);
+ split(args_str, args, ",");
+
+ # Find call expression prefix
+ len_of_prefix = call_starts_at - 1;
+ prefix = substr(line, 1, len_of_prefix);
+
+ # Find call expression postfix
+ postfix_starts_at = call_starts_at + len_of_call;
+ postfix = substr(line, postfix_starts_at);
+ return 1;
+}