[Prev][Next][Index][Thread]
Macintosh using CWGUSI changes and patches
-
To: www-lib@w3.org
-
Subject: Macintosh using CWGUSI changes and patches
-
From: freesoft@ccia.ccia.com (Jeff Dripps)
-
Date: Fri, 1 Mar 1996 10:11:27 -0500
-
Cc: Henrik Frystyk Nielsen <frystyk@w3.org>
-
From freesoft@ccia.ccia.com Fri Mar 1 10: 11:28 1996
-
Message-Id: <v01510100ad5cc02d4eab@[205.228.237.84]>
-
X-Sender: freesoft@ccia.com (Unverified)
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