From ca35949c20cee081efe5cda03bfff64167da05d2 Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Thu, 29 May 2014 00:34:47 +0200 Subject: ape/stdio: set errno to EMFILE when running out of streams --- sys/src/ape/lib/ap/stdio/_IO_newfile.c | 5 ++++- sys/src/ape/lib/ap/stdio/fdopen.c | 6 +++++- 2 files changed, 9 insertions(+), 2 deletions(-) (limited to 'sys/src/ape/lib') diff --git a/sys/src/ape/lib/ap/stdio/_IO_newfile.c b/sys/src/ape/lib/ap/stdio/_IO_newfile.c index 6a016ec5d..f559fdf8c 100644 --- a/sys/src/ape/lib/ap/stdio/_IO_newfile.c +++ b/sys/src/ape/lib/ap/stdio/_IO_newfile.c @@ -5,6 +5,7 @@ #define _PLAN9_SOURCE #include +#include FILE *_IO_newfile(void) { @@ -21,7 +22,9 @@ FILE *_IO_newfile(void) } f = fx; unlock(&fl); - if(f->state!=CLOSED) + if(f->state!=CLOSED){ + errno = EMFILE; return NULL; + } return f; } diff --git a/sys/src/ape/lib/ap/stdio/fdopen.c b/sys/src/ape/lib/ap/stdio/fdopen.c index cb10d98e7..b3061fbe7 100644 --- a/sys/src/ape/lib/ap/stdio/fdopen.c +++ b/sys/src/ape/lib/ap/stdio/fdopen.c @@ -2,6 +2,7 @@ * Posix stdio -- fdopen */ #include "iolib.h" +#include /* * Open the named file with the given mode, using the given FILE * Legal modes are given below, `additional characters may follow these sequences': @@ -15,12 +16,15 @@ FILE *fdopen(const int fd, const char *mode){ FILE *f; + if(fd < 0){ + errno = EBADF; + return NULL; + } if((f = _IO_newfile()) == NULL) return NULL; f->fd=fd; if(mode[0]=='a') lseek(f->fd, 0L, 2); - if(f->fd==-1) return NULL; f->flags=0; f->state=OPEN; f->buf=0; -- cgit v1.2.3