BEGIN { special = 0 }

/EXTERNS/ { ndirs = split(subdirs, dirs)
	    for (i = 1; i <= ndirs; ++i)
	    	printf "extern void __init_%s __P ((int argc, char **argv, char **envp));\n", dirs[i]
	    special = 1 }
/CALLS/ { ndirs = split(subdirs, dirs)
	  for (i = 1; i <= ndirs; ++i) printf "  __init_%s (argc, argv, envp);\n", dirs[i]
	  special = 1 }

{ if (special == 0) print $0; special = 0 }