Date: Fri, 30 Oct 92 12:01:16 +0100 From: Tim Berners-Lee <timbl@www3.cern.ch> Message-Id: <9210301101.AA06754@www3.cern.ch> To: Edward Vielmetti <emv@msen.com> Subject: port to bsdi / TOUPPER problem Cc: www-talk@nxoc01.cern.ch > Hi. I am porting WWW to BSDI. So far mostly so good, here are some > notes. Duuhh. What's BSDI? {:-O > There are some stray dependencies in the Line Mode makefiles that point > hard coded paths at /tmp for making stuff. /tmp here is tiny, so I > put the stuff in $(HOME)/tmp, but that didn't quite do the job. It is a question of changing the ONJ macro to point to somewhere where there is space. It used to be the source directory, but some people want to build separately from a read-only source mount. So we put the OBJ macros in. > It took some amount of fiddling to get everything to build in the > right place, I hacked at it until it all compiled ok but will have > to go back and see what exactly it was that I did... If you could mail me back the diffs I'll try to get them into the next version. > HTFile.c didn't compile until I commented out one of the two times > that "tcp.h" was included - the compiler complained about a duplicate > definition of "struct stat". Ooops.. sorry, fixed. I think you mean that <stat.h> was included explicitly once and once implcitly via "tcp.h". > After all that it compiles fine and seems to work, and 'www -source' > prints out what looks like real genuine HTML sources. However, it > appears that there's some critical place where TOUPPER is not working > right, since the lower-case <a href=foo:bar>foobar</a> tags don't > get recognized, and the upper-case <TITLE>foobar</TITLE> tags do. > This kind of ruins the hypertext effect :) That is official BSD for you: toupper() doesn't work unless the isalpha() is true. You need to turn on the macros at the bottom of tcp.h for your platform. What is the system-specific predefined cpp macro which we can #ifdef on? So far we have: #if defined(pyr) || defined(mips) /* Pyramid and Mips can't uppercase non-alpha */ #define TOLOWER(c) (isupper(c) ? tolower(c) : (c)) #define TOUPPER(c) (islower(c) ? toupper(c) : (c)) #else #define TOLOWER(c) tolower(c) #define TOUPPER(c) toupper(c) #endif /* pyr || mips */ Thanks for the comments.... Tim