DataMuseum.dk

Presents historical artifacts from the history of:

DKUUG/EUUG Conference tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about DKUUG/EUUG Conference tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download
Index: ┃ T w

⟦342310131⟧ TextFile

    Length: 2159 (0x86f)
    Types: TextFile
    Names: »whatis.c«

Derivation

└─⟦87ddcff64⟧ Bits:30001253 CPHDIST85 Tape, 1985 Autumn Conference Copenhagen
    └─ ⟦this⟧ »cph85dist/rman/daemon/whatis.c« 

TextFile

#ifndef lint
static char RCSid[] = "$Header: whatis.c,v 1.4 85/07/24 10:39:13 broome Exp $";
#endif

/*
 * $Log:    whatis.c,v $
 * Revision 1.4  85/07/24  10:39:13  broome
 * 
 * 
 * Revision 1.3  85/07/06  16:56:13  broome
 * 
 * Revision 1.2  85/07/03  17:34:41  broome
 */

#include "response.h"
#include <stdio.h>

#define LIST    "/usr/lib/whatis"
#define DELIMS  " \t\n\r,\"\'-()"      /* word delimiters */

int key;

/*ARGSUSED*/
whatis (argc, argv)
int     argc;
char    **argv;
{
    extern   int debug;
    register FILE *fp;
    register char *b;
    char     buf[512];
    char     *nextword();
    char     word[80];
    int      found = 0;

    argv++;
    if ((fp = fopen (LIST, "r")) == NULL) {
        printf ("%d cannot open %s\r\n", ERR_NOFILE, LIST);
        (void) fflush (stdout);
        return;
    }

    while (fgets (buf, 512, fp)) {
        key = 0;
        b = buf;
        while (b = nextword (b, word)) {
            if (debug)
                printf ("|%s|", word);
            if (strcmp (word, *argv) == 0) {  /* word matches arg */
                if (found == 0)
                    printf ("%d information for \"%s\" on the way.\r\n",
                                OK_COMING, *argv);
                printf ("%s", buf);
                found++;
                break;
            }
            if (key == 1)               /* went through all the keywords */
                break;
        }
    }
    if (!found) 
        printf ("%d %s: not found.\n", ERR_NOENT, *argv);
    else
        puts (".\r");
    (void) fflush (stdout);
}

/*
 *  Get the next word from the line and put it into `word', return
 *  the advanced line pointer (NULL if at end of the line).
 */

char *nextword (buf, word)
char *buf, *word;
{
    register char *i = word;

    if (!buf || !*buf)
        return ((char *) 0);

    while (*buf && any (*buf, DELIMS) == 0)      /* get this word */
        *i++ = *buf++;
    *i = '\0';

    while (*buf && any (*buf, DELIMS)) {    /* skip over to next word */
        if (*buf == '(')   /*)*/              /* at end of keyword list */
            key = 1;
        buf++;
    }

    return (buf);
}