ANNOUNCEMENT of Library of Common Code 3.0

Henrik Frystyk Nielsen (
Thu, 23 Mar 1995 11:18:49 +0500

* * * * *

The CERN Common WWW Library is a general code base that can be used
as a basis for WWW clients and servers. It contains code for accessing
HTTP, FTP, Gopher, News, WAIS, Telnet servers, and the local file system.
Furthermore it provides modules for parsing, managing and presenting
hypertext objects to the user and a wide spectra of generic programming

* * * * *

This release is the official 3.0 release of the Library of Common Code
from CERN. The release is the result of three previous pre-releases and
has now reached a stable state which is the reason for this
release. Thanks for the many contributions! The list of new features,
bug fixes etc. is very long, but most of it can be found in the
Programmer's Guide mentioned below. Some of the most importants features
is a multithreaded HTTP module and a initial port to Windows/Windows NT.

As usual, the CERN Line Mode Browser is also released in order to show
how the library can be used. This release is described in its own

The Library is copyrighted by CERN and the copyright statement is
available in the source destribution file.

NOTE: The CERN server is NOT compatible with this version of the
Library, but must be linked with version 2.17 which is also available
from our source archives.

CERN Common Code Library 3.0 is available as source code from:

Its is known to compile on Sun4, Solaris 2, HP Snake, NeXT, NeXT-386,
Decstation Ultrix, DEC OSF/1, SGI, AIX, Windows 3.1 and but look also at
the page of supported platforms at:

Here you will find many hints and ideas about the specific platforms.
Windows people should look at this page for more information on the
Windows port.

Diffs and old versions are available at

The top-node for documentation on the library is available at and

Programmer's Guide is available at

The address to send email about the Library is (note the new domain name)

This is also the last release that I will make from CERN. I am going
to join the W3C team at MIT starting next week. Yo!

-- cheers --


- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

CERN Library 3.0 Release Notes

Many of the modifications and new features are mentioned under the

* Changed all float to double in order get it consistent with the
working floating type in C

* Fixed problems with memory in HTML.c

* Introduced definition of errno constants for WIN32,
as WinSock doesn't define them using BSD notation

CERN Library 3.0 Prerelease 3, Mar 10 1995

New or Changed Features

* All library include files which contains public information for
applications are now contained in the single include file WWWLib.h
which is the only one necessary PLEASE DON'T USE ANYTHING ELSE!!!

* Changed TRACE messages so that the target is the macro TDEST and
not stderr. This means that on platforms that don't support stderr,
TRACE messages can be redirected to a local file.

* Due to the PC Port some modules (definition and declaration files)
have changed names so that the max length is 8 characters:


* Move EnableFrom to HTAccess module. This variable determines
whether the HTTP header From: should be generated. The default
value is off

* Sockets are no longer assumed to be small, non-negative integers,
but uses macros. This should ensure portability to Windows NT.

* Introduced socerrno and errno so that WinSock can use its own
definition whereas `local' errno can still use the well-known version.

* Introduced error_stream as field in HTRequest structure. All
information contained in HTTP responses which don't naturally contain
a body entity, for example redirection codes (3xx) and client error
codes (4xx) will be put down this stream so that it can be put into a
debug window.

* HTNewsHost is now a local variable in the HTNews module. Use
HTGetNewsHost and HTSetNewsHost to set and get the current value. The
news module will be rewritten in the near future as it has many

* The HTTP module understands all HTTP/1.0 return codes and is more solid

* Many portability problems has been solved and optimized. Most
system dependent things are now put into
tcp module

* Interface to CSO name server made nicer - generates correct HTML

Bug Fixes

* file:// no more tries ftp:// if host=localhost

* Improved proxy support and fixed bug when reloading a document from a proxy

* Bug fixed in HTGetHostName() which didn't include a dot <.>;

* Bug fixed if UserID/passwd was not correct and don't want to retry

* HTErrorAdd and HTErrorSysAdd no always return HT_ERROR

* Fixed bug in HTGetDomainName when no domain name is present at all

* Add output_flush to request structure

* Uses IOCTL as a macro now - not fcntl

Library 3.0 Prerelease 2, Dec 2 1994

* Introduced memory cleanups from Eric Sink into HTLibTerminate()

* Now the client can provocate a call to HTEventRequestTerminate()
even when the request never enters the eventloop. This is necesary so
that the client can cancel busy icons, spinning globes etc.

* Introduced EVENT_TERM as return code for the HTEventHandler function

* HTEventHandler() now has a double pointer so that the request
pointer can be modified from the client

* Fixed bug in HTSearch() and HTLoadRelative() where wrong return
code was returned (BOOL instead of int)

* Introduced BlockingIO field in the request structure to override
the the mode registered in the protocol structure. This can be used as
an easy way to make blocking I/O

Library 3.0 Prerelease 1, Nov 26 1994

New and Changed Features

* Introduced the function HTLibInit() and HTLibTerminate() which
MUST be called when the application starts up and terminates.

* Introduced the modules HTThread and HTEvent. HTEvent is the client
interface when using multithreaded functionality and HTThread is the
internal socket management

* All __STDC__ defines now concentrated to HTUtils.html where it is
called _STANDARD_CODE_ so that _cplusplus also handles this

* `new' and `template' not used a names anymore (confuses C++)

* Removed from field in HTRequest structure. This is now handled by
the functions HTGetMailAddres and HTSetMailAddress and the flag
HTEnableFrom in the HTTP module.

* Changed HTSetMailAddress so that a call with parameter equals NULL
or "" clears the contents of the mail-address.

* The number of parameters to Streamstack function is now compatible
with the arguments to a stream converter, so that we don't loose any
information while putting up the stream stack.

* HTOutputSource variable is removed. You should use WWW_SOURCE in
the request structure

* HTGuess stream is a a converter compatible stream so that it
actually can be setup as a converter

* The stream methods `abort' and `_free' now returns int instead of
void. On success from these methods `_free' returns 0 and `abort'
return EOF

* Taken HTEscape and HTUnescape and put them into the HTEscape
module. The functionality is the same but now they can be used in
utility programs without linking in the whole Library

Bug Fixes

* Removed bug in WAIS module which caused a lot of core dumps

* Removed bug in format classification from URL suffix in HTGoper
when the file was plaintext

* localhost is now recognized again after canonicalization
in HTLoadFile()

* WAIS SEARCH now produces proper HTML

* Max number of lines in WAIS decreased to 200 as 250 (previous)
dumps core

* Bug fixed in HTGetHostName() if we must use the getdomainname() function.

* Added some support for SCO

* Handling of gopher items of type ERROR (3) changed so no more core
dumps in server

Have fun!


Henrik Frystyk Nielsen H&kon W. Lie Phill Hallam-Baker + 41 22 767 8265 + 41 22 767 8583 + 41 22 76