

#include <stdio.h>
#include <time.h>

#define COOKIEFILE      "fortune"


static int n_fortunes;

int init_fortunes() {

        FILE *f;
        int c, lc;

        n_fortunes = 0;

        f = fopen(COOKIEFILE, "rb");

        c = fgetc(f);
        lc = '\n';

        do {
                c = fgetc(f);
                if (c == '%' && (lc == '\n' || lc == '\r'))
                        n_fortunes++;
                lc = c;
        } while (c >= 0);

        fclose(f);

}

void print_fortune(int r) {

        FILE *f;
        int c, m, lc;

        c = 0;
        lc = '\n';

        f = fopen(COOKIEFILE, "rb");

        while (c != r) {
                m = fgetc(f);
                if (m == '%' && (lc == '\n' || lc == '\r'))
                        c++;
                lc = m;
        }

        m = fgetc(f);

        do {
                lc = m;

                fputc(m, stdout);

                m = fgetc(f);
        } while (m != '%' || !(lc == '\n' || lc == '\r'));


}


int main(int argc, char *argv[]) {

        int r;

        init_fortunes();

        if (argc > 1) {
           /* print status */
           printf("Number of fortunes in cookie file: %d\n", n_fortunes);
           return 1;
        }

        srandom(time(NULL));

        r = random() % n_fortunes;
        r = random() % n_fortunes;
        r = random() % n_fortunes;

        print_fortune(r);

        return 0;

}

