fp->_offset = _IO_pos_BAD;
if (retval != EOF) fp->_offset = _IO_pos_BAD;
_IO_file_sync (fp)     _IO_FILE *fp;{  _IO_size_t delta;  /*    char* ptr = cur_ptr(); */  if (fp->_IO_write_ptr > fp->_IO_write_base)    if (_IO_do_flush(fp)) return EOF;  delta = fp->_IO_read_ptr - fp->_IO_read_end;  if (delta != 0)    {#ifdef TODO      if (_IO_in_backup (fp))	delta -= eGptr () - Gbase ();#endif      _IO_off_t new_pos = _IO_SYSSEEK (fp, delta, 1);      if (new_pos != (_IO_off_t) EOF)	fp->_IO_read_end = fp->_IO_read_ptr;#ifdef ESPIPE      else if (errno == ESPIPE)	; /* Ignore error from unseekable devices. */#endif      else	return EOF;    }  fp->_offset = _IO_pos_BAD;  /* FIXME: Cleanup - can this be shared? */  /*    setg(base(), ptr, ptr); */  return 0;}