Annotation of coherent/g/usr/bin/apropros.c, revision 1.1.1.1

1.1       root        1: /*
                      2:  * apropos.c
                      3:  *
                      4:  * implement a simple version of the Berkeley command "apropos".  This
                      5:  * command searches the file /usr/man/man.index for a word that the
                      6:  * user enters on the command line, and prints every index entry in which
                      7:  * that token appears.
                      8:  *
                      9:  * Usage:  apropos token
                     10:  *
                     11:  * first draft, fwb, 3/17/1993 (aye and begorah!)
                     12:  */
                     13: #ifdef TEST
                     14: #      define INDEXFILE "/v/fwb/doc/coherent/man.index"
                     15: #else
                     16: #      define INDEXFILE "/usr/man/man.index"
                     17: #endif
                     18: 
                     19: #define BUFFERSIZE 200
                     20: 
                     21: #include <ctype.h>
                     22: #include <stdio.h>
                     23: #include <string.h>
                     24: #include <stdlib.h>
                     25: 
                     26: main(argc, argv)
                     27: int argc; char **argv;
                     28: {
                     29:        char inb[BUFFERSIZE], testb[BUFFERSIZE], *inbp;
                     30:        int i, j, lowerflag;
                     31:        FILE *fp;
                     32: 
                     33:        if (argc < 2) {
                     34:                fprintf(stderr, "Usage: apropos word\n");
                     35:                exit(EXIT_FAILURE);
                     36:        }
                     37: 
                     38:        if ((fp = fopen(INDEXFILE, "r")) == NULL) {
                     39:                fprintf(stderr, "apropos: Cannot open index file %s\n",
                     40:                        INDEXFILE);
                     41:                exit(EXIT_FAILURE);
                     42:        }
                     43: 
                     44:        /* if first character of user's word is upper-cased, then assume
                     45:         * the user wants an exact match, and therefore do not
                     46:         * shift the description into lower case.
                     47:         */
                     48: 
                     49:        if (isupper(argv[1][0]))
                     50:                lowerflag = 0;
                     51:        else
                     52:                lowerflag = 1;
                     53: 
                     54:        for (i = 1; fgets(inb, BUFFERSIZE-1, fp) != NULL; i++) {
                     55:                if ((inbp = strchr(inb, '\t')) == NULL) {
                     56:                        /* blank lines are OK */
                     57:                        if (*inb != '\n' && *inb != '\0') {
                     58:                                fprintf(stderr,
                     59:                                        "apropos: badly formed line %d in %s\n",
                     60:                                        i, INDEXFILE);
                     61:                                exit(EXIT_FAILURE);
                     62:                        } else
                     63:                                continue;
                     64:                }
                     65:                inbp++;
                     66: 
                     67:                strcpy (testb, inbp);
                     68: 
                     69:                if (lowerflag)
                     70:                        for (j = 0; j < strlen (testb); j++)
                     71:                                if (isupper(testb[j]))
                     72:                                        testb[j] = tolower(testb[j]);
                     73: 
                     74:                if (strstr(testb, argv[1]) != NULL)
                     75:                        printf("%s", inbp);
                     76:        }
                     77:        fclose(fp);
                     78:        exit(EXIT_SUCCESS);
                     79: }
                     80: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.