From: eck Date: Mon, 9 Apr 1990 15:21:43 +0000 (+0000) Subject: improved file creation on f[re]open() X-Git-Tag: release-5-5~1751 X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=d2516d4eaf29ffded0687ec7f5292d0e6317a5f0;p=ack.git improved file creation on f[re]open() --- diff --git a/lang/cem/libcc.ansi/stdio/fopen.c b/lang/cem/libcc.ansi/stdio/fopen.c index bd1c1ef1b..5fe89be28 100644 --- a/lang/cem/libcc.ansi/stdio/fopen.c +++ b/lang/cem/libcc.ansi/stdio/fopen.c @@ -37,7 +37,6 @@ int _open(const char *path, int flags); int _creat(const char *path, int mode); - int _close(int d); FILE * @@ -89,8 +88,13 @@ fopen(const char *name, const char *mode) */ if ((rwflags & O_TRUNC) || (((fd = _open(name, rwmode)) < 0) - && (flags & _IOWRITE))) - fd = _creat(name, PMODE); + && (flags & _IOWRITE))) { + if (((fd = _creat(name, PMODE)) > 0) && flags | _IOREAD) { + (void) _close(fd); + fd = _open(name, rwmode); + } + + } if (fd < 0) return (FILE *)NULL; diff --git a/lang/cem/libcc.ansi/stdio/freopen.c b/lang/cem/libcc.ansi/stdio/freopen.c index 92111191e..af384b70d 100644 --- a/lang/cem/libcc.ansi/stdio/freopen.c +++ b/lang/cem/libcc.ansi/stdio/freopen.c @@ -68,8 +68,12 @@ freopen(const char *name, const char *mode, FILE *stream) if ((rwflags & O_TRUNC) || (((fd = _open(name, rwmode)) < 0) - && (flags & _IOWRITE))) - fd = _creat(name, PMODE); + && (flags & _IOWRITE))) { + if (((fd = _creat(name, PMODE)) < 0) && flags | _IOREAD) { + (void) _close(fd); + fd = _open(name, rwmode); + } + } if (fd < 0) { for( i = 0; i < FOPEN_MAX; i++) {