Procházet zdrojové kódy

in fdopen, avoid setting O_APPEND flag if it's already set

this saves a syscall in the case where the underlying open already
took place with O_APPEND, which is common because fopen with append
modes sets O_APPEND at the time of open before passing the file
descriptor to __fdopen.
Rich Felker před 11 roky
rodič
revize
758ab35a16
1 změnil soubory, kde provedl 2 přidání a 1 odebrání
  1. 2 1
      src/stdio/__fdopen.c

+ 2 - 1
src/stdio/__fdopen.c

@@ -32,7 +32,8 @@ 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;
 	}