summaryrefslogtreecommitdiffstats
path: root/ldap/admin/include
diff options
context:
space:
mode:
Diffstat (limited to 'ldap/admin/include')
-rw-r--r--ldap/admin/include/Makefile39
-rw-r--r--ldap/admin/include/dsalib.h450
-rw-r--r--ldap/admin/include/dsalib_pw.h17
-rw-r--r--ldap/admin/include/dsalib_schema.h255
-rw-r--r--ldap/admin/include/nterrors.h728
5 files changed, 1489 insertions, 0 deletions
diff --git a/ldap/admin/include/Makefile b/ldap/admin/include/Makefile
new file mode 100644
index 00000000..0b45ede0
--- /dev/null
+++ b/ldap/admin/include/Makefile
@@ -0,0 +1,39 @@
+#
+# BEGIN COPYRIGHT BLOCK
+# Copyright 2001 Sun Microsystems, Inc.
+# Portions copyright 1999, 2001-2003 Netscape Communications Corporation.
+# All rights reserved.
+# END COPYRIGHT BLOCK
+#
+#
+# GNU Makefile for Directory Server Admin include directory.
+#
+
+MCOM_ROOT = ../../../..
+LDAP_SRC = ../..
+
+NOSTDCLEAN=true # don't let nsconfig.mk define target clean
+
+include $(MCOM_ROOT)/ldapserver/nsdefs.mk
+include $(MCOM_ROOT)/ldapserver/nsconfig.mk
+include $(LDAP_SRC)/nsldap.mk
+
+HDRDEST=$(LDAP_ADMROOT)/include
+
+HEADERS=dsalib.h dsalib_pw.h
+BINS=$(addprefix $(HDRDEST)/,$(HEADERS))
+
+all: $(HDRDEST) $(BINS)
+
+$(HDRDEST):
+ $(MKDIR) $(HDRDEST)
+
+strip:
+depend:
+
+clean:
+ -$(RM) $(BINS)
+
+$(HDRDEST)/%.h: %.h
+ -@$(RM) $@
+ $(CP) $< $@
diff --git a/ldap/admin/include/dsalib.h b/ldap/admin/include/dsalib.h
new file mode 100644
index 00000000..c00f6cb0
--- /dev/null
+++ b/ldap/admin/include/dsalib.h
@@ -0,0 +1,450 @@
+/** BEGIN COPYRIGHT BLOCK
+ * Copyright 2001 Sun Microsystems, Inc.
+ * Portions copyright 1999, 2001-2003 Netscape Communications Corporation.
+ * All rights reserved.
+ * END COPYRIGHT BLOCK **/
+
+#ifndef __dsalib_h
+#define __dsalib_h
+
+#include <stdio.h>
+#include <time.h>
+#include <stdarg.h>
+#ifdef HPUX
+#include <limits.h> /* for PATH_MAX */
+#endif
+
+/* error types */
+#define DS_FILE_ERROR 0
+#define DS_MEMORY_ERROR 1
+#define DS_SYSTEM_ERROR 2
+#define DS_INCORRECT_USAGE 3
+#define DS_ELEM_MISSING 4
+#define DS_REGISTRY_DATABASE_ERROR 5
+#define DS_NETWORK_ERROR 6
+#define DS_GENERAL_FAILURE 7
+#define DS_WARNING 8
+
+/* The upper bound on error types */
+#define DS_MAX_ERROR 9
+
+/* The default error type (in case something goes wrong */
+#define DS_DEFAULT_ERROR 3
+
+#ifndef BIG_LINE
+#define BIG_LINE 1024
+#endif
+#ifndef PATH_MAX
+#if defined( _WIN32 )
+#define PATH_MAX _MAX_PATH
+#else
+#define PATH_MAX 256
+#endif /* _WIN32 */
+#endif /* PATH_MAX */
+#ifndef HTML_ERRCOLOR
+#define HTML_ERRCOLOR "#AA0000"
+#endif
+#ifndef CONTENT_NAME
+#define CONTENT_NAME "content"
+#endif
+
+#ifdef XP_UNIX
+
+#define FILE_PATHSEP '/'
+#define FILE_PATHSEPP "/"
+#define FILE_PARENT "../"
+#define WSACleanup()
+
+#elif defined(XP_WIN32)
+
+#define FILE_PATHSEP '/'
+#define FILE_PATHSEPP "\\\\"
+#define FILE_PARENT "..\\"
+
+#endif /* XP_WIN32 */
+
+#define PATH_SIZE 1024
+#define ERR_SIZE 8192
+
+/*
+ NT doesn't strictly need these, but the libadmin API which is emulated
+ below uses them.
+ */
+#define NEWSCRIPT_MODE 0755
+#define NEWFILE_MODE 0644
+#define NEWDIR_MODE 0755
+
+#if defined( XP_WIN32 )
+#define DS_EXPORT_SYMBOL __declspec( dllexport )
+#else
+#define DS_EXPORT_SYMBOL
+#endif
+
+#if defined( XP_WIN32 )
+#define ENQUOTE "\""
+#else
+#define ENQUOTE ""
+#endif
+
+#ifndef FILE_SEP
+#ifdef XP_WIN32
+ #define FILE_SEP '\\'
+#else
+ #define FILE_SEP '/'
+#endif
+#endif
+
+#if defined( XP_WIN32 )
+ #define PATH_FOR_PLATFORM(_path) ds_unixtodospath(_path)
+#else
+ #define PATH_FOR_PLATFORM(_path)
+#endif
+
+#define START_SCRIPT "start-slapd"
+#define RESTART_SCRIPT "restart-slapd"
+#define STOP_SCRIPT "stop-slapd"
+
+#if defined( XP_WIN32 )
+#define SLAPD_NAME "slapd"
+#else
+#define SLAPD_NAME "ns-slapd"
+#endif
+
+#define MOCHA_NAME "JavaScript"
+
+/*
+ * Return values from ds_get_updown_status()
+ */
+#define DS_SERVER_UP 1
+#define DS_SERVER_DOWN 0
+#define DS_SERVER_UNKNOWN -1
+/*
+ * Return values from ds_bring_up_server()
+ */
+#define DS_SERVER_ALREADY_UP -2
+#define DS_SERVER_ALREADY_DOWN -3
+#define DS_SERVER_PORT_IN_USE -4
+#define DS_SERVER_MAX_SEMAPHORES -5
+#define DS_SERVER_CORRUPTED_DB -6
+#define DS_SERVER_NO_RESOURCES -7
+#define DS_SERVER_COULD_NOT_START -8
+
+/*
+ * Other return values
+ */
+#define DS_UNKNOWN_ERROR -1
+#define DS_NO_SERVER_ROOT -10
+#define DS_CANNOT_EXEC -11
+#define DS_CANNOT_OPEN_STAT_FILE -12
+#define DS_NULL_PARAMETER -13
+#define DS_SERVER_MUST_BE_DOWN -14
+#define DS_CANNOT_OPEN_BACKUP_FILE -15
+#define DS_NOT_A_DIRECTORY -16
+#define DS_CANNOT_CREATE_DIRECTORY -17
+#define DS_CANNOT_OPEN_LDIF_FILE -18
+#define DS_IS_A_DIRECTORY -19
+#define DS_CANNOT_CREATE_FILE -20
+#define DS_UNDEFINED_VARIABLE -21
+#define DS_NO_SUCH_FILE -22
+#define DS_CANNOT_DELETE_FILE -23
+#define DS_UNKNOWN_SNMP_COMMAND -24
+#define DS_NON_NUMERIC_VALUE -25
+#define DS_NO_LOGFILE_NAME -26
+#define DS_CANNOT_OPEN_LOG_FILE -27
+#define DS_HAS_TOBE_READONLY_MODE -28
+#define DS_INVALID_LDIF_FILE -29
+
+/*
+ * Types of config files.
+ */
+#define DS_REAL_CONFIG 1
+#define DS_TMP_CONFIG 2
+
+/*
+ * Maximum numeric value we will accept in admin interface
+ * We may at some point need per-option bounds, but for now,
+ * there's just one global maximum.
+ */
+#define DS_MAX_NUMERIC_VALUE 4294967295 /* 2^32 - 1 */
+
+/* Use our own macro for rpt_err, so we can put our own error code in
+ NMC_STATUS */
+#undef rpt_err
+#define rpt_err(CODE, STR1, STR2, STR3) \
+ fprintf( stdout, "NMC_ErrInfo: %s\n", (STR1) ); \
+ fprintf( stdout, "NMC_STATUS: %d\n", CODE )
+
+/*
+ * Flags for ds_display_config()
+ */
+#define DS_DISP_HRB 1 /* horizontal line to begin with */
+#define DS_DISP_HRE 2 /* horizontal line to end with */
+#define DS_DISP_TB 4 /* table begin */
+#define DS_DISP_TE 8 /* table end */
+#define DS_DISP_EOL 16 /* End Of Line */
+#define DS_DISP_NOMT 32 /* display only non empty */
+#define DS_DISP_NOIN 64 /* display with no input field */
+#define DS_DISP_HELP 128 /* display with a help button */
+#define DS_DISP_PLAIN 256 /* No table, no nothin */
+#define DS_SIMPLE (DS_DISP_EOL | DS_DISP_NOIN | DS_DISP_HELP)
+
+/*
+ * dci_type for ds_cfg_info
+ */
+#define DS_ATTR_STRING 1
+#define DS_ATTR_NUMBER 2
+#define DS_ATTR_ONOFF 3
+#define DS_ATTR_LIMIT 4 /* a number where -1 is displayed as blank */
+
+struct ds_cfg_info {
+ char *dci_varname;
+ char *dci_display;
+ int dci_type;
+ char *dci_help;
+};
+
+extern struct ds_cfg_info ds_cfg_info[];
+
+#define LDBM_DATA_SIZE 5
+
+/*ldbm specific backend information*/
+struct ldbm_data {
+ char *tv[LDBM_DATA_SIZE][2]; /*type and value*/
+};
+
+
+/*
+ * varname for ds_showparam()
+ * NOTE: these must be kept in synch with the ds_cfg_info array defined
+ * in ../lib/dsalib_conf.c
+ */
+#define DS_LOGLEVEL 0
+#define DS_REFERRAL 1
+#define DS_AUDITFILE 2
+#define DS_LOCALHOST 3
+#define DS_PORT 4
+#define DS_SECURITY 5
+#define DS_SECURE_PORT 6
+#define DS_SSL3CIPHERS 7
+#define DS_PASSWDHASH 8
+#define DS_ACCESSLOG 9
+#define DS_ERRORLOG 10
+#define DS_ROOTDN 11
+#define DS_ROOTPW 12
+#define DS_SUFFIX 13
+#define DS_LOCALUSER 14
+#define DS_CFG_MAX 15 /* MUST be one greater than the last option */
+
+/* These control how long we wait for the server to start up or shutdown */
+#define SERVER_START_TIMEOUT 600 /* seconds */
+#define SERVER_STOP_TIMEOUT SERVER_START_TIMEOUT /* same as start timeout */
+
+typedef int (*DS_RM_RF_ERR_FUNC)(const char *path, const char *op, void *arg);
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+extern DS_EXPORT_SYMBOL char *ds_get_server_root();
+extern DS_EXPORT_SYMBOL char *ds_get_install_root();
+extern DS_EXPORT_SYMBOL char *ds_get_admserv_based_root();
+extern DS_EXPORT_SYMBOL void ds_log_debug_message(char *msg);
+extern DS_EXPORT_SYMBOL void ds_log_env(char **envp);
+extern DS_EXPORT_SYMBOL int ds_get_updown_status();
+extern DS_EXPORT_SYMBOL void ds_print_startstop(int stop);
+extern DS_EXPORT_SYMBOL int ds_bring_up_server_install(int verbose,
+ char *root, char *errorlog);
+extern DS_EXPORT_SYMBOL int ds_bring_up_server(int verbose);
+extern DS_EXPORT_SYMBOL char *ds_get_server_name();
+extern DS_EXPORT_SYMBOL void ds_send_error(char *errstr, int print_errno);
+extern DS_EXPORT_SYMBOL void ds_send_status(char *str);
+extern DS_EXPORT_SYMBOL char *ds_get_cgi_var(char *cgi_var_name);
+extern DS_EXPORT_SYMBOL char *ds_get_cgi_var_simple(int index);
+extern DS_EXPORT_SYMBOL char *ds_get_cgi_multiple(char *cgi_var_name);
+extern DS_EXPORT_SYMBOL char *ds_get_errors_name();
+extern DS_EXPORT_SYMBOL char *ds_get_access_name();
+extern DS_EXPORT_SYMBOL char *ds_get_audit_name();
+extern DS_EXPORT_SYMBOL char *ds_get_logfile_name(int config_type);
+
+
+extern DS_EXPORT_SYMBOL int ds_bring_down_server();
+extern DS_EXPORT_SYMBOL void ds_print_server_status(int isrunning);
+extern DS_EXPORT_SYMBOL int ds_get_file_size(char *fileName);
+extern DS_EXPORT_SYMBOL void ds_display_tail(char *fileName, int timeOut,
+ int startSeek, char *doneMsg, char *lastLine);
+extern DS_EXPORT_SYMBOL char **ds_get_ldif_files();
+extern DS_EXPORT_SYMBOL int ds_ldif2db_preserve(char *file);
+extern DS_EXPORT_SYMBOL int ds_ldif2db(char *file);
+extern DS_EXPORT_SYMBOL int ds_ldif2db_backend_subtree(char *file, char *backend, char *subtree);
+extern DS_EXPORT_SYMBOL int ds_db2ldif(char *file);
+extern DS_EXPORT_SYMBOL int ds_vlvindex(char **backendList, char **attrList);
+extern DS_EXPORT_SYMBOL int ds_addindex(char **attrList, char *backendName);
+extern DS_EXPORT_SYMBOL int ds_db2ldif_subtree(char *file, char *subtree);
+extern DS_EXPORT_SYMBOL char **ds_get_bak_dirs();
+extern DS_EXPORT_SYMBOL int ds_db2bak(char *file);
+extern DS_EXPORT_SYMBOL int ds_bak2db(char *file);
+extern DS_EXPORT_SYMBOL int ds_get_monitor(int frontend, char *port);
+extern DS_EXPORT_SYMBOL int ds_get_bemonitor(char *bemdn, char *port);
+extern DS_EXPORT_SYMBOL int ds_client_access(char *port, char *dn);
+extern DS_EXPORT_SYMBOL char **ds_get_config(int type);
+extern DS_EXPORT_SYMBOL char *ds_get_pwenc(char *passwd_hash, char *password);
+extern DS_EXPORT_SYMBOL int ds_check_config(int type);
+extern DS_EXPORT_SYMBOL int ds_check_pw(char *pwhash, char *pwclear);
+extern DS_EXPORT_SYMBOL int ds_set_config(char *change_file_name);
+extern DS_EXPORT_SYMBOL char **ds_get_conf_from_file(FILE *conf);
+extern DS_EXPORT_SYMBOL void ds_display_config(char **ds_config);
+extern DS_EXPORT_SYMBOL char *ds_get_var_name(int varnum);
+extern DS_EXPORT_SYMBOL int ds_showparam(char **ds_config, int varname, int phase,
+ int occurance, char *dispname, int size, int maxlength, unsigned flags,
+ char *url);
+extern DS_EXPORT_SYMBOL void ds_show_pwmaxage(char *value);
+extern DS_EXPORT_SYMBOL void ds_show_pwhash(char *value);
+extern DS_EXPORT_SYMBOL char *ds_get_value(char **ds_config, char *parm, int phase, int occurance);
+extern DS_EXPORT_SYMBOL void ds_apply_cfg_changes(int param_list[], int changed);
+extern DS_EXPORT_SYMBOL int ds_commit_cfg_changes();
+extern DS_EXPORT_SYMBOL int ds_config_updated();
+extern DS_EXPORT_SYMBOL void ds_display_header(char *font_size, char *header);
+extern DS_EXPORT_SYMBOL void ds_display_message(char *font_size, char *header);
+extern DS_EXPORT_SYMBOL void ds_print_file_form(char *action, char *fileptr, char *full_fileptr);
+extern DS_EXPORT_SYMBOL char *ds_get_file_meaning(char *file);
+extern DS_EXPORT_SYMBOL void ds_print_file_name(char *fileptr);
+extern DS_EXPORT_SYMBOL int ds_file_exists(char *filename);
+extern DS_EXPORT_SYMBOL int ds_cp_file(char *sfile, char *dfile, int mode);
+extern DS_EXPORT_SYMBOL time_t ds_get_mtime(char *filename);
+extern DS_EXPORT_SYMBOL char *ds_get_config_value( int option );
+extern DS_EXPORT_SYMBOL char **ds_get_file_list( char *dir );
+extern DS_EXPORT_SYMBOL char *ds_get_tmp_dir();
+extern DS_EXPORT_SYMBOL void ds_unixtodospath(char *szText);
+extern DS_EXPORT_SYMBOL void ds_timetofname(char *szText);
+extern DS_EXPORT_SYMBOL void ds_dostounixpath(char *szText);
+extern DS_EXPORT_SYMBOL int ds_saferename(char *szSrc, char *szTarget);
+extern DS_EXPORT_SYMBOL char *get_specific_help_button(char *help_link,
+ char *dispname, char *helpinfo);
+
+/* Change the DN to a canonical format (in place); return DN. */
+extern DS_EXPORT_SYMBOL char* dn_normalize (char* DN);
+
+/* Change the DN to a canonical format (in place) and convert to v3; return DN. */
+extern DS_EXPORT_SYMBOL char* dn_normalize_convert (char* DN);
+
+/* if dn contains an unescaped quote return true */
+extern DS_EXPORT_SYMBOL int ds_dn_uses_LDAPv2_quoting(const char *dn);
+
+/* Return != 0 iff the DN equals or ends with the given suffix.
+ Both DN and suffix must be normalized, by dn_normalize(). */
+extern DS_EXPORT_SYMBOL int dn_issuffix (char* DN, char* suffix);
+
+/* Return a copy of the DN, but with optional whitespace inserted. */
+extern DS_EXPORT_SYMBOL char* ds_dn_expand (char* DN);
+
+/* Return the value if it can be stored 'as is' in a config file.
+ If it requires enquoting, allocate and return its enquoted form.
+ The caller should free() the returned pointer iff it's != value.
+ On Windows, we don't want to double up on "\" characters in filespecs,
+ so we need to pass in the value type */
+extern DS_EXPORT_SYMBOL char* ds_enquote_config_value (int paramnum, char* value);
+
+/*
+ * Bring up a javascript alert.
+ */
+extern DS_EXPORT_SYMBOL void ds_alert_user(char *header, char *message);
+
+/* Construct and return the DN that corresponds to the give DNS name.
+ The caller should free() the returned pointer. */
+extern DS_EXPORT_SYMBOL char* ds_DNS_to_DN (char* DNS);
+
+/* Construct and return the DN of the LDAP server's own entry.
+ The caller must NOT free() the returned pointer. */
+extern DS_EXPORT_SYMBOL char* ds_get_config_DN (char** ds_config);
+
+/* Encode characters, as described in RFC 1738 section 2.2,
+ if they're 'unsafe' (as defined in RFC 1738), or '?' or
+ <special> (as defined in RFC 1779).
+ The caller should free() the returned pointer. */
+extern DS_EXPORT_SYMBOL char* ds_URL_encode (const char*);
+
+/* Decode characters, as described in RFC 1738 section 2.2.
+ The caller should free() the returned pointer. */
+extern DS_EXPORT_SYMBOL char* ds_URL_decode (const char*);
+
+/* Encode all characters, even if 'safe' */
+extern DS_EXPORT_SYMBOL char* ds_encode_all (const char*);
+
+/* Change the effective UID and GID of this process to
+ those associated with the given localuser (if any). */
+extern DS_EXPORT_SYMBOL char* ds_become_localuser_name (char* localuser);
+
+/* Change the effective UID and GID of this process to
+ those associated with ds_config's localuser (if any). */
+extern DS_EXPORT_SYMBOL char* ds_become_localuser (char** ds_config);
+
+/* Change the effective UID and GID of this process back to
+ what they were before calling ds_become_localuser(). */
+extern DS_EXPORT_SYMBOL char* ds_become_original();
+
+extern DS_EXPORT_SYMBOL char* ds_makeshort(char *filepath);
+
+extern DS_EXPORT_SYMBOL int ds_search_file(char *filename, char *searchstring);
+
+/* Begin parsing a POST in a CGI context */
+extern DS_EXPORT_SYMBOL int ds_post_begin(FILE *input);
+
+/* Begin parsing a GET in a CGI context */
+extern DS_EXPORT_SYMBOL void ds_get_begin(char *query_string);
+
+/* Display an error to the user and exit from a CGI */
+extern DS_EXPORT_SYMBOL void ds_report_error(int type, char *errmsg, char *details);
+
+/* Display a warning to the user */
+extern DS_EXPORT_SYMBOL void ds_report_warning(int type, char *errmsg, char *details);
+
+/* These functions are used by the program to alter the output behaviour
+if not executing in a CGI context */
+extern DS_EXPORT_SYMBOL int ds_get_formatted_output(void);
+extern DS_EXPORT_SYMBOL void ds_set_formatted_output(int val);
+
+/* return the value of a CGI variable */
+extern DS_EXPORT_SYMBOL char *ds_a_get_cgi_var(char *varname, char *elem_id, char *bongmsg);
+
+/* return a multi-valued CGI variable */
+extern DS_EXPORT_SYMBOL char **ds_a_get_cgi_multiple(char *varname, char *elem_id, char *bongmsg);
+
+/* open an html file */
+extern DS_EXPORT_SYMBOL FILE *ds_open_html_file(char *filename);
+
+/* show a message to be parsed by the non-HTML front end */
+extern DS_EXPORT_SYMBOL void ds_show_message(const char *message);
+
+/* show a key/value pair to be parsed by the non-HTML front end */
+extern DS_EXPORT_SYMBOL void ds_show_key_value(char *key, char *value);
+
+extern DS_EXPORT_SYMBOL void ds_submit(char *helptarget) ;
+extern DS_EXPORT_SYMBOL char *ds_get_helpbutton(char *topic);
+
+extern DS_EXPORT_SYMBOL void alter_startup_line(char *startup_line);
+
+extern DS_EXPORT_SYMBOL int ds_dir_exists(char *fn);
+extern DS_EXPORT_SYMBOL int ds_mkdir(char *dir, int mode);
+extern DS_EXPORT_SYMBOL char *ds_mkdir_p(char *dir, int mode);
+extern DS_EXPORT_SYMBOL char *ds_salted_sha1_pw_enc (char* pwd);
+extern DS_EXPORT_SYMBOL char * ds_escape_for_shell( char *s );
+
+extern DS_EXPORT_SYMBOL char **ds_string_to_vec(char *s);
+
+extern DS_EXPORT_SYMBOL char *ds_system_errmsg(void);
+
+extern DS_EXPORT_SYMBOL int ds_exec_and_report(char *cmd);
+
+/* remove a directory hierarchy - if the error function is given, it will be called upon
+ error (e.g. directory not readable, cannot remove file, etc.) - if the callback function
+ returns 0, this means to abort the removal, otherwise, continue
+*/
+extern DS_EXPORT_SYMBOL int ds_rm_rf(const char *dir, DS_RM_RF_ERR_FUNC ds_rm_rf_err_func, void *arg);
+/*
+ remove a registry key and report an error message if unsuccessful
+*/
+extern DS_EXPORT_SYMBOL int ds_remove_reg_key(void *base, const char *format, ...);
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* __dsalib_h */
diff --git a/ldap/admin/include/dsalib_pw.h b/ldap/admin/include/dsalib_pw.h
new file mode 100644
index 00000000..78c22c11
--- /dev/null
+++ b/ldap/admin/include/dsalib_pw.h
@@ -0,0 +1,17 @@
+/** BEGIN COPYRIGHT BLOCK
+ * Copyright 2001 Sun Microsystems, Inc.
+ * Portions copyright 1999, 2001-2003 Netscape Communications Corporation.
+ * All rights reserved.
+ * END COPYRIGHT BLOCK **/
+
+#ifndef __dsalib_pw_h
+#define __dsalib_pw_h
+
+extern DS_EXPORT_SYMBOL void dsparm_help_button(char *var_name, char *dispname,
+ char *helpinfo);
+extern DS_EXPORT_SYMBOL LDAP* bind_as_root (char** cfg, char* rootdn,
+ char* rootpw);
+extern DS_EXPORT_SYMBOL void get_pw_policy(char*** pValue, char** cfg);
+extern DS_EXPORT_SYMBOL void ds_showpw( char** cfg);
+
+#endif /* __dsalib_pw_h */
diff --git a/ldap/admin/include/dsalib_schema.h b/ldap/admin/include/dsalib_schema.h
new file mode 100644
index 00000000..ff3488eb
--- /dev/null
+++ b/ldap/admin/include/dsalib_schema.h
@@ -0,0 +1,255 @@
+/** BEGIN COPYRIGHT BLOCK
+ * Copyright 2001 Sun Microsystems, Inc.
+ * Portions copyright 1999, 2001-2003 Netscape Communications Corporation.
+ * All rights reserved.
+ * END COPYRIGHT BLOCK **/
+/*
+ * Routines to parse schema LDIF
+ *
+ * -atom
+ *
+ */
+
+#ifndef __DSALIB_SCHEMA_H
+#define __DSALIB_SCHEMA_H__
+
+
+
+/************************************************************************
+
+ BNF for attributes and objectclasses:
+
+ AttributeTypeDescription = "(" whsp
+ numericoid whsp ; AttributeType identifier
+ [ "NAME" qdescrs ] ; name used in AttributeType
+ [ "DESC" qdstring ] ; description
+ [ "OBSOLETE" whsp ]
+ [ "SUP" woid ] ; derived from this other
+ ; AttributeType
+ [ "EQUALITY" woid ; Matching Rule name
+ [ "ORDERING" woid ; Matching Rule name
+ [ "SUBSTR" woid ] ; Matching Rule name
+ [ "SYNTAX" whsp noidlen whsp ] ; see section 4.3
+ [ "SINGLE-VALUE" whsp ] ; default multi-valued
+ [ "COLLECTIVE" whsp ] ; default not collective
+ [ "NO-USER-MODIFICATION" whsp ]; default user modifiable
+ [ "USAGE" whsp AttributeUsage ]; default user applications
+ whsp ")"
+
+
+
+ ObjectClassDescription = "(" whsp
+ numericoid whsp ; ObjectClass identifier
+ [ "NAME" qdescrs ]
+ [ "DESC" qdstring ]
+ [ "OBSOLETE" whsp ]
+ [ "SUP" oids ] ; Superior ObjectClasses
+ [ ( "ABSTRACT" / "STRUCTURAL" / "AUXILIARY" ) whsp ]
+ ; default structural
+ [ "MUST" oids ] ; AttributeTypes
+ [ "MAY" oids ] ; AttributeTypes
+ whsp ")"
+
+
+************************************************************************/
+
+
+/*
+ * ds_check_valid_oid: check to see if an oid is valid.
+ * Oids should only contain digits and dots.
+ *
+ * returns 1 if valid, 0 if not
+ */
+
+DS_EXPORT_SYMBOL int ds_check_valid_oid (char *oid);
+
+
+/*
+ * ds_check_valid_name: check to see if an attribute name or an objectclass
+ * name is valid. A valid name contains only digits, letters, or hyphens
+ *
+ * returns 1 if valid, 0 if not
+ *
+ */
+
+DS_EXPORT_SYMBOL int ds_check_valid_name (char *name);
+
+/*
+ * ds_get_oc_desc:
+ *
+ * Input : pointer to string containing an ObjectClassDescription
+ * Returns : pointer to string containing objectclass DESC
+ *
+ * The caller must free the return value
+ *
+ */
+
+DS_EXPORT_SYMBOL char * ds_get_oc_desc (char *oc);
+
+
+/*
+ * ds_get_oc_name:
+ *
+ * Input : pointer to string containing an ObjectClassDescription
+ * Returns: pointer to string containing objectclass name.
+ *
+ * The caller must free the return value
+ *
+ */
+
+DS_EXPORT_SYMBOL char *ds_get_oc_name (char *o);
+
+
+/*
+ * ds_get_attr_name:
+ *
+ * Input : pointer to string containing an AttributeTypeDescription
+ * Returns: pointer to string containing an attribute name.
+ *
+ * The caller must free the return value
+ *
+ */
+
+DS_EXPORT_SYMBOL char *ds_get_attr_name (char *a);
+
+
+
+/*
+ * ds_get_oc_superior:
+ *
+ * Input : pointer to string containing an ObjectClassDescription
+ * Returns: pointer to string containing the objectclass's SUP (superior/parent)
+ * objectclass
+ *
+ * The caller must free the return value
+ *
+ */
+
+DS_EXPORT_SYMBOL char *ds_get_oc_superior (char *o);
+
+
+/*
+ * ds_get_attr_desc:
+ *
+ * Input : Pointer to string containing an AttributeTypeDescription
+ * Returns: Pointer to string containing the attribute's description
+ *
+ * The caller must free the return value
+ *
+ */
+
+DS_EXPORT_SYMBOL char *ds_get_attr_desc (char *a);
+
+
+/*
+ * ds_get_attr_syntax:
+ *
+ * Input: Pointer to string containing an AttributeTypeDescription
+ * Returns: Pointer to string containing the attribute's syntax
+ *
+ * The caller must free the return value
+ *
+ */
+
+DS_EXPORT_SYMBOL char *ds_get_attr_syntax (char *a);
+
+
+/*
+ * ds_get_attr_oid:
+ *
+ * Input : Pointer to string containing an AttributeTypeDescription
+ * Returns: Pointer to string containing an attribute's oid
+ *
+ * The caller must free the return value
+ *
+ */
+DS_EXPORT_SYMBOL char *ds_get_attr_oid (char *a);
+
+
+/*
+ * ds_get_attr_name:
+ *
+ * Input : Pointer to string containing an AttributeTypeDescription
+ * Returns: Pointer to string containing the attribute's name
+ *
+ * The caller must free the return value
+ *
+ */
+
+DS_EXPORT_SYMBOL char *ds_get_attr_name (char *a);
+
+
+
+/*
+ * syntax_oid_to_english: convert an attribute syntax oid to something more
+ * human readable
+ *
+ * Input : string containing numeric OID for a attribute syntax
+ * Returns: Human readable string
+ */
+
+
+DS_EXPORT_SYMBOL char *syntax_oid_to_english (char *oid);
+
+
+/* StripSpaces: Remove all leading and trailing spaces from a string */
+
+DS_EXPORT_SYMBOL char *StripSpaces (char **s);
+
+
+/* ds_print_required_attrs:
+ *
+ * input: pointer to string containing an ObjectClassDescription
+ *
+ * prints JavaScript array containing the required attributes of an objectclass
+ * The array name is oc_<objectclass name>_requires
+ */
+
+DS_EXPORT_SYMBOL void ds_print_required_attrs (char *o);
+
+
+/* ds_print_allowed_attrs:
+ *
+ * input: pointer to string containing an ObjectClassDescription
+ *
+ * prints JavaScript array containing the allowed attributes of an objectclass
+ * The array name is oc_<objectclass name>_allows
+ */
+DS_EXPORT_SYMBOL void ds_print_allowed_attrs (char *o);
+
+
+/* ds_print_oc_oid:
+ *
+ * input: pointer to string containing an ObjectClassDescription
+ *
+ * prints JavaScript string containing an objectclass oid
+ * The variable name is oc_<objectclass name>_oid
+ */
+
+DS_EXPORT_SYMBOL void ds_print_oc_oid (char *o);
+
+/* ds_print_oc_superior:
+ *
+ * input: pointer to string containing an ObjectClassDescription
+ *
+ * prints JavaScript string containing an objectclass superior
+ * The variable name is oc_<objectclass name>_superior
+ */
+
+DS_EXPORT_SYMBOL void ds_print_oc_superior (char *o);
+
+
+/* underscore2hyphen:
+ * transform underscores to hyphens in a string
+ */
+
+DS_EXPORT_SYMBOL char *underscore2hyphen (char *src);
+
+/* hyphen2underscore:
+ * transform hyphens to underscores in a string
+ */
+
+DS_EXPORT_SYMBOL char *hyphen2underscore (char *src);
+
+
+#endif /* __DSALIB_SCHEMA_H__ */
diff --git a/ldap/admin/include/nterrors.h b/ldap/admin/include/nterrors.h
new file mode 100644
index 00000000..a15c9ea0
--- /dev/null
+++ b/ldap/admin/include/nterrors.h
@@ -0,0 +1,728 @@
+/** BEGIN COPYRIGHT BLOCK
+ * Copyright 2001 Sun Microsystems, Inc.
+ * Portions copyright 1999, 2001-2003 Netscape Communications Corporation.
+ * All rights reserved.
+ * END COPYRIGHT BLOCK **/
+/* 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 }
+};