[Prev][Next][Index][Thread]
Re: Macintosh using CWGUSI changes and patches
Jeff Dripps writes:
> Henrick,
>
> Thank you for getting me onboard with the w3 alpha group.
>
> Greetings everyone!
>
> These were the changes I found necessary to the wwwlib 4.1 and w3 mini-server
> source, in order to compile & execute under 68K and PPC macintosh platform
> using Metrowerks CodeWarrior IDE, and the CWGUSI 1.7.0 sockets library by
> Matthias Neeracher. In the process, I also found and fixed a bug in the GUSI
> socket library's, socket destructor method, that caused premature socket
> closures (i.e., broken pipe errors in browsers). I have passed this fix on to
> Matthias, but in the meantime if anyone wants the patch, please drop me a line.
>
> I did not include wais support, as HTWAIS.c references a #include <ui.h> that I
> do not have. If someone could supply me with this header, I would see what I
> could do about added WAIS support for macintosh in the future. sinc, -j
>
> //
> // LIBRARY CHANGES
> //
>
> // Created a new file called MacPaths.c and added to the library for
> // Macintosh specific methods. To the file I have added the following
> // function definition:
> //
> void unixPathToMacPath(char *thepath)
> {
> // translate unix delimiter to mac path delimiters
> short i;
> for (i = 0; i <= strlen(thepath); ++i)
> if (thepath[i] == '/') thepath[i] = ':';
> }
>
> // Added the following line to the #ifdef __MWERKS__ section of tcp.h
> #define NO_GETPID /* getpid() does not exist */
>
> //
> // Addition to beginning of the file HTMulti.c
> //
> #ifdef macintosh
> #include "MacPaths.h" // for prototypes
> #endif
> //
> // Change to HTMulti.c for macintosh support
> //
> PUBLIC char * HTMulti (HTRequest * req,
> char * path,
> struct stat * stat_info)
> {
> char * new_path = NULL;
> int stat_status = -1;
>
> if (!req || !path || !*path || !stat_info)
> return NULL;
>
> #ifdef GOT_READ_DIR
> #ifdef macintosh
> unixPathToMacPath(path); // added JTD:2/14/96
> if (*(path+strlen(path)-1) == ':') { /* Find welcome page */
> #else
> if (*(path+strlen(path)-1) == '/') { /* Find welcome page */
#endif
> // ... balance of function unchanged
>
> //
> // Addition to beginning of the file HTWWWStr.c
> //
> #ifdef macintosh
> #include "MacPaths.h" // for prototypes
> #endif
> //
> // Change to HTWWWStr.c for macintosh support
> //
> // In the function HTWWWToLocal(), after the comment line:
> /*
> ** Do whatever translation is required here in order to fit your
> ** platform _before_ the path is unescaped.
> */
> // add the following
> #ifdef macintosh // added JTD:2/20/96
> unixPathToMacPath(path);
> #endif
> //
> // also in the function HTLocalToWWW(), add the very end of the function,
> // just before the return statement...
> //
> #ifdef macintosh // added JTD:2/20/96
> unixPathToMacPath(result);
> #endif
> return result;
> }
>
> // I have also macintized HTHome.c and get_best_welcome(), but I will pass
> // this on later, since it does not yet come into play with the current state
> // of the mini-server.
>
> //
> // SERVER CHANGES
> //
> // Added to the beginning of HTServer.c
> #ifdef __MWERKS__
> #include <console.h> // added JTD - added for 'ccommand'
> #endif
>
> #define LISTEN_SOCKET_CNT 6 // how many sockets to listen on. One is *NOT*
> enuf (:
>
> // Original version of main() would cause mac to buss error as the
> // MiniServ_new() call executed *BEFORE* the GUSI sockets were initialized.
> // Also added a standard init section to properly initialize the mac toolbox.
> //
> int main (int argc, char ** argv)
> {
> int arg;
> MiniServ * ms;
>
> #ifdef __MWERKS__
> // init common mac toolbox managers - JTD
> InitGraf(&qd.thePort);
> InitFonts();
> InitWindows();
> InitMenus();
> TEInit();
> InitDialogs(0L);
> InitCursor();
> MaxApplZone();
> MoreMasters();
> MoreMasters();
> MoreMasters();
> argc = ccommand(&argv); // present arg query dialog - JTD
> #endif
>
> /* Starts Mac GUSI socket library */
> #ifdef GUSI
> GUSISetup(GUSIwithSIOUXSockets);
> GUSISetup(GUSIwithInternetSockets);
> #endif
>
> // moved down since this allocates memory, and we can't
> // do that 'til we init the mac toolbox stuff.
> ms = MiniServ_new();
>
> // ... the balance of main here ...
>
> /* Set up a server to listen on this port */
> if (ms->port >= 0) {
> int theSocket; // added the opening of multiple sockets JTD:2/27/96
> for (theSocket = 0; theSocket < LISTEN_SOCKET_CNT; ++theSocket)
> {
> HTNet * net = HTNet_new(ms->request, ms->port);
>
> /* Start listening on the socket */
> if (net && HTDoListen(net, ms->port, INVSOC, ms->backlog)
> == HT_OK)
> {
> /* Register a callback function for handling a request */
> HTEvent_Register(HTNet_socket(net), ms->request,
> (SockOps) FD_READ,
> server_handler, HT_PRIORITY_MAX);
> }
> else
> {
> if (WWWTRACE) HTTrace("Can't listen on port %d\n",ms->port);
> Cleanup(ms, -1);
> }
> }
> }
>
> // ... the balance of main here ...
> // end of changes
>
>
--
Henrik Frystyk Nielsen, <frystyk@w3.org>
World-Wide Web Consortium, MIT/LCS NE43-356
545 Technology Square, Cambridge MA 02139, USA