home · contact · privacy
Made unnecessarily extern functions in draw_wins module static.
[plomrogue] / src / readwrite.c
index ed5a3a3180f990ec8af3c001a44c85c557a3f80e..40fc63f0a5feb5c8f210e3c06a0060400cb80ab2 100644 (file)
@@ -1,40 +1,45 @@
-#include <stdio.h>
-#include <limits.h>
-#include <stdint.h>
-
-uint16_t read_uint16_bigendian(FILE * file) {
-// Read uint16 from file in big-endian order.
-  const uint16_t nchar = UCHAR_MAX + 1;
-  unsigned char a = fgetc(file);
-  unsigned char b = fgetc(file);
-  return (a * nchar) + b; }
-
-void write_uint16_bigendian(uint16_t x, FILE * file) {
-// Write uint16 to file in beg-endian order.
-  const uint16_t nchar = UCHAR_MAX + 1;
-  unsigned char a = x / nchar;
-  unsigned char b = x % nchar;
-  fputc(a, file);
-  fputc(b, file); }
-
-uint32_t read_uint32_bigendian(FILE * file) {
-// Read uint32 from file in big-endian order.
-  const uint16_t nchar = UCHAR_MAX + 1;
-  unsigned char a = fgetc(file);
-  unsigned char b = fgetc(file);
-  unsigned char c = fgetc(file);
-  unsigned char d = fgetc(file);
-  return (a * nchar * nchar * nchar) + (b * nchar * nchar) + (c * nchar) + d; }
-
-void write_uint32_bigendian(uint32_t x, FILE * file) {
-// Write uint32 to file in beg-endian order.
-  const uint16_t nchar = UCHAR_MAX + 1;
-  unsigned char a = x / (nchar * nchar * nchar);
-  unsigned char b = (x - (a * nchar * nchar * nchar)) / (nchar * nchar);
-  unsigned char c = (x - ((a * nchar * nchar * nchar) + (b * nchar * nchar))) / nchar;
-  unsigned char d = x % nchar;
-  fputc(a, file);
-  fputc(b, file);
-  fputc(c, file);
-  fputc(d, file); }
+/* readwrite.c */
 
+#include "readwrite.h"
+#include <stdio.h> /* for FILE typedef*/
+#include <stdint.h> /* for uint16_t, uint32_t */
+
+
+
+extern uint16_t read_uint16_bigendian(FILE * file)
+{
+    uint16_t x;
+    x =     (uint16_t) fgetc(file) << 8;
+    x = x + (uint16_t) fgetc(file);
+    return x;
+}
+
+
+
+extern uint32_t read_uint32_bigendian(FILE * file)
+{
+    uint32_t x;
+    x =       (uint32_t) fgetc(file) << 24;
+    x = x + ( (uint32_t) fgetc(file) << 16 );
+    x = x + ( (uint32_t) fgetc(file) <<  8 );
+    x = x +   (uint32_t) fgetc(file);
+    return x;
+}
+
+
+
+extern void write_uint16_bigendian(uint16_t x, FILE * file)
+{
+    fputc( x >> 8,   file );
+    fputc( x & 0xFF, file );
+}
+
+
+
+extern void write_uint32_bigendian(uint32_t x, FILE * file)
+{
+    fputc(   x >> 24,          file);
+    fputc( ( x >> 16 ) & 0xFF, file);
+    fputc( ( x >>  8 ) & 0xFF, file);
+    fputc(   x         & 0xFF, file);
+}