File: io-redirection.diff

package info (click to toggle)
eperl 2.2.14-21
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 2,304 kB
  • ctags: 738
  • sloc: ansic: 4,694; perl: 584; sh: 556; makefile: 353
file content (79 lines) | stat: -rw-r--r-- 2,455 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
Patch from Marius Vollmer <marius.vollmer@nokia.com> to fix
assumption that some file descriptors are unused. (Closes: #593358)

Index: eperl/eperl_sys.c
===================================================================
--- eperl.orig/eperl_sys.c	2011-12-08 09:56:37.000000000 +0100
+++ eperl/eperl_sys.c	2011-12-08 09:57:14.000000000 +0100
@@ -105,21 +105,22 @@
 #define HANDLE_STDIN  0
 #define HANDLE_STDOUT 1
 #define HANDLE_STDERR 2
-#define HANDLE_STORE_STDIN  10
-#define HANDLE_STORE_STDOUT 11
-#define HANDLE_STORE_STDERR 12
 
 static int IO_redirected_stdin  = FALSE;
 static int IO_redirected_stdout = FALSE;
 static int IO_redirected_stderr = FALSE;
 
+static int IO_handle_store_stdin;
+static int IO_handle_store_stdout;
+static int IO_handle_store_stderr;
+
 void IO_redirect_stdin(FILE *fp)
 {
     if (IO_redirected_stdin)
         IO_restore_stdin();
 
     /* first copy the current stdin to the store handle */
-    (void)dup2(HANDLE_STDIN, HANDLE_STORE_STDIN);
+    IO_handle_store_stdin = dup(HANDLE_STDIN);
 
     /* then copy the new handle to stdin */
     (void)dup2(fileno(fp), HANDLE_STDIN);
@@ -134,7 +135,7 @@
         IO_restore_stdout();
 
     /* first copy the current stdout to the store handle */
-    (void)dup2(HANDLE_STDOUT, HANDLE_STORE_STDOUT);
+    IO_handle_store_stdout = dup(HANDLE_STDOUT);
 
     /* then copy the new handle to stdout */
     (void)dup2(fileno(fp), HANDLE_STDOUT);
@@ -149,7 +150,7 @@
         IO_restore_stderr();
 
     /* first copy the current stderr to the store handle */
-    (void)dup2(HANDLE_STDERR, HANDLE_STORE_STDERR);
+    IO_handle_store_stderr = dup(HANDLE_STDERR);
 
     /* then copy the new handle to stderr */
     (void)dup2(fileno(fp), HANDLE_STDERR);
@@ -176,7 +177,7 @@
 void IO_restore_stdin(void)
 {
     if (IO_redirected_stdin) {
-        dup2(HANDLE_STORE_STDIN, HANDLE_STDIN); 
+        dup2(IO_handle_store_stdin, HANDLE_STDIN); 
         IO_redirected_stdin = FALSE;
     }
 }
@@ -184,7 +185,7 @@
 void IO_restore_stdout(void)
 {
     if (IO_redirected_stdout) {
-        dup2(HANDLE_STORE_STDOUT, HANDLE_STDOUT); 
+        dup2(IO_handle_store_stdout, HANDLE_STDOUT); 
         IO_redirected_stdout = FALSE;
     }
 }
@@ -192,7 +193,7 @@
 void IO_restore_stderr(void)
 {
     if (IO_redirected_stderr) {
-        dup2(HANDLE_STORE_STDERR, HANDLE_STDERR); 
+      dup2(IO_handle_store_stderr, HANDLE_STDERR); 
         IO_redirected_stderr = FALSE;
     }
 }