Correct logic of BSP back/front tests
[neverball] / share / binary.c
index 9cb383f..1ada5ed 100644 (file)
@@ -54,6 +54,19 @@ void put_index(FILE *fout, const int *i)
 #endif
 }
 
+void put_short(FILE *fout, const short *s)
+{
+    const unsigned char *p = (const unsigned char *) s;
+
+#if SDL_BYTEORDER == SDL_BIG_ENDIAN
+    fputc((int) p[1], fout);
+    fputc((int) p[0], fout);
+#else
+    fputc((int) p[0], fout);
+    fputc((int) p[1], fout);
+#endif
+}
+
 void put_array(FILE *fout, const float *v, size_t n)
 {
     size_t i;
@@ -98,6 +111,19 @@ void get_index(FILE *fin, int *i)
 #endif
 }
 
+void get_short(FILE *fin, short *s)
+{
+    unsigned char *p = (unsigned char *) s;
+
+#if SDL_BYTEORDER == SDL_BIG_ENDIAN
+    p[1] = (unsigned char) fgetc(fin);
+    p[0] = (unsigned char) fgetc(fin);
+#else
+    p[0] = (unsigned char) fgetc(fin);
+    p[1] = (unsigned char) fgetc(fin);
+#endif
+}
+
 void get_array(FILE *fin, float *v, size_t n)
 {
     size_t i;