mirror of
https://github.com/gcc-mirror/gcc.git
synced 2024-11-21 13:40:47 +00:00
io/unix.c: Add member special_file to type unix_stream.
2005-07-12 Thomas Koenig <Thomas.Koenig@online.de> io/unix.c: Add member special_file to type unix_stream. (fd_truncate): Don't call ftruncate or chsize if s refers to a special file. (fd_to_stream): initialize s->special_file. 2005-07-12 Thomas Koenig <Thomas.Koenig@online.de> gfortran.dg/dev_null.f90: Remove targets. From-SVN: r101937
This commit is contained in:
parent
04be5ce5ec
commit
5133e4b923
@ -1,3 +1,7 @@
|
||||
2005-07-11 Thomas Koenig <Thomas.Koenig@online.de>
|
||||
|
||||
gfortran.dg/dev_null.f90: Remove targets.
|
||||
|
||||
2005-07-12 Andrew Pinski <pinskia@physics.uc.edu>
|
||||
|
||||
PR tree-opt/22335
|
||||
|
@ -1,4 +1,4 @@
|
||||
! { dg-do run { target *-*-linux* *-*-solaris* } }
|
||||
! { dg-do run }
|
||||
! This test currently only runs on systems where using ftruncate on
|
||||
! /dev/null fails (errno set to EINVAL). See PR 21593 for details.
|
||||
!
|
||||
|
@ -1,3 +1,10 @@
|
||||
2005-07-12 Thomas Koenig <Thomas.Koenig@online.de>
|
||||
|
||||
io/unix.c: Add member special_file to type unix_stream.
|
||||
(fd_truncate): Don't call ftruncate or chsize if
|
||||
s refers to a special file.
|
||||
(fd_to_stream): initialize s->special_file.
|
||||
|
||||
2005-07-11 David Edelsohn <edelsohn@gnu.org>
|
||||
|
||||
PR libgfortran/22412
|
||||
|
@ -138,6 +138,8 @@ typedef struct
|
||||
int prot;
|
||||
int ndirty; /* Dirty bytes starting at dirty_offset */
|
||||
|
||||
int special_file; /* =1 if the fd refers to a special file */
|
||||
|
||||
unsigned unbuffered:1, mmaped:1;
|
||||
|
||||
char small_buffer[BUFFER_SIZE];
|
||||
@ -509,13 +511,14 @@ fd_truncate (unix_stream * s)
|
||||
return FAILURE;
|
||||
|
||||
/* non-seekable files, like terminals and fifo's fail the lseek.
|
||||
the fd is a regular file at this point */
|
||||
|
||||
Using ftruncate on a seekable special file (like /dev/null)
|
||||
is undefined, so we treat it as if the ftruncate failed.
|
||||
*/
|
||||
#ifdef HAVE_FTRUNCATE
|
||||
if (ftruncate (s->fd, s->logical_offset))
|
||||
if (s->special_file || ftruncate (s->fd, s->logical_offset))
|
||||
#else
|
||||
#ifdef HAVE_CHSIZE
|
||||
if (chsize (s->fd, s->logical_offset))
|
||||
if (s->special_file || chsize (s->fd, s->logical_offset))
|
||||
#endif
|
||||
#endif
|
||||
{
|
||||
@ -915,6 +918,7 @@ fd_to_stream (int fd, int prot, int avoid_mmap)
|
||||
|
||||
fstat (fd, &statbuf);
|
||||
s->file_length = S_ISREG (statbuf.st_mode) ? statbuf.st_size : -1;
|
||||
s->special_file = !S_ISREG (statbuf.st_mode);
|
||||
|
||||
#if HAVE_MMAP
|
||||
if (avoid_mmap)
|
||||
|
Loading…
Reference in New Issue
Block a user