#include <stdlib.h>
#include <string.h>
-#include <SDL.h>
-#include <SDL_byteorder.h>
+#include <SDL_endian.h>
/*---------------------------------------------------------------------------*/
void put_float(FILE *fout, const float *f)
{
- unsigned char *p = (unsigned char *) f;
+ const unsigned char *p = (const unsigned char *) f;
#if SDL_BYTEORDER == SDL_BIG_ENDIAN
fputc((int) p[3], fout);
void put_index(FILE *fout, const int *i)
{
- unsigned char *p = (unsigned char *) i;
+ const unsigned char *p = (const unsigned char *) i;
#if SDL_BYTEORDER == SDL_BIG_ENDIAN
fputc((int) p[3], fout);
#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;
put_float(fout, v + i);
}
-void put_string(FILE *fp, char *str)
-{
- int len = strlen(str) + 1;
- fwrite(str, 1, len, fp);
-}
-
-
/*---------------------------------------------------------------------------*/
void get_float(FILE *fin, float *f)
#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;
get_float(fin, v + i);
}
-void get_string(FILE *fp, char *str, int len)
-/* len includes room for '\0'. If len is too small, the string is truncated. */
+/*---------------------------------------------------------------------------*/
+
+void put_string(FILE *fout, const char *s)
{
- char b;
-
- while (1)
- {
- fread(&b, 1, 1, fp);
- if (len > 0)
- {
- *(str++) = (len > 1 ? b : '\0');
- len--;
- }
- if (b == '\0')
- return;
- }
+ fputs(s, fout);
+ fputc('\0', fout);
}
+void get_string(FILE *fin, char *s, int max)
+{
+ do
+ *s = (char) fgetc(fin);
+ while (*s++ != '\0' && max-- > 0);
+
+ if(*(s - 1) != '\0')
+ *(s - 1) = '\0';
+}
/*---------------------------------------------------------------------------*/