X-Git-Url: http://vcs.maemo.org/git/?a=blobdiff_plain;f=share%2Fbinary.c;h=1ada5ed41891e433e2df6cea86d2f6a8b8e247eb;hb=1745b6a90dfd9e626e5c40d20c6aa595ec41d888;hp=46813567f4995226b2ec4eea7c6f34228811f482;hpb=232112ec49bfedccb058e6d7bfecb0993f372d8d;p=neverball diff --git a/share/binary.c b/share/binary.c index 4681356..1ada5ed 100644 --- a/share/binary.c +++ b/share/binary.c @@ -16,8 +16,7 @@ #include #include -#include -#include +#include /*---------------------------------------------------------------------------*/ @@ -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; @@ -99,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; @@ -108,3 +133,21 @@ void get_array(FILE *fin, float *v, size_t n) } /*---------------------------------------------------------------------------*/ + +void put_string(FILE *fout, const char *s) +{ + 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'; +} + +/*---------------------------------------------------------------------------*/