#!/usr/local/bin/perl -w $file = shift; @cargs = @ARGV; @ARGV = grep(!/\.ft\./,<*.c>,); print STDERR "Scanning .c files for X functions\n"; while (<>) { if (/\b(X[A-Za-z0-9]*)\s*\(/) { $XFunc{$1} = $ARGV ; } } open(STDOUT,">$file") || die "Cannot open $file:$!"; $gard = "\U$file"; $gard =~ s/\..*$//; $gard =~ s#/#_#g; print "#ifndef _$gard\n"; print "#define _$gard\n"; print "#ifndef _${gard}_H_\n"; print STDERR "Extracting protos with gcc\n"; die if (system("gcc","-aux-info","/tmp/X-info","-S","-o","/dev/null",@cargs)); open(INFO,") { if (m#/X11/X[^/]*\.h:\d+:NC\s*\*/\s*(.*)$#o) { $_ = $1; if (/\b(X[A-Za-z0-9]*)\s*\(/) { if (exists $XFunc{$1}) { chomp; s/^(.*?)\(/$1 _ANSI_ARGS_((/; s/\);\s*$/));\n/; print; } } else { warn "No function:$_"; } } } close(INFO); print "#endif /* _${gard}_H_ */\n"; print "#endif /* _$gard */\n";