diff --git a/musl_src.gni b/musl_src.gni index 65d299b5300298fec638ab0894280e90d0446259..6ef104e9946142308d6a2b414e7a1c3200b293a7 100644 --- a/musl_src.gni +++ b/musl_src.gni @@ -2223,6 +2223,7 @@ musl_src_porting_file = [ "src/misc/aarch64/syscall.s", "src/stdlib/strtod.c", "src/stdio/vfscanf.c", + "src/stdio/fileno.c", ] musl_inc_hook_files = [ diff --git a/porting/linux/user/src/stdio/fileno.c b/porting/linux/user/src/stdio/fileno.c new file mode 100644 index 0000000000000000000000000000000000000000..1eea733cb6bb0c2a0eb748d648d955b6a821d976 --- /dev/null +++ b/porting/linux/user/src/stdio/fileno.c @@ -0,0 +1,20 @@ +#include "stdio_impl.h" +#include + +int fileno_unlocked(FILE *f) +{ + int fd = f->fd; + if (fd < 0) { + errno = EBADF; + return -1; + } + return fd; +} + +int fileno(FILE *f) +{ + FLOCK(f); + int fd = fileno_unlocked(f); + FUNLOCK(f); + return fd; +}