port to bsdi / TOUPPER problem

Tim Berners-Lee (timbl@www3.cern.ch)
Fri, 30 Oct 92 12:01:16 +0100

> 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))
#define TOLOWER(c) tolower(c)
#define TOUPPER(c) toupper(c)
#endif /* pyr || mips */

Thanks for the comments....