#include int fgetpos(FILE *fp, fpos_t *pos) { if(fp->buf && fp->bufdir == __FILE_BUF_WRITE) { *pos = fp->fdpos + fp->bufpos; } else if(fp->buf && fp->bufdir == __FILE_BUF_READ) { *pos = fp->fdpos - fp->bufread + fp->bufpos; } else { *pos = fp->fdpos; } return 0; }