Artifact
33a0e46b0f889c4dd85a867beb69505598456204:
Attachment "popen.patch" to
ticket [6585b6c5d9]
added by
anonymous
2011-01-14 14:00:02.
0000: 49 6e 64 65 78 3a 20 73 72 63 2f 70 6f 70 65 6e Index: src/popen
0010: 2e 63 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d .c.=============
0020: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0030: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0040: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0050: 3d 3d 3d 3d 3d 3d 0a 2d 2d 2d 20 73 72 63 2f 70 ======.--- src/p
0060: 6f 70 65 6e 2e 63 0a 2b 2b 2b 20 73 72 63 2f 70 open.c.+++ src/p
0070: 6f 70 65 6e 2e 63 0a 40 40 20 2d 31 31 36 2c 31 open.c.@@ -116,1
0080: 32 20 2b 31 31 36 2c 31 32 20 40 40 0a 20 20 20 2 +116,12 @@.
0090: 53 65 74 48 61 6e 64 6c 65 49 6e 66 6f 72 6d 61 SetHandleInforma
00a0: 74 69 6f 6e 28 20 68 53 74 64 69 6e 57 72 2c 20 tion( hStdinWr,
00b0: 48 41 4e 44 4c 45 5f 46 4c 41 47 5f 49 4e 48 45 HANDLE_FLAG_INHE
00c0: 52 49 54 2c 20 46 41 4c 53 45 29 3b 0a 20 20 20 RIT, FALSE);.
00d0: 0a 20 20 20 77 69 6e 33 32 5f 63 72 65 61 74 65 . win32_create
00e0: 5f 63 68 69 6c 64 5f 70 72 6f 63 65 73 73 28 28 _child_process((
00f0: 63 68 61 72 2a 29 7a 43 6d 64 2c 20 0a 20 20 20 char*)zCmd, .
0100: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0110: 20 20 20 20 20 20 20 20 20 20 20 68 53 74 64 69 hStdi
0120: 6e 52 64 2c 20 68 53 74 64 6f 75 74 57 72 2c 20 nRd, hStdoutWr,
0130: 68 53 74 64 65 72 72 2c 26 63 68 69 6c 64 50 69 hStderr,&childPi
0140: 64 29 3b 0a 20 20 20 2a 70 43 68 69 6c 64 50 69 d);. *pChildPi
0150: 64 20 3d 20 63 68 69 6c 64 50 69 64 3b 0a 2d 20 d = childPid;.-
0160: 20 2a 70 66 64 49 6e 20 3d 20 5f 6f 70 65 6e 5f *pfdIn = _open_
0170: 6f 73 66 68 61 6e 64 6c 65 28 28 6c 6f 6e 67 29 osfhandle((long)
0180: 68 53 74 64 6f 75 74 52 64 2c 20 30 29 3b 0a 2d hStdoutRd, 0);.-
0190: 20 20 66 64 20 3d 20 5f 6f 70 65 6e 5f 6f 73 66 fd = _open_osf
01a0: 68 61 6e 64 6c 65 28 28 6c 6f 6e 67 29 68 53 74 handle((long)hSt
01b0: 64 69 6e 57 72 2c 20 30 29 3b 0a 2b 20 20 2a 70 dinWr, 0);.+ *p
01c0: 66 64 49 6e 20 3d 20 5f 6f 70 65 6e 5f 6f 73 66 fdIn = _open_osf
01d0: 68 61 6e 64 6c 65 28 28 69 6e 74 70 74 72 5f 74 handle((intptr_t
01e0: 29 68 53 74 64 6f 75 74 52 64 2c 20 30 29 3b 0a )hStdoutRd, 0);.
01f0: 2b 20 20 66 64 20 3d 20 5f 6f 70 65 6e 5f 6f 73 + fd = _open_os
0200: 66 68 61 6e 64 6c 65 28 28 69 6e 74 70 74 72 5f fhandle((intptr_
0210: 74 29 68 53 74 64 69 6e 57 72 2c 20 30 29 3b 0a t)hStdinWr, 0);.
0220: 20 20 20 2a 70 70 4f 75 74 20 3d 20 5f 66 64 6f *ppOut = _fdo
0230: 70 65 6e 28 66 64 2c 20 22 77 22 29 3b 0a 20 20 pen(fd, "w");.
0240: 20 43 6c 6f 73 65 48 61 6e 64 6c 65 28 68 53 74 CloseHandle(hSt
0250: 64 69 6e 52 64 29 3b 20 0a 20 20 20 43 6c 6f 73 dinRd); . Clos
0260: 65 48 61 6e 64 6c 65 28 68 53 74 64 6f 75 74 57 eHandle(hStdoutW
0270: 72 29 3b 0a 20 20 20 72 65 74 75 72 6e 20 30 3b r);. return 0;
0280: 0a 20 23 65 6c 73 65 0a 0a . #else..