Annotation of coherent/d/usr/games/almanac.c, revision 1.1

1.1     ! root        1: /*
        !             2:  * Print an almanac of daily events.  Program reads today's date,
        !             3:  * constructs a date string, and then examines the files
        !             4:  * /usr/games/lib/almanac.birth, /usr/games/lib/almanac.death, and
        !             5:  * /usr/games/lib/almanac.event for strings that contain the date string.
        !             6:  * Originally written in the shell.
        !             7:  *
        !             8:  * By fb, 7/12/88.
        !             9:  */
        !            10: 
        !            11: #include <stdio.h>
        !            12: #include <time.h>
        !            13: #include <sys/types.h>
        !            14: 
        !            15: #define EXIT_SUCCESS 0
        !            16: #define EXIT_FAILURE 1
        !            17: 
        !            18: extern time_t time();
        !            19: 
        !            20: char *months[] = {
        !            21:        "Jan", "Feb", "Mar", "Apr", "May", "Jun",
        !            22:        "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
        !            23: };
        !            24:        
        !            25: char *filenames[] = {
        !            26:        "/usr/games/lib/almanac.birth",
        !            27:        "/usr/games/lib/almanac.death",
        !            28:        "/usr/games/lib/almanac.event"
        !            29: };
        !            30: 
        !            31: char *slugs[] = {
        !            32:        "BIRTHS:",
        !            33:        "DEATHS:",
        !            34:        "EVENTS:"
        !            35: };
        !            36: 
        !            37: /* print an error message and exit */
        !            38: fatal(message)
        !            39: char *message;
        !            40: {
        !            41:        fprintf (stderr, "%s\n", message);
        !            42:        exit(EXIT_FAILURE);
        !            43: }
        !            44: 
        !            45: findstring(date, fileptr)
        !            46: char *date;
        !            47: FILE *fileptr;
        !            48: {
        !            49:        char buffer[120];
        !            50:        int length = strlen(date);
        !            51: 
        !            52:        while (fgets(buffer, 120, fileptr) != NULL) {
        !            53:                if (strncmp(buffer, date, length) == 0)
        !            54:                        printf ("%s", buffer+length);
        !            55:                else
        !            56:                        continue;
        !            57:        }
        !            58: }
        !            59: 
        !            60: main(argc, argv)
        !            61: int argc; char *argv[];
        !            62: {
        !            63:        long rawtime;
        !            64:        struct tm *brokentime;
        !            65:        FILE *fileptr;
        !            66:        char buffer[20];
        !            67:        int i;
        !            68: 
        !            69:        if (argc == 3) {
        !            70:                if (strlen(argv[1]) < 3)
        !            71:                        fatal("Usage: almanac [Mon date]");
        !            72:                argv[1][3] = '\0';
        !            73:                sprintf(buffer, "%3s %s ", argv[1], argv[2]);
        !            74:        } else if (argc == 1) {
        !            75:                /* build the time string */
        !            76:                rawtime = time(NULL);
        !            77:                brokentime = localtime(&rawtime);
        !            78:                sprintf(buffer, "%s %d ", months[brokentime->tm_mon],
        !            79:                        brokentime->tm_mday);
        !            80:        } else
        !            81:                fatal("Usage: almanac [Mon date]");
        !            82: 
        !            83:        /* open almanac text files; call string printing routine */
        !            84:        for (i = 0; i < 3; i++) {
        !            85:                if ((fileptr = fopen(filenames[i], "r")) == NULL)
        !            86:                        fatal("Cannot open almanac file.");
        !            87:                
        !            88:                printf("%s\n", slugs[i]);
        !            89: 
        !            90:                findstring(buffer, fileptr);
        !            91: 
        !            92:                fclose (fileptr);
        !            93:        }
        !            94:        exit(EXIT_SUCCESS);
        !            95: }

unix.superglobalmegacorp.com

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