_IO_file_doallocate (fp);
if (fp->_IO_buf_base == NULL) _IO_file_doallocate (fp);
_IO_wfile_doallocate (fp)     _IO_FILE *fp;{  _IO_size_t size;  int couldbetty;  wchar_t *p;  struct _G_stat64 st;  /* Allocate room for the external buffer.  */  _IO_file_doallocate (fp);  if (fp->_fileno < 0 || _IO_SYSSTAT (fp, &st) < 0)    {      couldbetty = 0;      size = _IO_BUFSIZ * sizeof (wchar_t);#if 0      /* do not try to optimise fseek() */      fp->_flags |= __SNPT;#endif    }  else    {      couldbetty = S_ISCHR (st.st_mode);#if _IO_HAVE_ST_BLKSIZE      size = ((st.st_blksize <= 0 ? _IO_BUFSIZ : st.st_blksize)	      * sizeof (wchar_t));#else      size = _IO_BUFSIZ * sizeof (wchar_t);#endif    }  ALLOC_WBUF (p, size, EOF);  _IO_wsetb (fp, p, p + size, 1);  if (couldbetty && isatty (fp->_fileno))    fp->_flags |= _IO_LINE_BUF;  return 1;}