X-Git-Url: https://plomlompom.com/repos/foo.html?a=blobdiff_plain;f=src%2Freadwrite.c;h=96505adf4387cc52f4a83241f03098869b0a67d9;hb=0e6c855b67e0cd3def7196396f3d1f45ff85b692;hp=5b318524619d53180055f8aafbc489f9292827e5;hpb=0568c1c0f6735509f2a1afea31ecb5dc28f26bf4;p=plomrogue
diff --git a/src/readwrite.c b/src/readwrite.c
index 5b31852..96505ad 100644
--- a/src/readwrite.c
+++ b/src/readwrite.c
@@ -1,7 +1,7 @@
/* readwrite.c */
#include "readwrite.h"
-#include /* for FILE typedef*/
+#include /* for FILE typedef, fgetc(), fputc(), fseek() */
#include /* for uint8_t, uint16_t, uint32_t */
@@ -25,6 +25,54 @@ static uint8_t read_uintX_bigendian(FILE * file, uint32_t * x, uint8_t size);
static uint8_t write_uintX_bigendian(FILE * file, uint32_t x, uint8_t size);
+
+extern uint8_t textfile_sizes(FILE * file, uint16_t * linemax_p,
+ uint16_t * n_lines_p)
+{
+ int c = 0;
+ uint16_t c_count = 0;
+ uint16_t n_lines = 0;
+ uint16_t linemax = 0;
+ while (1)
+ {
+ c = fgetc(file);
+ if (EOF == c)
+ {
+ break;
+ }
+ c_count++;
+ if ('\n' == c)
+ {
+ if (c_count > linemax)
+ {
+ linemax = c_count;
+ }
+ c_count = 0;
+ if (n_lines_p)
+ {
+ n_lines++;
+ }
+ }
+ }
+ if (0 == linemax && 0 < c_count) /* Handle files that consist of only one */
+ { /* line / lack newline chars. */
+ linemax = c_count;
+ }
+
+ if (-1 == fseek(file, 0, SEEK_SET))
+ {
+ return 1;
+ }
+ * linemax_p = linemax;
+ if (n_lines_p)
+ {
+ * n_lines_p = n_lines;
+ }
+ return 0;
+}
+
+
+
static uint8_t read_uintX_bigendian(FILE * file, uint32_t * x, uint8_t size)
{
* x = 0;