Git conversion: Make reactos the root directory, move rosapps, rostests, wallpapers...
[reactos.git] / modules / rosapps / applications / net / ncftp / sio / UConnect.c
diff --git a/modules/rosapps/applications/net/ncftp/sio/UConnect.c b/modules/rosapps/applications/net/ncftp/sio/UConnect.c
new file mode 100644 (file)
index 0000000..8f0ca26
--- /dev/null
@@ -0,0 +1,35 @@
+#include "syshdrs.h"
+
+#if !defined(NO_UNIX_DOMAIN_SOCKETS) && !defined(NO_SIGNALS)
+
+extern volatile Sjmp_buf gNetTimeoutJmp;
+extern volatile Sjmp_buf gPipeJmp;
+
+int
+UConnect(int sfd, const struct sockaddr_un *const addr, int ualen, int tlen)
+{
+       int result;
+       vsio_sigproc_t sigalrm;
+
+       if (SSetjmp(gNetTimeoutJmp) != 0) {
+               alarm(0);
+               (void) SSignal(SIGALRM, (sio_sigproc_t) sigalrm);
+               errno = ETIMEDOUT;
+               return (kTimeoutErr);
+       }
+
+       sigalrm = (vsio_sigproc_t) SSignal(SIGALRM, SIOHandler);
+       alarm((unsigned int) tlen);
+
+       errno = 0;
+       do {
+               result = connect(sfd, (struct sockaddr *) addr, ualen);
+       } while ((result < 0) && (errno == EINTR));
+
+       alarm(0);
+       (void) SSignal(SIGALRM, (sio_sigproc_t) sigalrm);
+       return (result);
+}      /* UConnect */
+
+#endif
+