* Read n fortunes from fortune file file, and put it into the
* string array fortune
*
- * $Id: FortuneParse.c,v 1.1 2002/08/18 10:34:10 piccardi Exp $
- *
****************************************************************/
/*
* Include needed headers
*/
-#include <sys/types.h> /* predefined types */
-#include <sys/stat.h> /* */
-#include <unistd.h> /* include unix standard library */
-#include <stdio.h> /* include standard I/O library */
-#include <stdlib.h> /* standard library */
-#include <string.h> /* ANSI C standard string */
-#include <errno.h> /* error definitions */
-#include <fcntl.h> /* */
+#include <sys/types.h> /* primitive system data types */
+#include <sys/stat.h> /* file characteristics constants and functions */
+#include <unistd.h> /* unix standard library */
+#include <stdio.h> /* standard I/O library */
+#include <stdlib.h> /* C standard library */
+#include <string.h> /* C strings library */
+#include <errno.h> /* error definitions and routines */
+#include <fcntl.h> /* file control functions */
+
+#include "macros.h"
/* Subroutines declaration */
extern void usage(void);
/* Variables definition */
FILE *fortunefile;
char line[80];
- int i;
+ int i, len;
/*
* fortune file scanning, read string in memory
*/
fortunefile = fopen(file,"r");
if (fortunefile == NULL) { /* on open error exit */
- perror("Opening fortune file");
+ printf("On file %s\n", file);
+ perror("Cannot open file");
exit(-1);
}
i = 0;
perror("Read error");
exit(-1);
}
- if (line[0]=='\n') {
+ debug("i=%d, line=%s", i, line);
+ if (line[0]=='%') {
if (fortune[i]!=NULL) i++;
continue;
}
+ len = strlen(line) + 1;
if (fortune[i]==NULL) {
- fortune[i] = (char *) malloc(strlen(line)+1);
- strncpy(fortune[i], line, strlen(line)+1);
+ fortune[i] = malloc(len);
+ strncpy(fortune[i], line, len);
} else {
- fortune[i] = (char *) realloc(fortune[i], strlen(line)+1);
- strncat(fortune[i], line, strlen(line)+1);
+ fortune[i] = realloc(fortune[i], strlen(fortune[i])+len+1);
+ strncat(fortune[i], line, len);
}
} while (i<n);
return i;