X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;ds=sidebyside;f=src%2Fstdio%2F__fdopen.c;h=116e78e56d2a1b3907c66a643d932b1b3a5c8545;hb=595416b11dfbc82d40a59d0edd7e3b04ba7a2d6d;hp=a6ae73a2021306dfd461ef86592977c90f14cada;hpb=758ab35a167ac17a4e3102cee5d16b75053842a7;p=musl diff --git a/src/stdio/__fdopen.c b/src/stdio/__fdopen.c index a6ae73a2..116e78e5 100644 --- a/src/stdio/__fdopen.c +++ b/src/stdio/__fdopen.c @@ -1,15 +1,15 @@ #include "stdio_impl.h" #include -#include #include #include #include #include +#include "libc.h" FILE *__fdopen(int fd, const char *mode) { FILE *f; - struct termios tio; + struct winsize wsz; /* Check for valid initial mode character */ if (!strchr("rwa", *mode)) { @@ -43,7 +43,7 @@ FILE *__fdopen(int fd, const char *mode) /* Activate line buffered mode for terminals */ f->lbf = EOF; - if (!(f->flags & F_NOWR) && !__syscall(SYS_ioctl, fd, TCGETS, &tio)) + if (!(f->flags & F_NOWR) && !__syscall(SYS_ioctl, fd, TIOCGWINSZ, &wsz)) f->lbf = '\n'; /* Initialize op ptrs. No problem if some are unneeded. */ @@ -55,13 +55,7 @@ FILE *__fdopen(int fd, const char *mode) if (!libc.threaded) f->lock = -1; /* Add new FILE to open file list */ - OFLLOCK(); - f->next = libc.ofl_head; - if (libc.ofl_head) libc.ofl_head->prev = f; - libc.ofl_head = f; - OFLUNLOCK(); - - return f; + return __ofl_add(f); } weak_alias(__fdopen, fdopen);