]> granicus.if.org Git - php/commitdiff
fix bug #39651: proc_open() append mode doesnt work on windows
authorNuno Lopes <nlopess@php.net>
Wed, 12 Sep 2007 11:42:43 +0000 (11:42 +0000)
committerNuno Lopes <nlopess@php.net>
Wed, 12 Sep 2007 11:42:43 +0000 (11:42 +0000)
ext/standard/proc_open.c

index 57dc02d9bee7d9ebc309522c42948eebd53efd98..90585e3fc779d3711b38e9cb0fa51eb099f38a9a 100644 (file)
@@ -677,6 +677,12 @@ PHP_FUNCTION(proc_open)
 #ifdef PHP_WIN32
                                descriptors[ndesc].childend = dup_fd_as_handle(fd);
                                _close(fd);
+
+                               /* simulate the append mode by fseeking to the end of the file
+                               this introduces a potential race-condition, but it is the best we can do, though */
+                               if (strchr(Z_STRVAL_PP(zmode), 'a')) {
+                                       SetFilePointer(descriptors[ndesc].childend, 0, NULL, FILE_END);
+                               }
 #else
                                descriptors[ndesc].childend = fd;
 #endif