res_send: use a temp buffer if caller's buffer is under 512 bytes
[musl] / src / stdio / fopen.c
index c741aed..e1b91e1 100644 (file)
@@ -1,4 +1,7 @@
 #include "stdio_impl.h"
+#include <fcntl.h>
+#include <string.h>
+#include <errno.h>
 
 FILE *fopen(const char *restrict filename, const char *restrict mode)
 {
@@ -15,8 +18,10 @@ FILE *fopen(const char *restrict filename, const char *restrict mode)
        /* Compute the flags to pass to open() */
        flags = __fmodeflags(mode);
 
-       fd = syscall_cp(SYS_open, filename, flags|O_LARGEFILE, 0666);
+       fd = sys_open(filename, flags, 0666);
        if (fd < 0) return 0;
+       if (flags & O_CLOEXEC)
+               __syscall(SYS_fcntl, fd, F_SETFD, FD_CLOEXEC);
 
        f = __fdopen(fd, mode);
        if (f) return f;
@@ -25,4 +30,4 @@ FILE *fopen(const char *restrict filename, const char *restrict mode)
        return 0;
 }
 
-LFS64(fopen);
+weak_alias(fopen, fopen64);