summaryrefslogtreecommitdiff
path: root/ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base
diff options
context:
space:
mode:
Diffstat (limited to 'ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base')
-rw-r--r--ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/buffer.h220
-rw-r--r--ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/cinfo.h146
-rw-r--r--ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/crit.h127
-rw-r--r--ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/daemon.h120
-rw-r--r--ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/dll.h124
-rw-r--r--ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/ereport.h121
-rw-r--r--ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/eventlog.h61
-rw-r--r--ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/file.h217
-rw-r--r--ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/minissl.h27
-rw-r--r--ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/net.h180
-rw-r--r--ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/nodelock.h47
-rw-r--r--ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/nterrors.h738
-rw-r--r--ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/objndx.h29
-rw-r--r--ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/pblock.h193
-rw-r--r--ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/sem.h70
-rw-r--r--ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/session.h85
-rw-r--r--ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/shexp.h97
-rw-r--r--ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/shmem.h84
-rw-r--r--ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/systems.h222
-rw-r--r--ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/systhr.h130
-rw-r--r--ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/util.h205
21 files changed, 3243 insertions, 0 deletions
diff --git a/ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/buffer.h b/ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/buffer.h
new file mode 100644
index 00000000000..f172efcb93a
--- /dev/null
+++ b/ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/buffer.h
@@ -0,0 +1,220 @@
+/*
+ * $Id$
+ *
+ * Copyright (c) 1994, 1995. Netscape Communications Corporation. All
+ * rights reserved.
+ *
+ * Use of this software is governed by the terms of the license agreement for
+ * the Netscape Communications or Netscape Comemrce Server between the
+ * parties.
+ */
+
+
+/* ------------------------------------------------------------------------ */
+
+
+/*
+ * buffer.h: For performing buffered I/O on a file or socket descriptor.
+ *
+ * This is an abstraction to allow I/O to be performed regardless of the
+ * current system. That way, an integer file descriptor can be used under
+ * UNIX but a stdio FILE structure could be used on systems which don't
+ * support that or don't support it as efficiently.
+ *
+ * Two abstractions are defined: A file buffer, and a network buffer. A
+ * distinction is made so that mmap() can be used on files (but is not
+ * required). Also, the file buffer takes a file name as the object to
+ * open instead of a file descriptor. A lot of the network buffering
+ * is almost an exact duplicate of the non-mmap file buffering.
+ *
+ * If an error occurs, system-independent means to obtain an error string
+ * are also provided. However, if the underlying system is UNIX the error
+ * may not be accurate in a threaded environment.
+ *
+ * Rob McCool
+ *
+ */
+
+
+#ifndef BUFFER_H
+#define BUFFER_H
+
+#ifdef XP_WIN32
+#include <nt/ntbuffer.h>
+#else
+
+
+/*
+ * We need certain system specific functions and symbols.
+ */
+
+#include "file.h"
+#include "net.h"
+
+/*
+ * Requires that the macro MALLOC be set to a "safe" malloc that will
+ * exit if no memory is available. If not under MCC httpd, define MALLOC
+ * to be the real malloc and play with fire, or make your own function.
+ */
+
+#include "../netsite.h"
+
+#ifdef FILE_UNIX_MMAP
+#include <sys/types.h> /* caddr_t */
+#endif
+
+
+/* ------------------------------ Structures ------------------------------ */
+
+#ifdef FILE_UNIX_MMAP
+typedef struct {
+ SYS_FILE fd;
+ caddr_t fp;
+ int len;
+
+ char *inbuf; /* for buffer_grab */
+ int cursize;
+
+ int pos;
+ char *errmsg;
+} filebuf;
+
+#else
+
+typedef struct {
+ SYS_FILE fd;
+
+ int pos, cursize, maxsize;
+ char *inbuf;
+ char *errmsg;
+} filebuf;
+
+#endif
+
+typedef struct {
+ SYS_NETFD sd;
+
+ int pos, cursize, maxsize, rdtimeout;
+ char *inbuf;
+ char *errmsg;
+} netbuf;
+
+
+/* -------------------------------- Macros -------------------------------- */
+
+
+/*
+ * netbuf_getc gets a character from the given network buffer and returns
+ * it. (as an integer).
+ *
+ * It will return (int) IO_ERROR for an error and (int) IO_EOF for
+ * an error condition or EOF respectively.
+ */
+
+#define netbuf_getc(b) \
+ ((b)->pos != (b)->cursize ? (int)((b)->inbuf[(b)->pos++]) : netbuf_next(b,1))
+
+#ifdef FILE_UNIX_MMAP
+#define filebuf_getc(b) ((b)->pos == (b)->len ? IO_EOF : (b)->fp[(b)->pos++])
+#else
+#define filebuf_getc(b) \
+ ((b)->pos != (b)->cursize ? (int)((b)->inbuf[(b)->pos++]) : filebuf_next(b,1))
+#endif
+
+
+/*
+ * buffer_error returns the last error that occurred with buffer. Don't use
+ * this unless you know an error occurred. Independent of network/file type.
+ */
+
+#define buffer_error(b) ((b)->errmsg)
+
+/*
+ * buffer_flush flushes any data after the current pos to the file
+ * descriptor fd. Regardless of buffer type.
+ */
+
+#define buffer_flush(buf,fd) \
+ system_write(fd,&(buf)->inbuf[(buf)->pos], (buf)->cursize - (buf)->pos)
+
+
+/* ------------------------------ Prototypes ------------------------------ */
+
+
+/*
+ * buffer_open opens a new buffer reading the specified file, with an I/O
+ * buffer of size sz, and returns a new buffer structure which will hold
+ * the data.
+ *
+ * If FILE_UNIX_MMAP is defined, this may return NULL. If it does, check
+ * system_errmsg to get a message about the error.
+ */
+
+filebuf *filebuf_open(SYS_FILE fd, int sz);
+netbuf *netbuf_open(SYS_NETFD sd, int sz);
+
+/*
+ * filebuf_open_nostat is a convenience function for mmap() buffer opens,
+ * if you happen to have the stat structure already.
+ */
+
+#ifdef FILE_UNIX_MMAP
+#include <sys/stat.h>
+filebuf *filebuf_open_nostat(SYS_FILE fd, int sz, struct stat *finfo);
+
+#else
+#define filebuf_open_nostat(fd,sz,finfo) filebuf_open(fd,sz)
+#endif
+
+/*
+ * buffer_next loads size more bytes into the given buffer and returns the
+ * first one, or BUFFER_EOF on EOF and BUFFER_ERROR on error.
+ */
+
+int filebuf_next(filebuf *buf, int advance);
+int netbuf_next(netbuf *buf, int advance);
+
+/*
+ * buffer_close deallocates a buffer and closes its associated files
+ * (does not close a network socket).
+ */
+
+void filebuf_close(filebuf *buf);
+void netbuf_close(netbuf *buf);
+
+/*
+ * buffer_grab will set the buffer's inbuf array to an array of sz bytes
+ * from the buffer's associated object. It returns the number of bytes
+ * actually read (between 1 and sz). It returns IO_EOF upon EOF or IO_ERROR
+ * upon error. The cursize entry of the structure will reflect the size
+ * of the iobuf array.
+ *
+ * The buffer will take care of allocation and deallocation of this array.
+ */
+
+int filebuf_grab(filebuf *buf, int sz);
+int netbuf_grab(netbuf *buf, int sz);
+
+
+/*
+ * netbuf_buf2sd will send n bytes from the (probably previously read)
+ * buffer and send them to sd. If sd is -1, they are discarded. If n is
+ * -1, it will continue until EOF is recieved. Returns IO_ERROR on error
+ * and the number of bytes sent any other time.
+ */
+
+int netbuf_buf2sd(netbuf *buf, SYS_NETFD sd, int len);
+
+/*
+ * filebuf_buf2sd assumes that nothing has been read from the filebuf,
+ * and just sends the file out to the given socket. Returns IO_ERROR on error
+ * and the number of bytes sent otherwise.
+ *
+ * Does not currently support you having read from the buffer previously. This
+ * can be changed transparently.
+ */
+
+int filebuf_buf2sd(filebuf *buf, SYS_NETFD sd);
+
+#endif
+#endif
diff --git a/ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/cinfo.h b/ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/cinfo.h
new file mode 100644
index 00000000000..13849531fd2
--- /dev/null
+++ b/ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/cinfo.h
@@ -0,0 +1,146 @@
+/*
+ * $Id$
+ *
+ * Copyright (c) 1994, 1995. Netscape Communications Corporation. All
+ * rights reserved.
+ *
+ * Use of this software is governed by the terms of the license agreement for
+ * the Netscape Communications or Netscape Comemrce Server between the
+ * parties.
+ */
+
+
+/* ------------------------------------------------------------------------ */
+
+
+/*
+ * cinfo.h: Content Information for a file, i.e. its type, etc.
+ *
+ * See cinfo.c for dependency information.
+ *
+ * Rob McCool
+ */
+
+
+
+#ifndef CINFO_H
+#define CINFO_H
+
+
+
+/* ------------------------------ Constants ------------------------------- */
+
+
+/*
+ * This will be the first string in the file, followed by x.x version
+ * where x is an integer.
+ *
+ * Updated due to trendy name change
+ */
+
+#define MCC_MT_MAGIC "#--Mosaic Communications Corporation MIME Information"
+#define MCC_MT_MAGIC_LEN 53
+#define NCC_MT_MAGIC "#--Netscape Communications Corporation MIME Information"
+#define NCC_MT_MAGIC_LEN 55
+
+/* The character which separates extensions with cinfo_find */
+
+#define CINFO_SEPARATOR '.'
+
+/* The maximum length of a line in this file */
+
+#define CINFO_MAX_LEN 1024
+
+/* The hash function for the database. Hashed on extension. */
+#include <ctype.h>
+#define CINFO_HASH(s) (isalpha(s[0]) ? tolower(s[0]) - 'a' : 26)
+
+/* The hash table size for that function */
+#define CINFO_HASHSIZE 27
+
+
+/* ------------------------------ Structures ------------------------------ */
+
+
+/*
+ * The ContentInfo structure.
+ *
+ * Currently, we support the following attributes:
+ *
+ * 1. Type: This identifies what kind of data is in the file.
+ * 2. Encoding: Identifies any compression or otherwise content-independent
+ * transformation which has been applied to the file (uuencode, etc.)
+ * 3. Language: Identifies the language a text document is in.
+ * 4. Description: A text string describing the file.
+ * 5. Viewer: The program to use to view the file.
+ *
+ * Multiple items are separated with a comma, e.g.
+ * encoding="x-gzip, x-uuencode"
+ */
+
+typedef struct {
+ char *type;
+ char *encoding;
+ char *language;
+} cinfo;
+
+
+/* ------------------------------ Prototypes ------------------------------ */
+
+
+/*
+ * cinfo_init initializes the content info system. Call this before
+ * cinfo_merge.
+ */
+
+void cinfo_init(void);
+
+/*
+ * cinfo_terminate frees the database for shutdown.
+ */
+
+void cinfo_terminate(void);
+
+/*
+ * cinfo_merge merges the contents of the given filename with the current
+ * cinfo database. It returns NULL upon success and a string (which you
+ * must deallocate) upon error.
+ */
+
+char *cinfo_merge(char *fn);
+
+
+/*
+ * cinfo_find finds any content information for the given uri. The file name
+ * is the string following the last / in the uri. Multiple extensions are
+ * separated by CINFO_SEPARATOR. You may pass in a filename instead of uri.
+ *
+ * Returns a newly allocated cinfo structure with the information it
+ * finds. The elements of this structure are coming right out of the types
+ * database and so if you change it or want to keep it around for long you
+ * should strdup it. You should free only the structure itself when finished
+ * with it.
+ *
+ * If there is no information for any one of the extensions it
+ * finds, it will ignore that extension. If it cannot find information for
+ * any of the extensions, it will return NULL.
+ */
+
+cinfo *cinfo_find(char *uri);
+
+/*
+ * cinfo_lookup finds the information about the given content-type, and
+ * returns a cinfo structure so you can look up description and icon.
+ */
+
+cinfo *cinfo_lookup(char *type);
+
+/*
+ * cinfo_dump_database dumps the current database to the given file desc.
+ */
+
+#include <stdio.h>
+void cinfo_dump_database(FILE *dump);
+
+
+#endif
diff --git a/ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/crit.h b/ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/crit.h
new file mode 100644
index 00000000000..c661be47eef
--- /dev/null
+++ b/ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/crit.h
@@ -0,0 +1,127 @@
+/*
+ * $Id$
+ *
+ * Copyright (c) 1994, 1995. Netscape Communications Corporation. All
+ * rights reserved.
+ *
+ * Use of this software is governed by the terms of the license agreement for
+ * the Netscape Communications or Netscape Comemrce Server between the
+ * parties.
+ */
+
+
+/* ------------------------------------------------------------------------ */
+
+
+/*
+ * crit.h: Critical section abstraction. Used in threaded servers to protect
+ * areas where two threads can interfere with each other.
+ *
+ * Condvars are condition variables that are used for thread-thread
+ * synchronization.
+ *
+ * Rob McCool
+ */
+
+#ifndef CRIT_H
+#define CRIT_H
+
+
+#ifdef USE_NSPR
+#include <nspr/prmon.h>
+typedef PRMonitor* CRITICAL;
+#else
+typedef void *CRITICAL;
+#endif
+
+/*
+ * crit_init creates and returns a new critical section variable. At the
+ * time of creation no one has entered it.
+ */
+#ifdef USE_NSPR
+#define crit_init() PR_NewMonitor(0)
+#else
+#define crit_init() (NULL)
+#endif
+
+/*
+ * crit_enter enters a critical section. If someone is already in the
+ * section, the calling thread is blocked until that thread exits.
+ */
+#ifdef USE_NSPR
+#define crit_enter(id) PR_EnterMonitor(id)
+#else
+#define crit_enter(id) (0)
+#endif
+
+/*
+ * crit_exit exits a critical section. If another thread is blocked waiting
+ * to enter, it will be unblocked and given ownership of the section.
+ */
+#ifdef USE_NSPR
+#define crit_exit(id) PR_ExitMonitor(id)
+#else
+#define crit_exit(id) (0)
+#endif
+
+/*
+ * crit_terminate removes a previously allocated critical section variable.
+ */
+#ifdef USE_NSPR
+#define crit_terminate(id) PR_DestroyMonitor(id)
+#else
+#define crit_terminate(id) (0)
+#endif
+
+
+#ifdef USE_NSPR
+typedef PRMonitor* CONDVAR;
+#else
+typedef void* CONDVAR;
+#endif
+
+/*
+ * condvar_init initializes and returns a new condition variable. You
+ * must provide a critical section to be associated with this condition
+ * variable.
+ */
+#ifdef USE_NSPR
+#define condvar_init(crit) (crit)
+#else
+#define condvar_init(crit) (crit)
+#endif
+
+/*
+ * condvar_wait blocks on the given condition variable. The calling thread
+ * will be blocked until another thread calls condvar_notify on this variable.
+ * The caller must have entered the critical section associated with this
+ * condition variable prior to waiting for it.
+ */
+#ifdef USE_NSPR
+#define condvar_wait(cv) (PR_Wait(cv, LL_MAXINT))
+#else
+#define condvar_wait(cv) (0)
+#endif
+
+/*
+ * condvar_notify awakens any threads blocked on the given condition
+ * variable. The caller must have entered the critical section associated
+ * with this variable first.
+ */
+#ifdef USE_NSPR
+#define condvar_notify(cv) (PR_Notify(cv))
+#else
+#define condvar_notify(cv) (0)
+#endif
+
+/*
+ * condvar_terminate frees the given previously allocated condition variable
+ */
+#ifdef USE_NSPR
+#define condvar_terminate(cv) (0)
+#else
+#define condvar_terminate(cv) (0)
+#endif
+
+
+#endif
diff --git a/ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/daemon.h b/ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/daemon.h
new file mode 100644
index 00000000000..afe0cfe6e5e
--- /dev/null
+++ b/ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/daemon.h
@@ -0,0 +1,120 @@
+/*
+ * $Id$
+ *
+ * Copyright (c) 1994, 1995. Netscape Communications Corporation. All
+ * rights reserved.
+ *
+ * Use of this software is governed by the terms of the license agreement for
+ * the Netscape Communications or Netscape Comemrce Server between the
+ * parties.
+ */
+
+
+/* ------------------------------------------------------------------------ */
+
+
+/*
+ * daemon.h: Things related to the accepting connections
+ *
+ * Rob McCool
+ */
+
+
+#ifndef DAEMON_H
+#define DAEMON_H
+
+#ifdef XP_WIN32
+#include <nt/ntdaemon.h>
+#else
+
+#include "net.h"
+#include "session.h"
+
+#include <pwd.h> /* struct passwd */
+
+
+/* ------------------------------- Defines -------------------------------- */
+
+
+#define child_exit exit
+
+
+/* Codes for child_status */
+#define CHILD_EMPTY_SLOT 0xfe
+#define CHILD_AWAIT_CONNECT 0xff
+#define CHILD_PROCESSING 0x00
+#define CHILD_READING 0x01
+#define CHILD_WRITING 0x02
+#define CHILD_RESOLVING 0x03
+
+
+typedef struct {
+ char *ipstr;
+ int port;
+ struct passwd *pw;
+ char *chr;
+ char *pidfn;
+ void (*rcback)(int);
+#if defined(DAEMON_UNIX_POOL) || defined(DAEMON_UNIX_MOBRULE)
+ int maxprocs, minprocs, proclife;
+#endif
+#ifdef NET_SSL
+ char *secure_keyfn;
+ char *secure_certfn;
+ char *secure_dongle;
+ int secure_auth;
+ int secure_session_timeout;
+ int security;
+#endif
+} daemon_s;
+
+
+/* ------------------------------ Prototypes ------------------------------ */
+
+#ifdef MCC_PROXY
+/* A unique serial number assigned to each child. */
+extern int child_serial;
+#endif
+
+/*
+ * daemon_run accepts whether or not it should detach from its parent process,
+ * and a daemon structure as its arguments. The daemon structure contains
+ * a port number, a root directory to chroot to (can be NULL), a filename to
+ * log the daemon pid to (can be NULL). daemon_run never returns.
+ *
+ * child_callback is a function which will be called every time a new
+ * connection is recieved. Session is a new session ID.
+ *
+ * rcback is a function which is a restart function: When SIGHUP is received,
+ * this function will be called. You may give SIG_DFL if you don't want to
+ * support restarting. The rcback will be passed SIGHUP.
+ *
+ * pw is the passwd entry to run the daemon as. If the effective user id is
+ * root, daemon_run will try to set its uid and gid to the user pointed
+ * to by this structure. You may pass NULL.
+ */
+
+void daemon_run(int det, void (*child_callback)(Session *), daemon_s *d);
+
+/*
+ * fork is a wrapper for the system's fork function. This closes the listen
+ * socket for the mob. This also makes sure that a threaded daemon only gets
+ * the calling thread and not all of them.
+ */
+
+pid_t child_fork(void);
+
+
+/*
+ * Set status to the given code for statistics reporting
+ */
+
+#ifdef DAEMON_STATS
+void child_status(int code);
+#else
+#define child_status(code) (void)(code)
+#endif
+
+
+#endif
+#endif
diff --git a/ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/dll.h b/ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/dll.h
new file mode 100644
index 00000000000..3b8a44d6c38
--- /dev/null
+++ b/ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/dll.h
@@ -0,0 +1,124 @@
+/*
+ * $Id$
+ *
+ * Copyright (c) 1994, 1995. Netscape Communications Corporation. All
+ * rights reserved.
+ *
+ * Use of this software is governed by the terms of the license agreement for
+ * the Netscape Communications or Netscape Comemrce Server between the
+ * parties.
+ */
+
+
+/* ------------------------------------------------------------------------ */
+
+
+/*
+ * dll.h: Handle dynamically linked libraries
+ *
+ * Rob McCool
+ */
+
+#ifndef _DLL_H
+#define _DLL_H
+
+#include "systems.h"
+
+#if defined(DLL_CAPABLE)
+
+/* --------------------------- Data structures ---------------------------- */
+
+
+#if defined(USE_NSPR)
+#include <nspr/prlink.h>
+typedef int DLHANDLE;
+
+#elif defined(DLL_DLOPEN)
+#include <dlfcn.h>
+typedef void *DLHANDLE; /* DLOPEN */
+
+#elif defined(DLL_HPSHL)
+#include <dl.h>
+typedef shl_t DLHANDLE; /* HP_SHL */
+
+#elif defined(DLL_WIN32)
+typedef HINSTANCE DLHANDLE; /* WIN32 */
+#endif
+
+
+/* ------------------------------ Prototypes ------------------------------ */
+
+
+/*
+ * dll_open loads the library at the given path into memory, and returns
+ * a handle to be used in later calls to dll_findsym and dll_close.
+ */
+#if defined(USE_NSPR)
+#define dll_open(libfn) PR_LoadLibrary(libfn)
+
+#elif defined(DLL_DLOPEN)
+#define dll_open(libfn) dlopen(libfn, DLL_DLOPEN_FLAGS)
+
+#elif defined(DLL_HPSHL)
+#define dll_open(libfn) shl_load((libfn), BIND_IMMEDIATE, NULL)
+
+#elif defined(DLL_WIN32)
+DLHANDLE dll_open(char *libfn);
+#endif
+
+
+/*
+ * dll_findsym looks for a symbol with the given name in the library
+ * pointed to by the given handle. Returns a pointer to the named function.
+ */
+
+#if defined(USE_NSPR)
+#define dll_findsym(dlp, name) PR_FindSymbol(name)
+
+#elif defined(DLL_DLOPEN)
+#define dll_findsym(dlp, name) dlsym(dlp, name)
+
+#elif defined(DLL_HPSHL)
+void *dll_findsym(DLHANDLE dlp, char *name);
+
+#elif defined(DLL_WIN32)
+#define dll_findsym(dlp, name) GetProcAddress(dlp, name)
+#endif
+
+
+/*
+ * dll_error returns a string describing the last error on the given handle
+ */
+#if defined(USE_NSPR)
+#define dll_error(dlp) system_errmsg(0)
+
+#elif defined(DLL_DLOPEN)
+#define dll_error(dlp) dlerror()
+
+#elif defined(DLL_HPSHL)
+#define dll_error(dlp) system_errmsg(0)
+
+#elif defined(DLL_WIN32)
+#define dll_error(dlp) system_errmsg(0)
+#endif
+
+
+/*
+ * dll_close closes the previously opened library given by handle
+ */
+#if defined(USE_NSPR)
+int dll_close(void *arg);
+
+#elif defined(DLL_DLOPEN)
+#define dll_close dlclose
+
+#elif defined (DLL_HPSHL)
+#define dll_close shl_unload
+
+#elif defined(DLL_WIN32)
+#define dll_close FreeLibrary
+#endif
+
+
+#endif /* DLL_CAPABLE */
+#endif
diff --git a/ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/ereport.h b/ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/ereport.h
new file mode 100644
index 00000000000..b6ea5857e54
--- /dev/null
+++ b/ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/ereport.h
@@ -0,0 +1,121 @@
+/*
+ * $Id$
+ *
+ * Copyright (c) 1994, 1995. Netscape Communications Corporation. All
+ * rights reserved.
+ *
+ * Use of this software is governed by the terms of the license agreement for
+ * the Netscape Communications or Netscape Comemrce Server between the
+ * parties.
+ */
+
+
+/* ------------------------------------------------------------------------ */
+
+
+/*
+ * ereport.h: Records transactions, reports errors to administrators, etc.
+ *
+ * Rob McCool
+ */
+
+
+#ifndef EREPORT_H
+#define EREPORT_H
+
+
+#include "../base/session.h" /* Session structure */
+#ifdef XP_UNIX
+#include <pwd.h> /* struct passwd */
+#endif /* XP_UNIX */
+
+
+/* ------------------------------ Constants ------------------------------- */
+
+
+/*
+ * The maximum length of an error message. NOT RUN-TIME CHECKED
+ */
+
+#define MAX_ERROR_LEN 8192
+
+/* A warning is a minor mishap, such as a 404 being issued. */
+#define LOG_WARN 0
+
+/*
+ * A misconfig is when there is a syntax error or permission violation in
+ * a config. file.
+ */
+#define LOG_MISCONFIG 1
+
+/*
+ * Security warnings are issued when authentication fails, or a host is
+ * given a 403 return code.
+ */
+#define LOG_SECURITY 2
+
+/*
+ * A failure is when a request could not be fulfilled due to an internal
+ * problem, such as a CGI script exiting prematurely, or a filesystem
+ * permissions problem.
+ */
+#define LOG_FAILURE 3
+
+/*
+ * A catastrophe is a fatal server error such as running out of
+ * memory or processes, or a system call failing, or even a server crash.
+ * The server child cannot recover from a catastrophe.
+ */
+#define LOG_CATASTROPHE 4
+
+/*
+ * Informational message, of no concern.
+ */
+#define LOG_INFORM 5
+
+/*
+ * The time format to use in the error log
+ */
+
+#define ERR_TIMEFMT "[%d/%b/%Y:%H:%M:%S]"
+
+
+/* The fd you will get if you are reporting errors to SYSLOG */
+
+#define ERRORS_TO_SYSLOG -1
+
+
+
+/* ------------------------------ Prototypes ------------------------------ */
+
+
+/*
+ * ereport logs an error of the given degree and formats the arguments with
+ * the printf() style fmt. Returns whether the log was successful. Records
+ * the current date.
+ */
+
+int ereport(int degree, char *fmt, ...);
+
+/*
+ * ereport_init initializes the error logging subsystem and opens the static
+ * file descriptors. It returns NULL upon success and an error string upon
+ * error. If a userpw is given, the logs will be chowned to that user.
+ *
+ * email is the address of a person to mail upon catastrophic error. It
+ * can be NULL if no e-mail is desired. ereport_init will not duplicate
+ * its own copy of this string; you must make sure it stays around and free
+ * it when you shut down the server.
+ */
+
+char *ereport_init(char *err_fn, char *email, struct passwd *pw);
+
+/*
+ * log_terminate closes the error and common log file descriptors.
+ */
+void ereport_terminate(void);
+
+/* For restarts */
+SYS_FILE ereport_getfd(void);
+
+#endif
diff --git a/ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/eventlog.h b/ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/eventlog.h
new file mode 100644
index 00000000000..ef2a1e12842
--- /dev/null
+++ b/ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/eventlog.h
@@ -0,0 +1,61 @@
+/*
+ * $Id$
+ *
+ * Copyright (c) 1994, 1995. Netscape Communications Corporation. All
+ * rights reserved.
+ *
+ * Use of this software is governed by the terms of the license agreement for
+ * the Netscape Communications or Netscape Comemrce Server between the
+ * parties.
+ */
+
+
+/* ------------------------------------------------------------------------ */
+
+
+// EVENTLOG.H
+//
+// This file contains the defines that make NT an installable service.
+//
+// 1/12/95 aruna
+//
+
+// Functions in eventlog.c
+// Win32 specific stuff, so FUZZ: disable check_for_tchar
+
+VOID InitializeAdminLogging(PCHAR ServiceName, PCHAR MessageFile);
+VOID InitializeHttpdLogging(PCHAR ServiceName, PCHAR MessageFile);
+VOID InitializeHttpsLogging(PCHAR ServiceName, PCHAR MessageFile);
+
+VOID TerminateAdminLogging();
+VOID TerminateHttpdLogging();
+VOID TerminateHttpsLogging();
+
+VOID LogErrorEvent(PCHAR ServiceName, WORD fwEventType, WORD fwCategory, DWORD IDEvent,
+ LPTSTR chMsg, LPTSTR lpszMsg);
+
+// Functions in error.c
+
+VOID ReportError(PCHAR ErrorMsg);
+
+BOOL CALLBACK ErrorDialogProc(
+ HWND hDlg,
+ UINT message,
+ WPARAM wParam,
+ LPARAM lParam
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/file.h b/ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/file.h
new file mode 100644
index 00000000000..8c59a9f2be7
--- /dev/null
+++ b/ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/file.h
@@ -0,0 +1,217 @@
+/*
+ * $Id$
+ *
+ * Copyright (c) 1994, 1995. Netscape Communications Corporation. All
+ * rights reserved.
+ *
+ * Use of this software is governed by the terms of the license agreement for
+ * the Netscape Communications or Netscape Comemrce Server between the
+ * parties.
+ */
+
+
+/* ------------------------------------------------------------------------ */
+
+
+/*
+ * file.h: system specific functions for reading/writing files
+ *
+ * Rob McCool
+ */
+
+
+#ifndef FILE_H
+#define FILE_H
+
+#ifdef XP_WIN32
+#include <nt/ntfile.h>
+#else
+
+
+#include "netsite.h"
+#include "systems.h"
+
+
+/*
+ * I cheat: These are set up such that system_read can be a macro for read
+ * under UNIX. IO_OKAY is anything positive.
+ */
+
+#define IO_OKAY 1
+#define IO_ERROR -1
+#define IO_EOF 0
+
+
+#ifdef FILE_STDIO
+#include <stdio.h>
+
+#elif defined(FILE_UNIX)
+#include <sys/types.h>
+#include <sys/file.h>
+#include <fcntl.h>
+#include <unistd.h>
+#endif
+
+
+/* -------------------------- File related defs --------------------------- */
+
+
+/* The disk page size on this machine. */
+#define FILE_BUFFERSIZE 4096
+
+
+/*
+ * The fd data type for this system.
+ */
+
+#if defined(FILE_STDIO)
+typedef FILE* SYS_FILE;
+#define SYS_ERROR_FD NULL
+#define SYS_STDERR stderr
+
+#elif defined(FILE_UNIX)
+typedef int SYS_FILE;
+#define SYS_ERROR_FD -1
+#define SYS_STDERR STDERR_FILENO
+
+#else
+#error "undefined file typing for current system"
+#endif
+
+#ifdef XP_UNIX
+#define FILE_PATHSEP '/'
+#define FILE_PARENT "../"
+
+#define system_chdir chdir
+#endif
+
+
+/*
+ * system_fread reads sz bytes from fd into to buf, return number of bytes
+ * read, or IO_EOF if EOF, or IO_ERROR if error.
+ */
+
+#if defined(FILE_STDIO)
+int system_fread(SYS_FILE fd, char *buf, int sz);
+
+#elif defined(FILE_UNIX)
+#define system_fread(fd,buf,sz) read(fd,buf,sz)
+
+#endif
+
+/*
+ * system_fopenRO opens a given file for reading only
+ * system_fopenWA opens a given file for writing, appending new output
+ */
+
+#if defined(FILE_STDIO)
+#define system_fopenRO(path) fopen(path,"r")
+#define system_fopenWA(path) fopen(path,"a")
+#define system_fopenRW(path) fopen(path,"w")
+
+#elif defined(FILE_UNIX)
+#define system_fopenRO(path) open(path, O_RDONLY)
+#define system_fopenWA(path) \
+ open(path, O_RDWR | O_CREAT | O_APPEND, 0644)
+#define system_fopenRW(path) \
+ open(path, O_RDWR | O_CREAT, 0644)
+
+#endif
+
+
+/*
+ * system_fclose closes the file fd
+ */
+
+#if defined(FILE_STDIO)
+#define system_fclose(fd) fclose(fd)
+
+#elif defined(FILE_UNIX)
+#define system_fclose(fd) close(fd)
+#endif
+
+/*
+ * This call stops core dumps in a portable way. Returns -1 on error.
+ */
+
+int system_nocoredumps(void);
+
+
+#if defined(FILE_STDIO)
+#define system_lseek fseek
+
+#elif defined(FILE_UNIX)
+#define system_lseek lseek
+
+#endif
+
+/*
+ * system_write writes sz bytes from buf to fd. The handler function should
+ * handle partial writes and anything else like that. Returns IO_*
+ */
+
+int system_fwrite(SYS_FILE fd,char *buf,int sz);
+
+/*
+ * system_fwrite_atomic locks the given fd before writing to it. This avoids
+ * interference between simultaneous writes. Returns IO_*
+ */
+
+int system_fwrite_atomic(SYS_FILE fd, char *buf, int sz);
+
+/*
+ * system_errmsg returns the last error that occured while processing file
+ * descriptor fd. fd does not have to be specified (if the error is a global
+ * such as in UNIX systems). PPS: Rob is a halfwit. This parameter is useless.
+ */
+
+#ifndef FILE_WIN32
+#include <errno.h>
+
+extern char *sys_errlist[];
+#define file_notfound() (errno == ENOENT)
+#define system_errmsg(fd) (sys_errlist[errno])
+#endif
+
+
+/*
+ * flock locks a file against interference from other processes
+ * ulock unlocks it.
+ */
+#ifdef BSD_FLOCK
+#include <sys/file.h>
+#define system_initlock(fd) (0)
+#define system_flock(fd) flock(fd, LOCK_EX)
+#define system_ulock(fd) flock(fd, LOCK_UN)
+
+#elif defined(FILE_UNIX)
+#include <unistd.h>
+#define system_initlock(fd) (0)
+#define system_flock(fd) lockf(fd, F_LOCK, 0)
+#define system_ulock(fd) lockf(fd, F_ULOCK, 0)
+
+#endif
+
+
+/*
+ * unix2local converts a unix-style pathname to a local one
+ */
+
+#ifdef XP_UNIX
+#define file_unix2local(path,p2) strcpy(p2,path)
+#endif
+
+/* -------------------------- Dir related defs ---------------------------- */
+
+
+#ifdef XP_UNIX
+#include <dirent.h>
+typedef DIR* SYS_DIR;
+typedef struct dirent SYS_DIRENT;
+#define dir_open opendir
+#define dir_read readdir
+#define dir_close closedir
+
+#endif
+#endif
+#endif
diff --git a/ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/minissl.h b/ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/minissl.h
new file mode 100644
index 00000000000..597e35a080e
--- /dev/null
+++ b/ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/minissl.h
@@ -0,0 +1,27 @@
+/*
+ * $Id$
+ *
+ * Copyright (c) 1994, 1995. Netscape Communications Corporation. All
+ * rights reserved.
+ *
+ * Use of this software is governed by the terms of the license agreement for
+ * the Netscape Communications or Netscape Comemrce Server between the
+ * parties.
+ */
+
+
+/* ------------------------------------------------------------------------ */
+
+
+
+/* Prototypes for SSL I/O functions */
+extern int SSL_Close(int);
+extern int SSL_Socket(int, int, int);
+extern int SSL_GetSockOpt(int, int, int, void *, int *);
+extern int SSL_SetSockOpt(int, int, int, const void *, int);
+extern int SSL_Bind(int, const void *, int);
+extern int SSL_Listen(int, int);
+extern int SSL_Accept(int, void *, int *);
+extern int SSL_Read(int, void *, int);
+extern int SSL_Write(int, const void *, int);
+extern int SSL_GetPeerName(int, void *, int *);
diff --git a/ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/net.h b/ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/net.h
new file mode 100644
index 00000000000..44dfbdc68dc
--- /dev/null
+++ b/ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/net.h
@@ -0,0 +1,180 @@
+/*
+ * $Id$
+ *
+ * Copyright (c) 1994, 1995. Netscape Communications Corporation. All
+ * rights reserved.
+ *
+ * Use of this software is governed by the terms of the license agreement for
+ * the Netscape Communications or Netscape Comemrce Server between the
+ * parties.
+ */
+
+
+/* ------------------------------------------------------------------------ */
+
+
+/*
+ * net.h: system specific networking definitions
+ *
+ * Rob McCool
+ */
+
+
+#ifndef NET_H
+#define NET_H
+
+#include "systems.h"
+
+#include "file.h" /* for client file descriptors */
+
+#include "pblock.h" /* for client data block */
+
+
+/* This should be a user-given parameter later */
+#define NET_BUFFERSIZE 8192
+/* So should this. */
+#define NET_READ_TIMEOUT 120
+#define NET_WRITE_TIMEOUT 300
+
+#define SSL_HANDSHAKE_TIMEOUT 300
+
+#if defined(NET_SOCKETS) || defined(NET_SSL)
+
+#ifdef NET_WINSOCK
+#include <winsock.h>
+#else /* XP_UNIX */
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h> /* sockaddr and in_addr */
+#include <arpa/inet.h> /* inet_ntoa */
+#include <netdb.h> /* hostent stuff */
+#endif /* NET_WINSOCK */
+
+#ifdef NET_SSL
+#include "minissl.h"
+#endif
+
+
+/* -------------------------------- Global -------------------------------- */
+
+extern int net_enabledns;
+
+
+
+/* ------------------------------ Data types ------------------------------ */
+
+
+#ifdef NET_WINSOCK
+typedef SOCKET SYS_NETFD;
+#else /* XP_UNIX */
+typedef int SYS_NETFD;
+#endif /* NET_WINSOCK */
+
+#define SYS_NET_ERRORFD -1
+
+
+/* -------------------------------- Macros -------------------------------- */
+
+
+/* These may be different for non-UNIX systems. */
+
+
+#ifndef NET_SSL
+#define net_socket socket
+#define net_setsockopt setsockopt
+#define net_getsockopt getsockopt
+#define net_listen listen
+#define net_select select
+#define net_getpeername getpeername
+
+#ifndef NET_WINSOCK
+#define net_close(sd) close(sd)
+#define net_bind bind
+#else /* NET_WINSOCK */
+#define net_close(sd) closesocket(sd)
+#define system_netbind bind
+int net_bind(SYS_NETFD s, const struct sockaddr *name, int namelen);
+#endif /* NET_WINSOCK */
+
+#ifdef DAEMON_NEEDS_SEMAPHORE
+#define net_accept net_semaccept
+#else /* ! DAEMON_NEEDS_SEMAPHORE */
+#define net_accept accept
+#endif /* DAEMON_NEEDS_SEMAPHORE */
+
+#else /* NET_SSL */
+#define net_close(sd) SSL_Close(sd)
+#define net_socket SSL_Socket
+#define net_setsockopt SSL_SetSockOpt
+#define net_getsockopt SSL_GetSockOpt
+
+#ifdef XP_UNIX
+#define net_bind SSL_Bind
+#else /* WIN32 */
+#define system_netbind SSL_Bind
+int net_bind(SYS_NETFD s, const struct sockaddr *name, int namelen);
+#endif /* XP_UNIX */
+
+#define net_listen SSL_Listen
+#define net_select select /* !!! */
+#define net_getpeername SSL_GetPeerName
+#define net_accept SSL_Accept
+#endif /* ! NET_SSL */
+
+
+/* Users should never call the system_net* functions. */
+#ifdef NET_SSL
+#define system_netread(sd, buf, sz) SSL_Read(sd, buf, sz)
+#define system_netwrite SSL_Write
+#else /* ! NET_SSL */
+
+#if !defined(NET_WINSOCK)
+#define system_netread(sd, buf, sz) read(sd, buf, sz)
+#define system_netwrite write
+#else /* NET_WINSOCK */
+#define system_netread(sd, buf, sz) recv(sd, buf, sz, 0)
+#define system_netwrite(sd, buf, sz) send(sd, buf, sz, 0)
+#endif /* ! NET_WINSOCK */
+
+#endif /* NET_SSL */
+
+int net_read(SYS_NETFD sd, char *buf, int sz, int timeout);
+int net_write(SYS_NETFD sd, char *buf, int sz);
+
+#ifdef DAEMON_NEEDS_SEMAPHORE
+int net_semaccept_init(int port);
+int net_semaccept(int s, struct sockaddr *addr, int *addrlen);
+void net_semaccept_terminate(void);
+#endif
+
+
+/* ------------------------------ Prototypes ------------------------------ */
+
+
+/*
+ * net_find_fqdn looks through the given hostent structure trying to find
+ * a FQDN for the host. If it finds none, it returns NULL. Otherwise, it
+ * returns a newly allocated copy of that string.
+ */
+
+char *net_find_fqdn(struct hostent *p);
+
+/*
+ * net_ip2host transforms the given textual IP number into a FQDN. If it
+ * can't find a FQDN, it will return what it can get. Otherwise, NULL.
+ *
+ * verify is whether or not the function should verify the hostname it
+ * gets. This takes an extra query but is safer for use in access control.
+ */
+
+char *net_ip2host(char *ip, int verify);
+
+/*
+ * net_sendmail sends mail to the specified recipient with the given subject
+ * and message. Currently uses external programs.
+ */
+
+int net_sendmail(char *to, char *subject, char *msg);
+
+#endif
+#endif
diff --git a/ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/nodelock.h b/ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/nodelock.h
new file mode 100644
index 00000000000..619c1df2621
--- /dev/null
+++ b/ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/nodelock.h
@@ -0,0 +1,47 @@
+/*
+ * $Id$
+ *
+ * Copyright (c) 1994, 1995. Netscape Communications Corporation. All
+ * rights reserved.
+ *
+ * Use of this software is governed by the terms of the license agreement for
+ * the Netscape Communications or Netscape Comemrce Server between the
+ * parties.
+ */
+
+
+/* ------------------------------------------------------------------------ */
+
+
+/*
+ * nodelock.h: licensing stuff
+ */
+
+#ifndef _NODELOCK_H
+#define _NODELOCK_H
+
+/*
+ * Do the initial IP address check and expiration date check. Reads a file
+ * from admin/config, as #define'd.
+ *
+ * Returns 1 on error, 0 on AOK.
+ */
+
+int node_init(void);
+
+/*
+ * Check the expiration date against The Now.
+ *
+ * Returns 1 on error, 0 on AOK.
+ */
+
+int node_check(void);
+
+/*
+ * So how we doin, license
+ *
+ * Returns 1 on error, 0 on AOK
+ */
+int node_status(void);
+
+#endif
diff --git a/ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/nterrors.h b/ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/nterrors.h
new file mode 100644
index 00000000000..19e9429558d
--- /dev/null
+++ b/ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/nterrors.h
@@ -0,0 +1,738 @@
+/*
+ * $Id$
+ *
+ * Copyright (c) 1994, 1995. Netscape Communications Corporation. All
+ * rights reserved.
+ *
+ * Use of this software is governed by the terms of the license agreement for
+ * the Netscape Communications or Netscape Comemrce Server between the
+ * parties.
+ */
+
+
+/* ------------------------------------------------------------------------ */
+
+
+/* DO NOT EDIT THIS FILE - it is automatically generated */
+
+struct _NtError {
+ int ErrorNumber;
+ char *ErrorString;
+ struct _NtError *next;
+} ;
+
+typedef struct _NtError NtError;
+
+NtError NtErrorStrings[] = {
+{ 0 , "ERROR_SUCCESS" },
+{ 0 , "NO_ERROR" },
+{ 1 , "ERROR_INVALID_FUNCTION" },
+{ 2 , "ERROR_FILE_NOT_FOUND" },
+{ 3 , "ERROR_PATH_NOT_FOUND" },
+{ 4 , "ERROR_TOO_MANY_OPEN_FILES" },
+{ 5 , "ERROR_ACCESS_DENIED" },
+{ 6 , "ERROR_INVALID_HANDLE" },
+{ 7 , "ERROR_ARENA_TRASHED" },
+{ 8 , "ERROR_NOT_ENOUGH_MEMORY" },
+{ 9 , "ERROR_INVALID_BLOCK" },
+{ 10 , "ERROR_BAD_ENVIRONMENT" },
+{ 11 , "ERROR_BAD_FORMAT" },
+{ 12 , "ERROR_INVALID_ACCESS" },
+{ 13 , "ERROR_INVALID_DATA" },
+{ 14 , "ERROR_OUTOFMEMORY" },
+{ 15 , "ERROR_INVALID_DRIVE" },
+{ 16 , "ERROR_CURRENT_DIRECTORY" },
+{ 17 , "ERROR_NOT_SAME_DEVICE" },
+{ 18 , "ERROR_NO_MORE_FILES" },
+{ 19 , "ERROR_WRITE_PROTECT" },
+{ 20 , "ERROR_BAD_UNIT" },
+{ 21 , "ERROR_NOT_READY" },
+{ 22 , "ERROR_BAD_COMMAND" },
+{ 23 , "ERROR_CRC" },
+{ 24 , "ERROR_BAD_LENGTH" },
+{ 25 , "ERROR_SEEK" },
+{ 26 , "ERROR_NOT_DOS_DISK" },
+{ 27 , "ERROR_SECTOR_NOT_FOUND" },
+{ 28 , "ERROR_OUT_OF_PAPER" },
+{ 29 , "ERROR_WRITE_FAULT" },
+{ 30 , "ERROR_READ_FAULT" },
+{ 31 , "ERROR_GEN_FAILURE" },
+{ 32 , "ERROR_SHARING_VIOLATION" },
+{ 33 , "ERROR_LOCK_VIOLATION" },
+{ 34 , "ERROR_WRONG_DISK" },
+{ 36 , "ERROR_SHARING_BUFFER_EXCEEDED" },
+{ 38 , "ERROR_HANDLE_EOF" },
+{ 39 , "ERROR_HANDLE_DISK_FULL" },
+{ 50 , "ERROR_NOT_SUPPORTED" },
+{ 51 , "ERROR_REM_NOT_LIST" },
+{ 52 , "ERROR_DUP_NAME" },
+{ 53 , "ERROR_BAD_NETPATH" },
+{ 54 , "ERROR_NETWORK_BUSY" },
+{ 55 , "ERROR_DEV_NOT_EXIST" },
+{ 56 , "ERROR_TOO_MANY_CMDS" },
+{ 57 , "ERROR_ADAP_HDW_ERR" },
+{ 58 , "ERROR_BAD_NET_RESP" },
+{ 59 , "ERROR_UNEXP_NET_ERR" },
+{ 60 , "ERROR_BAD_REM_ADAP" },
+{ 61 , "ERROR_PRINTQ_FULL" },
+{ 62 , "ERROR_NO_SPOOL_SPACE" },
+{ 63 , "ERROR_PRINT_CANCELLED" },
+{ 64 , "ERROR_NETNAME_DELETED" },
+{ 65 , "ERROR_NETWORK_ACCESS_DENIED" },
+{ 66 , "ERROR_BAD_DEV_TYPE" },
+{ 67 , "ERROR_BAD_NET_NAME" },
+{ 68 , "ERROR_TOO_MANY_NAMES" },
+{ 69 , "ERROR_TOO_MANY_SESS" },
+{ 70 , "ERROR_SHARING_PAUSED" },
+{ 71 , "ERROR_REQ_NOT_ACCEP" },
+{ 72 , "ERROR_REDIR_PAUSED" },
+{ 80 , "ERROR_FILE_EXISTS" },
+{ 82 , "ERROR_CANNOT_MAKE" },
+{ 83 , "ERROR_FAIL_I24" },
+{ 84 , "ERROR_OUT_OF_STRUCTURES" },
+{ 85 , "ERROR_ALREADY_ASSIGNED" },
+{ 86 , "ERROR_INVALID_PASSWORD" },
+{ 87 , "ERROR_INVALID_PARAMETER" },
+{ 88 , "ERROR_NET_WRITE_FAULT" },
+{ 89 , "ERROR_NO_PROC_SLOTS" },
+{ 100 , "ERROR_TOO_MANY_SEMAPHORES" },
+{ 101 , "ERROR_EXCL_SEM_ALREADY_OWNED" },
+{ 102 , "ERROR_SEM_IS_SET" },
+{ 103 , "ERROR_TOO_MANY_SEM_REQUESTS" },
+{ 104 , "ERROR_INVALID_AT_INTERRUPT_TIME" },
+{ 105 , "ERROR_SEM_OWNER_DIED" },
+{ 106 , "ERROR_SEM_USER_LIMIT" },
+{ 107 , "ERROR_DISK_CHANGE" },
+{ 108 , "ERROR_DRIVE_LOCKED" },
+{ 109 , "ERROR_BROKEN_PIPE" },
+{ 110 , "ERROR_OPEN_FAILED" },
+{ 111 , "ERROR_BUFFER_OVERFLOW" },
+{ 112 , "ERROR_DISK_FULL" },
+{ 113 , "ERROR_NO_MORE_SEARCH_HANDLES" },
+{ 114 , "ERROR_INVALID_TARGET_HANDLE" },
+{ 117 , "ERROR_INVALID_CATEGORY" },
+{ 118 , "ERROR_INVALID_VERIFY_SWITCH" },
+{ 119 , "ERROR_BAD_DRIVER_LEVEL" },
+{ 120 , "ERROR_CALL_NOT_IMPLEMENTED" },
+{ 121 , "ERROR_SEM_TIMEOUT" },
+{ 122 , "ERROR_INSUFFICIENT_BUFFER" },
+{ 123 , "ERROR_INVALID_NAME" },
+{ 124 , "ERROR_INVALID_LEVEL" },
+{ 125 , "ERROR_NO_VOLUME_LABEL" },
+{ 126 , "ERROR_MOD_NOT_FOUND" },
+{ 127 , "ERROR_PROC_NOT_FOUND" },
+{ 128 , "ERROR_WAIT_NO_CHILDREN" },
+{ 129 , "ERROR_CHILD_NOT_COMPLETE" },
+{ 130 , "ERROR_DIRECT_ACCESS_HANDLE" },
+{ 131 , "ERROR_NEGATIVE_SEEK" },
+{ 132 , "ERROR_SEEK_ON_DEVICE" },
+{ 133 , "ERROR_IS_JOIN_TARGET" },
+{ 134 , "ERROR_IS_JOINED" },
+{ 135 , "ERROR_IS_SUBSTED" },
+{ 136 , "ERROR_NOT_JOINED" },
+{ 137 , "ERROR_NOT_SUBSTED" },
+{ 138 , "ERROR_JOIN_TO_JOIN" },
+{ 139 , "ERROR_SUBST_TO_SUBST" },
+{ 140 , "ERROR_JOIN_TO_SUBST" },
+{ 141 , "ERROR_SUBST_TO_JOIN" },
+{ 142 , "ERROR_BUSY_DRIVE" },
+{ 143 , "ERROR_SAME_DRIVE" },
+{ 144 , "ERROR_DIR_NOT_ROOT" },
+{ 145 , "ERROR_DIR_NOT_EMPTY" },
+{ 146 , "ERROR_IS_SUBST_PATH" },
+{ 147 , "ERROR_IS_JOIN_PATH" },
+{ 148 , "ERROR_PATH_BUSY" },
+{ 149 , "ERROR_IS_SUBST_TARGET" },
+{ 150 , "ERROR_SYSTEM_TRACE" },
+{ 151 , "ERROR_INVALID_EVENT_COUNT" },
+{ 152 , "ERROR_TOO_MANY_MUXWAITERS" },
+{ 153 , "ERROR_INVALID_LIST_FORMAT" },
+{ 154 , "ERROR_LABEL_TOO_LONG" },
+{ 155 , "ERROR_TOO_MANY_TCBS" },
+{ 156 , "ERROR_SIGNAL_REFUSED" },
+{ 157 , "ERROR_DISCARDED" },
+{ 158 , "ERROR_NOT_LOCKED" },
+{ 159 , "ERROR_BAD_THREADID_ADDR" },
+{ 160 , "ERROR_BAD_ARGUMENTS" },
+{ 161 , "ERROR_BAD_PATHNAME" },
+{ 162 , "ERROR_SIGNAL_PENDING" },
+{ 164 , "ERROR_MAX_THRDS_REACHED" },
+{ 167 , "ERROR_LOCK_FAILED" },
+{ 170 , "ERROR_BUSY" },
+{ 173 , "ERROR_CANCEL_VIOLATION" },
+{ 174 , "ERROR_ATOMIC_LOCKS_NOT_SUPPORTED" },
+{ 180 , "ERROR_INVALID_SEGMENT_NUMBER" },
+{ 182 , "ERROR_INVALID_ORDINAL" },
+{ 183 , "ERROR_ALREADY_EXISTS" },
+{ 186 , "ERROR_INVALID_FLAG_NUMBER" },
+{ 187 , "ERROR_SEM_NOT_FOUND" },
+{ 188 , "ERROR_INVALID_STARTING_CODESEG" },
+{ 189 , "ERROR_INVALID_STACKSEG" },
+{ 190 , "ERROR_INVALID_MODULETYPE" },
+{ 191 , "ERROR_INVALID_EXE_SIGNATURE" },
+{ 192 , "ERROR_EXE_MARKED_INVALID" },
+{ 193 , "ERROR_BAD_EXE_FORMAT" },
+{ 194 , "ERROR_ITERATED_DATA_EXCEEDS_64k" },
+{ 195 , "ERROR_INVALID_MINALLOCSIZE" },
+{ 196 , "ERROR_DYNLINK_FROM_INVALID_RING" },
+{ 197 , "ERROR_IOPL_NOT_ENABLED" },
+{ 198 , "ERROR_INVALID_SEGDPL" },
+{ 199 , "ERROR_AUTODATASEG_EXCEEDS_64k" },
+{ 200 , "ERROR_RING2SEG_MUST_BE_MOVABLE" },
+{ 201 , "ERROR_RELOC_CHAIN_XEEDS_SEGLIM" },
+{ 202 , "ERROR_INFLOOP_IN_RELOC_CHAIN" },
+{ 203 , "ERROR_ENVVAR_NOT_FOUND" },
+{ 205 , "ERROR_NO_SIGNAL_SENT" },
+{ 206 , "ERROR_FILENAME_EXCED_RANGE" },
+{ 207 , "ERROR_RING2_STACK_IN_USE" },
+{ 208 , "ERROR_META_EXPANSION_TOO_LONG" },
+{ 209 , "ERROR_INVALID_SIGNAL_NUMBER" },
+{ 210 , "ERROR_THREAD_1_INACTIVE" },
+{ 212 , "ERROR_LOCKED" },
+{ 214 , "ERROR_TOO_MANY_MODULES" },
+{ 215 , "ERROR_NESTING_NOT_ALLOWED" },
+{ 230 , "ERROR_BAD_PIPE" },
+{ 231 , "ERROR_PIPE_BUSY" },
+{ 232 , "ERROR_NO_DATA" },
+{ 233 , "ERROR_PIPE_NOT_CONNECTED" },
+{ 234 , "ERROR_MORE_DATA" },
+{ 240 , "ERROR_VC_DISCONNECTED" },
+{ 254 , "ERROR_INVALID_EA_NAME" },
+{ 255 , "ERROR_EA_LIST_INCONSISTENT" },
+{ 259 , "ERROR_NO_MORE_ITEMS" },
+{ 266 , "ERROR_CANNOT_COPY" },
+{ 267 , "ERROR_DIRECTORY" },
+{ 275 , "ERROR_EAS_DIDNT_FIT" },
+{ 276 , "ERROR_EA_FILE_CORRUPT" },
+{ 277 , "ERROR_EA_TABLE_FULL" },
+{ 278 , "ERROR_INVALID_EA_HANDLE" },
+{ 282 , "ERROR_EAS_NOT_SUPPORTED" },
+{ 288 , "ERROR_NOT_OWNER" },
+{ 298 , "ERROR_TOO_MANY_POSTS" },
+{ 299 , "ERROR_PARTIAL_COPY" },
+{ 317 , "ERROR_MR_MID_NOT_FOUND" },
+{ 487 , "ERROR_INVALID_ADDRESS" },
+{ 534 , "ERROR_ARITHMETIC_OVERFLOW" },
+{ 535 , "ERROR_PIPE_CONNECTED" },
+{ 536 , "ERROR_PIPE_LISTENING" },
+{ 994 , "ERROR_EA_ACCESS_DENIED" },
+{ 995 , "ERROR_OPERATION_ABORTED" },
+{ 996 , "ERROR_IO_INCOMPLETE" },
+{ 997 , "ERROR_IO_PENDING" },
+{ 998 , "ERROR_NOACCESS" },
+{ 999 , "ERROR_SWAPERROR" },
+{ 1001 , "ERROR_STACK_OVERFLOW" },
+{ 1002 , "ERROR_INVALID_MESSAGE" },
+{ 1003 , "ERROR_CAN_NOT_COMPLETE" },
+{ 1004 , "ERROR_INVALID_FLAGS" },
+{ 1005 , "ERROR_UNRECOGNIZED_VOLUME" },
+{ 1006 , "ERROR_FILE_INVALID" },
+{ 1007 , "ERROR_FULLSCREEN_MODE" },
+{ 1008 , "ERROR_NO_TOKEN" },
+{ 1009 , "ERROR_BADDB" },
+{ 1010 , "ERROR_BADKEY" },
+{ 1011 , "ERROR_CANTOPEN" },
+{ 1012 , "ERROR_CANTREAD" },
+{ 1013 , "ERROR_CANTWRITE" },
+{ 1014 , "ERROR_REGISTRY_RECOVERED" },
+{ 1015 , "ERROR_REGISTRY_CORRUPT" },
+{ 1016 , "ERROR_REGISTRY_IO_FAILED" },
+{ 1017 , "ERROR_NOT_REGISTRY_FILE" },
+{ 1018 , "ERROR_KEY_DELETED" },
+{ 1019 , "ERROR_NO_LOG_SPACE" },
+{ 1020 , "ERROR_KEY_HAS_CHILDREN" },
+{ 1021 , "ERROR_CHILD_MUST_BE_VOLATILE" },
+{ 1022 , "ERROR_NOTIFY_ENUM_DIR" },
+{ 1051 , "ERROR_DEPENDENT_SERVICES_RUNNING" },
+{ 1052 , "ERROR_INVALID_SERVICE_CONTROL" },
+{ 1053 , "ERROR_SERVICE_REQUEST_TIMEOUT" },
+{ 1054 , "ERROR_SERVICE_NO_THREAD" },
+{ 1055 , "ERROR_SERVICE_DATABASE_LOCKED" },
+{ 1056 , "ERROR_SERVICE_ALREADY_RUNNING" },
+{ 1057 , "ERROR_INVALID_SERVICE_ACCOUNT" },
+{ 1058 , "ERROR_SERVICE_DISABLED" },
+{ 1059 , "ERROR_CIRCULAR_DEPENDENCY" },
+{ 1060 , "ERROR_SERVICE_DOES_NOT_EXIST" },
+{ 1061 , "ERROR_SERVICE_CANNOT_ACCEPT_CTRL" },
+{ 1062 , "ERROR_SERVICE_NOT_ACTIVE" },
+{ 1063 , "ERROR_FAILED_SERVICE_CONTROLLER_CONNECT" },
+{ 1064 , "ERROR_EXCEPTION_IN_SERVICE" },
+{ 1065 , "ERROR_DATABASE_DOES_NOT_EXIST" },
+{ 1066 , "ERROR_SERVICE_SPECIFIC_ERROR" },
+{ 1067 , "ERROR_PROCESS_ABORTED" },
+{ 1068 , "ERROR_SERVICE_DEPENDENCY_FAIL" },
+{ 1069 , "ERROR_SERVICE_LOGON_FAILED" },
+{ 1070 , "ERROR_SERVICE_START_HANG" },
+{ 1071 , "ERROR_INVALID_SERVICE_LOCK" },
+{ 1072 , "ERROR_SERVICE_MARKED_FOR_DELETE" },
+{ 1073 , "ERROR_SERVICE_EXISTS" },
+{ 1074 , "ERROR_ALREADY_RUNNING_LKG" },
+{ 1075 , "ERROR_SERVICE_DEPENDENCY_DELETED" },
+{ 1076 , "ERROR_BOOT_ALREADY_ACCEPTED" },
+{ 1077 , "ERROR_SERVICE_NEVER_STARTED" },
+{ 1078 , "ERROR_DUPLICATE_SERVICE_NAME" },
+{ 1100 , "ERROR_END_OF_MEDIA" },
+{ 1101 , "ERROR_FILEMARK_DETECTED" },
+{ 1102 , "ERROR_BEGINNING_OF_MEDIA" },
+{ 1103 , "ERROR_SETMARK_DETECTED" },
+{ 1104 , "ERROR_NO_DATA_DETECTED" },
+{ 1105 , "ERROR_PARTITION_FAILURE" },
+{ 1106 , "ERROR_INVALID_BLOCK_LENGTH" },
+{ 1107 , "ERROR_DEVICE_NOT_PARTITIONED" },
+{ 1108 , "ERROR_UNABLE_TO_LOCK_MEDIA" },
+{ 1109 , "ERROR_UNABLE_TO_UNLOAD_MEDIA" },
+{ 1110 , "ERROR_MEDIA_CHANGED" },
+{ 1111 , "ERROR_BUS_RESET" },
+{ 1112 , "ERROR_NO_MEDIA_IN_DRIVE" },
+{ 1113 , "ERROR_NO_UNICODE_TRANSLATION" },
+{ 1114 , "ERROR_DLL_INIT_FAILED" },
+{ 1115 , "ERROR_SHUTDOWN_IN_PROGRESS" },
+{ 1116 , "ERROR_NO_SHUTDOWN_IN_PROGRESS" },
+{ 1117 , "ERROR_IO_DEVICE" },
+{ 1118 , "ERROR_SERIAL_NO_DEVICE" },
+{ 1119 , "ERROR_IRQ_BUSY" },
+{ 1120 , "ERROR_MORE_WRITES" },
+{ 1121 , "ERROR_COUNTER_TIMEOUT" },
+{ 1122 , "ERROR_FLOPPY_ID_MARK_NOT_FOUND" },
+{ 1123 , "ERROR_FLOPPY_WRONG_CYLINDER" },
+{ 1124 , "ERROR_FLOPPY_UNKNOWN_ERROR" },
+{ 1125 , "ERROR_FLOPPY_BAD_REGISTERS" },
+{ 1126 , "ERROR_DISK_RECALIBRATE_FAILED" },
+{ 1127 , "ERROR_DISK_OPERATION_FAILED" },
+{ 1128 , "ERROR_DISK_RESET_FAILED" },
+{ 1129 , "ERROR_EOM_OVERFLOW" },
+{ 1130 , "ERROR_NOT_ENOUGH_SERVER_MEMORY" },
+{ 1131 , "ERROR_POSSIBLE_DEADLOCK" },
+{ 1132 , "ERROR_MAPPED_ALIGNMENT" },
+{ 1140 , "ERROR_SET_POWER_STATE_VETOED" },
+{ 1141 , "ERROR_SET_POWER_STATE_FAILED" },
+{ 1150 , "ERROR_OLD_WIN_VERSION" },
+{ 1151 , "ERROR_APP_WRONG_OS" },
+{ 1152 , "ERROR_SINGLE_INSTANCE_APP" },
+{ 1153 , "ERROR_RMODE_APP" },
+{ 1154 , "ERROR_INVALID_DLL" },
+{ 1155 , "ERROR_NO_ASSOCIATION" },
+{ 1156 , "ERROR_DDE_FAIL" },
+{ 1157 , "ERROR_DLL_NOT_FOUND" },
+{ 2202 , "ERROR_BAD_USERNAME" },
+{ 2250 , "ERROR_NOT_CONNECTED" },
+{ 2401 , "ERROR_OPEN_FILES" },
+{ 2402 , "ERROR_ACTIVE_CONNECTIONS" },
+{ 2404 , "ERROR_DEVICE_IN_USE" },
+{ 1200 , "ERROR_BAD_DEVICE" },
+{ 1201 , "ERROR_CONNECTION_UNAVAIL" },
+{ 1202 , "ERROR_DEVICE_ALREADY_REMEMBERED" },
+{ 1203 , "ERROR_NO_NET_OR_BAD_PATH" },
+{ 1204 , "ERROR_BAD_PROVIDER" },
+{ 1205 , "ERROR_CANNOT_OPEN_PROFILE" },
+{ 1206 , "ERROR_BAD_PROFILE" },
+{ 1207 , "ERROR_NOT_CONTAINER" },
+{ 1208 , "ERROR_EXTENDED_ERROR" },
+{ 1209 , "ERROR_INVALID_GROUPNAME" },
+{ 1210 , "ERROR_INVALID_COMPUTERNAME" },
+{ 1211 , "ERROR_INVALID_EVENTNAME" },
+{ 1212 , "ERROR_INVALID_DOMAINNAME" },
+{ 1213 , "ERROR_INVALID_SERVICENAME" },
+{ 1214 , "ERROR_INVALID_NETNAME" },
+{ 1215 , "ERROR_INVALID_SHARENAME" },
+{ 1216 , "ERROR_INVALID_PASSWORDNAME" },
+{ 1217 , "ERROR_INVALID_MESSAGENAME" },
+{ 1218 , "ERROR_INVALID_MESSAGEDEST" },
+{ 1219 , "ERROR_SESSION_CREDENTIAL_CONFLICT" },
+{ 1220 , "ERROR_REMOTE_SESSION_LIMIT_EXCEEDED" },
+{ 1221 , "ERROR_DUP_DOMAINNAME" },
+{ 1222 , "ERROR_NO_NETWORK" },
+{ 1223 , "ERROR_CANCELLED" },
+{ 1224 , "ERROR_USER_MAPPED_FILE" },
+{ 1225 , "ERROR_CONNECTION_REFUSED" },
+{ 1226 , "ERROR_GRACEFUL_DISCONNECT" },
+{ 1227 , "ERROR_ADDRESS_ALREADY_ASSOCIATED" },
+{ 1228 , "ERROR_ADDRESS_NOT_ASSOCIATED" },
+{ 1229 , "ERROR_CONNECTION_INVALID" },
+{ 1230 , "ERROR_CONNECTION_ACTIVE" },
+{ 1231 , "ERROR_NETWORK_UNREACHABLE" },
+{ 1232 , "ERROR_HOST_UNREACHABLE" },
+{ 1233 , "ERROR_PROTOCOL_UNREACHABLE" },
+{ 1234 , "ERROR_PORT_UNREACHABLE" },
+{ 1235 , "ERROR_REQUEST_ABORTED" },
+{ 1236 , "ERROR_CONNECTION_ABORTED" },
+{ 1237 , "ERROR_RETRY" },
+{ 1238 , "ERROR_CONNECTION_COUNT_LIMIT" },
+{ 1239 , "ERROR_LOGIN_TIME_RESTRICTION" },
+{ 1240 , "ERROR_LOGIN_WKSTA_RESTRICTION" },
+{ 1241 , "ERROR_INCORRECT_ADDRESS" },
+{ 1242 , "ERROR_ALREADY_REGISTERED" },
+{ 1243 , "ERROR_SERVICE_NOT_FOUND" },
+{ 1244 , "ERROR_NOT_AUTHENTICATED" },
+{ 1245 , "ERROR_NOT_LOGGED_ON" },
+{ 1246 , "ERROR_CONTINUE" },
+{ 1247 , "ERROR_ALREADY_INITIALIZED" },
+{ 1248 , "ERROR_NO_MORE_DEVICES" },
+{ 1300 , "ERROR_NOT_ALL_ASSIGNED" },
+{ 1301 , "ERROR_SOME_NOT_MAPPED" },
+{ 1302 , "ERROR_NO_QUOTAS_FOR_ACCOUNT" },
+{ 1303 , "ERROR_LOCAL_USER_SESSION_KEY" },
+{ 1304 , "ERROR_NULL_LM_PASSWORD" },
+{ 1305 , "ERROR_UNKNOWN_REVISION" },
+{ 1306 , "ERROR_REVISION_MISMATCH" },
+{ 1307 , "ERROR_INVALID_OWNER" },
+{ 1308 , "ERROR_INVALID_PRIMARY_GROUP" },
+{ 1309 , "ERROR_NO_IMPERSONATION_TOKEN" },
+{ 1310 , "ERROR_CANT_DISABLE_MANDATORY" },
+{ 1311 , "ERROR_NO_LOGON_SERVERS" },
+{ 1312 , "ERROR_NO_SUCH_LOGON_SESSION" },
+{ 1313 , "ERROR_NO_SUCH_PRIVILEGE" },
+{ 1314 , "ERROR_PRIVILEGE_NOT_HELD" },
+{ 1315 , "ERROR_INVALID_ACCOUNT_NAME" },
+{ 1316 , "ERROR_USER_EXISTS" },
+{ 1317 , "ERROR_NO_SUCH_USER" },
+{ 1318 , "ERROR_GROUP_EXISTS" },
+{ 1319 , "ERROR_NO_SUCH_GROUP" },
+{ 1320 , "ERROR_MEMBER_IN_GROUP" },
+{ 1321 , "ERROR_MEMBER_NOT_IN_GROUP" },
+{ 1322 , "ERROR_LAST_ADMIN" },
+{ 1323 , "ERROR_WRONG_PASSWORD" },
+{ 1324 , "ERROR_ILL_FORMED_PASSWORD" },
+{ 1325 , "ERROR_PASSWORD_RESTRICTION" },
+{ 1326 , "ERROR_LOGON_FAILURE" },
+{ 1327 , "ERROR_ACCOUNT_RESTRICTION" },
+{ 1328 , "ERROR_INVALID_LOGON_HOURS" },
+{ 1329 , "ERROR_INVALID_WORKSTATION" },
+{ 1330 , "ERROR_PASSWORD_EXPIRED" },
+{ 1331 , "ERROR_ACCOUNT_DISABLED" },
+{ 1332 , "ERROR_NONE_MAPPED" },
+{ 1333 , "ERROR_TOO_MANY_LUIDS_REQUESTED" },
+{ 1334 , "ERROR_LUIDS_EXHAUSTED" },
+{ 1335 , "ERROR_INVALID_SUB_AUTHORITY" },
+{ 1336 , "ERROR_INVALID_ACL" },
+{ 1337 , "ERROR_INVALID_SID" },
+{ 1338 , "ERROR_INVALID_SECURITY_DESCR" },
+{ 1340 , "ERROR_BAD_INHERITANCE_ACL" },
+{ 1341 , "ERROR_SERVER_DISABLED" },
+{ 1342 , "ERROR_SERVER_NOT_DISABLED" },
+{ 1343 , "ERROR_INVALID_ID_AUTHORITY" },
+{ 1344 , "ERROR_ALLOTTED_SPACE_EXCEEDED" },
+{ 1345 , "ERROR_INVALID_GROUP_ATTRIBUTES" },
+{ 1346 , "ERROR_BAD_IMPERSONATION_LEVEL" },
+{ 1347 , "ERROR_CANT_OPEN_ANONYMOUS" },
+{ 1348 , "ERROR_BAD_VALIDATION_CLASS" },
+{ 1349 , "ERROR_BAD_TOKEN_TYPE" },
+{ 1350 , "ERROR_NO_SECURITY_ON_OBJECT" },
+{ 1351 , "ERROR_CANT_ACCESS_DOMAIN_INFO" },
+{ 1352 , "ERROR_INVALID_SERVER_STATE" },
+{ 1353 , "ERROR_INVALID_DOMAIN_STATE" },
+{ 1354 , "ERROR_INVALID_DOMAIN_ROLE" },
+{ 1355 , "ERROR_NO_SUCH_DOMAIN" },
+{ 1356 , "ERROR_DOMAIN_EXISTS" },
+{ 1357 , "ERROR_DOMAIN_LIMIT_EXCEEDED" },
+{ 1358 , "ERROR_INTERNAL_DB_CORRUPTION" },
+{ 1359 , "ERROR_INTERNAL_ERROR" },
+{ 1360 , "ERROR_GENERIC_NOT_MAPPED" },
+{ 1361 , "ERROR_BAD_DESCRIPTOR_FORMAT" },
+{ 1362 , "ERROR_NOT_LOGON_PROCESS" },
+{ 1363 , "ERROR_LOGON_SESSION_EXISTS" },
+{ 1364 , "ERROR_NO_SUCH_PACKAGE" },
+{ 1365 , "ERROR_BAD_LOGON_SESSION_STATE" },
+{ 1366 , "ERROR_LOGON_SESSION_COLLISION" },
+{ 1367 , "ERROR_INVALID_LOGON_TYPE" },
+{ 1368 , "ERROR_CANNOT_IMPERSONATE" },
+{ 1369 , "ERROR_RXACT_INVALID_STATE" },
+{ 1370 , "ERROR_RXACT_COMMIT_FAILURE" },
+{ 1371 , "ERROR_SPECIAL_ACCOUNT" },
+{ 1372 , "ERROR_SPECIAL_GROUP" },
+{ 1373 , "ERROR_SPECIAL_USER" },
+{ 1374 , "ERROR_MEMBERS_PRIMARY_GROUP" },
+{ 1375 , "ERROR_TOKEN_ALREADY_IN_USE" },
+{ 1376 , "ERROR_NO_SUCH_ALIAS" },
+{ 1377 , "ERROR_MEMBER_NOT_IN_ALIAS" },
+{ 1378 , "ERROR_MEMBER_IN_ALIAS" },
+{ 1379 , "ERROR_ALIAS_EXISTS" },
+{ 1380 , "ERROR_LOGON_NOT_GRANTED" },
+{ 1381 , "ERROR_TOO_MANY_SECRETS" },
+{ 1382 , "ERROR_SECRET_TOO_LONG" },
+{ 1383 , "ERROR_INTERNAL_DB_ERROR" },
+{ 1384 , "ERROR_TOO_MANY_CONTEXT_IDS" },
+{ 1385 , "ERROR_LOGON_TYPE_NOT_GRANTED" },
+{ 1386 , "ERROR_NT_CROSS_ENCRYPTION_REQUIRED" },
+{ 1387 , "ERROR_NO_SUCH_MEMBER" },
+{ 1388 , "ERROR_INVALID_MEMBER" },
+{ 1389 , "ERROR_TOO_MANY_SIDS" },
+{ 1390 , "ERROR_LM_CROSS_ENCRYPTION_REQUIRED" },
+{ 1391 , "ERROR_NO_INHERITANCE" },
+{ 1392 , "ERROR_FILE_CORRUPT" },
+{ 1393 , "ERROR_DISK_CORRUPT" },
+{ 1394 , "ERROR_NO_USER_SESSION_KEY" },
+{ 1395 , "ERROR_LICENSE_QUOTA_EXCEEDED" },
+{ 1400 , "ERROR_INVALID_WINDOW_HANDLE" },
+{ 1401 , "ERROR_INVALID_MENU_HANDLE" },
+{ 1402 , "ERROR_INVALID_CURSOR_HANDLE" },
+{ 1403 , "ERROR_INVALID_ACCEL_HANDLE" },
+{ 1404 , "ERROR_INVALID_HOOK_HANDLE" },
+{ 1405 , "ERROR_INVALID_DWP_HANDLE" },
+{ 1406 , "ERROR_TLW_WITH_WSCHILD" },
+{ 1407 , "ERROR_CANNOT_FIND_WND_CLASS" },
+{ 1408 , "ERROR_WINDOW_OF_OTHER_THREAD" },
+{ 1409 , "ERROR_HOTKEY_ALREADY_REGISTERED" },
+{ 1410 , "ERROR_CLASS_ALREADY_EXISTS" },
+{ 1411 , "ERROR_CLASS_DOES_NOT_EXIST" },
+{ 1412 , "ERROR_CLASS_HAS_WINDOWS" },
+{ 1413 , "ERROR_INVALID_INDEX" },
+{ 1414 , "ERROR_INVALID_ICON_HANDLE" },
+{ 1415 , "ERROR_PRIVATE_DIALOG_INDEX" },
+{ 1416 , "ERROR_LISTBOX_ID_NOT_FOUND" },
+{ 1417 , "ERROR_NO_WILDCARD_CHARACTERS" },
+{ 1418 , "ERROR_CLIPBOARD_NOT_OPEN" },
+{ 1419 , "ERROR_HOTKEY_NOT_REGISTERED" },
+{ 1420 , "ERROR_WINDOW_NOT_DIALOG" },
+{ 1421 , "ERROR_CONTROL_ID_NOT_FOUND" },
+{ 1422 , "ERROR_INVALID_COMBOBOX_MESSAGE" },
+{ 1423 , "ERROR_WINDOW_NOT_COMBOBOX" },
+{ 1424 , "ERROR_INVALID_EDIT_HEIGHT" },
+{ 1425 , "ERROR_DC_NOT_FOUND" },
+{ 1426 , "ERROR_INVALID_HOOK_FILTER" },
+{ 1427 , "ERROR_INVALID_FILTER_PROC" },
+{ 1428 , "ERROR_HOOK_NEEDS_HMOD" },
+{ 1429 , "ERROR_GLOBAL_ONLY_HOOK" },
+{ 1430 , "ERROR_JOURNAL_HOOK_SET" },
+{ 1431 , "ERROR_HOOK_NOT_INSTALLED" },
+{ 1432 , "ERROR_INVALID_LB_MESSAGE" },
+{ 1433 , "ERROR_SETCOUNT_ON_BAD_LB" },
+{ 1434 , "ERROR_LB_WITHOUT_TABSTOPS" },
+{ 1435 , "ERROR_DESTROY_OBJECT_OF_OTHER_THREAD" },
+{ 1436 , "ERROR_CHILD_WINDOW_MENU" },
+{ 1437 , "ERROR_NO_SYSTEM_MENU" },
+{ 1438 , "ERROR_INVALID_MSGBOX_STYLE" },
+{ 1439 , "ERROR_INVALID_SPI_VALUE" },
+{ 1440 , "ERROR_SCREEN_ALREADY_LOCKED" },
+{ 1441 , "ERROR_HWNDS_HAVE_DIFF_PARENT" },
+{ 1442 , "ERROR_NOT_CHILD_WINDOW" },
+{ 1443 , "ERROR_INVALID_GW_COMMAND" },
+{ 1444 , "ERROR_INVALID_THREAD_ID" },
+{ 1445 , "ERROR_NON_MDICHILD_WINDOW" },
+{ 1446 , "ERROR_POPUP_ALREADY_ACTIVE" },
+{ 1447 , "ERROR_NO_SCROLLBARS" },
+{ 1448 , "ERROR_INVALID_SCROLLBAR_RANGE" },
+{ 1449 , "ERROR_INVALID_SHOWWIN_COMMAND" },
+{ 1450 , "ERROR_NO_SYSTEM_RESOURCES" },
+{ 1451 , "ERROR_NONPAGED_SYSTEM_RESOURCES" },
+{ 1452 , "ERROR_PAGED_SYSTEM_RESOURCES" },
+{ 1453 , "ERROR_WORKING_SET_QUOTA" },
+{ 1454 , "ERROR_PAGEFILE_QUOTA" },
+{ 1455 , "ERROR_COMMITMENT_LIMIT" },
+{ 1456 , "ERROR_MENU_ITEM_NOT_FOUND" },
+{ 1500 , "ERROR_EVENTLOG_FILE_CORRUPT" },
+{ 1501 , "ERROR_EVENTLOG_CANT_START" },
+{ 1502 , "ERROR_LOG_FILE_FULL" },
+{ 1503 , "ERROR_EVENTLOG_FILE_CHANGED" },
+{ 1700 , "RPC_S_INVALID_STRING_BINDING" },
+{ 1701 , "RPC_S_WRONG_KIND_OF_BINDING" },
+{ 1702 , "RPC_S_INVALID_BINDING" },
+{ 1703 , "RPC_S_PROTSEQ_NOT_SUPPORTED" },
+{ 1704 , "RPC_S_INVALID_RPC_PROTSEQ" },
+{ 1705 , "RPC_S_INVALID_STRING_UUID" },
+{ 1706 , "RPC_S_INVALID_ENDPOINT_FORMAT" },
+{ 1707 , "RPC_S_INVALID_NET_ADDR" },
+{ 1708 , "RPC_S_NO_ENDPOINT_FOUND" },
+{ 1709 , "RPC_S_INVALID_TIMEOUT" },
+{ 1710 , "RPC_S_OBJECT_NOT_FOUND" },
+{ 1711 , "RPC_S_ALREADY_REGISTERED" },
+{ 1712 , "RPC_S_TYPE_ALREADY_REGISTERED" },
+{ 1713 , "RPC_S_ALREADY_LISTENING" },
+{ 1714 , "RPC_S_NO_PROTSEQS_REGISTERED" },
+{ 1715 , "RPC_S_NOT_LISTENING" },
+{ 1716 , "RPC_S_UNKNOWN_MGR_TYPE" },
+{ 1717 , "RPC_S_UNKNOWN_IF" },
+{ 1718 , "RPC_S_NO_BINDINGS" },
+{ 1719 , "RPC_S_NO_PROTSEQS" },
+{ 1720 , "RPC_S_CANT_CREATE_ENDPOINT" },
+{ 1721 , "RPC_S_OUT_OF_RESOURCES" },
+{ 1722 , "RPC_S_SERVER_UNAVAILABLE" },
+{ 1723 , "RPC_S_SERVER_TOO_BUSY" },
+{ 1724 , "RPC_S_INVALID_NETWORK_OPTIONS" },
+{ 1725 , "RPC_S_NO_CALL_ACTIVE" },
+{ 1726 , "RPC_S_CALL_FAILED" },
+{ 1727 , "RPC_S_CALL_FAILED_DNE" },
+{ 1728 , "RPC_S_PROTOCOL_ERROR" },
+{ 1730 , "RPC_S_UNSUPPORTED_TRANS_SYN" },
+{ 1732 , "RPC_S_UNSUPPORTED_TYPE" },
+{ 1733 , "RPC_S_INVALID_TAG" },
+{ 1734 , "RPC_S_INVALID_BOUND" },
+{ 1735 , "RPC_S_NO_ENTRY_NAME" },
+{ 1736 , "RPC_S_INVALID_NAME_SYNTAX" },
+{ 1737 , "RPC_S_UNSUPPORTED_NAME_SYNTAX" },
+{ 1739 , "RPC_S_UUID_NO_ADDRESS" },
+{ 1740 , "RPC_S_DUPLICATE_ENDPOINT" },
+{ 1741 , "RPC_S_UNKNOWN_AUTHN_TYPE" },
+{ 1742 , "RPC_S_MAX_CALLS_TOO_SMALL" },
+{ 1743 , "RPC_S_STRING_TOO_LONG" },
+{ 1744 , "RPC_S_PROTSEQ_NOT_FOUND" },
+{ 1745 , "RPC_S_PROCNUM_OUT_OF_RANGE" },
+{ 1746 , "RPC_S_BINDING_HAS_NO_AUTH" },
+{ 1747 , "RPC_S_UNKNOWN_AUTHN_SERVICE" },
+{ 1748 , "RPC_S_UNKNOWN_AUTHN_LEVEL" },
+{ 1749 , "RPC_S_INVALID_AUTH_IDENTITY" },
+{ 1750 , "RPC_S_UNKNOWN_AUTHZ_SERVICE" },
+{ 1751 , "EPT_S_INVALID_ENTRY" },
+{ 1752 , "EPT_S_CANT_PERFORM_OP" },
+{ 1753 , "EPT_S_NOT_REGISTERED" },
+{ 1754 , "RPC_S_NOTHING_TO_EXPORT" },
+{ 1755 , "RPC_S_INCOMPLETE_NAME" },
+{ 1756 , "RPC_S_INVALID_VERS_OPTION" },
+{ 1757 , "RPC_S_NO_MORE_MEMBERS" },
+{ 1758 , "RPC_S_NOT_ALL_OBJS_UNEXPORTED" },
+{ 1759 , "RPC_S_INTERFACE_NOT_FOUND" },
+{ 1760 , "RPC_S_ENTRY_ALREADY_EXISTS" },
+{ 1761 , "RPC_S_ENTRY_NOT_FOUND" },
+{ 1762 , "RPC_S_NAME_SERVICE_UNAVAILABLE" },
+{ 1763 , "RPC_S_INVALID_NAF_ID" },
+{ 1764 , "RPC_S_CANNOT_SUPPORT" },
+{ 1765 , "RPC_S_NO_CONTEXT_AVAILABLE" },
+{ 1766 , "RPC_S_INTERNAL_ERROR" },
+{ 1767 , "RPC_S_ZERO_DIVIDE" },
+{ 1768 , "RPC_S_ADDRESS_ERROR" },
+{ 1769 , "RPC_S_FP_DIV_ZERO" },
+{ 1770 , "RPC_S_FP_UNDERFLOW" },
+{ 1771 , "RPC_S_FP_OVERFLOW" },
+{ 1772 , "RPC_X_NO_MORE_ENTRIES" },
+{ 1773 , "RPC_X_SS_CHAR_TRANS_OPEN_FAIL" },
+{ 1774 , "RPC_X_SS_CHAR_TRANS_SHORT_FILE" },
+{ 1775 , "RPC_X_SS_IN_NULL_CONTEXT" },
+{ 1777 , "RPC_X_SS_CONTEXT_DAMAGED" },
+{ 1778 , "RPC_X_SS_HANDLES_MISMATCH" },
+{ 1779 , "RPC_X_SS_CANNOT_GET_CALL_HANDLE" },
+{ 1780 , "RPC_X_NULL_REF_POINTER" },
+{ 1781 , "RPC_X_ENUM_VALUE_OUT_OF_RANGE" },
+{ 1782 , "RPC_X_BYTE_COUNT_TOO_SMALL" },
+{ 1783 , "RPC_X_BAD_STUB_DATA" },
+{ 1784 , "ERROR_INVALID_USER_BUFFER" },
+{ 1785 , "ERROR_UNRECOGNIZED_MEDIA" },
+{ 1786 , "ERROR_NO_TRUST_LSA_SECRET" },
+{ 1787 , "ERROR_NO_TRUST_SAM_ACCOUNT" },
+{ 1788 , "ERROR_TRUSTED_DOMAIN_FAILURE" },
+{ 1789 , "ERROR_TRUSTED_RELATIONSHIP_FAILURE" },
+{ 1790 , "ERROR_TRUST_FAILURE" },
+{ 1791 , "RPC_S_CALL_IN_PROGRESS" },
+{ 1792 , "ERROR_NETLOGON_NOT_STARTED" },
+{ 1793 , "ERROR_ACCOUNT_EXPIRED" },
+{ 1794 , "ERROR_REDIRECTOR_HAS_OPEN_HANDLES" },
+{ 1795 , "ERROR_PRINTER_DRIVER_ALREADY_INSTALLED" },
+{ 1796 , "ERROR_UNKNOWN_PORT" },
+{ 1797 , "ERROR_UNKNOWN_PRINTER_DRIVER" },
+{ 1798 , "ERROR_UNKNOWN_PRINTPROCESSOR" },
+{ 1799 , "ERROR_INVALID_SEPARATOR_FILE" },
+{ 1800 , "ERROR_INVALID_PRIORITY" },
+{ 1801 , "ERROR_INVALID_PRINTER_NAME" },
+{ 1802 , "ERROR_PRINTER_ALREADY_EXISTS" },
+{ 1803 , "ERROR_INVALID_PRINTER_COMMAND" },
+{ 1804 , "ERROR_INVALID_DATATYPE" },
+{ 1805 , "ERROR_INVALID_ENVIRONMENT" },
+{ 1806 , "RPC_S_NO_MORE_BINDINGS" },
+{ 1807 , "ERROR_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT" },
+{ 1808 , "ERROR_NOLOGON_WORKSTATION_TRUST_ACCOUNT" },
+{ 1809 , "ERROR_NOLOGON_SERVER_TRUST_ACCOUNT" },
+{ 1810 , "ERROR_DOMAIN_TRUST_INCONSISTENT" },
+{ 1811 , "ERROR_SERVER_HAS_OPEN_HANDLES" },
+{ 1812 , "ERROR_RESOURCE_DATA_NOT_FOUND" },
+{ 1813 , "ERROR_RESOURCE_TYPE_NOT_FOUND" },
+{ 1814 , "ERROR_RESOURCE_NAME_NOT_FOUND" },
+{ 1815 , "ERROR_RESOURCE_LANG_NOT_FOUND" },
+{ 1816 , "ERROR_NOT_ENOUGH_QUOTA" },
+{ 1817 , "RPC_S_NO_INTERFACES" },
+{ 1818 , "RPC_S_CALL_CANCELLED" },
+{ 1819 , "RPC_S_BINDING_INCOMPLETE" },
+{ 1820 , "RPC_S_COMM_FAILURE" },
+{ 1821 , "RPC_S_UNSUPPORTED_AUTHN_LEVEL" },
+{ 1822 , "RPC_S_NO_PRINC_NAME" },
+{ 1823 , "RPC_S_NOT_RPC_ERROR" },
+{ 1824 , "RPC_S_UUID_LOCAL_ONLY" },
+{ 1825 , "RPC_S_SEC_PKG_ERROR" },
+{ 1826 , "RPC_S_NOT_CANCELLED" },
+{ 1827 , "RPC_X_INVALID_ES_ACTION" },
+{ 1828 , "RPC_X_WRONG_ES_VERSION" },
+{ 1829 , "RPC_X_WRONG_STUB_VERSION" },
+{ 1898 , "RPC_S_GROUP_MEMBER_NOT_FOUND" },
+{ 1899 , "EPT_S_CANT_CREATE" },
+{ 1900 , "RPC_S_INVALID_OBJECT" },
+{ 1901 , "ERROR_INVALID_TIME" },
+{ 1902 , "ERROR_INVALID_FORM_NAME" },
+{ 1903 , "ERROR_INVALID_FORM_SIZE" },
+{ 1904 , "ERROR_ALREADY_WAITING" },
+{ 1905 , "ERROR_PRINTER_DELETED" },
+{ 1906 , "ERROR_INVALID_PRINTER_STATE" },
+{ 1907 , "ERROR_PASSWORD_MUST_CHANGE" },
+{ 1908 , "ERROR_DOMAIN_CONTROLLER_NOT_FOUND" },
+{ 1909 , "ERROR_ACCOUNT_LOCKED_OUT" },
+{ 6118 , "ERROR_NO_BROWSER_SERVERS_FOUND" },
+{ 2000 , "ERROR_INVALID_PIXEL_FORMAT" },
+{ 2001 , "ERROR_BAD_DRIVER" },
+{ 2002 , "ERROR_INVALID_WINDOW_STYLE" },
+{ 2003 , "ERROR_METAFILE_NOT_SUPPORTED" },
+{ 2004 , "ERROR_TRANSFORM_NOT_SUPPORTED" },
+{ 2005 , "ERROR_CLIPPING_NOT_SUPPORTED" },
+{ 3000 , "ERROR_UNKNOWN_PRINT_MONITOR" },
+{ 3001 , "ERROR_PRINTER_DRIVER_IN_USE" },
+{ 3002 , "ERROR_SPOOL_FILE_NOT_FOUND" },
+{ 3003 , "ERROR_SPL_NO_STARTDOC" },
+{ 3004 , "ERROR_SPL_NO_ADDJOB" },
+{ 3005 , "ERROR_PRINT_PROCESSOR_ALREADY_INSTALLED" },
+{ 3006 , "ERROR_PRINT_MONITOR_ALREADY_INSTALLED" },
+{ 4000 , "ERROR_WINS_INTERNAL" },
+{ 4001 , "ERROR_CAN_NOT_DEL_LOCAL_WINS" },
+{ 4002 , "ERROR_STATIC_INIT" },
+{ 4003 , "ERROR_INC_BACKUP" },
+{ 4004 , "ERROR_FULL_BACKUP" },
+{ 4005 , "ERROR_REC_NON_EXISTENT" },
+{ 4006 , "ERROR_RPL_NOT_ALLOWED" },
+{ 10004 , "WSAEINTR" },
+{ 10009 , "WSAEBADF" },
+{ 10013 , "WSAEACCES" },
+{ 10014 , "WSAEFAULT" },
+{ 10022 , "WSAEINVAL" },
+{ 10024 , "WSAEMFILE" },
+{ 10035 , "WSAEWOULDBLOCK" },
+{ 10036 , "WSAEINPROGRESS" },
+{ 10037 , "WSAEALREADY" },
+{ 10038 , "WSAENOTSOCK" },
+{ 10039 , "WSAEDESTADDRREQ" },
+{ 10040 , "WSAEMSGSIZE" },
+{ 10041 , "WSAEPROTOTYPE" },
+{ 10042 , "WSAENOPROTOOPT" },
+{ 10043 , "WSAEPROTONOSUPPORT" },
+{ 10044 , "WSAESOCKTNOSUPPORT" },
+{ 10045 , "WSAEOPNOTSUPP" },
+{ 10046 , "WSAEPFNOSUPPORT" },
+{ 10047 , "WSAEAFNOSUPPORT" },
+{ 10048 , "WSAEADDRINUSE" },
+{ 10049 , "WSAEADDRNOTAVAIL" },
+{ 10050 , "WSAENETDOWN" },
+{ 10051 , "WSAENETUNREACH" },
+{ 10052 , "WSAENETRESET" },
+{ 10053 , "WSAECONNABORTED" },
+{ 10054 , "WSAECONNRESET" },
+{ 10055 , "WSAENOBUFS" },
+{ 10056 , "WSAEISCONN" },
+{ 10057 , "WSAENOTCONN" },
+{ 10058 , "WSAESHUTDOWN" },
+{ 10059 , "WSAETOOMANYREFS" },
+{ 10060 , "WSAETIMEDOUT" },
+{ 10061 , "WSAECONNREFUSED" },
+{ 10062 , "WSAELOOP" },
+{ 10063 , "WSAENAMETOOLONG" },
+{ 10064 , "WSAEHOSTDOWN" },
+{ 10065 , "WSAEHOSTUNREACH" },
+{ 10066 , "WSAENOTEMPTY" },
+{ 10067 , "WSAEPROCLIM" },
+{ 10068 , "WSAEUSERS" },
+{ 10069 , "WSAEDQUOT" },
+{ 10070 , "WSAESTALE" },
+{ 10071 , "WSAEREMOTE" },
+{ 10101 , "WSAEDISCON" },
+{ 10091 , "WSASYSNOTREADY" },
+{ 10092 , "WSAVERNOTSUPPORTED" },
+{ 10093 , "WSANOTINITIALISED" },
+{ 11001 , "WSAHOST_NOT_FOUND" },
+{ 11002 , "WSATRY_AGAIN" },
+{ 11003 , "WSANO_RECOVERY" },
+{ 11004 , "WSANO_DATA" },
+{ 0, NULL }
+};
diff --git a/ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/objndx.h b/ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/objndx.h
new file mode 100644
index 00000000000..ceb6d06b133
--- /dev/null
+++ b/ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/objndx.h
@@ -0,0 +1,29 @@
+/*
+ * $Id$
+ *
+ * Copyright (c) 1994, 1995. Netscape Communications Corporation. All
+ * rights reserved.
+ *
+ * Use of this software is governed by the terms of the license agreement for
+ * the Netscape Communications or Netscape Comemrce Server between the
+ * parties.
+ */
+
+
+/* ------------------------------------------------------------------------ */
+
+
+#ifndef __objndx_h
+#define __objndx_h
+
+/* Define maximum length of object name strings */
+#define OBJNDXNAMLEN 16
+
+/* Functions in objndx.c */
+extern void * objndx_create(int size, void (*freefunc)(void *));
+extern char * objndx_register(void * objndx, void * objptr, char * namebuf);
+extern void * objndx_lookup(void * objndx, char * objname);
+extern void * objndx_remove(void * objndx, char * objname);
+extern void objndx_destroy(void * objndx);
+
+#endif /* __objndx_h */
diff --git a/ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/pblock.h b/ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/pblock.h
new file mode 100644
index 00000000000..4dc1629fcd0
--- /dev/null
+++ b/ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/pblock.h
@@ -0,0 +1,193 @@
+/*
+ * $Id$
+ *
+ * Copyright (c) 1994, 1995. Netscape Communications Corporation. All
+ * rights reserved.
+ *
+ * Use of this software is governed by the terms of the license agreement for
+ * the Netscape Communications or Netscape Comemrce Server between the
+ * parties.
+ */
+
+
+/* ------------------------------------------------------------------------ */
+
+
+/*
+ * pblock.h: Header for Parameter Block handling functions
+ *
+ *
+ * A parameter block is a set of name=value pairs which are generally used
+ * as parameters, but can be anything. They are kept in a hash table for
+ * reasonable speed, but if you are doing any intensive modification or
+ * access of them you should probably make a local copy of each parameter
+ * while working.
+ *
+ * When creating a pblock, you specify the hash table size for that pblock.
+ * You should set this size larger if you know that many items will be in
+ * that pblock, and smaller if only a few will be used or if speed is not
+ * a concern.
+ *
+ * The hashing function is very simple right now, and only looks at the
+ * first character of name.
+ *
+ * Rob McCool
+ *
+ */
+
+#ifndef PBLOCK_H
+#define PBLOCK_H
+
+/*
+ * Requires that the macros MALLOC and STRDUP be set to "safe" versions that
+ * will exit if no memory is available. If not under MCC httpd, define
+ * them to be the real functions and play with fire, or make your own
+ * function.
+ */
+
+#include "../netsite.h"
+
+#include <ctype.h> /* isspace */
+#include <stdio.h> /* sprintf */
+#include <string.h> /* strlen, strcmp */
+
+
+/* ------------------------------ Structures ------------------------------ */
+
+
+typedef struct {
+ char *name,*value;
+} pb_param;
+
+struct pb_entry {
+ pb_param *param;
+ struct pb_entry *next;
+};
+
+typedef struct {
+ int hsize;
+ struct pb_entry **ht;
+} pblock;
+
+
+/* ------------------------------ Prototypes ------------------------------ */
+
+
+/*
+ * param_create creates a parameter with the given name and value. If name
+ * and value are non-NULL, they are copied and placed into the new pb_param
+ * struct.
+ */
+
+pb_param *param_create(char *name, char *value);
+
+/*
+ * param_free frees a given parameter if it's non-NULL, and returns 1 if
+ * p was non-NULL, and 0 if p was NULL.
+ *
+ * Useful for error checking pblock_remove.
+ */
+
+int param_free(pb_param *pp);
+
+/*
+ * pblock_create creates a new pblock with hash table size n.
+ *
+ * It returns the newly allocated pblock.
+ */
+
+pblock *pblock_create(int n);
+
+/*
+ * pblock_free frees the given pblock and any entries inside it.
+ *
+ * If you want to save anything in a pblock, remove its entities with
+ * pblock_remove first and save the pointers you get.
+ */
+
+void pblock_free(pblock *pb);
+
+/*
+ * pblock_find finds the entry with the given name in pblock pb.
+ *
+ * If it is successful, it returns the param block. If not, it returns NULL.
+ */
+
+#define pblock_find(name, pb) (_pblock_fr(name,pb,0))
+
+/*
+ * pblock_findval finds the entry with the given name in pblock pb, and
+ * returns its value, otherwise returns NULL.
+ */
+
+char *pblock_findval(char *name, pblock *pb);
+
+/*
+ * pblock_remove behaves exactly like pblock_find, but removes the given
+ * entry from pb.
+ */
+
+#define pblock_remove(name, pb) (_pblock_fr(name,pb,1))
+
+/*
+ * pblock_nvinsert creates a new parameter with the given name and value
+ * and inserts it into pblock pb. The name and value in the parameter are
+ * also newly allocated. Returns the pb_param it allocated (in case you
+ * need it).
+ *
+ * pblock_nninsert inserts a numerical value.
+ */
+
+pb_param *pblock_nvinsert(char *name, char *value, pblock *pb);
+pb_param *pblock_nninsert(char *name, int value, pblock *pb);
+
+/*
+ * pblock_pinsert inserts a pb_param into a pblock.
+ */
+
+void pblock_pinsert(pb_param *pp, pblock *pb);
+
+/*
+ * pblock_str2pblock scans the given string str for parameter pairs
+ * name=value, or name="value". Any \ must be followed by a literal
+ * character. If a string value is found, with no unescaped = signs, it
+ * will be added with the name 1, 2, 3, etc. depending on whether it was
+ * first, second, third, etc. in the stream (zero doesn't count).
+ *
+ * Returns the number of parameters added to the table, or -1 upon error.
+ */
+
+int pblock_str2pblock(char *str, pblock *pb);
+
+/*
+ * pblock_pblock2str places all of the parameters in the given pblock
+ * into the given string (NULL if it needs creation). It will re-allocate
+ * more space for the string. Each parameter is separated by a space and of
+ * the form name="value"
+ */
+
+char *pblock_pblock2str(pblock *pb, char *str);
+
+/*
+ * pblock_copy copies the entries in the given source pblock to the
+ * destination one. The entries are newly allocated so that the original
+ * pblock may be freed or the new one changed without affecting the other.
+ */
+
+void pblock_copy(pblock *src, pblock *dst);
+
+/*
+ * pblock_pb2env copies the given pblock into the given environment, with
+ * one new env entry for each name/value pair in the pblock.
+ */
+
+char **pblock_pb2env(pblock *pb, char **env);
+
+
+/* --------------------------- Internal things ---------------------------- */
+
+
+pb_param *_pblock_fr(char *name, pblock *pb, int remove);
+
+
+#endif
diff --git a/ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/sem.h b/ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/sem.h
new file mode 100644
index 00000000000..da88b41da15
--- /dev/null
+++ b/ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/sem.h
@@ -0,0 +1,70 @@
+/*
+ * $Id$
+ *
+ * Copyright (c) 1994, 1995. Netscape Communications Corporation. All
+ * rights reserved.
+ *
+ * Use of this software is governed by the terms of the license agreement for
+ * the Netscape Communications or Netscape Comemrce Server between the
+ * parties.
+ */
+
+
+/* ------------------------------------------------------------------------ */
+
+
+/*
+ * sem.h: Attempt to provide multi-process semaphores across platforms
+ *
+ * Rob McCool
+ */
+
+
+#ifndef SEM_H
+#define SEM_H
+
+#include "systems.h"
+
+
+/* All of the implementations currently use int as the semaphore type */
+#ifdef SEM_WIN32
+typedef HANDLE SEMAPHORE;
+#define SEM_ERROR NULL
+/* That oughta hold them (I hope) */
+#define SEM_MAXVALUE 32767
+
+#else /* ! SEM_WIN32 */
+typedef int SEMAPHORE;
+#define SEM_ERROR -1
+#endif /* SEM_WIN32 */
+
+/*
+ * sem_init creates a semaphore using the given name and unique
+ * identification number. filename should be a file accessible to the
+ * process. Returns SEM_ERROR on error.
+ */
+
+SEMAPHORE sem_init(char *name, int number);
+
+/*
+ * sem_terminate de-allocates the given semaphore.
+ */
+
+void sem_terminate(SEMAPHORE id);
+
+/*
+ * sem_grab attempts to gain exclusive access to the given semaphore. If
+ * it can't get it, the caller will block. Returns -1 on error.
+ */
+
+int sem_grab(SEMAPHORE id);
+
+/*
+ * sem_release releases this process's exclusive control over the given
+ * semaphore. Returns -1 on error.
+ */
+
+int sem_release(SEMAPHORE id);
+
+
+#endif
diff --git a/ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/session.h b/ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/session.h
new file mode 100644
index 00000000000..3104cb0ca65
--- /dev/null
+++ b/ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/session.h
@@ -0,0 +1,85 @@
+/*
+ * $Id$
+ *
+ * Copyright (c) 1994, 1995. Netscape Communications Corporation. All
+ * rights reserved.
+ *
+ * Use of this software is governed by the terms of the license agreement for
+ * the Netscape Communications or Netscape Comemrce Server between the
+ * parties.
+ */
+
+
+/* ------------------------------------------------------------------------ */
+
+
+/*
+ * session.h: Deals with virtual sessions
+ *
+ * A session is the time between when a client connects and when it
+ * disconnects. Several requests may be handled in one session.
+ *
+ * Rob McCool
+ */
+
+
+#ifndef SESSION_H
+#define SESSION_H
+
+
+#include "../netsite.h" /* MALLOC etc */
+#include "net.h" /* dns-related stuff */
+#include "buffer.h" /* netbuf */
+
+
+/* ------------------------------ Structures ------------------------------ */
+
+
+
+#define SESSION_HASHSIZE 5
+
+
+typedef struct {
+ /* Client-specific information */
+ pblock *client;
+
+ SYS_NETFD csd;
+ netbuf *inbuf;
+
+ struct in_addr iaddr;
+} Session;
+
+
+/* ------------------------------ Prototypes ------------------------------ */
+
+
+/*
+ * session_create creates a new request structure for the client with the
+ * given socket descriptor and sockaddr.
+ */
+
+Session *session_create(SYS_NETFD csd, struct sockaddr_in *sac);
+
+/*
+ * session_free frees the given session
+ */
+
+void session_free(Session *sn);
+
+/*
+ * session_dns returns the DNS hostname of the client of this session,
+ * and inserts it into the client pblock. Returns NULL if unavailable.
+ */
+
+#define session_dns(sn) session_dns_lookup(sn, 0)
+
+/*
+ * session_maxdns looks up a hostname from an IP address, and then verifies
+ * that the host is really who they claim to be.
+ */
+
+#define session_maxdns(sn) session_dns_lookup(sn, 1)
+
+char *session_dns_lookup(Session *sn, int verify);
+
+#endif
diff --git a/ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/shexp.h b/ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/shexp.h
new file mode 100644
index 00000000000..887f96ae81e
--- /dev/null
+++ b/ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/shexp.h
@@ -0,0 +1,97 @@
+/*
+ * $Id$
+ *
+ * Copyright (c) 1994, 1995. Netscape Communications Corporation. All
+ * rights reserved.
+ *
+ * Use of this software is governed by the terms of the license agreement for
+ * the Netscape Communications or Netscape Comemrce Server between the
+ * parties.
+ */
+
+
+/* ------------------------------------------------------------------------ */
+
+
+/*
+ * shexp.h: Defines and prototypes for shell exp. match routines
+ *
+ *
+ * This routine will match a string with a shell expression. The expressions
+ * accepted are based loosely on the expressions accepted by zsh.
+ *
+ * o * matches anything
+ * o ? matches one character
+ * o \ will escape a special character
+ * o $ matches the end of the string
+ * o [abc] matches one occurence of a, b, or c. The only character that needs
+ * to be escaped in this is ], all others are not special.
+ * o [a-z] matches any character between a and z
+ * o [^az] matches any character except a or z
+ * o ~ followed by another shell expression will remove any pattern
+ * matching the shell expression from the match list
+ * o (foo|bar) will match either the substring foo, or the substring bar.
+ * These can be shell expressions as well.
+ *
+ * The public interface to these routines is documented below.
+ *
+ * Rob McCool
+ *
+ */
+
+#ifndef SHEXP_H
+#define SHEXP_H
+
+/*
+ * Requires that the macro MALLOC be set to a "safe" malloc that will
+ * exit if no memory is available. If not under MCC httpd, define MALLOC
+ * to be the real malloc and play with fire, or make your own function.
+ */
+
+#include "../netsite.h"
+
+#include <ctype.h> /* isalnum */
+#include <string.h> /* strlen */
+
+
+
+/* --------------------------- Public routines ---------------------------- */
+
+
+/*
+ * shexp_valid takes a shell expression exp as input. It returns:
+ *
+ * NON_SXP if exp is a standard string
+ * INVALID_SXP if exp is a shell expression, but invalid
+ * VALID_SXP if exp is a valid shell expression
+ */
+
+#define NON_SXP -1
+#define INVALID_SXP -2
+#define VALID_SXP 1
+
+int shexp_valid(char *exp);
+
+/*
+ * shexp_match
+ *
+ * Takes a prevalidated shell expression exp, and a string str.
+ *
+ * Returns 0 on match and 1 on non-match.
+ */
+
+int shexp_match(char *str, char *exp);
+
+
+/*
+ * shexp_cmp
+ *
+ * Same as above, but validates the exp first. 0 on match, 1 on non-match,
+ * -1 on invalid exp. shexp_casecmp does the same thing but is case
+ * insensitive.
+ */
+
+int shexp_cmp(char *str, char *exp);
+int shexp_casecmp(char *str, char *exp);
+
+#endif
diff --git a/ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/shmem.h b/ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/shmem.h
new file mode 100644
index 00000000000..0692a051c78
--- /dev/null
+++ b/ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/shmem.h
@@ -0,0 +1,84 @@
+/*
+ * $Id$
+ *
+ * Copyright (c) 1994, 1995. Netscape Communications Corporation. All
+ * rights reserved.
+ *
+ * Use of this software is governed by the terms of the license agreement for
+ * the Netscape Communications or Netscape Comemrce Server between the
+ * parties.
+ */
+
+
+/* ------------------------------------------------------------------------ */
+
+
+/*
+ * shmem.h: Portable abstraction for memory shared among a server's workers
+ *
+ * Rob McCool
+ */
+
+
+#ifndef _SHMEM_H
+#define _SHMEM_H
+
+#include "netsite.h"
+#include "systems.h"
+
+
+/* --------------------------- Data structures ---------------------------- */
+
+
+#if defined (SHMEM_UNIX_MMAP) || defined (SHMEM_WIN32_MMAP)
+#include "file.h" /* SYS_FILE */
+
+typedef struct {
+ void *data; /* the data */
+#ifdef SHMEM_WIN32_MMAP
+ HANDLE fdmap;
+#endif /* SHMEM_WIN32_MMAP */
+ int size; /* the maximum length of the data */
+
+ char *name; /* internal use: filename to unlink if exposed */
+ SYS_FILE fd; /* internal use: file descriptor for region */
+} shmem_s;
+
+
+/* ------------------------------ Prototypes ------------------------------ */
+
+
+/*
+ * shmem_alloc allocates a region of shared memory of the given size, using
+ * the given name to avoid conflicts between multiple regions within the
+ * program. The region will not be automatically grown if its boundaries
+ * are over-run, use shmem_realloc for that.
+ *
+ * If expose is non-zero and the underlying system supports it, the
+ * file used to create the shared region will be visible to other processes
+ * running on the system.
+ *
+ * name should be unique to the program which calls this routine, otherwise
+ * conflicts will arise.
+ *
+ * Returns a new shared memory region, with the data element being a
+ * pointer to the shared memory. This function must be called before any
+ * daemon workers are spawned, in order for the handle to the shared region
+ * to be inherited by the children.
+ *
+ * Because of the requirement that the region must be inherited by the
+ * children, the region cannot be re-allocated with a larger size when
+ * necessary.
+ */
+shmem_s *shmem_alloc(char *name, int size, int expose);
+
+
+/*
+ * shmem_free de-allocates the specified region of shared memory.
+ */
+void shmem_free(shmem_s *region);
+
+#endif /* SHMEM_UNIX_MMAP || SHMEM_WIN32_MMAP */
+
+
+#endif
diff --git a/ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/systems.h b/ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/systems.h
new file mode 100644
index 00000000000..193bc63c034
--- /dev/null
+++ b/ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/systems.h
@@ -0,0 +1,222 @@
+/*
+ * $Id$
+ *
+ * Copyright (c) 1994, 1995. Netscape Communications Corporation. All
+ * rights reserved.
+ *
+ * Use of this software is governed by the terms of the license agreement for
+ * the Netscape Communications or Netscape Comemrce Server between the
+ * parties.
+ */
+
+
+/* ------------------------------------------------------------------------ */
+
+
+/*
+ * systems.h: Lists of defines for systems
+ *
+ * This sets what general flavor the system is (UNIX, etc.),
+ * and defines what extra functions your particular system needs.
+ */
+
+
+#ifndef SYSTEMS_H
+#define SYSTEMS_H
+
+#include <string.h>
+
+
+#define DAEMON_ANY
+#define DAEMON_LISTEN_SIZE 128
+#ifndef MCC_ADMSERV
+#define DAEMON_STATS
+#endif
+
+/* Linux is not currently supported */
+#ifdef linux
+
+#define FILE_UNIX
+#undef FILE_STDIO
+#undef DAEMON_UNIX_FORK
+#undef DAEMON_UNIX_POOL
+#define DAEMON_UNIX_MOBRULE
+#undef DAEMON_STATS
+#define BSD_FLOCK
+#define BSD_RLIMIT
+#define NET_SOCKETS
+#define FILE_UNIX_MMAP
+#define FILE_MMAP_FLAGS (MAP_FILE | MAP_PRIVATE)
+#undef BSD_SIGNALS
+
+#undef NEED_CRYPT_PROTO
+#undef AUTH_DBM
+#define SEM_FLOCK
+
+
+#define ZERO(ptr,len) memset(ptr,0,len)
+
+#elif defined(BSDI)
+
+#define FILE_UNIX
+#define DAEMON_UNIX_MOBRULE
+#define BSD_FLOCK
+#define BSD_RLIMIT
+#define NET_SOCKETS
+#define FILE_UNIX_MMAP
+#define FILE_MMAP_FLAGS (MAP_FILE | MAP_PRIVATE)
+#define BSD_SIGNALS
+#define BSD_TIME
+#define BSD_MAIL
+#undef NEED_CRYPT_PROTO
+#define AUTH_DBM
+#define SEM_FLOCK
+
+#define ZERO(ptr,len) memset(ptr,0,len)
+
+#elif defined(SOLARIS)
+
+#define FILE_UNIX
+#undef FILE_STDIO
+#define DAEMON_UNIX_MOBRULE
+#define DAEMON_NEEDS_SEMAPHORE
+#define NET_SOCKETS
+#define FILE_UNIX_MMAP
+#define FILE_MMAP_FLAGS MAP_PRIVATE
+#undef BSD_SIGNALS
+#define BSD_RLIMIT
+#define NEED_CRYPT_H
+#define AUTH_DBM
+/* The Solaris routines return ENOSPC when too many semaphores are SEM_UNDO. */
+#define SEM_FLOCK
+#define DLL_CAPABLE
+#define DLL_DLOPEN
+
+#define ZERO(ptr,len) memset(ptr,0,len)
+
+#elif defined(SUNOS4)
+
+#define BSD_SIGNALS
+#define BSD_TIME
+#define BSD_MAIL
+#define BSD_FLOCK
+#define BSD_RLIMIT
+#define FILE_UNIX
+#undef FILE_STDIO
+#define DAEMON_UNIX_MOBRULE
+#define NET_SOCKETS
+#define FILE_UNIX_MMAP
+#define FILE_MMAP_FLAGS MAP_PRIVATE
+#undef NEED_CRYPT_H
+#define NEED_CRYPT_PROTO
+#define AUTH_DBM
+#define SEM_FLOCK
+#define ZERO(ptr,len) memset(ptr,0,len)
+#define DLL_CAPABLE
+#define DLL_DLOPEN
+
+#elif defined(OSF1)
+
+#undef BSD_SIGNALS
+#define BSD_TIME
+#define BSD_FLOCK
+#define BSD_RLIMIT
+#define FILE_UNIX
+#undef FILE_STDIO
+#define DAEMON_UNIX_MOBRULE
+#define DAEMON_NEEDS_SEMAPHORE
+#define NET_SOCKETS
+#define FILE_UNIX_MMAP
+#define FILE_MMAP_FLAGS MAP_PRIVATE
+#define AUTH_DBM
+#define SEM_FLOCK
+#define ZERO(ptr,len) memset(ptr,0,len)
+#define DLL_CAPABLE
+#define DLL_DLOPEN
+
+#elif defined(AIX)
+
+#define FILE_UNIX
+#undef FILE_STDIO
+#undef DAEMON_UNIX_FORK
+#undef DAEMON_UNIX_POOL
+#define DAEMON_UNIX_MOBRULE
+#define DAEMON_NEEDS_SEMAPHORE
+#define NET_SOCKETS
+#define FILE_UNIX_MMAP
+#define FILE_MMAP_FLAGS MAP_PRIVATE
+#undef BSD_SIGNALS
+#define BSD_RLIMIT
+#undef NEED_CRYPT_H
+#define AUTH_DBM
+#define SEM_FLOCK
+#define ZERO(ptr,len) memset(ptr,0,len)
+#define DLL_CAPABLE
+#define DLL_DLOPEN
+
+#elif defined(HPUX)
+
+#define FILE_UNIX
+#undef FILE_STDIO
+#define DAEMON_UNIX_MOBRULE
+#define DAEMON_NEEDS_SEMAPHORE
+#define NET_SOCKETS
+#define FILE_UNIX_MMAP
+#define FILE_MMAP_FLAGS MAP_PRIVATE
+#undef BSD_SIGNALS
+#undef BSD_RLIMIT
+#undef NEED_CRYPT_H
+#define AUTH_DBM
+#define SEM_FLOCK
+#define ZERO(ptr,len) memset(ptr,0,len)
+#define DLL_CAPABLE
+#define DLL_HPSHL
+
+#elif defined (IRIX)
+
+#define FILE_UNIX
+#undef FILE_STDIO
+#undef DAEMON_UNIX_FORK
+#undef DAEMON_UNIX_POOL
+#define DAEMON_UNIX_MOBRULE
+#define DLL_CAPABLE
+#define DLL_DLOPEN
+#define NET_SOCKETS
+#define FILE_UNIX_MMAP
+#define FILE_MMAP_FLAGS MAP_PRIVATE
+#undef BSD_SIGNALS
+#define BSD_RLIMIT
+#define NEED_CRYPT_H
+#define AUTH_DBM
+#define SEM_FLOCK
+#define ZERO(ptr,len) memset(ptr,0,len)
+
+#else /* Windows NT */
+
+#include <wtypes.h>
+#include <winbase.h>
+
+typedef void* PASSWD;
+
+#define FILE_WIN32
+#define NET_SOCKETS
+#define NET_WINSOCK
+#define DAEMON_WIN32
+#undef AUTH_DBM
+#define ZERO(ptr, len) ZeroMemory(ptr, len)
+#define SEM_WIN32
+#define DLL_CAPABLE
+#define DLL_WIN32
+#define NO_NODELOCK /* aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagh */
+
+/* The stat call under NT doesn't define these macros */
+#define S_ISDIR(mode) ((mode&S_IFMT) == S_IFDIR)
+#define S_ISREG(mode) ((mode&S_IFMT) == S_IFREG)
+
+#define strcasecmp util_strcasecmp
+#define strncasecmp util_strncasecmp
+int util_strcasecmp(const char *s1, const char *s2);
+int util_strncasecmp(const char *s1, const char *s2, int n);
+#endif /* Windows NT */
+
+#endif
diff --git a/ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/systhr.h b/ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/systhr.h
new file mode 100644
index 00000000000..e53cc385049
--- /dev/null
+++ b/ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/systhr.h
@@ -0,0 +1,130 @@
+/*
+ * $Id$
+ *
+ * Copyright (c) 1994, 1995. Netscape Communications Corporation. All
+ * rights reserved.
+ *
+ * Use of this software is governed by the terms of the license agreement for
+ * the Netscape Communications or Netscape Comemrce Server between the
+ * parties.
+ */
+
+
+/* ------------------------------------------------------------------------ */
+
+
+/*
+ * systhr.h: Abstracted threading mechanisms
+ *
+ * Rob McCool
+ */
+
+#ifndef _SYSTHR_H
+#define _SYSTHR_H
+
+#include "netsite.h"
+#include "systems.h"
+
+#ifdef THREAD_ANY
+
+#ifdef USE_NSPR
+#include <nspr/prthread.h>
+#include <nspr/prglobal.h>
+
+typedef PRThread* SYS_THREAD;
+#endif
+
+#ifdef THREAD_WIN32
+#include <nspr/prthread.h>
+#include <nspr/prglobal.h>
+#include <process.h>
+typedef struct {
+ HANDLE hand;
+ DWORD id;
+} sys_thread_s;
+typedef sys_thread_s *SYS_THREAD;
+#endif
+
+/*
+ * systhread_start creates a thread with the given priority, will allocate
+ * a stack of stksz bytes, and calls fn with arg as its argument. stksz
+ * of zero will allocate a default stack size.
+ *
+ * XXX Priorities are system dependent
+ */
+
+SYS_THREAD systhread_start(int prio, int stksz, void (*fn)(void *), void *arg);
+
+/*
+ * systhread_current returns a pointer to the current thread.
+ */
+#ifdef USE_NSPR
+#define systhread_current() PR_CurrentThread()
+#elif defined(THREAD_WIN32)
+#define systhread_current() GetCurrentThreadId()
+#endif
+
+/*
+ * systhread_attach makes an existing thread an NSPR thread. Currently this
+ * is used only in NT.
+ */
+
+SYS_THREAD systhread_attach();
+
+/*
+ * systhread_terminate terminates the thread that is passed in.
+ */
+void systhread_terminate(SYS_THREAD thr);
+
+
+/*
+ * systhread_sleep puts the calling thread to sleep for the given number
+ * of milliseconds.
+ */
+void systhread_sleep(int milliseconds);
+
+/*
+ * systhread_init initializes the threading system. name is a name for the
+ * program for debugging.
+ */
+void systhread_init(char *name);
+
+/*
+ * systhread_timerset starts or re-sets the interrupt timer for a thread
+ * system. This should be considered a suggestion as most systems don't allow
+ * the timer interval to be changed.
+ */
+#ifdef THREAD_NSPR_USER
+#define systhread_timerset(usec) PR_StartEvents(usec)
+
+#elif defined(USE_NSPR)
+#define systhread_timerset(usec) (void)(usec)
+
+#elif defined(THREAD_WIN32)
+#define systhread_timerset(usec) (void)(usec)
+#endif
+
+
+/*
+ * newkey allocates a new integer id for thread-private data. Use this
+ * key to identify a variable which you want to appear differently
+ * between threads, and then use setdata to associate a value with this
+ * key for each thread.
+ */
+int systhread_newkey(void);
+
+/*
+ * Get data that has been previously associated with key in this thread.
+ * Returns NULL if setkey has not been called with this key by this
+ * thread previously, or the data that was previously used with setkey
+ * by this thread with this key.
+ */
+void *systhread_getdata(int key);
+
+/*
+ * Associate data with the given key number in this thread.
+ */
+void systhread_setdata(int key, void *data);
+
+#endif
+#endif
diff --git a/ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/util.h b/ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/util.h
new file mode 100644
index 00000000000..f710ffc2530
--- /dev/null
+++ b/ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/util.h
@@ -0,0 +1,205 @@
+/*
+ * $Id$
+ *
+ * Copyright (c) 1994, 1995. Netscape Communications Corporation. All
+ * rights reserved.
+ *
+ * Use of this software is governed by the terms of the license agreement for
+ * the Netscape Communications or Netscape Comemrce Server between the
+ * parties.
+ */
+
+
+/* ------------------------------------------------------------------------ */
+
+
+/*
+ * util.h: A hodge podge of utility functions and standard functions which
+ * are unavailable on certain systems
+ *
+ * Rob McCool
+ */
+
+
+#ifndef HTTPD_UTIL_H
+#define HTTPD_UTIL_H
+
+#include "buffer.h" /* filebuf for getline */
+
+#include <time.h> /* struct tm */
+
+
+/* ------------------------------ Prototypes ------------------------------ */
+
+
+/*
+ * getline scans in buf until it finds a LF or CRLF, storing the string in
+ * l. It will terminate the string and return:
+ *
+ * 0 when done, with the scanned line (minus CR or LF) in l
+ * 1 upon EOF, with the scanned line (minus CR or LF) in l
+ * -1 on error with the error description in l (uses lineno for information)
+ */
+
+int util_getline(filebuf *buf, int lineno, int maxlen, char *l);
+
+
+/*
+ * can_exec returns 1 if you can execute the file described by finfo, and
+ * 0 if you can't.
+ */
+
+#ifdef XP_UNIX
+#include <sys/stat.h>
+#include <sys/types.h>
+
+int util_can_exec(struct stat *finfo, uid_t uid, gid_t gid);
+
+#endif /* XP_UNIX */
+/*
+ * env_create creates a new environment with the given env, with n new
+ * entries, and places the current position that you should add your
+ * entries with at pos.
+ *
+ * If env is NULL, it will allocate a new one. If not, it will reallocate
+ * that one.
+ */
+
+char **util_env_create(char **env, int n, int *pos);
+
+/*
+ * util_env_str allocates a string from the given name and value and
+ * returns it. It does not check for things like = signs in name.
+ */
+
+char *util_env_str(char *name, char *value);
+
+/*
+ * env_replace replaces the occurrence of the given variable with the
+ * value you give.
+ */
+
+void util_env_replace(char **env, char *name, char *value);
+
+/*
+ * util_env_free frees an environment.
+ */
+
+void util_env_free(char **env);
+
+/*
+ * util_env_find looks through env for the named string. Returns the
+ * corresponding value if the named string is found, or NULL if not.
+ */
+char *util_env_find(char **env, char *name);
+
+
+/*
+ * hostname gets the local hostname. Returns NULL if it can't find a FQDN.
+ * You are free to realloc or free this string.
+ */
+
+char *util_hostname(void);
+
+
+/*
+ * chdir2path changes the current directory to the one that the file
+ * path is in. path should point to a file. Caveat: path must be a writable
+ * string. It won't get modified permanently.
+ */
+
+int util_chdir2path(char *path);
+
+/*
+ * is_mozilla checks if the given user-agent is mozilla, of at least
+ * the given major and minor revisions. These are strings to avoid
+ * ambiguities like 1.56 > 1.5
+ */
+
+int util_is_mozilla(char *ua, char *major, char *minor);
+
+/*
+ * is_url will return 1 if the given string seems to be a URL, or will
+ * return 0 otherwise.
+ *
+ * Because of stupid news URLs, this will return 1 if the string has
+ * all alphabetic characters up to the first colon and will not check for
+ * the double slash.
+ */
+
+int util_is_url(char *url);
+
+/*
+ * util_later_than checks the date in the string ims, and if that date is
+ * later than or equal to the one in the tm struct lms, then it returns 1.
+ *
+ * Handles RFC 822, 850, and ctime formats.
+ */
+
+int util_later_than(struct tm *lms, char *ims);
+
+
+/*
+ * util_uri_is_evil returns 1 if a URL has ../ or // in it.
+ */
+int util_uri_is_evil(char *t);
+
+/*
+ * util_uri_parse gets rid of /../, /./, and //.
+ *
+ * Assumes that either the string starts with a /, or the string will
+ * not .. right off of its beginning. As such, ../foo.gif will
+ * not be changed, although /../foo.gif will become /foo.gif.
+ */
+
+void util_uri_parse(char *uri);
+
+/*
+ * util_uri_unescape unescapes the given URI in place (% conversions only).
+ */
+
+void util_uri_unescape(char *s);
+
+/*
+ * util_uri_escape escapes any nasty chars in s and copies the string into d.
+ * If d is NULL, it will allocate and return a properly sized string.
+ * Warning: does not check bounds on a given d.
+ *
+ * util_url_escape does the same thing but does it for a url, i.e. ?:+ is
+ * not escaped.
+ */
+
+char *util_uri_escape(char *d, char *s);
+char *util_url_escape(char *d, char *s);
+
+/*
+ * util_sh_escape places a \ in front of any shell-special characters.
+ * Returns a newly-allocated copy of the string.
+ */
+
+char *util_sh_escape(char *s);
+
+/*
+ * util_itoa converts the given integer to a string into a.
+ */
+
+int util_itoa(int i, char *a);
+
+/*
+ * util_vsprintf and util_sprintf are simplified clones of the System V
+ * vsprintf and sprintf routines.
+ *
+ * Returns the number of characters printed. Only handles %d and %s,
+ * does not handle any width or precision.
+ */
+
+#include <stdarg.h>
+
+int util_vsprintf(char *s, register char *fmt, va_list args);
+int util_sprintf(char *s, char *fmt, ...);
+
+/* These routines perform bounds checks. */
+int util_vsnprintf(char *s, int n, register char *fmt, va_list args);
+int util_snprintf(char *s, int n, char *fmt, ...);
+
+#endif