if (f->_IO_buf_base && !(f->_flags & _IO_USER_BUF)) FREE_BUF (f->_IO_buf_base, _IO_blen (f)); f->_IO_buf_base = b; f->_IO_buf_end = eb; if (a) f->_flags &= ~_IO_USER_BUF; else f->_flags |= _IO_USER_BUF;
libc_hidden_def (__underflow)int__uflow (fp)     _IO_FILE *fp;{#if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T  if (fp->_vtable_offset == 0 && _IO_fwide (fp, -1) != -1)    return EOF;#endif  if (fp->_mode == 0)    _IO_fwide (fp, -11);  if (_IO_in_put_mode (fp))    if (INTUSE(_IO_switch_to_get_mode) (fp) == EOF)      return EOF;  if (fp->_IO_read_ptr < fp->_IO_read_end)    return *(unsigned char *) fp->_IO_read_ptr++;  if (_IO_in_backup (fp))    {      _IO_switch_to_main_get_area (fp);      if (fp->_IO_read_ptr < fp->_IO_read_end)	return *(unsigned char *) fp->_IO_read_ptr++;    }  if (_IO_have_markers (fp))    {      if (save_for_backup (fp, fp->_IO_read_end))	return EOF;    }  else if (_IO_have_backup (fp))    INTUSE(_IO_free_backup_area) (fp);  return _IO_UFLOW (fp);}