わたなべです。

nobu.nakada / nifty.ne.jp <nobu.nakada / nifty.ne.jp> writes:

:FILE_READPTRとFILE_READENDに追加しといたので、uClibc 0.9.9では
:うまいこと引っかかるかも知れません。

bufendだと思ってたんだけどbufreadが正解でした。
0.9.9はこれでok。
#0.9.9はlarge file対応が甘かったりしますが。
#あ、0.9.10もまだ甘いなあ。

:__UCLIBC__のところで
:READ_DATA_PENDING()をなんとかすれば、0.9.10でも通ることは通るか
:も。

0.9.10のFILE構造体を調べてみると0.9.9とは全く違うものでした。
メンバ名も違うし、後述の感じでifdefしてるので、offsetすら決
めうちってわけにもいかないし、完全にアウトです。

ところで、BeOSやVMSではどうもeofかどうかで判断してるみたいで
すが、これでいいなら、最悪#elseのところは
#else
#  define READ_DATA_PENDING(fp) !feof(fp)
#endif
で、いい気がする。

-- 
わたなべひろふみ

struct __stdio_file_struct { unsigned short modeflags; /* There could be a hole here, but modeflags is used most.*/ #ifdef __STDIO_WIDE unsigned char ungot_width[2]; __wchar_t ungot[2]; #else /* __STDIO_WIDE */ unsigned char ungot[2]; #endif /* __STDIO_WIDE */ int filedes; #if defined(__STDIO_BUFFERS) || defined(__STDIO_GLIBC_CUSTOM_STREAMS) struct __stdio_file_struct *nextopen; #endif /* defined(__STDIO_BUFFERS) || defined(__STDIO_GLIBC_CUSTOM_STREAMS) */ #ifdef __STDIO_BUFFERS unsigned char *bufstart; /* pointer to buffer */ unsigned char *bufend; /* pointer to 1 past end of buffer */ unsigned char *bufwpos; /* pointer to 1 past last buffered */ unsigned char *bufrpos; /* pointer to next readable buffered */