aboutsummaryrefslogtreecommitdiff
path: root/win32
diff options
context:
space:
mode:
authorRon Yorston <rmy@pobox.com>2020-04-05 09:49:57 +0100
committerRon Yorston <rmy@pobox.com>2020-04-05 10:04:56 +0100
commit2b4c25bd2cac034cdc52d29d6bb8c675c87a731c (patch)
tree5f542026304bb44ce738226acecfb9a9a0c84e8f /win32
parent1365eb25a7dfd3e42229691355d910ff32b92361 (diff)
downloadbusybox-w32-2b4c25bd2cac034cdc52d29d6bb8c675c87a731c.tar.gz
busybox-w32-2b4c25bd2cac034cdc52d29d6bb8c675c87a731c.tar.bz2
busybox-w32-2b4c25bd2cac034cdc52d29d6bb8c675c87a731c.zip
win32: new functions: getpeername(2), mingw_spawn_detach()
Implement getpeername(2). Add mingw_spawn_detach() to allow the spawned process to detach from the console.
Diffstat (limited to 'win32')
-rw-r--r--win32/net.c12
-rw-r--r--win32/process.c18
2 files changed, 27 insertions, 3 deletions
diff --git a/win32/net.c b/win32/net.c
index 2341119b0..01fa16a4e 100644
--- a/win32/net.c
+++ b/win32/net.c
@@ -99,3 +99,15 @@ int mingw_accept(int sockfd1, struct sockaddr *sa, socklen_t *sz)
99 } 99 }
100 return sockfd2; 100 return sockfd2;
101} 101}
102
103#undef getpeername
104int mingw_getpeername(int fd, struct sockaddr *sa, socklen_t *sz)
105{
106 SOCKET sock = (SOCKET)_get_osfhandle(fd);
107
108 if (sock == INVALID_SOCKET) {
109 errno = EBADF;
110 return -1;
111 }
112 return getpeername(sock, sa, sz);
113}
diff --git a/win32/process.c b/win32/process.c
index 4257fd689..67ce3c100 100644
--- a/win32/process.c
+++ b/win32/process.c
@@ -334,16 +334,28 @@ mingw_spawn_1(int mode, const char *cmd, char *const *argv, char *const *envp)
334 return -1; 334 return -1;
335} 335}
336 336
337pid_t FAST_FUNC 337static pid_t
338mingw_spawn(char **argv) 338mingw_spawn_pid(int mode, char **argv)
339{ 339{
340 intptr_t ret; 340 intptr_t ret;
341 341
342 ret = mingw_spawn_proc((const char **)argv); 342 ret = mingw_spawn_1(mode, argv[0], (char *const *)argv, environ);
343 343
344 return ret == -1 ? -1 : GetProcessId((HANDLE)ret); 344 return ret == -1 ? -1 : GetProcessId((HANDLE)ret);
345} 345}
346 346
347pid_t FAST_FUNC
348mingw_spawn(char **argv)
349{
350 return mingw_spawn_pid(P_NOWAIT, argv);
351}
352
353pid_t FAST_FUNC
354mingw_spawn_detach(char **argv)
355{
356 return mingw_spawn_pid(P_DETACH, argv);
357}
358
347intptr_t FAST_FUNC 359intptr_t FAST_FUNC
348mingw_spawn_proc(const char **argv) 360mingw_spawn_proc(const char **argv)
349{ 361{