* syscalls.cc (setmode): change mode of any matching FILE* also.
This commit is contained in:
parent
f00c1d2ccd
commit
ed8387fb4f
|
@ -1,3 +1,7 @@
|
||||||
|
2000-05-19 DJ Delorie <dj@cygnus.com>
|
||||||
|
|
||||||
|
* syscalls.cc (setmode): change mode of any matching FILE* also.
|
||||||
|
|
||||||
Thu May 18 17:28:19 2000 Christopher Faylor <cgf@cygnus.com>
|
Thu May 18 17:28:19 2000 Christopher Faylor <cgf@cygnus.com>
|
||||||
|
|
||||||
* Makefile.in: Remove external.h dependency.
|
* Makefile.in: Remove external.h dependency.
|
||||||
|
|
|
@ -1430,6 +1430,24 @@ ttyname (int fd)
|
||||||
return (char *)(dtable[fd]->ttyname ());
|
return (char *)(dtable[fd]->ttyname ());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* internal newlib function */
|
||||||
|
extern "C" int _fwalk (struct _reent *ptr, int (*function)(FILE *));
|
||||||
|
|
||||||
|
static int setmode_mode;
|
||||||
|
static int setmode_file;
|
||||||
|
|
||||||
|
static int
|
||||||
|
setmode_helper (FILE *f)
|
||||||
|
{
|
||||||
|
if (fileno(f) != setmode_file)
|
||||||
|
return 0;
|
||||||
|
if (setmode_mode & O_TEXT)
|
||||||
|
f->_flags |= __SCLE;
|
||||||
|
else
|
||||||
|
f->_flags &= ~__SCLE;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/* Set a file descriptor into text or binary mode, returning the
|
/* Set a file descriptor into text or binary mode, returning the
|
||||||
previous mode. */
|
previous mode. */
|
||||||
|
|
||||||
|
@ -1472,6 +1490,10 @@ setmode (int fd, int mode)
|
||||||
p->set_r_binary (0);
|
p->set_r_binary (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
setmode_mode = mode;
|
||||||
|
setmode_file = fd;
|
||||||
|
_fwalk(_REENT, setmode_helper);
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue