scc

simple c99 compiler
git clone git://git.simple-cc.org/scc
Log | Files | Refs | Submodules | README | LICENSE

fopen.c (380B)


      1 #include <errno.h>
      2 #include <stdio.h>
      3 
      4 #include "../libc.h"
      5 
      6 #undef fopen
      7 
      8 FILE *
      9 fopen(const char * restrict name, const char * restrict mode)
     10 {
     11 	FILE *fp;
     12 
     13 	for (fp = __iob; fp < &__iob[FOPEN_MAX]; ++fp) {
     14 		if ((fp->flags & (_IOREAD | _IOWRITE | _IORW)) == 0)
     15 			break;
     16 	}
     17 	if (fp == &__iob[FOPEN_MAX]) {
     18 		errno = ENOMEM;
     19 		return NULL;
     20 	}
     21 
     22 	return _fpopen(name, mode, fp);
     23 }