summaryrefslogtreecommitdiffstats
path: root/xpa/notes/winport.note
diff options
context:
space:
mode:
Diffstat (limited to 'xpa/notes/winport.note')
-rw-r--r--xpa/notes/winport.note81
1 files changed, 0 insertions, 81 deletions
diff --git a/xpa/notes/winport.note b/xpa/notes/winport.note
deleted file mode 100644
index fb7b46d..0000000
--- a/xpa/notes/winport.note
+++ /dev/null
@@ -1,81 +0,0 @@
-Documentation:
-
-The URL:
-
- http://msdn.microsoft.com/library
-
-has a good Unix Application Migration Guide as well as Win32 API.
-
- MINGW32
-Problems:
-
-client.c:
-
-The select() function does not work on stdio files, so xpaset cannot add
-stdio to select(). This means that "cat foo.fits | xpaset ds9" is not
-implemented. This is a client side problem and would not affect ds9 running
-as an xpa server.
-
-xpaio.c and others:
-
-Win32 does not support most Unix signal handling, and in particular, the
-SIGALRM signal. This means that XPA will hang indefinitely on a system
-call, i.e., there is no timeout support corresponding to XPA_LONG_TIMEOUT
-and XPA_SHORT_TIMEOUT. This affects both clients and servers.
-
-timedconn.c:
-
-Again, lack of support for SIGALRM means alrmconnect() is not implemented.
-For some reason, noblkconect() also did not work properly, so I had to
-use theregular connect() in client.c and hang until further notice. This
-is a client side problem and would not affect ds9 as an xpa server.
-
-launch.c:
-
-Without fork(), its not obvious how to make the code wait for the
-child to start. In the end, I used simply called win32 spawnvp(), put
-a short sleep into the parent, and hoped for the best.
-
-find.c:
-
-Couldn't find the access mode bits (S_IRUSR, S_IWUSR, S_IXUSR) in win32,
-so access checking in find() is not supported.
-
-Code Changes:
-
-xpa.c, client.c (sockets)
-
-Ironically, wsock64 has an FD_SETSIZE of 64 and I had to redefine this to
-8192 to make XPA sockets work.
-
-For wsock32 sockets, we must initialize wsock32 using:
-
- WSADATA wsaData;
- ...
- if( WSAStartup(MAKEWORD(2,0), &wsaData) ) != 0 ) {handle error};
-
-and clean up at the time of exit:
-
- WSACleanup();
-
-The close(sock) call is replaced by closesocket(sock).
-
-The call:
-
- fcntl(sock, F_SETFD, FD_CLOEXEC);
-
-is not needed or implemented (since sockets do not survive across exec) and
-must be commented out.
-
-Calls to:
-
- flags = fcntl(client->datafd, F_GETFL);
- fcntl(client->datafd, F_SETFL, flags|NONBIO);
-
-get changed to:
-
- int flags=1;
- ioctlsocket(socket, FIONBIO, (u_long FAR *)&flags);
-
-
-