/***********************************************************************/ /* MANEXT - Extract manual pages from C source code. */ /***********************************************************************/ /* * MANEXT - A program to extract manual pages from C source code. * Copyright (C) 1991-1996 Mark Hessling * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 2 of * the License, or any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * If you make modifications to this software that you feel increases * it usefulness for the rest of the community, please email the * changes, enhancements, bug fixes as well as any and all ideas to me. * This software is going to be maintained and enhanced as deemed * necessary by the community. * * Mark Hessling */ #include #include #include #define MAX_LINE 255 void display_info(void) { fprintf(stderr, "\nMANEXT 1.03 Copyright (C) 1991-1996 Mark Hessling\n" "All rights reserved.\n" "MANEXT is distributed under the terms of the GNU\n" "General Public License and comes with NO WARRANTY.\n" "See the file COPYING for details.\n" "\nUsage: manext sourcefile [...]\n\n"); } int main(int argc, char **argv) { char s[MAX_LINE + 1]; /* input line */ int i; FILE *fp; #ifdef __EMX__ _wildcard(&argc, &argv); #endif if (strcmp(argv[1], "-h") == 0) { display_info(); exit(1); } for (i = 1; i < argc; i++) { if ((fp = fopen(argv[i], "r")) == NULL) { fprintf(stderr, "\nCould not open %s\n", argv[i]); continue; } while (!feof(fp)) { if (fgets(s, (int)sizeof(s), fp) == NULL) { if (ferror(fp) != 0) { fprintf(stderr, "*** Error reading %s. Exiting.\n", argv[i]); exit(1); } break; } /* check for manual entry marker at beginning of line */ if (strncmp(s, "/*man-start*", 12) != 0) continue; /* inner loop */ for (;;) { /* read next line of manual entry */ if (fgets(s, (int)sizeof(s), fp) == NULL) { if (ferror(fp) != 0) { fprintf(stderr, "*** Error reading %s. Exiting.\n", argv[i]); exit(1); } break; } /* check for end of entry marker */ if (strncmp(s, "**man-end", 9) == 0) break; printf("%s", s); } printf("\n\n-----------------------------------" "---------------------------------------\n\n"); } fclose(fp); } return 0; }