home · contact · privacy
Removed unneeded AND operation.
[plomrogue] / src / readwrite.c
index 9f089ea34da821394313b4b81835f5e10ed158c0..19fca5d007d79aa33f85e5f0883cdb24b8e796c4 100644 (file)
@@ -1,37 +1,37 @@
+/*  readwrite.c */
+
+#include "readwrite.h"
 #include <stdio.h>
-#include <limits.h>
 #include <stdint.h>
 
-static const uint16_t uchar_s = UCHAR_MAX + 1;
-
-extern uint16_t read_uint16_bigendian(FILE * file) {
-// Read uint16 from file in big-endian order.
-  unsigned char a = fgetc(file);
-  unsigned char b = fgetc(file);
-  return (a * uchar_s) + b; }
+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 void write_uint16_bigendian(uint16_t x, FILE * file) {
-// Write uint16 to file in beg-endian order.
-  unsigned char a = x / uchar_s;
-  unsigned char b = x % uchar_s;
-  fputc(a, file);
-  fputc(b, file); }
+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 uint32_t read_uint32_bigendian(FILE * file) {
-// Read uint32 from file in big-endian order.
-  unsigned char a = fgetc(file);
-  unsigned char b = fgetc(file);
-  unsigned char c = fgetc(file);
-  unsigned char d = fgetc(file);
-  return (a * uchar_s * uchar_s * uchar_s) + (b * uchar_s * uchar_s) + (c * uchar_s) + d; }
+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) {
-// Write uint32 to file in beg-endian order.
-  unsigned char a = x / (uchar_s * uchar_s * uchar_s);
-  unsigned char b = (x - (a * uchar_s * uchar_s * uchar_s)) / (uchar_s * uchar_s);
-  unsigned char c = (x - ((a * uchar_s * uchar_s * uchar_s) + (b * uchar_s * uchar_s))) / uchar_s;
-  unsigned char d = x % uchar_s;
-  fputc(a, file);
-  fputc(b, file);
-  fputc(c, file);
-  fputc(d, 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);
+}