Version 1.1: This was the first release, so there were no changes yet. Version 1.2: The README in 1.1 incorrectly stated that c2man was public domain. It is in fact copyright, but freely redistributable. See the updated README for details. You can use flex instead of lex now. Comments on parameters in old-style function definitions work OK now. Generates man pages for global variables (with -v) as well as functions. Major mods to parser to support comments at the end of lines; this makes it much more tolerant about comment placement. c2man will now parse its own source!. The manual pages it generates are pretty bad since the comments haven't been strategically placed, but it's better than you might expect without trying. Rewrote a lot of the manual page to make it comprehensible. Version 1.3: Ignores all comments in included files, except those in enum specifications; this should virtually eliminate trouble with errors in files you may have no control over, like system headers. Add "-o -" functionality to write manual pages to stdout. Run /lib/cpp when reading from stdin too. Rewrite comment parsing to be neater & easier to modify. Replace -DSYSV option with its inverse -DBSD so ANSI string functions are used by default. enum tag/description spacing in output varies automatically. Sprinkle output heavily with Bold for troff. Version 1.4: Recognise that an end-of-line comment after a function definition or declaration applies to the last parameter of a function, so we handle: /* try to do something that requires 2 parameters */ int try(int a, /* description of first parameter */ int b); /* description of second parameter */ Fix comment lexing problem that sometimes rejected the '# ...' lines that cpp generates on the line immediately after a comment. Don't capitalise n/troff dot commands. make -V option act verbosely. By popular demand, added -G option to group manual pages from the same file together, ala ctype(3). Output function prototype on a single line for all functions with one or less parameters (ignoring -f...). Version 1.5: Recognise end-of-line comments after K&R style function parameters. Specify C-preprocessor command in Makefile and add -P option to specify a different preprocessor at runtime. Add -g option like -G, but read the terse description from the file. Don't disable nroff line filling in SYNOPSIS section so very long lines still get broken. Require a white-space after a period before capitalising the next letter. i.e. Don't damage "i.e.". Version 1.6: Don't reduce pointer-to-pointers down to a single indirection level; eg: "char **argv" got output as "char *argv". Ugh!. Version 1.7: Don't try to free a string constant right at the very end!. Rename old -i option to -H, and add new -i option so user can specify extra #include lines for the SYNOPSIS section, and prerequisites for .h file compilation. Work around Sun acc -E problem where .h files were ignored. Semantic change: multiple input files all get cross-referenced in the SEE ALSO section (or grouped together if -g or -G). Version 1.8: Add -lPW I'd dropped from HPUX configuration. Fix multiple -i arguments appearing on the one line. Version 1.9: Fix silly missing fprintf arguments in c2man.c Ignore trailing spaces after a comment at the end of a line. Don't error on "typedef int NewType; NewType a;" -Ssection option added by jerry@kesa24.kesa.com (Jerry E. Dunmire). Version 1.10: Accept comments around a final ellipsis parameter. Make parameter declarations in the prototype and the PARAMETERS section identical. Version 2.0: Major modifications to use Configure for easy installation. Many, many portability fixes; converted to K&R 1 C. Accept stdin even if preprocessor doesn't. Don't error on: int fred() { } /* fred */ Allow extra manual page sections not recognized by c2man. From version 2.0 onwards, the change log for each patch is contained in the top of the patch itself. This file is no longer updated.