#include "stdio_impl.h"
+#include <stdlib.h>
+#include <termios.h>
+#include <sys/ioctl.h>
+#include <fcntl.h>
+#include <errno.h>
+#include <string.h>
FILE *__fdopen(int fd, const char *mode)
{
/* Set append mode on fd if opened for append */
if (*mode == 'a') {
int flags = __syscall(SYS_fcntl, fd, F_GETFL);
- __syscall(SYS_fcntl, fd, F_SETFL, flags | O_APPEND);
+ if (!(flags & O_APPEND))
+ __syscall(SYS_fcntl, fd, F_SETFL, flags | O_APPEND);
+ f->flags |= F_APP;
}
f->fd = fd;