fp->_IO_write_end = ((fp->_flags & (_IO_LINE_BUF+_IO_UNBUFFERED))
fp->_IO_write_end = ((fp->_flags & (_IO_UNBUFFERED))
_IO_do_write (fp, data, to_do)     _IO_FILE *fp;     const char *data;     _IO_size_t to_do;{  _IO_size_t count;  if (to_do == 0)    return 0;  if (fp->_flags & _IO_IS_APPENDING)    /* On a system without a proper O_APPEND implementation,       you would need to sys_seek(0, SEEK_END) here, but is       is not needed nor desirable for Unix- or Posix-like systems.       Instead, just indicate that offset (before and after) is       unpredictable. */    fp->_offset = _IO_pos_BAD;  else if (fp->_IO_read_end != fp->_IO_write_base)    {      _IO_fpos64_t new_pos	= _IO_SYSSEEK (fp, fp->_IO_write_base - fp->_IO_read_end, 1);      if (new_pos == _IO_pos_BAD)	return EOF;      fp->_offset = new_pos;    }  count = _IO_SYSWRITE (fp, data, to_do);  if (fp->_cur_column)    fp->_cur_column = _IO_adjust_column (fp->_cur_column - 1, data, to_do) + 1;  _IO_setg (fp, fp->_IO_buf_base, fp->_IO_buf_base, fp->_IO_buf_base);  fp->_IO_write_base = fp->_IO_write_ptr = fp->_IO_buf_base;  fp->_IO_write_end = ((fp->_flags & (_IO_LINE_BUF+_IO_UNBUFFERED))		       ? fp->_IO_buf_base : fp->_IO_buf_end);  return count != to_do ? EOF : 0;}