# CERN Library 3.0 Prerelease 3 (TEST OF WINDOWS PORT)

This is the announcement of the CERN Common Code Library 3.0pre3. This beta-release is the last before the real thing. It contains a set of bug fixes, new interface AND A PORT TO PC/WINDOWS based on Winsock. The purpose of this last prerelease before the official 3.0 release is to get feedback from PC/WINDOWS developers so that we can get better support in Library version 3.0. Some more information:

1. I have used Microsoft Virtual C++ (msvc) and a so-called project. One of the problems using this is that it generates a non-standard make file. Also, msvc automaticly scans for all dependencies. However, it doesn't use a preprocessor, so if an include file is within

       	#ifdef unix
       	#include <system.h>
       	#end

   it is taken as a dependency. There are two solutions to this: Either create dummy include files or hand tailor the make file. I chose the second solution.
2. The TCP/IP library used is Winsock.
3. I have tried to compile the library in two modes:
   - Static library (.lib)
   - Dynamic Library (.dll)
   When making a DLL, neither `stdin`, `stdout`, `stderr` nor a lot of system calls are defined. This is a problem as I haven't solved all the problems of unresolved references to system calls. I hope to get some help on this one! This is not a problem using a LIB, but it isn't as interesting either.
4. There are still global memory that's not getting freed at the end. I hope that the `WWWLibTerminate()` will make this easier. Especially the anchors is a problem.

The Line Mode Browser is also released in order to show how the multithreaded functionality can be enabled. The method used in the Line Mode Browser is not limited to character-based clients but can support GUI clients as well.

Its is known to compile on Sun4, Solaris 2, HP Snake, NeXT, NeXT-386, Decstation Ultrix, DEC OSF/1, SGI, AIX, PC/WINDOWS and possibly a lot more.

The Library is not compatible with the CERN server 3.0 and it should NOT be linked with this application. A later release of the CERN server will support the current Library.

## New or Changed Features

- Made a WWWLib.h include file which should be the only one necessary DON'T USE ANYTHING ELSE!!!
- Replaced TRACE messages from stderr to using a macro TDEST On windows and other use local file
- Due to the PC Port some files have changed names (max 8 chars):
  - s?HTFWrite.h?HTFWrite.h?g
  - s?HTHist.h?HTHist.h?g
  - s?HTEPtoCl.h?HTEPtoCl.h?g
  - s?HTDescpt.h?HTDescpt.h?g
  - s?HTXParse.h?HTXParse.h?g
  - s?HTErrMsg.h?HTErrMsg.h?g
- Move EnableFrom to HTAccess.html
- Sockets are no longer assumed to be small, unsigned integers, but uses macros
- Introduced error_stream as field in HTRequest structure. This enables the client to get the `dead information' that follows in a 3xx request, 4xx request etc.

  ## Bug Fixes

  - file:// no more tries ftp:// if host=localhost
  - Improved proxy support and fixed bug
  - Bug fixed in HTGetHostName()
  - Bug fixed if UserID/passwd not correct and don't want to retry
  - HTNewsHost is now a local variable. Use HTGetNewsHost and HTSetNewsHost
  - HTErrorAdd and HTErrorSysAdd no always return HT_ERROR
  - Fixed bug in HTGetDomainName when no domain name is present at all
  - Introduced Headermask into request structure
  - Add output_flush to request structure
  - Created HTDateTimeStr() in HTString
  - Removed HTEnableFrom (replaced by HeaderMask in request)
  - HTWriter added a parameter in stead of HTWriterNoClose()
  - Removed HTInetStatus. Done by HTErrnoString
  - Introduced socerrno and errno
  - Uses IOCTL as a macro now - not fcntl
  - and a lot of other stuff...
  Have fun!