diff options
Diffstat (limited to 'contrib/libg++/libio/filebuf.cc')
| -rw-r--r-- | contrib/libg++/libio/filebuf.cc | 206 | 
1 files changed, 0 insertions, 206 deletions
| diff --git a/contrib/libg++/libio/filebuf.cc b/contrib/libg++/libio/filebuf.cc deleted file mode 100644 index 1e2682fbce957..0000000000000 --- a/contrib/libg++/libio/filebuf.cc +++ /dev/null @@ -1,206 +0,0 @@ -/* This is part of libio/iostream, providing -*- C++ -*- input/output. -Copyright (C) 1993, 1995 Free Software Foundation - -This file is part of the GNU IO Library.  This library is free -software; you can redistribute it and/or modify it under the -terms of the GNU General Public License as published by the -Free Software Foundation; either version 2, or (at your option) -any later version. - -This library is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this library; see the file COPYING.  If not, write to the Free -Software Foundation, 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA. - -As a special exception, if you link this library with files -compiled with a GNU compiler to produce an executable, this does not cause -the resulting executable to be covered by the GNU General Public License. -This exception does not however invalidate any other reasons why -the executable file might be covered by the GNU General Public License. - -Written by Per Bothner (bothner@cygnus.com). */ - -#include "iostreamP.h" -#include <sys/types.h> -#include <sys/stat.h> -#include <fcntl.h> -#include <errno.h> -#include "builtinbuf.h" - -void filebuf::init() -{ -  _IO_file_init(this); -} - -filebuf::filebuf() -{ -  _IO_file_init(this); -} - -#if !_IO_UNIFIED_JUMPTABLES -/* This is like "new filebuf()", but it uses the _IO_file_jump jumptable, -   for eficiency. */ - -filebuf* filebuf::__new() -{ -  filebuf *fb = new filebuf; -  _IO_JUMPS(fb) = &_IO_file_jumps; -  fb->_vtable() = builtinbuf_vtable; -  return fb; -} -#endif - -filebuf::filebuf(int fd) -{ -  _IO_file_init(this); -  _IO_file_attach(this, fd); -} - -filebuf::filebuf(int fd, char* p, int len) -{ -  _IO_file_init(this); -  _IO_file_attach(this, fd); -  setbuf(p, len); -} - -filebuf::~filebuf() -{ -  if (_IO_file_is_open(this)) -    { -      _IO_do_flush (this); -      if (!(xflags() & _IO_DELETE_DONT_CLOSE)) -	_IO_SYSCLOSE (this); -    } -} - -filebuf* filebuf::open(const char *filename, ios::openmode mode, int prot) -{ -  if (_IO_file_is_open (this)) -    return NULL; -  int posix_mode; -  int read_write; -  if (mode & ios::app) -    mode |= ios::out; -  if ((mode & (ios::in|ios::out)) == (ios::in|ios::out)) { -    posix_mode = O_RDWR; -    read_write = 0; -  } -  else if (mode & ios::out) -    posix_mode = O_WRONLY, read_write = _IO_NO_READS; -  else if (mode & (int)ios::in) -    posix_mode = O_RDONLY, read_write = _IO_NO_WRITES; -  else -    posix_mode = 0, read_write = _IO_NO_READS+_IO_NO_WRITES; -  if (mode & ios::binary) -    { -      mode &= ~ios::binary; -#ifdef O_BINARY -      /* This is a (mis-)feature of DOS/Windows C libraries. */ -      posix_mode |= O_BINARY; -#endif -    } -  if ((mode & (int)ios::trunc) || mode == (int)ios::out) -    posix_mode |= O_TRUNC; -  if (mode & ios::app) -    posix_mode |= O_APPEND, read_write |= _IO_IS_APPENDING; -  if (!(mode & (int)ios::nocreate) && mode != ios::in) -    posix_mode |= O_CREAT; -  if (mode & (int)ios::noreplace) -    posix_mode |= O_EXCL; -  int fd = ::open(filename, posix_mode, prot); -  if (fd < 0) -    return NULL; -  _fileno = fd; -  xsetflags(read_write, _IO_NO_READS+_IO_NO_WRITES+_IO_IS_APPENDING); -  if (mode & (ios::ate|ios::app)) { -    if (pubseekoff(0, ios::end) == EOF) -      return NULL; -  } -  _IO_link_in(this); -  return this; -} - -filebuf* filebuf::open(const char *filename, const char *mode) -{ -  return (filebuf*)_IO_file_fopen(this, filename, mode); -} - -filebuf* filebuf::attach(int fd) -{ -  return (filebuf*)_IO_file_attach(this, fd); -} - -streambuf* filebuf::setbuf(char* p, int len) -{ -  return (streambuf*)_IO_file_setbuf (this, p, len); -} - -int filebuf::doallocate() { return _IO_file_doallocate(this); } - -int filebuf::overflow(int c) -{ -  return _IO_file_overflow(this, c); -} - -int filebuf::underflow() -{ -  return _IO_file_underflow(this); -} - -int filebuf::sync() -{ -  return _IO_file_sync(this); -} - -streampos filebuf::seekoff(streamoff offset, _seek_dir dir, int mode) -{ -  return _IO_file_seekoff (this, offset, dir, mode); -} - -filebuf* filebuf::close() -{ -  return (_IO_file_close_it(this) ? (filebuf*)NULL : this); -} - -streamsize filebuf::sys_read(char* buf, streamsize size) -{ -  return _IO_file_read(this, buf, size); -} - -streampos filebuf::sys_seek(streamoff offset, _seek_dir dir) -{ -  return _IO_file_seek(this, offset, dir); -} - -streamsize filebuf::sys_write(const char *buf, streamsize n) -{ -  return _IO_file_write (this, buf, n); -} - -int filebuf::sys_stat(void* st) -{ -  return _IO_file_stat (this, st); -} - -int filebuf::sys_close() -{ -  return _IO_file_close (this); -} - -streamsize filebuf::xsputn(const char *s, streamsize n) -{ -  return _IO_file_xsputn(this, s, n); -} - -streamsize filebuf::xsgetn(char *s, streamsize n) -{ -    // FIXME: OPTIMIZE THIS (specifically, when unbuffered()). -    return streambuf::xsgetn(s, n); -} - -// Non-ANSI AT&T-ism:  Default open protection. -const int filebuf::openprot = 0644; | 
