Changeset 2570 for zzuf/trunk/src


Ignore:
Timestamp:
Jul 20, 2008, 3:22:46 AM (12 years ago)
Author:
Sam Hocevar
Message:
  • lib-stream.c: the BSDs' refill function is slightly different from the HP-UX and Solaris ones; fixing our implementation accordinly.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • zzuf/trunk/src/lib-stream.c

    r2569 r2570  
    756756#endif
    757757
    758 #define REFILL(fn) \
     758#define REFILL(fn, fn_advances) \
    759759    do \
    760760    { \
     
    771771        if(ret != EOF) \
    772772        { \
    773             if(newpos != -1) \
    774                 _zz_setpos(fd, newpos - fp->FILE_CNT - 1); \
    775             _zz_fuzz(fd, fp->FILE_PTR - 1, fp->FILE_CNT + 1); \
    776             ret = (uint8_t)fp->FILE_PTR[-1]; \
    777             _zz_addpos(fd, fp->FILE_CNT + 1); \
     773            if(fn_advances) \
     774            { \
     775                if(newpos != -1) \
     776                    _zz_setpos(fd, newpos - fp->FILE_CNT - 1); \
     777                uint8_t ch = (uint8_t)(unsigned int)ret; \
     778                _zz_fuzz(fd, &ch, 1); \
     779                ret = ch; \
     780                _zz_addpos(fd, 1); \
     781            } \
     782            else \
     783                ret = ((uint8_t *)fp->FILE_PTR)[0]; \
     784            _zz_fuzz(fd, fp->FILE_PTR, fp->FILE_CNT); \
     785            _zz_addpos(fd, fp->FILE_CNT); \
    778786        } \
    779787        if(!_zz_islocked(fd)) \
     
    785793int NEW(__srefill)(FILE *fp)
    786794{
    787     int ret; REFILL(__srefill); return ret;
     795    int ret; REFILL(__srefill, 0); return ret;
    788796}
    789797#endif
     
    792800int NEW(__srget)(FILE *fp)
    793801{
    794     int ret; REFILL(__srget); return ret;
     802    int ret; REFILL(__srget, 1); return ret;
    795803}
    796804#endif
     
    799807int NEW(__filbuf)(FILE *fp)
    800808{
    801     int ret; REFILL(__filbuf); return ret;
    802 }
    803 #endif
    804 
     809    int ret; REFILL(__filbuf, 1); return ret;
     810}
     811#endif
     812
Note: See TracChangeset for help on using the changeset viewer.