X-Git-Url: http://vcs.maemo.org/git/?a=blobdiff_plain;f=share%2Fbinary.c;h=1ada5ed41891e433e2df6cea86d2f6a8b8e247eb;hb=1745b6a90dfd9e626e5c40d20c6aa595ec41d888;hp=c66672ed4634348896d9ed663e0c6b6d93da6f62;hpb=2811a447a9a228ab3fd6462f2a35068d044a6371;p=neverball diff --git a/share/binary.c b/share/binary.c index c66672e..1ada5ed 100644 --- a/share/binary.c +++ b/share/binary.c @@ -16,14 +16,13 @@ #include #include -#include -#include +#include /*---------------------------------------------------------------------------*/ 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); @@ -40,7 +39,7 @@ void put_float(FILE *fout, const float *f) 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); @@ -55,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; @@ -63,13 +75,6 @@ void put_array(FILE *fout, const float *v, size_t n) 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) @@ -106,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; @@ -114,23 +132,22 @@ void get_array(FILE *fin, float *v, size_t n) 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'; +} /*---------------------------------------------------------------------------*/