mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-21 22:51:06 +08:00
* filebuf.cc (open): Support ios::ate if _G_HAVE_IO_FILE_OPEN.
From-SVN: r31057
This commit is contained in:
parent
74a7ea1231
commit
dec0fa945c
@ -1,3 +1,7 @@
|
||||
1999-12-21 Martin v. Löwis <loewis@informatik.hu-berlin.de>
|
||||
|
||||
* filebuf.cc (open): Support ios::ate if _G_HAVE_IO_FILE_OPEN.
|
||||
|
||||
1999-12-15 Jason Merrill <jason@casey.cygnus.com>
|
||||
|
||||
* filedoalloc.c, floatio.h, iovfprintf.c, iovfscanf.c: Remove
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* This is part of libio/iostream, providing -*- C++ -*- input/output.
|
||||
Copyright (C) 1993, 1995 Free Software Foundation
|
||||
Copyright (C) 1993, 1995, 1999 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
|
||||
@ -112,15 +112,23 @@ filebuf* filebuf::open(const char *filename, ios::openmode mode, int prot)
|
||||
if (mode & (int)ios::noreplace)
|
||||
posix_mode |= O_EXCL;
|
||||
#if _G_HAVE_IO_FILE_OPEN
|
||||
return (filebuf*)_IO_file_open (this, filename, posix_mode, prot,
|
||||
read_write, 0);
|
||||
if (!_IO_file_open (this, filename, posix_mode, prot,
|
||||
read_write, 0))
|
||||
return NULL;
|
||||
if (mode & ios::ate) {
|
||||
if (pubseekoff(0, ios::end) == EOF) {
|
||||
_IO_un_link (this);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
return this;
|
||||
#else
|
||||
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 (mode & ios::ate) {
|
||||
if (pubseekoff(0, ios::end) == EOF)
|
||||
return NULL;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user