diff options
Diffstat (limited to '')
-rw-r--r-- | networking/nc.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/networking/nc.c b/networking/nc.c index ab1316339..ee008595d 100644 --- a/networking/nc.c +++ b/networking/nc.c | |||
@@ -30,7 +30,7 @@ | |||
30 | //config:config NC_EXTRA | 30 | //config:config NC_EXTRA |
31 | //config: bool "Netcat extensions (-eiw and -f FILE)" | 31 | //config: bool "Netcat extensions (-eiw and -f FILE)" |
32 | //config: default y | 32 | //config: default y |
33 | //config: depends on NC || NETCAT | 33 | //config: depends on (NC || NETCAT) && PLATFORM_POSIX |
34 | //config: help | 34 | //config: help |
35 | //config: Add -e (support for executing the rest of the command line after | 35 | //config: Add -e (support for executing the rest of the command line after |
36 | //config: making or receiving a successful connection), -i (delay interval for | 36 | //config: making or receiving a successful connection), -i (delay interval for |
@@ -110,10 +110,12 @@ | |||
110 | * when compared to "standard" nc | 110 | * when compared to "standard" nc |
111 | */ | 111 | */ |
112 | 112 | ||
113 | #if !ENABLE_PLATFORM_MINGW32 | ||
113 | static void timeout(int signum UNUSED_PARAM) | 114 | static void timeout(int signum UNUSED_PARAM) |
114 | { | 115 | { |
115 | bb_simple_error_msg_and_die("timed out"); | 116 | bb_simple_error_msg_and_die("timed out"); |
116 | } | 117 | } |
118 | #endif | ||
117 | 119 | ||
118 | int nc_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; | 120 | int nc_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; |
119 | int nc_main(int argc, char **argv) | 121 | int nc_main(int argc, char **argv) |
@@ -123,7 +125,9 @@ int nc_main(int argc, char **argv) | |||
123 | int cfd = 0; | 125 | int cfd = 0; |
124 | unsigned lport = 0; | 126 | unsigned lport = 0; |
125 | IF_NOT_NC_SERVER(const) unsigned do_listen = 0; | 127 | IF_NOT_NC_SERVER(const) unsigned do_listen = 0; |
128 | #if !ENABLE_PLATFORM_MINGW32 | ||
126 | IF_NOT_NC_EXTRA (const) unsigned wsecs = 0; | 129 | IF_NOT_NC_EXTRA (const) unsigned wsecs = 0; |
130 | #endif | ||
127 | IF_NOT_NC_EXTRA (const) unsigned delay = 0; | 131 | IF_NOT_NC_EXTRA (const) unsigned delay = 0; |
128 | IF_NOT_NC_EXTRA (const int execparam = 0;) | 132 | IF_NOT_NC_EXTRA (const int execparam = 0;) |
129 | IF_NC_EXTRA (char **execparam = NULL;) | 133 | IF_NC_EXTRA (char **execparam = NULL;) |
@@ -187,10 +191,12 @@ int nc_main(int argc, char **argv) | |||
187 | argv++; | 191 | argv++; |
188 | } | 192 | } |
189 | 193 | ||
194 | #if !ENABLE_PLATFORM_MINGW32 | ||
190 | if (wsecs) { | 195 | if (wsecs) { |
191 | signal(SIGALRM, timeout); | 196 | signal(SIGALRM, timeout); |
192 | alarm(wsecs); | 197 | alarm(wsecs); |
193 | } | 198 | } |
199 | #endif | ||
194 | 200 | ||
195 | if (!cfd) { | 201 | if (!cfd) { |
196 | if (do_listen) { | 202 | if (do_listen) { |
@@ -208,7 +214,7 @@ int nc_main(int argc, char **argv) | |||
208 | } | 214 | } |
209 | #endif | 215 | #endif |
210 | close_on_exec_on(sfd); | 216 | close_on_exec_on(sfd); |
211 | accept_again: | 217 | IF_NOT_PLATFORM_MINGW32(accept_again:) |
212 | cfd = accept(sfd, NULL, 0); | 218 | cfd = accept(sfd, NULL, 0); |
213 | if (cfd < 0) | 219 | if (cfd < 0) |
214 | bb_simple_perror_msg_and_die("accept"); | 220 | bb_simple_perror_msg_and_die("accept"); |
@@ -220,6 +226,7 @@ int nc_main(int argc, char **argv) | |||
220 | } | 226 | } |
221 | } | 227 | } |
222 | 228 | ||
229 | #if !ENABLE_PLATFORM_MINGW32 | ||
223 | if (wsecs) { | 230 | if (wsecs) { |
224 | alarm(0); | 231 | alarm(0); |
225 | /* Non-ignored signals revert to SIG_DFL on exec anyway */ | 232 | /* Non-ignored signals revert to SIG_DFL on exec anyway */ |
@@ -244,6 +251,7 @@ int nc_main(int argc, char **argv) | |||
244 | IF_NC_EXTRA(BB_EXECVP(execparam[0], execparam);) | 251 | IF_NC_EXTRA(BB_EXECVP(execparam[0], execparam);) |
245 | IF_NC_EXTRA(bb_perror_msg_and_die("can't execute '%s'", execparam[0]);) | 252 | IF_NC_EXTRA(bb_perror_msg_and_die("can't execute '%s'", execparam[0]);) |
246 | } | 253 | } |
254 | #endif | ||
247 | 255 | ||
248 | /* loop copying stdin to cfd, and cfd to stdout */ | 256 | /* loop copying stdin to cfd, and cfd to stdout */ |
249 | 257 | ||