home *** CD-ROM | disk | FTP | other *** search
- /*
- * kfortune: a very simple "fortune" clone
- *
- * Copyright (c) 1989 by Kenji Rikitake.
- * All Rights Reserved.
- * 1st version: May 20, 1989
- *
- * The author allows this program to be used for any purposes.
- */
- /*
- * kfhash: hashing program for kfortune.tp
- */
-
- #include <stdio.h>
-
- #define DELIM 0x0c
-
- void usage()
- {
- fprintf(stderr,"Usage: kfscan <infile> <outfile>");
- exit(1);
- }
-
- int main(int argc, char **argv)
- {
- FILE *inp, *outp;
- int c;
- unsigned int num;
- unsigned long pos;
-
- if (argc != 3) usage();
-
- if ((inp = fopen(argv[1], "rb")) == NULL) {
- fprintf(stderr, "input file open error: %s\n", argv[1]);
- exit(2);
- }
-
- if ((outp = fopen(argv[2], "wb")) == NULL) {
- fprintf(stderr, "output file open error: %s\n", argv[1]);
- exit(3);
- }
-
-
- rewind(inp);
- rewind(outp);
- num = 0;
- if (putw(num, outp) == EOF) {
- fprintf(stderr, "write error on beginning\n");
- exit(4);
- }
- if (putw(0x0000, outp) == EOF) {
- fprintf(stderr, "write error on beginning\n");
- exit(4);
- }
- if (putw(0x0000, outp) == EOF) {
- fprintf(stderr, "write error on beginning\n");
- exit(4);
- }
-
- while ((c = getc(inp)) != EOF) {
- if (c == DELIM) {
- num++;
- pos = ftell(inp);
- if (putw((pos & 0xffff), outp) == EOF) {
- fprintf(stderr, "write error during processing\n");
- exit(5);
- }
- if (putw(((pos & 0xffff0000) >> 16), outp) == EOF) {
- fprintf(stderr, "write error during processing\n");
- exit(5);
- }
- }
- }
-
- rewind(outp);
- num++;
- if (putw(num, outp) == EOF) {
- fprintf(stderr, "write error on ending\n");
- exit(6);
- }
-
- printf("total strings: %d\n", num);
- fcloseall();
- }
-