Annotation of coherent/d/usr/games/almanac.c, revision 1.1.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.