diff options
Diffstat (limited to 'networking/nc.c')
| -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 | ||
