Here is mkproto, a program for generating prototype declarations for all functions appearing in a C source file. The input C code may be either K&R or ANSI C (i.e. it's OK if the functions are defined using prototypes). Unlike some of the sed-based scripts floating around, it correctly handles prototype promotion (e.g. the prototype for 'int foo() char x;...' is 'int foo(int x)'). Also, it should work OK on just about any computer, not just Unix-based ones (it's been tested under minix, Unix, and TOS). Use: typically, you would type 'mkproto *.c >proto.h' and then add a '#include "proto.h"' line to all the C source files. An ANSI conformant compiler will then be able to do type checking on function calls across module boundaries. As a bonus, proto.h will tell you which source files functions were defined in, and (if you gave the -n function to mkproto) their line numbers. The resulting include file may also be used by non-ANSI compilers; you can disable this feature (for cleaner, strictly ANSI-conforming output) with the -p flag. Please read the description of bugs in mkproto.man; definitely mkproto will not handle all programs correctly, but it does work on the majority of them. A sample of its output is provided in the file "mkproto.h"; this is the result of 'mkproto mkproto.c >mkproto.h'. There is ABSOLUTELY NO WARRANTY for the program; as I said, it doesn't work on all programs (complicated function definitions can make it produce bogus output). It does what I need, though, and it can certainly make porting stuff to ANSI compilers easier. Mkproto is in the public domain. If you find any bugs (other than the ones documented) please let me know. -- Eric R. Smith email: Dept. of Mathematics ersmith@uwovax.uwo.ca University of Western Ontario ersmith@uwovax.bitnet London, Ont. Canada N6A 5B7 ph: (519) 661-3638