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 }