fxlibc/src/libc/stdio/fdopen.c

25 lines
403 B
C

#include <stdio.h>
#include <stdlib.h>
#include "fileutil.h"
FILE *fdopen(int fd, char const *mode)
{
FILE *fp = calloc(1, sizeof *fp);
if(!fp) goto err;
int flags = __fp_parse_mode(mode, fp);
if(flags < 0) goto err;
__fp_open(fp, fd, true);
/* TODO: fdopen(): Seek to the current file offset of the fd */
return fp;
err:
if(fp && fp->bufowned)
free(fp->buf);
free(fp);
return NULL;
}