X-Git-Url: https://plomlompom.com/repos/foo.html?a=blobdiff_plain;f=src%2Freadwrite.c;h=40fc63f0a5feb5c8f210e3c06a0060400cb80ab2;hb=f2a7bc28be634fde4dfe4bde4c83395cab9efa91;hp=fd520685a935f978584851feaaf69a51878de802;hpb=f743c2cc4451192d645e726654a48bd58a636cef;p=plomrogue
diff --git a/src/readwrite.c b/src/readwrite.c
index fd52068..40fc63f 100644
--- a/src/readwrite.c
+++ b/src/readwrite.c
@@ -1,36 +1,45 @@
-#include
-#include
-#include
-#define UCHARSIZE (UCHAR_MAX + 1)
-
-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 * UCHARSIZE) + b; }
-
-void write_uint16_bigendian(uint16_t x, FILE * file) {
-// Write uint16 to file in beg-endian order.
- unsigned char a = x / UCHARSIZE;
- unsigned char b = x % UCHARSIZE;
- fputc(a, file);
- fputc(b, file); }
-
-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 * UCHARSIZE * UCHARSIZE * UCHARSIZE) + (b * UCHARSIZE * UCHARSIZE) + (c * UCHARSIZE) + d; }
-
-void write_uint32_bigendian(uint32_t x, FILE * file) {
-// Write uint32 to file in beg-endian order.
- unsigned char a = x / (UCHARSIZE * UCHARSIZE * UCHARSIZE);
- unsigned char b = (x - (a * UCHARSIZE * UCHARSIZE * UCHARSIZE)) / (UCHARSIZE * UCHARSIZE);
- unsigned char c = (x - ((a * UCHARSIZE * UCHARSIZE * UCHARSIZE) + (b * UCHARSIZE * UCHARSIZE))) / UCHARSIZE;
- unsigned char d = x % UCHARSIZE;
- fputc(a, file);
- fputc(b, file);
- fputc(c, file);
- fputc(d, file); }
+/* readwrite.c */
+
+#include "readwrite.h"
+#include /* for FILE typedef*/
+#include /* 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);
+}