diff options
author | Thomas E. Dickey <dickey@invisible-island.net> | 1999-03-18 03:40:20 -0500 |
---|---|---|
committer | Thomas E. Dickey <dickey@invisible-island.net> | 1999-03-18 03:40:20 -0500 |
commit | 79de405977ac0d7820576b353dde07ce09cedba9 (patch) | |
tree | d9c4fe55a871bb65fc0e1448764604b47083100e /WWW/Library | |
parent | 2d9e91f9543486865c65bf1b2837b2a7a1e3d1b9 (diff) | |
download | lynx-snapshots-79de405977ac0d7820576b353dde07ce09cedba9.tar.gz |
snapshot of project "lynx", label v2-8-2dev_20
Diffstat (limited to 'WWW/Library')
47 files changed, 388 insertions, 1472 deletions
diff --git a/WWW/Library/Implementation/HTAABrow.h b/WWW/Library/Implementation/HTAABrow.h index 5a195a91..b19b2e6a 100644 --- a/WWW/Library/Implementation/HTAABrow.h +++ b/WWW/Library/Implementation/HTAABrow.h @@ -1,31 +1,31 @@ /* BROWSER SIDE ACCESS AUTHORIZATION MODULE - + This module is the browser side interface to Access Authorization (AA) package. It contains code only for browser. - + Important to know about memory allocation: - + Routines in this module use dynamic allocation, but free automatically all the memory reserved by them. - + Therefore the caller never has to (and never should) free() any object returned by these functions. - + Therefore also all the strings returned by this package are only valid until the next call to the same function is made. This approach is selected, because of the nature of access authorization: no string returned by the package needs to be valid longer than until the next call. - + This also makes it easy to plug the AA package in: you don't have to ponder whether to free()something here or is it done somewhere else (because it is always done somewhere else). - + The strings that the package needs to store are copied so the original strings given as parameters to AA functions may be freed or modified with no side effects. - + Also note:The AA package does not free() anything else than what it has itself allocated. - + */ #ifndef HTAABROW_H @@ -33,11 +33,6 @@ #include <HTAAUtil.h> /* Common parts of AA */ -#ifdef SHORT_NAMES -#define HTAAcoAu HTAA_composeAuth -#define HTAAsRWA HTAA_shouldRetryWithAuth -#endif /*SHORT_NAMES*/ - /* Routines for Browser Side Recording of AA Info @@ -45,15 +40,15 @@ Routines for Browser Side Recording of AA Info Most of the browser-side AA is done by the following two functions (which are called from file HTTP.c so the browsers using libwww only need to be linked with the new library and not be changed at all): - + HTAA_composeAuth() composes the Authorization: line contents, if the AA package thinks that the given document is protected. Otherwise this function returns NULL. This function also calls the functions HTPrompt(),HTPromptPassword() and HTConfirm() to get the username, password and some confirmation from the user. - + HTAA_shouldRetryWithAuth() determines whether to retry the request with AA or with a new AA (in case username or password was misspelled). - + */ /* PUBLIC HTAA_composeAuth() @@ -128,7 +123,7 @@ Enabling Gateway httpds to Forward Authorization must be called before the next request is handled to make sure that authorization string isn't cached in daemon so that other people can access private files using somebody else's previous authorization information. - + */ extern void HTAAForwardAuth_set PARAMS(( diff --git a/WWW/Library/Implementation/HTAAFile.h b/WWW/Library/Implementation/HTAAFile.h index 05082f42..32e81664 100644 --- a/WWW/Library/Implementation/HTAAFile.h +++ b/WWW/Library/Implementation/HTAAFile.h @@ -17,12 +17,6 @@ #include <HTList.h> /* HTList */ -#ifdef SHORT_NAMES -#define HTAAFnRe HTAAFile_nextRec -#define HTAAFrFi HTAAFile_readField -#define HTAAFrLi HTAAFile_readList -#endif /*SHORT_NAMES*/ - /* Used field separators */ diff --git a/WWW/Library/Implementation/HTAAProt.h b/WWW/Library/Implementation/HTAAProt.h index f26ba7bc..ad3af096 100644 --- a/WWW/Library/Implementation/HTAAProt.h +++ b/WWW/Library/Implementation/HTAAProt.h @@ -1,5 +1,5 @@ /* PROTECTION SETUP FILE - + */ #ifndef HTAAPROT_H @@ -8,15 +8,6 @@ #include <HTGroup.h> #include <HTAssoc.h> -#ifdef SHORT_NAMES -#define HTAA_getUid HTAAgUid -#define HTAA_getGid HTAAgGid -#define HTAA_setDefaultProtection HTAAgDPr -#define HTAA_setCurrentProtection HTAAsCPr -#define HTAA_getCurrentProtection HTAAgCPr -#define HTAA_getDefaultProtection HTAAgDPr -#define HTAA_clearProtections HTAAclPr -#endif /*SHORT_NAMES*/ /* Server's Representation of Document (Tree) Protections @@ -38,15 +29,15 @@ typedef struct { Callbacks for rule system The following three functioncs are called by the rule system: - + HTAA_clearProtections() when starting to translate a filename - + HTAA_setDefaultProtection() when "defprot" rule is matched - + HTAA_setCurrentProtection() when "protect" rule is matched - + Protection setup files are cached by these functions. - + */ /* PUBLIC HTAA_setDefaultProtection() @@ -116,11 +107,11 @@ Getting Protection Settings HTAA_getCurrentProtection() returns the current protection mode (if there was a "protect" rule). NULL, if no "protect" rule has been matched. - + HTAA_getDefaultProtection() sets the current protection mode to what it was set to by "defprot" rule and also returns it (therefore after this call also HTAA_getCurrentProtection() returns the same structure. - + */ /* PUBLIC HTAA_getCurrentProtection() @@ -193,7 +184,7 @@ extern int HTAA_getGid NOPARAMS; /* For VMS: - + */ #ifdef VMS diff --git a/WWW/Library/Implementation/HTAAServ.c b/WWW/Library/Implementation/HTAAServ.c index b9a5be73..c8c26300 100644 --- a/WWW/Library/Implementation/HTAAServ.c +++ b/WWW/Library/Implementation/HTAAServ.c @@ -425,6 +425,8 @@ PUBLIC int HTAA_checkAuthorization ARGS4(CONST char *, url, HTAAFailReason = HTAA_DOTDOT; } else { + +#ifndef NO_RULES pathname = HTTranslate(local_copy); /* Translate rules even if */ /* a /htbin call to set up */ /* protections. */ @@ -437,6 +439,8 @@ PUBLIC int HTAA_checkAuthorization ARGS4(CONST char *, url, *end = '\0'; FREE(pathname); pathname=(char*)malloc(strlen(HTBinDir)+strlen(local_copy)+1); + if (pathname == NULL) + outofmem(__FILE__, "HTAA_checkAuthorization"); strcpy(pathname, HTBinDir); strcat(pathname, local_copy+6); } @@ -447,6 +451,8 @@ PUBLIC int HTAA_checkAuthorization ARGS4(CONST char *, url, HTAAFailReason = HTAA_BY_RULE; } else if (HTAAFailReason != HTAA_HTBIN) { +#endif /* NO_RULES */ + /* pathname != NULL */ char *acc_method = HTParse(pathname, "", PARSE_ACCESS); if (!*acc_method || 0 == strcmp(acc_method,"file")) { /*Local file, do AA*/ @@ -464,7 +470,11 @@ PUBLIC int HTAA_checkAuthorization ARGS4(CONST char *, url, "Gatewaying -- skipping authorization check", acc_method); } + +#ifndef NO_RULES } /* pathname */ +#endif /* NO_RULES */ + } FREE(local_copy); diff --git a/WWW/Library/Implementation/HTAAServ.h b/WWW/Library/Implementation/HTAAServ.h index c2612dfb..2beb6f9a 100644 --- a/WWW/Library/Implementation/HTAAServ.h +++ b/WWW/Library/Implementation/HTAAServ.h @@ -36,13 +36,6 @@ #include <HTAuth.h> /* Authentication */ -#ifdef SHORT_NAMES -#define HTAA_statusMessage HTAAstMs -#define HTAA_checkAuthorization HTAAchAu -#define HTAA_composeAuthHeaders HTAAcoAH -#define HTAA_startLogging HTAAsLog -#endif /*SHORT_NAMES*/ - extern time_t theTime; /* diff --git a/WWW/Library/Implementation/HTAAUtil.h b/WWW/Library/Implementation/HTAAUtil.h index eab920e0..f4ec2eee 100644 --- a/WWW/Library/Implementation/HTAAUtil.h +++ b/WWW/Library/Implementation/HTAAUtil.h @@ -32,20 +32,6 @@ #include <HTList.h> -#ifdef SHORT_NAMES -#define HTAAScheme_enum HTAASenu -#define HTAAScheme_name HTAASnam -#define HTAAMethod_enum HTAAMenu -#define HTAAMethod_name HTAAMnam -#define HTAAMethod_inList HTAAMinL -#define HTAA_templateMatch HTAAteMa -#define HTAA_makeProtectionTemplate HTAAmaPT -#define HTAA_parseArgList HTAApALi -#define HTAA_setupReader HTAAsuRe -#define HTAA_getUnfoldedLine HTAAgUfL -#endif /*SHORT_NAMES*/ - - /* Default filenames diff --git a/WWW/Library/Implementation/HTACL.h b/WWW/Library/Implementation/HTACL.h index 9aa0a68e..1a7147f8 100644 --- a/WWW/Library/Implementation/HTACL.h +++ b/WWW/Library/Implementation/HTACL.h @@ -8,12 +8,6 @@ #include <HTAAUtil.h> #include <HTGroup.h> -#ifdef SHORT_NAMES -#define HTAA_openAcl HTAAoACL -#define HTAA_closeAcl HTAAcACL -#define HTAA_getAclEntry HTAAgAEn -#endif /* SHORT_NAMES */ - /* Opening Access Control List File diff --git a/WWW/Library/Implementation/HTAccess.c b/WWW/Library/Implementation/HTAccess.c index 77517472..060e5acb 100644 --- a/WWW/Library/Implementation/HTAccess.c +++ b/WWW/Library/Implementation/HTAccess.c @@ -55,12 +55,10 @@ #include <HTList.h> #include <HText.h> /* See bugs above */ -#include <HTAlert.h> #include <HTCJK.h> #include <UCMap.h> #include <GridText.h> -#include <GridText.h> #include <LYGlobalDefs.h> #include <LYexit.h> #include <LYUtils.h> @@ -134,6 +132,7 @@ extern GLOBALREF (HTProtocol, HTTn3270); extern GLOBALREF (HTProtocol, HTRlogin); #ifndef DECNET extern GLOBALREF (HTProtocol, HTFTP); +#ifndef DISABLE_NEWS extern GLOBALREF (HTProtocol, HTNews); extern GLOBALREF (HTProtocol, HTNNTP); extern GLOBALREF (HTProtocol, HTNewsPost); @@ -141,11 +140,14 @@ extern GLOBALREF (HTProtocol, HTNewsReply); extern GLOBALREF (HTProtocol, HTSNews); extern GLOBALREF (HTProtocol, HTSNewsPost); extern GLOBALREF (HTProtocol, HTSNewsReply); +#endif /* not DISABLE_NEWS */ #ifndef DISABLE_GOPHER extern GLOBALREF (HTProtocol, HTGopher); extern GLOBALREF (HTProtocol, HTCSO); #endif /* not DISABLE_GOPHER */ +#ifndef DISABLE_FINGER extern GLOBALREF (HTProtocol, HTFinger); +#endif /* not DISABLE_FINGER */ #ifdef DIRECT_WAIS extern GLOBALREF (HTProtocol, HTWAIS); #endif /* DIRECT_WAIS */ @@ -153,12 +155,17 @@ extern GLOBALREF (HTProtocol, HTWAIS); #else GLOBALREF HTProtocol HTTP, HTTPS, HTFile, HTTelnet, HTTn3270, HTRlogin; #ifndef DECNET -GLOBALREF HTProtocol HTFTP, HTNews, HTNNTP, HTNewsPost, HTNewsReply; +GLOBALREF HTProtocol HTFTP; +#ifndef DISABLE_NEWS +GLOBALREF HTProtocol HTNews, HTNNTP, HTNewsPost, HTNewsReply; GLOBALREF HTProtocol HTSNews, HTSNewsPost, HTSNewsReply; +#endif /* not DISABLE_NEWS */ #ifndef DISABLE_GOPHER GLOBALREF HTProtocol HTGopher, HTCSO; #endif /* not DISABLE_GOPHER */ +#ifndef DISABLE_FINGER GLOBALREF HTProtocol HTFinger; +#endif /* not DISABLE_FINGER */ #ifdef DIRECT_WAIS GLOBALREF HTProtocol HTWAIS; #endif /* DIRECT_WAIS */ @@ -174,6 +181,7 @@ PRIVATE void HTAccessInit NOARGS /* Call me once */ HTRegisterProtocol(&HTTn3270); HTRegisterProtocol(&HTRlogin); #ifndef DECNET +#ifndef DISABLE_NEWS HTRegisterProtocol(&HTFTP); HTRegisterProtocol(&HTNews); HTRegisterProtocol(&HTNNTP); @@ -182,11 +190,14 @@ PRIVATE void HTAccessInit NOARGS /* Call me once */ HTRegisterProtocol(&HTSNews); HTRegisterProtocol(&HTSNewsPost); HTRegisterProtocol(&HTSNewsReply); +#endif /* not DISABLE_NEWS */ #ifndef DISABLE_GOPHER HTRegisterProtocol(&HTGopher); HTRegisterProtocol(&HTCSO); #endif /* not DISABLE_GOPHER */ +#ifndef DISABLE_FINGER HTRegisterProtocol(&HTFinger); +#endif /* not DISABLE_FINGER */ #ifdef DIRECT_WAIS HTRegisterProtocol(&HTWAIS); #endif /* DIRECT_WAIS */ @@ -277,8 +288,11 @@ PUBLIC BOOL override_proxy ARGS1( if (!strcmp(acc_method, "http")) port = 80; else if (!strcmp(acc_method, "https")) port = 443; else if (!strcmp(acc_method, "ftp")) port = 21; +#ifndef DISABLE_GOPHER else if (!strcmp(acc_method, "gopher")) port = 70; +#endif else if (!strcmp(acc_method, "cso")) port = 105; +#ifndef DISABLE_NEWS else if (!strcmp(acc_method, "news")) port = 119; else if (!strcmp(acc_method, "nntp")) port = 119; else if (!strcmp(acc_method, "newspost")) port = 119; @@ -286,8 +300,11 @@ PUBLIC BOOL override_proxy ARGS1( else if (!strcmp(acc_method, "snews")) port = 563; else if (!strcmp(acc_method, "snewspost")) port = 563; else if (!strcmp(acc_method, "snewsreply")) port = 563; +#endif else if (!strcmp(acc_method, "wais")) port = 210; +#ifndef DISABLE_FINGER else if (!strcmp(acc_method, "finger")) port = 79; +#endif FREE(acc_method); } } diff --git a/WWW/Library/Implementation/HTAccess.h b/WWW/Library/Implementation/HTAccess.h index 3dc91793..12de49c7 100644 --- a/WWW/Library/Implementation/HTAccess.h +++ b/WWW/Library/Implementation/HTAccess.h @@ -18,13 +18,6 @@ extern char * use_this_url_instead; #include <HTAnchor.h> #include <HTFormat.h> -#ifdef SHORT_NAMES -#define HTClientHost HTClHost -#define HTSearchAbsolute HTSeAbso -#define HTOutputStream HTOuStre -#define HTOutputFormat HTOuForm -#endif - /* Return codes from load routines: ** ** These codes may be returned by the protocol modules, diff --git a/WWW/Library/Implementation/HTAnchor.c b/WWW/Library/Implementation/HTAnchor.c index 9be41d00..9bfd8ccf 100644 --- a/WWW/Library/Implementation/HTAnchor.c +++ b/WWW/Library/Implementation/HTAnchor.c @@ -372,6 +372,8 @@ PUBLIC HTAnchor * HTAnchor_findAddress ARGS1( hash = HASH_FUNCTION(newdoc->address); if (!adult_table) { adult_table = (HTList **)calloc(HASH_SIZE, sizeof(HTList *)); + if (!adult_table) + outofmem(__FILE__, "HTAnchor_findAddress"); atexit(free_adult_table); } if (!adult_table[hash]) @@ -785,16 +787,6 @@ PUBLIC HyperDoc * HTAnchor_document ARGS1( } -/* We don't want code to change an address after anchor creation... yet ? -PUBLIC void HTAnchor_setAddress ARGS2( - HTAnchor *, me, - char *, addr) -{ - if (me) - StrAllocCopy (me->parent->address, addr); -} -*/ - PUBLIC char * HTAnchor_address ARGS1( HTAnchor *, me) { @@ -805,8 +797,13 @@ PUBLIC char * HTAnchor_address ARGS1( !((HTChildAnchor *)me)->tag) { /* it's an adult or no tag */ StrAllocCopy(addr, me->parent->address); } else { /* it's a named child */ - HTSprintf0(&addr, "%s#%s", - me->parent->address, ((HTChildAnchor *)me)->tag); + addr = malloc(2 + + strlen(me->parent->address) + + strlen(((HTChildAnchor *)me)->tag)); + if (addr == NULL) + outofmem(__FILE__, "HTAnchor_address"); + sprintf(addr, "%s#%s", + me->parent->address, ((HTChildAnchor *)me)->tag); } } return(addr); diff --git a/WWW/Library/Implementation/HTAnchor.h b/WWW/Library/Implementation/HTAnchor.h index eb2633bc..8b72f8ff 100644 --- a/WWW/Library/Implementation/HTAnchor.h +++ b/WWW/Library/Implementation/HTAnchor.h @@ -18,36 +18,6 @@ #include <HTAtom.h> #include <UCDefs.h> -#ifdef SHORT_NAMES -#define HTAnchor_findChild HTAnFiCh -#define HTAnchor_findChildAndLink HTAnFiLi -#define HTAnchor_findAddress HTAnFiAd -#define HTAnchor_delete HTAnDele -#define HTAnchor_makeLastChild HTAnMaLa -#define HTAnchor_parent HTAnPare -#define HTAnchor_setDocument HTAnSeDo -#define HTAnchor_document HTAnDocu -#define HTAnchor_setFormat HTAnSeFo -#define HTAnchor_format HTAnForm -#define HTAnchor_setIndex HTAnSeIn -#define HTAnchor_setPrompt HTAnSePr -#define HTAnchor_isIndex HTAnIsIn -#define HTAnchor_address HTAnAddr -#define HTAnchor_hasChildren HTAnHaCh -#define HTAnchor_title HTAnTitl -#define HTAnchor_setTitle HTAnSeTi -#define HTAnchor_appendTitle HTAnApTi -#define HTAnchor_link HTAnLink -#define HTAnchor_followMainLink HTAnFoMa -#define HTAnchor_followTypedLink HTAnFoTy -#define HTAnchor_makeMainLink HTAnMaMa -#define HTAnchor_setProtocol HTAnSePr -#define HTAnchor_protocol HTAnProt -#define HTAnchor_physical HTAnPhys -#define HTAnchor_setPhysical HTAnSePh -#define HTAnchor_methods HtAnMeth -#endif /* SHORT_NAMES */ - /* Main definition of anchor ** ========================= */ @@ -226,12 +196,6 @@ extern void HTAnchor_setDocument PARAMS(( extern HyperDoc * HTAnchor_document PARAMS(( HTParentAnchor * me)); -/* We don't want code to change an address after anchor creation... yet ? -extern void HTAnchor_setAddress PARAMS(( - HTAnchor * me, - char * addr)); -*/ - /* Returns the full URI of the anchor, child or parent ** as a malloc'd string to be freed by the caller. */ diff --git a/WWW/Library/Implementation/HTAssoc.h b/WWW/Library/Implementation/HTAssoc.h index 54db9487..b08486dd 100644 --- a/WWW/Library/Implementation/HTAssoc.h +++ b/WWW/Library/Implementation/HTAssoc.h @@ -1,7 +1,7 @@ /* ASSOCIATION LIST FOR STORING NAME-VALUE PAIRS - + Lookups from association list are not case-sensitive. - + */ #ifndef HTASSOC_H @@ -9,13 +9,6 @@ #include <HTList.h> -#ifdef SHORT_NAMES -#define HTAL_new HTAssocList_new -#define HTAL_del HTAssocList_delete -#define HTAL_add HTAssocList_add -#define HTAL_lup HTAssocList_lookup -#endif /*SHORT_NAMES*/ - typedef HTList HTAssocList; typedef struct { diff --git a/WWW/Library/Implementation/HTAtom.h b/WWW/Library/Implementation/HTAtom.h index fda46b86..e948767d 100644 --- a/WWW/Library/Implementation/HTAtom.h +++ b/WWW/Library/Implementation/HTAtom.h @@ -23,11 +23,6 @@ #include <HTList.h> -#ifdef SHORT_NAMES -#define HTAt_for HTAtom_for -#define HTAt_tMa HTAtom_templateMatches -#endif /*SHORT_NAMES*/ - typedef struct _HTAtom HTAtom; struct _HTAtom { HTAtom * next; diff --git a/WWW/Library/Implementation/HTAuth.h b/WWW/Library/Implementation/HTAuth.h index a99081ce..6d49240d 100644 --- a/WWW/Library/Implementation/HTAuth.h +++ b/WWW/Library/Implementation/HTAuth.h @@ -12,11 +12,6 @@ #include <HTAAProt.h> -#ifdef SHORT_NAMES -#define HTAA_authenticate HTAAauth -#endif /* SHORT_NAMES */ - - /* ** Server's representation of a user (fields in authentication string) */ diff --git a/WWW/Library/Implementation/HTBTree.h b/WWW/Library/Implementation/HTBTree.h index 6facd048..7cf5ea84 100644 --- a/WWW/Library/Implementation/HTBTree.h +++ b/WWW/Library/Implementation/HTBTree.h @@ -1,28 +1,19 @@ /* /Net/dxcern/userd/timbl/hypertext/WWW/Library/Implementation/HTBTree.html BALANCED BINARY TREE FOR SORTING THINGS - + Tree creation, traversal and freeing. User-supplied comparison routine. - + Author: Arthur Secret, CERN. Public domain. Please mail bugs and changes to www-request@info.cern.ch - + part of libWWW - + */ #ifndef HTBTREE_H #define HTBTREE_H 1 #include <HTUtils.h> -#ifdef SHORT_NAMES -#define HTBTree_new HTBTNew -#define HTBTree_free HTBTFree -#define HTBTreeAndObject_free HTBTAOFr -#define HTBTree_add HTBTAdd -#define HTBTree_next HTBTNext -/* #define HTBTree_object HTBTObje already a macro */ -#endif - /* @@ -95,12 +86,12 @@ Find user object for element Find next element in depth-first order ON ENTRY, - + ele if NULL, start with leftmost element. if != 0 give next object to the right. - + returns Pointer to element ot NULL if none left. - + */ extern HTBTElement * HTBTree_next PARAMS((HTBTree* tree, HTBTElement * ele)); diff --git a/WWW/Library/Implementation/HTChunk.h b/WWW/Library/Implementation/HTChunk.h index 6818acec..20a5af17 100644 --- a/WWW/Library/Implementation/HTChunk.h +++ b/WWW/Library/Implementation/HTChunk.h @@ -21,16 +21,6 @@ typedef struct { } HTChunk; -#ifdef SHORT_NAMES -#define HTChunkClear HTChClea -#define HTChunkPutc HTChPutc -#define HTChunkPuts HTChPuts -#define HTChunkCreate HTChCrea -#define HTChunkTerminate HTChTerm -#define HTChunkEnsure HtChEnsu -#endif - - /* * * Create new chunk diff --git a/WWW/Library/Implementation/HTFTP.c b/WWW/Library/Implementation/HTFTP.c index 923d7a0e..b8b1c4c2 100644 --- a/WWW/Library/Implementation/HTFTP.c +++ b/WWW/Library/Implementation/HTFTP.c @@ -1891,6 +1891,8 @@ PRIVATE EntryInfo * parse_dir_entry ARGS2( char *cp; entry_info = (EntryInfo *)malloc(sizeof(EntryInfo)); + if (entry_info == NULL) + outofmem(__FILE__, "parse_dir_entry"); entry_info->filename = NULL; entry_info->type = NULL; entry_info->date = NULL; diff --git a/WWW/Library/Implementation/HTFWriter.c b/WWW/Library/Implementation/HTFWriter.c index d6176af8..943e1a22 100644 --- a/WWW/Library/Implementation/HTFWriter.c +++ b/WWW/Library/Implementation/HTFWriter.c @@ -25,7 +25,7 @@ struct _HTStream { CONST HTStreamClass * isa; - + FILE * fp; char * end_command; char * remove_command; @@ -57,13 +57,13 @@ PRIVATE void HTBlackHole_abort ARGS2(HTStream *, me, HTError, e) ** ----------------- */ PRIVATE CONST HTStreamClass HTBlackHoleClass = -{ +{ "BlackHole", HTBlackHole_free, HTBlackHole_abort, HTBlackHole_put_character, HTBlackHole_put_string, HTBlackHole_write -}; +}; PRIVATE HTStream HTBlackHoleInstance = { @@ -116,7 +116,7 @@ PRIVATE void HTFWriter_put_string ARGS2(HTStream *, me, CONST char*, s) */ PRIVATE void HTFWriter_write ARGS3(HTStream *, me, CONST char*, s, int, l) { - fwrite(s, 1, l, me->fp); + fwrite(s, 1, l, me->fp); } @@ -169,13 +169,13 @@ PRIVATE void HTFWriter_abort ARGS2(HTStream *, me, HTError, e) ** ----------------------- */ PRIVATE CONST HTStreamClass HTFWriter = /* As opposed to print etc */ -{ +{ "FileWriter", HTFWriter_free, HTFWriter_abort, HTFWriter_put_character, HTFWriter_put_string, HTFWriter_write -}; +}; /* Subclass-specific Methods @@ -185,12 +185,12 @@ PRIVATE CONST HTStreamClass HTFWriter = /* As opposed to print etc */ PUBLIC HTStream* HTFWriter_new ARGS1(FILE *, fp) { HTStream* me; - + if (!fp) return NULL; me = (HTStream*)malloc(sizeof(*me)); if (me == NULL) outofmem(__FILE__, "HTML_new"); - me->isa = &HTFWriter; + me->isa = &HTFWriter; me->fp = fp; me->end_command = NULL; @@ -234,26 +234,28 @@ PUBLIC HTStream* HTSaveAndExecute ARGS3( { char *fnam; CONST char * suffix; - + HTStream* me; - + if (HTClientHost) { HTAlert(CANNOT_SAVE_REMOTE); return HTBlackHole(); } - + me = (HTStream*)malloc(sizeof(*me)); if (me == NULL) outofmem(__FILE__, "Save and execute"); - me->isa = &HTFWriter; - + me->isa = &HTFWriter; + /* Save the file under a suitably suffixed name */ - + suffix = HTFileSuffix(pres->rep, anchor->content_encoding); fnam = (char *)malloc (L_tmpnam + 16 + strlen(suffix)); + if (fnam == NULL) + outofmem(__FILE__, "HTSaveAndExecute"); tmpnam (fnam); if (suffix) strcat(fnam, suffix); - + me->fp = fopen (fnam, "w"); if (!me->fp) { HTAlert(CANNOT_OPEN_TEMP); @@ -270,7 +272,7 @@ PUBLIC HTStream* HTSaveAndExecute ARGS3( me->remove_command = NULL; /* If needed, put into end_command */ #ifdef NOPE /* Make command to delete file -*/ +*/ me->remove_command = 0; HTSprintf0(&(me->remove_command), REMOVE_COMMAND, fnam); #endif @@ -301,34 +303,36 @@ PUBLIC HTStream* HTSaveLocally ARGS3( char *fnam; char *answer; CONST char * suffix; - + HTStream* me; - + if (HTClientHost) { HTAlert(CANNOT_SAVE_REMOTE); return HTBlackHole(); } - + me = (HTStream*)malloc(sizeof(*me)); if (me == NULL) outofmem(__FILE__, "SaveLocally"); - me->isa = &HTFWriter; + me->isa = &HTFWriter; me->end_command = NULL; me->remove_command = NULL; /* If needed, put into end_command */ me->announce = YES; - + /* Save the file under a suitably suffixed name */ - + suffix = HTFileSuffix(pres->rep, anchor->content_encoding); fnam = (char *)malloc (L_tmpnam + 16 + strlen(suffix)); + if (fnam == NULL) + outofmem(__FILE__, "HTSaveLocally"); tmpnam (fnam); if (suffix) strcat(fnam, suffix); - + /* Save Panel */ answer = HTPrompt(GIVE_FILENAME, fnam); - + FREE(fnam); - + me->fp = fopen (answer, "w"); if (!me->fp) { HTAlert(CANNOT_OPEN_OUTPUT); diff --git a/WWW/Library/Implementation/HTFWriter.h b/WWW/Library/Implementation/HTFWriter.h index 089ad0fb..b4e79cbc 100644 --- a/WWW/Library/Implementation/HTFWriter.h +++ b/WWW/Library/Implementation/HTFWriter.h @@ -1,9 +1,9 @@ /* File Writer for libwww C FILE WRITER - + It is useful to have both FWriter and Writer for environments in which fdopen() doesn't exist for example. - + */ #ifndef HTFWRITE_H #define HTFWRITE_H @@ -11,10 +11,6 @@ #include <HTStream.h> #include <HTFormat.h> -#ifdef SHORT_NAMES -#define HTFWriter_new HTFWnew -#endif - extern HTStream * HTFWriter_new PARAMS((FILE * fp)); extern HTStream * HTSaveAndExecute PARAMS(( diff --git a/WWW/Library/Implementation/HTFinger.c b/WWW/Library/Implementation/HTFinger.c index 4d1aeeca..36a7b89c 100644 --- a/WWW/Library/Implementation/HTFinger.c +++ b/WWW/Library/Implementation/HTFinger.c @@ -26,6 +26,9 @@ */ #include <HTUtils.h> + +#ifndef DISABLE_FINGER + #include <HTAlert.h> #include <HTML.h> #include <HTParse.h> @@ -416,3 +419,5 @@ GLOBALDEF (HTProtocol, HTFinger, _HTFINGER_C_1_INIT); #else GLOBALDEF PUBLIC HTProtocol HTFinger = { "finger", HTLoadFinger, NULL }; #endif /* GLOBALDEF_IS_MACRO */ + +#endif /* not DISABLE_FINGER */ diff --git a/WWW/Library/Implementation/HTFormat.c b/WWW/Library/Implementation/HTFormat.c index 33c6e344..23b16db5 100644 --- a/WWW/Library/Implementation/HTFormat.c +++ b/WWW/Library/Implementation/HTFormat.c @@ -41,7 +41,6 @@ PUBLIC long int HTMaxBytes = 0; /* No effective limit */ #include <HTFWriter.h> #include <HTPlain.h> #include <SGML.h> -#include <HTML.h> #include <HTMLGen.h> #include <LYexit.h> diff --git a/WWW/Library/Implementation/HTFormat.h b/WWW/Library/Implementation/HTFormat.h index f4b3caf5..95302a1d 100644 --- a/WWW/Library/Implementation/HTFormat.h +++ b/WWW/Library/Implementation/HTFormat.h @@ -18,11 +18,6 @@ Preamble #include <HTAtom.h> #include <HTList.h> -#ifdef SHORT_NAMES -#define HTOutputSource HTOuSour -#define HTOutputBinary HTOuBina -#endif - /* The HTFormat type diff --git a/WWW/Library/Implementation/HTGroup.c b/WWW/Library/Implementation/HTGroup.c index 09340b30..490699d3 100644 --- a/WWW/Library/Implementation/HTGroup.c +++ b/WWW/Library/Implementation/HTGroup.c @@ -108,6 +108,8 @@ PRIVATE AddressDefList *parse_address_part ARGS1(FILE *, fp) for(;;) { Ref *ref = (Ref*)calloc(1, sizeof(Ref)); + if (ref == NULL) + outofmem(__FILE__, "parse_address_part"); ref->name = NULL; ref->translation = NULL; StrAllocCopy(ref->name, HTlex_buffer); @@ -162,6 +164,8 @@ PRIVATE UserDefList *parse_user_part ARGS1(FILE *, fp) for (;;) { Ref *ref = (Ref*)calloc(1, sizeof(Ref)); + if (ref == NULL) + outofmem(__FILE__, "parse_user_part"); ref->name = NULL; ref->translation = NULL; StrAllocCopy(ref->name, HTlex_buffer); @@ -220,7 +224,7 @@ PRIVATE Item *parse_item ARGS1(FILE *, fp) } else { if (user_def_list) { - HTList_delete(user_def_list); /* @@@@ */ + HTList_delete(user_def_list); /* @@@@ */ user_def_list = NULL; } syntax_error(fp, "Expected address part (single address or list)", @@ -235,6 +239,8 @@ PRIVATE Item *parse_item ARGS1(FILE *, fp) return NULL; } item = (Item*)calloc(1, sizeof(Item)); + if (item == NULL) + outofmem(__FILE__, "parse_item"); item->user_def_list = user_def_list; item->address_def_list = address_def_list; return item; @@ -282,6 +288,8 @@ PUBLIC GroupDef *HTAA_parseGroupDef ARGS1(FILE *, fp) return NULL; } group_def = (GroupDef*)calloc(1, sizeof(GroupDef)); + if (group_def == NULL) + outofmem(__FILE__, "HTAA_parseGroupDef"); group_def->group_name = NULL; group_def->item_list = item_list; @@ -341,8 +349,8 @@ PRIVATE GroupDef *find_group_def ARGS2(GroupDefList *, group_list, while (NULL != (group_def = (GroupDef*)HTList_nextObject(cur))) { if (!strcmp(group_name, group_def->group_name)) { return group_def; - } - } + } + } } return NULL; } @@ -661,7 +669,7 @@ PUBLIC GroupDefList *HTAA_readGroupFile ARGS1(CONST char *, filename) } /* cache exists */ CTRACE(tfp, "HTAA_readGroupFile: reading group file `%s'\n", - filename); + filename); if (!(fp = fopen(filename, "r"))) { CTRACE(tfp, "%s '%s'\n", diff --git a/WWW/Library/Implementation/HTGroup.h b/WWW/Library/Implementation/HTGroup.h index 80f7dacf..e78ac593 100644 --- a/WWW/Library/Implementation/HTGroup.h +++ b/WWW/Library/Implementation/HTGroup.h @@ -7,13 +7,6 @@ #include <HTList.h> -#ifdef SHORT_NAMES -#define HTAA_parseGroupDef HTAApGrD -#define HTAA_resolveGroupReferences HTAArGrR -#define HTAA_printGroupDef HTAApGrD -#define GroupDef_delete HTAAGD_d -#define HTAA_userAndInetInGroup HTAAuIIG -#endif /* SHORT_NAMES */ typedef HTList GroupDefList; typedef HTList ItemList; diff --git a/WWW/Library/Implementation/HTHistory.h b/WWW/Library/Implementation/HTHistory.h index 38d08e0e..a86be500 100644 --- a/WWW/Library/Implementation/HTHistory.h +++ b/WWW/Library/Implementation/HTHistory.h @@ -5,18 +5,6 @@ #include <HTAnchor.h> -#ifdef SHORT_NAMES -#define HTHistory_record HTHiReco -#define HTHistory_backtrack HTHiBack -#define HTHistory_canBacktrack HTHiCaBa -#define HTHistory_moveBy HTHiMoBy -#define HTHistory_canMoveBy HTHiCaMo -#define HTHistory_read HTHiRead -#define HTHistory_recall HTHiReca -#define HTHistory_count HTHiCoun -#define HTHistory_leavingFrom HTHiLeFr -#endif - /* Navigation ** ========== */ diff --git a/WWW/Library/Implementation/HTLex.h b/WWW/Library/Implementation/HTLex.h index 205d6b19..6997b8f7 100644 --- a/WWW/Library/Implementation/HTLex.h +++ b/WWW/Library/Implementation/HTLex.h @@ -1,5 +1,5 @@ /* LEXICAL ANALYSOR (MAINLY FOR CONFIG FILES) - + */ #ifndef HTLEX_H @@ -7,10 +7,6 @@ #include <HTUtils.h> -#ifdef SHORT_NAMES -#define lex_verb lex_verbose -#endif /*SHORT_NAMES*/ - typedef enum { LEX_NONE, /* Internally used */ LEX_EOF, /* End of file */ @@ -32,7 +28,7 @@ extern int HTlex_line; /* Line number in source file */ Get Next Lexical Item If returns LEX_ALPH_STR or LEX_TMPL_STR the string is in global buffer lex_buffer. - + */ PUBLIC LexItem lex PARAMS((FILE * fp)); diff --git a/WWW/Library/Implementation/HTList.h b/WWW/Library/Implementation/HTList.h index 653e87a5..a66253fd 100644 --- a/WWW/Library/Implementation/HTList.h +++ b/WWW/Library/Implementation/HTList.h @@ -16,19 +16,6 @@ struct _HTList { HTList * next; }; -#ifdef SHORT_NAMES -#define HTList_new HTLiNew -#define HTList_delete HTLiDele -#define HTList_addObject HTLiAdOb -#define HTList_removeObject HTLiReOb -#define HTList_removeObjectAt HTLiReAt -#define HTList_removeLastObject HTLiReLa -#define HTList_removeFirstObject HTLiReFi -#define HTList_count HTLiCoun -#define HTList_indexOf HTLiInOf -#define HTList_objectAt HTLiObAt -#endif /* SHORT_NAMES */ - /* Fast macro to traverse a list. Call it first with copy of the list ** header. It returns the first object and increments the passed list diff --git a/WWW/Library/Implementation/HTMLDTD.c b/WWW/Library/Implementation/HTMLDTD.c index 205f2e0c..f71ab852 100644 --- a/WWW/Library/Implementation/HTMLDTD.c +++ b/WWW/Library/Implementation/HTMLDTD.c @@ -9,12 +9,19 @@ #include <HTMLDTD.h> #include <LYLeaks.h> +/* + * Character entities like   now excluded from our DTD tables, + * they are mapped to Unicode and handled by chartrans code directly + * the similar way the numeric entities like { does. + * See src/chrtrans/entities.h for real mapping. + */ + /* Entity Names ** ------------ ** ** This table must be matched exactly with ALL the translation tables -** (this is an obsolete translation mechanism, -** currently replaced with unicode chartrans in most cases...) +** (this is an obsolete translation mechanism, probably unused, +** currently replaced with Unicode chartrans in most cases...) */ static CONST char* entities[] = { "AElig", /* capital AE diphthong (ligature) */ @@ -131,9 +138,6 @@ static CONST char* entities[] = { "yuml", /* small y, dieresis or umlaut mark */ }; -#define HTML_ENTITIES 112 - -#include <entities.h> /* Attribute Lists ** --------------- @@ -1591,10 +1595,8 @@ static HTTag tags[HTML_ELEMENTS]; PUBLIC CONST SGML_dtd HTML_dtd = { tags, HTML_ELEMENTS, - entities, + entities, /* probably unused */ sizeof(entities)/sizeof(entities[0]), - unicode_entities, - sizeof(unicode_entities)/sizeof(unicode_entities[0]) }; /* This function fills the "tags" part of the HTML_dtd structure with diff --git a/WWW/Library/Implementation/HTMLDTD.h b/WWW/Library/Implementation/HTMLDTD.h index f9e157ac..59e8012b 100644 --- a/WWW/Library/Implementation/HTMLDTD.h +++ b/WWW/Library/Implementation/HTMLDTD.h @@ -20,9 +20,9 @@ #ifndef HT_NON_BREAK_SPACE #define HT_NON_BREAK_SPACE ((char)1) /* For now */ #endif /* !HT_NON_BREAK_SPACE */ -#ifndef HT_EM_SPACE -#define HT_EM_SPACE ((char)2) /* For now */ -#endif /* !HT_EM_SPACE */ +#ifndef HT_EN_SPACE +#define HT_EN_SPACE ((char)2) /* For now */ +#endif /* !HT_EN_SPACE */ #ifndef LY_SOFT_HYPHEN #define LY_SOFT_HYPHEN ((char)7) #endif /* !LY_SOFT_HYPHEN */ diff --git a/WWW/Library/Implementation/HTMLGen.c b/WWW/Library/Implementation/HTMLGen.c index 9e5ac447..a5269eba 100644 --- a/WWW/Library/Implementation/HTMLGen.c +++ b/WWW/Library/Implementation/HTMLGen.c @@ -26,12 +26,29 @@ #include <SGML.h> #include <HTFormat.h> +#ifdef USE_COLOR_STYLE +#include <LYCharUtils.h> +#include <AttrList.h> +#include <LYHash.h> +#include <LYStyle.h> +#endif + #include <LYLeaks.h> +extern BOOLEAN LYPreparsedSource; /* Show source as preparsed? */ + #define PUTC(c) (*me->targetClass.put_character)(me->target, c) /* #define PUTS(s) (*me->targetClass.put_string)(me->target, s) */ #define PUTB(s,l) (*me->targetClass.put_block)(me->target, s, l) +#ifdef USE_COLOR_STYLE +PUBLIC char class_string[TEMPSTRINGSIZE]; + +static char *Style_className = NULL; +static char myHash[128]; +static int hcode; +#endif + /* HTML Object ** ----------- */ @@ -56,6 +73,9 @@ struct _HTStructured { BOOL preformatted; BOOL escape_specials; BOOL in_attrval; +#ifdef USE_COLOR_STYLE + HText * text; +#endif }; /* Flush Buffer @@ -83,6 +103,46 @@ PRIVATE void HTMLGen_flush ARGS1( me->delete_line_break_char[0] = NO; } +#ifdef USE_COLOR_STYLE +/* + * We need to flush our buffer each time before we effect a color style + * change, this also relies on the subsequent stage not doing any + * buffering - this is currently true, in cases where it matters the + * target stream should be the HTPlain converter. + * The flushing currently prevents reasonable line breaking in lines + * with tags. Since color styles help visual scanning of displayed + * source lines, and long lines are wrapped in GridText anyway, this + * is probably acceptable (or even A Good Thing - more to see in one + * screenful). + * The pointer to the HText structure is initialized here before + * we effect the first style change. Getting it from the global + * HTMainText variable isn't very clean, since it relies on the fact + * that HText_new() has already been called for the current stream + * stack's document by the time we start processing the first element; + * we rely on HTMLGenerator's callers (HTMLParsedPresent in particular) + * to guarantee this when it matters. Normally the target stream will + * have been setup by HTPlainPresent, which does what we need in this + * respect. (A check whether we have the right output stream could be + * done by checking that targetClass.name is "PlainPresenter" or similar.) + * + * All special color style handling is only done if LYPreparsedSource + * is set. We could always do it for displaying source generated by + * an internal gateway, but this makes the rule more simple for the + * user: color styles are applied to html source only with the + * -preparsed flag. - kw + */ +PRIVATE void do_cstyle_flush ARGS1( + HTStructured *, me) +{ + if (!me->text && LYPreparsedSource) { + me->text = HTMainText; + } + if (me->text) { + HTMLGen_flush(me); + } +} +#endif /* COLOR_STYLE */ + /* Weighted optional line break ** ** We keep track of all the breaks for when we chop the line @@ -121,7 +181,7 @@ PRIVATE void HTMLGen_put_character ARGS2( char, c) { if (me->escape_specials && (unsigned char)c < 32) { - if (c == HT_NON_BREAK_SPACE || c == HT_EM_SPACE || + if (c == HT_NON_BREAK_SPACE || c == HT_EN_SPACE || c == LY_SOFT_HYPHEN) { /* recursion... */ HTMLGen_put_character(me, '&'); HTMLGen_put_character(me, '#'); @@ -131,11 +191,11 @@ PRIVATE void HTMLGen_put_character ARGS2( HTMLGen_put_character(me, 'A'); HTMLGen_put_character(me, '0'); break; - case HT_EM_SPACE: /*   */ + case HT_EN_SPACE: /*   */ HTMLGen_put_character(me, '2'); HTMLGen_put_character(me, '0'); HTMLGen_put_character(me, '0'); - HTMLGen_put_character(me, '3'); + HTMLGen_put_character(me, '2'); break; case LY_SOFT_HYPHEN: /* ­ */ HTMLGen_put_character(me, 'A'); @@ -266,6 +326,59 @@ PRIVATE void HTMLGen_start_element ARGS6( BOOL was_preformatted = me->preformatted; HTTag * tag = &HTML_dtd.tags[element_number]; +#if defined(USE_COLOR_STYLE) + char *title = NULL; + char *title_tmp = NULL; + + if (LYPreparsedSource) { + /* + * Same logic as in HTML_start_element, copied from there. - kw + */ + HTSprintf (&Style_className, ";%s", HTML_dtd.tags[element_number].name); + strcpy (myHash, HTML_dtd.tags[element_number].name); + if (class_string[0]) + { + HTSprintf (&Style_className, ".%s", class_string); + strcat (myHash, "."); + strcat (myHash, class_string); + } + class_string[0] = '\0'; + strtolower(myHash); + hcode = hash_code(myHash); + strtolower(Style_className); + + if (TRACE) + { + fprintf(tfp, "CSSTRIM:%s -> %d", myHash, hcode); + if (hashStyles[hcode].code!=hcode) + { + char *rp=strrchr(myHash, '.'); + fprintf(tfp, " (undefined) %s\n", myHash); + if (rp) + { + int hcd; + *rp='\0'; /* trim the class */ + hcd = hash_code(myHash); + fprintf(tfp, "CSS:%s -> %d", myHash, hcd); + if (hashStyles[hcd].code!=hcd) + fprintf(tfp, " (undefined) %s\n", myHash); + else + fprintf(tfp, " ca=%d\n", hashStyles[hcd].color); + } + } + else + fprintf(tfp, " ca=%d\n", hashStyles[hcode].color); + } + + if (displayStyles[element_number + STARTAT].color > -2) /* actually set */ + { + CTRACE(tfp, "CSSTRIM: start_element: top <%s>\n", + HTML_dtd.tags[element_number].name); + do_cstyle_flush(me); + HText_characterStyle(me->text, hcode, 1); + } + } +#endif /* USE_COLOR_STYLE */ me->preformatted = YES; /* free text within tags */ HTMLGen_put_character(me, '<'); HTMLGen_put_string(me, tag->name); @@ -276,6 +389,36 @@ PRIVATE void HTMLGen_start_element ARGS6( had_attr = YES; HTMLGen_put_character(me, ' '); allow_break(me, 11, YES); +#ifdef USE_COLOR_STYLE + /* + * Try to mimic HTML_start_element's special handling + * for HTML_LINK. If applicable, color the displayed + * attribute / value pairs differently. - kw + */ + if (LYPreparsedSource && + element_number == HTML_LINK && !title && + present[HTML_LINK_CLASS] && + value && *value[HTML_LINK_CLASS]!='\0' && + !present[HTML_LINK_REV] && + (present[HTML_LINK_REL] || present[HTML_LINK_HREF])) { + if (present[HTML_LINK_TITLE] && *value[HTML_LINK_TITLE]) { + StrAllocCopy(title, value[HTML_LINK_TITLE]); + LYTrimHead(title); + LYTrimTail(title); + } + if ((!title || *title=='\0') && present[HTML_LINK_REL]) { + StrAllocCopy(title, value[HTML_LINK_REL]); + } + if (title && *title) { + HTSprintf0(&title_tmp, "link.%s.%s", + value[HTML_LINK_CLASS], title); + CTRACE(tfp, "CSSTRIM:link=%s\n", title_tmp); + + do_cstyle_flush(me); + HText_characterStyle(me->text, hash_code(title_tmp), 1); + } + } +#endif HTMLGen_put_string(me, tag->attributes[i].name); if (value[i]) { me->preformatted = was_preformatted; @@ -305,6 +448,19 @@ PRIVATE void HTMLGen_start_element ARGS6( } } } +#ifdef USE_COLOR_STYLE + if (had_attr && LYPreparsedSource && element_number == HTML_LINK) { + /* + * Clean up after special HTML_LINK handling - kw + */ + if (title && *title) { + do_cstyle_flush(me); + HText_characterStyle(me->text, hash_code(title_tmp), 0); + FREE(title_tmp); + } + FREE(title); + } +#endif if (had_attr) allow_break(me, 12, NO); } @@ -324,6 +480,29 @@ PRIVATE void HTMLGen_start_element ARGS6( else allow_break(me, 2, NO); } + +#if defined(USE_COLOR_STYLE) + /* + * Same logic as in HTML_start_element, copied from there. - kw + */ + +/* end really empty tags straight away */ +#define REALLY_EMPTY(e) ((HTML_dtd.tags[e].contents == SGML_EMPTY) && \ + !(HTML_dtd.tags[e].flags & Tgf_nreie)) + + if (LYPreparsedSource && REALLY_EMPTY(element_number)) + { + CTRACE(tfp, "STYLE:begin_element:ending EMPTY element style\n"); + do_cstyle_flush(me); +#if !defined(USE_HASH) + HText_characterStyle(me->text, element_number+STARTAT, STACK_OFF); +#else + HText_characterStyle(me->text, hcode, STACK_OFF); +#endif /* USE_HASH */ + TrimColorClass(HTML_dtd.tags[element_number].name, + Style_className, &hcode); + } +#endif /* USE_COLOR_STYLE */ } /* End Element @@ -358,6 +537,24 @@ PRIVATE void HTMLGen_end_element ARGS3( if (element_number == HTML_PRE) { me->preformatted = NO; } +#ifdef USE_COLOR_STYLE + /* + * Same logic as in HTML_end_element, copied from there. - kw + */ + TrimColorClass(HTML_dtd.tags[element_number].name, + Style_className, &hcode); + + if (LYPreparsedSource && !REALLY_EMPTY(element_number)) + { + CTRACE(tfp, "STYLE:end_element: ending non-EMPTY style\n"); + do_cstyle_flush(me); +#if !defined(USE_HASH) + HText_characterStyle(me->text, element_number+STARTAT, STACK_OFF); +#else + HText_characterStyle(me->text, hcode, STACK_OFF); +#endif /* USE_HASH */ + } +#endif /* USE_COLOR_STYLE */ } /* Expanding entities @@ -388,6 +585,9 @@ PRIVATE void HTMLGen_free ARGS1( (*me->targetClass.put_character)(me->target, '\n'); HTMLGen_flush(me); (*me->targetClass._free)(me->target); /* ripple through */ +#ifdef USE_COLOR_STYLE + FREE(Style_className); +#endif FREE(me); } @@ -403,6 +603,9 @@ PRIVATE void HTMLGen_abort ARGS2( HTError, e GCC_UNUSED) { HTMLGen_free(me); +#ifdef USE_COLOR_STYLE + FREE(Style_className); +#endif } PRIVATE void PlainToHTML_abort ARGS2( @@ -431,7 +634,6 @@ PRIVATE CONST HTStructuredClass HTMLGeneration = /* As opposed to print etc */ extern int LYcols; /* LYCurses.h, set in LYMain.c */ extern BOOL dump_output_immediately; /* TRUE if no interactive user */ extern int dump_output_width; /* -width instead of 80 */ -extern BOOLEAN LYPreparsedSource; /* Show source as preparsed? */ PUBLIC HTStructured * HTMLGenerator ARGS1( HTStream *, output) @@ -482,6 +684,12 @@ PUBLIC HTStructured * HTMLGenerator ARGS1( */ me->escape_specials = LYPreparsedSource; +#ifdef USE_COLOR_STYLE + me->text = NULL; /* Will be initialized when first needed. - kw */ + FREE(Style_className); + class_string[0] = '\0'; +#endif /* COLOR_STYLE */ + return me; } diff --git a/WWW/Library/Implementation/HTNews.c b/WWW/Library/Implementation/HTNews.c index 8669db3e..9f817043 100644 --- a/WWW/Library/Implementation/HTNews.c +++ b/WWW/Library/Implementation/HTNews.c @@ -8,6 +8,8 @@ #include <HTUtils.h> /* Coding convention macros */ +#ifndef DISABLE_NEWS + /* Implements: */ #include <HTNews.h> @@ -2820,3 +2822,5 @@ GLOBALDEF PUBLIC HTProtocol HTSNews = { "snews", HTLoadNews, NULL }; GLOBALDEF PUBLIC HTProtocol HTSNewsPost = { "snewspost", HTLoadNews, NULL }; GLOBALDEF PUBLIC HTProtocol HTSNewsReply = { "snewsreply", HTLoadNews, NULL }; #endif /* GLOBALDEF_IS_MACRO */ + +#endif /* not DISABLE_NEWS */ diff --git a/WWW/Library/Implementation/HTPasswd.h b/WWW/Library/Implementation/HTPasswd.h index f02dbc9f..49468723 100644 --- a/WWW/Library/Implementation/HTPasswd.h +++ b/WWW/Library/Implementation/HTPasswd.h @@ -7,13 +7,6 @@ #include <HTList.h> -#ifdef SHORT_NAMES -#define HTAA_encryptPasswd HTAAenPw -#define HTAA_passwdMatch HTAApwMa -#define HTAAFile_readPasswdRec HTAAFrPR -#define HTAA_checkPasswd HTAAchPw -#endif /* SHORT_NAMES */ - /* User Authentication diff --git a/WWW/Library/Implementation/HTPlain.c b/WWW/Library/Implementation/HTPlain.c index 91973126..fd9f3f8b 100644 --- a/WWW/Library/Implementation/HTPlain.c +++ b/WWW/Library/Implementation/HTPlain.c @@ -424,7 +424,7 @@ PRIVATE void HTPlain_write ARGS3(HTStream *, me, CONST char*, s, int, l) /* ** If CJK mode is on, we'll assume the document matches - ** the user's selected character set, and if not, the + ** the user's display character set, and if not, the ** user should toggle off raw/CJK mode to reload. - FM */ if (HTCJK != NOCJK) { diff --git a/WWW/Library/Implementation/HTRules.h b/WWW/Library/Implementation/HTRules.h index 14862b23..06d2ea7a 100644 --- a/WWW/Library/Implementation/HTRules.h +++ b/WWW/Library/Implementation/HTRules.h @@ -31,10 +31,6 @@ typedef enum _HTRuleOp { #ifndef NO_RULES -#ifdef SHORT_NAMES -#define HTSearchScript HTSearSc -#endif /*SHORT_NAMES*/ - /* Server Side Script Execution diff --git a/WWW/Library/Implementation/HTStyle.c b/WWW/Library/Implementation/HTStyle.c index e4066057..c5cabf78 100644 --- a/WWW/Library/Implementation/HTStyle.c +++ b/WWW/Library/Implementation/HTStyle.c @@ -19,9 +19,9 @@ PUBLIC HTStyle* HTStyleNew NOARGS { HTStyle * self = (HTStyle *)malloc(sizeof(*self)); + if (self == NULL) + outofmem(__FILE__, "HTStyleNew"); memset((void *)self, 0, sizeof(*self)); - self->font = (HTFont) 0; - self->color = 0; return self; } @@ -72,6 +72,8 @@ HTStyle * HTStyleRead (HTStyle * style, HTStream * stream) if (gotpara) { if (!style->paragraph) { style->paragraph = malloc(sizeof(*(style->paragraph))); + if (!style->paragraph) + outofmem(__FILE__, "HTStyleRead"); style->paragraph->tabs = 0; } p = style->paragraph; @@ -86,6 +88,8 @@ HTStyle * HTStyleRead (HTStyle * style, HTStream * stream) &p->numTabs); FREE(p->tabs); p->tabs = malloc(p->numTabs * sizeof(p->tabs[0])); + if (!p->tabs) + outofmem(__FILE__, "HTStyleRead"); for (tab=0; tab < p->numTabs; tab++) { NXScanf(stream, "%hd%f", &p->tabs[tab].kind, @@ -284,6 +288,8 @@ HTStyleSheet * HTStyleSheetRemoveStyle ARGS2 HTStyleSheet * HTStyleSheetNew NOARGS { HTStyleSheet * self = (HTStyleSheet *)malloc(sizeof(*self)); + if (self == NULL) + outofmem(__FILE__, "HTStyleSheetNew"); memset((void*)self, 0, sizeof(*self)); /* ANSI */ /* Harbison c ref man says (char*)self diff --git a/WWW/Library/Implementation/HTStyle.h b/WWW/Library/Implementation/HTStyle.h index 3075a2c1..0cc15895 100644 --- a/WWW/Library/Implementation/HTStyle.h +++ b/WWW/Library/Implementation/HTStyle.h @@ -36,23 +36,6 @@ Overriding this module typedef long int HTFont; /* Dummy definition instead */ -#ifdef SHORT_NAMES -#define HTStyleNew HTStNew -#define HTStyleFree HTStFree -#define HTStyleRead HTStRead -#define HTStyleWrite HTStWrite -#define HTStyleSheetNew HTStShNe -#define HTStyleSheetFree HTStShFr -#define HTStyleNamed HTStName -#define HTStyleForParagraph HTStFoPa -#define HTStyleMatching HTStMatc -#define HTStyleForRun HTStFoRu -#define HTStyleSheetAddStyle HTStShAd -#define HTStyleSheetRemoveStyle HTStShRm -#define HTStyleSheetRead HTStShRe -#define HTStyleSheetWrite HTStShWr -#endif - #ifdef NeXT_suppressed #include <appkit/appkit.h> typedef NXCoord HTCoord; diff --git a/WWW/Library/Implementation/HTTCP.c b/WWW/Library/Implementation/HTTCP.c index f34e0fbf..53cabd0e 100644 --- a/WWW/Library/Implementation/HTTCP.c +++ b/WWW/Library/Implementation/HTTCP.c @@ -55,12 +55,6 @@ PUBLIC int BSDselect PARAMS(( #include <LYLeaks.h> -#ifdef SHORT_NAMES -#define HTInetStatus HTInStat -#define HTInetString HTInStri -#define HTParseInet HTPaInet -#endif /* SHORT_NAMES */ - #ifndef FD_SETSIZE #if defined(UCX) || defined(SOCKETSHR_TCP) || defined(CMU_TCP) #define FD_SETSIZE 32 diff --git a/WWW/Library/Implementation/HTTCP.h b/WWW/Library/Implementation/HTTCP.h index 0c7e8e61..e532cbb8 100644 --- a/WWW/Library/Implementation/HTTCP.h +++ b/WWW/Library/Implementation/HTTCP.h @@ -9,13 +9,6 @@ #include <HTUtils.h> -#ifdef SHORT_NAMES -#define HTInetStatus HTInStat -#define HTInetString HTInStri -#define HTParseInet HTPaInet -#endif - - /* Produce a string for an internet address ** --------------------------------------- ** diff --git a/WWW/Library/Implementation/HTTP.c b/WWW/Library/Implementation/HTTP.c index 37bb2052..a6129b5e 100644 --- a/WWW/Library/Implementation/HTTP.c +++ b/WWW/Library/Implementation/HTTP.c @@ -650,6 +650,8 @@ try_again: int buffer_length = INIT_LINE_SIZE; line_buffer = (char *)calloc(1, (buffer_length * sizeof(char))); + if (line_buffer == NULL) + outofmem(__FILE__, "HTLoadHTTP"); HTReadProgress (bytes_already_read = 0, 0); do {/* Loop to read in the first line */ @@ -660,6 +662,8 @@ try_again: buffer_length = buffer_length + buffer_length; line_buffer = (char *)realloc(line_buffer, (buffer_length * sizeof(char))); + if (line_buffer == NULL) + outofmem(__FILE__, "HTLoadHTTP"); } CTRACE (tfp, "HTTP: Trying to read %d\n", buffer_length - length - 1); @@ -729,6 +733,8 @@ try_again: if (line_buffer) { FREE(line_kept_clean); line_kept_clean = (char *)malloc(buffer_length * sizeof(char)); + if (line_kept_clean == NULL) + outofmem(__FILE__, "HTLoadHTTP"); memcpy(line_kept_clean, line_buffer, buffer_length); } diff --git a/WWW/Library/Implementation/HTUtils.h b/WWW/Library/Implementation/HTUtils.h index 70c2813d..8ce4285f 100644 --- a/WWW/Library/Implementation/HTUtils.h +++ b/WWW/Library/Implementation/HTUtils.h @@ -115,11 +115,6 @@ #endif - -#ifdef SHORT_NAMES -#define WWW_TraceFlag HTTrFlag -#endif - /* Debug message control. diff --git a/WWW/Library/Implementation/HText.h b/WWW/Library/Implementation/HText.h index 2d1f1ed3..7258a343 100644 --- a/WWW/Library/Implementation/HText.h +++ b/WWW/Library/Implementation/HText.h @@ -17,36 +17,6 @@ #include <HTStream.h> #include <SGML.h> -#ifdef SHORT_NAMES -#define HTMainText HTMaText -#define HTMainAnchor HtMaAnch -#define HText_new HTHTNew -#define HText_new2 HTHTNew2 -#define HText_free HTHTFree -#define HText_beginAppend HTHTBeAp -#define HText_endAppend HTHTEnAp -#define HText_setStyle HTHTSeSt -#define HText_appendCharacter HTHTApCh -#define HText_appendImage HTHTApIm -#define HText_appendText HTHTApTe -#define HText_appendParagraph HTHTApPa -#define HText_beginAnchor HTHTBeAn -#define HText_endAnchor HTHTEnAn -#define HText_dump HTHTDump -#define HText_nodeAnchor HTHTNoAn -#define HText_select HTHTSele -#define HText_selectAnchor HTHTSeAn -#define HText_applyStyle HTHTApSt -#define HText_updateStyle HTHTUpSt -#define HText_selectionStyle HTHTStyl -#define HText_replaceSel HTHTRepl -#define HText_applyToSimilar HTHTApTo -#define HText_selectUnstyled HTHTSeUn -#define HText_unlinkSelection HTHTUnSe -#define HText_linkSelTo HTHTLiSe -#define HText_referenceSelected HTHTRefS -#endif - #ifndef THINK_C #ifndef HyperText /* Objective C version defined HyperText */ typedef struct _HText HText; /* Normal Library */ diff --git a/WWW/Library/Implementation/SGML.c b/WWW/Library/Implementation/SGML.c index 41292c9b..01385a16 100644 --- a/WWW/Library/Implementation/SGML.c +++ b/WWW/Library/Implementation/SGML.c @@ -342,27 +342,26 @@ PRIVATE BOOL put_special_unicodes ARGS2( ** Use Lynx special character for shy. */ PUTC(LY_SOFT_HYPHEN); - } else if (code == 8194 || code == 8195 || code == 8201) { + } else if (code == 8194 || code == 8201) { /* - ** Use Lynx special character for ensp, emsp or thinsp. + ** Use Lynx special character for ensp or thinsp. ** ** Originally, Lynx use space '32' as word delimiter and omits this ** space at end of line if word is wrapped to the next line. There ** are several other spaces in the Unicode repertoire and we should ** teach Lynx to understand them, not only as regular characters but ** in the context of line wrapping. Unfortunately, if we use - ** HT_EM_SPACE we override the chartrans tables for those spaces - ** (e.g., emsp= double space) with a single '32' for all (but do line - ** wrapping more fancy). So we probably need HT_EN_SPACE etc... + ** HT_EN_SPACE we override the chartrans tables for those spaces + ** with a single '32' for all (but do line wrapping more fancy). + ** Assume emsp as two ensp (below). */ - PUTC(HT_EM_SPACE); -#ifdef NOTUSED_FOTEMODS - } else if (code == 8211 || code == 8212) { + PUTC(HT_EN_SPACE); + } else if (code == 8195) { /* - ** Use ASCII hyphen for ndash/endash or mdash/emdash. + ** Use Lynx special character for emsp. */ - PUTC('-'); -#endif + PUTC(HT_EN_SPACE); + PUTC(HT_EN_SPACE); } else { /* ** Return NO if nothing done. @@ -704,7 +703,7 @@ PRIVATE void end_element ARGS2( } if (stackpos == 0 && old_tag->contents != SGML_EMPTY) { - CTRACE(tfp, "SGML: Still open %s, no open %s for </%s>\n", + CTRACE(tfp, "SGML: Still open %s, ***no open %s for </%s>\n", context->element_stack ? context->element_stack->tag->name : "none", old_tag->name, @@ -844,7 +843,7 @@ PRIVATE void start_element ARGS1( for (; i< new_tag->number_of_attributes && !has_attributes; i++) has_attributes = context->present[i]; if (!has_attributes) { - CTRACE(tfp, "SGML: Still open %s, converting invalid <%s> to </%s>\n", + CTRACE(tfp, "SGML: Still open %s, ***converting invalid <%s> to </%s>\n", context->element_stack->tag->name, new_tag->name, new_tag->name); @@ -1609,10 +1608,11 @@ top1: ** If Mismatch: recover string. */ PUTC('<'); - for (i = 0; i < string->size; i++) /* recover */ + for (i = 0; i < string->size-1; i++) /* recover, except last c */ PUTC(string->data[i]); string->size = 0; context->state = S_text; + goto top1; /* to recover last c */ } break; diff --git a/WWW/Library/Implementation/SGML.h b/WWW/Library/Implementation/SGML.h index 71bf90bb..3e4575bd 100644 --- a/WWW/Library/Implementation/SGML.h +++ b/WWW/Library/Implementation/SGML.h @@ -2,17 +2,14 @@ SGML AND STRUCTURED STREAMS The SGML parser is a state machine. It is called for every character - of the input stream. The DTD data structure contains pointers - to functions which are called to implement the actual effect of the - text read. When these functions are called, the attribute structures pointed to by the DTD are valid, and the function is passed a pointer to the current tag structure, and an "element stack" which represents the state of nesting within SGML elements. - The following aspects are from Dan Connolly's suggestions: Binary search, Structured - object scheme basically, SGML content enum type. + The following aspects are from Dan Connolly's suggestions: Binary search, + Structured object scheme basically, SGML content enum type. (c) Copyright CERN 1991 - See Copyright.html @@ -130,23 +127,13 @@ struct _tag{ ** Not the whole DTD, but all this parser uses of it. */ typedef struct { - char* name; - long code; -} UC_entity_info; - -typedef struct { HTTag * tags; /* Must be in strcmp order by name */ int number_of_tags; CONST char ** entity_names; /* Must be in strcmp order by name */ size_t number_of_entities; - CONST UC_entity_info * unicode_entity_info; /* strcmp order by name */ - size_t number_of_unicode_entities; - /* - ** All calls to unicode_entities table should be done - ** through HTMLGetEntityUCValue (LYCharSets.c) only. - ** unicode_entities table now holds *all* - ** old-style entities too. - */ + /* "entity_names" table probably unused, + ** see comments in HTMLDTD.c near the top + */ } SGML_dtd; diff --git a/WWW/Library/Implementation/entities.h b/WWW/Library/Implementation/entities.h deleted file mode 100644 index a43aed6e..00000000 --- a/WWW/Library/Implementation/entities.h +++ /dev/null @@ -1,1092 +0,0 @@ -/* Entity Names to Unicode table -** ----------------------------- -** -* -* Whole entities[] thing (and much more) now present -* in this kind of structure. The structured streams to which -* the SGML modules sends its output could then easily have access -* to both entity names and unicode values for each (special) -* character. Probably the whole translation to display characters -* should be done at that later stage (e.g., in HTML.c). -* What's missing is a way for the later stage to return info -* to SGML whether the entity could be displayed or not. -* (like between SGML_character() and handle_entity() via FoundEntity.) -* Well, trying to do that now. -* Why keep two structures for entities? Backward compatibility.. -*/ - -#ifndef ENTITIES_H -#define ENTITIES_H 1 - -#include <HTUtils.h> -#include <SGML.h> - -/* UC_entity_info structure is defined in SGML.h. - This has to be sorted alphabetically (case-sensitive), - bear this in mind when you add some more entities.. */ - -/* - -This table available from ftp://ftp.unicode.org/ -original comment follows: - - -# Author: John Cowan <cowan@ccil.org> -# Date: 25 July 1997 -# -# The following table maps SGML character entities from various -# public sets (namely, ISOamsa, ISOamsb, ISOamsc, ISOamsn, ISOamso, -# ISOamsr, ISObox, ISOcyr1, ISOcyr2, ISOdia, ISOgrk1, ISOgrk2, -# ISOgrk3, ISOgrk4, ISOlat1, ISOlat2, ISOnum, ISOpub, ISOtech, -# HTMLspecial, HTMLsymbol) to corresponding Unicode characters. -# -# The table has four tab-separated columns: -# Column 1: SGML character entity name -# Column 2: SGML public entity set -# Column 3: Unicode 2.0 character code -# Column 4: Unicode 2.0 character name (UPPER CASE) -# Entries which don't have Unicode equivalents have "0x????" -# in Column 3 and a lower case description (from the public entity -# set DTD) in Column 4. The mapping is not reversible, because many -# distinctions are unified away in Unicode, particularly between -# mathematical symbols. -# -# The table is sorted case-blind by SGML character entity name. -# -# The contents of this table are drawn from various sources, and -# are in the public domain. -# -######################## - - We just sort it and move column 2 away (line too long, sorry; - look at sgml.html in test/ directory for details). - Also we add a few (obsolete) synonyms: - "brkbar" for "brvbar" 0x00A6 - "emdash" for "mdash" 0x2014 - "endash" for "ndash" 0x2013 - "hibar" for "macr" 0x00AF - for exact compatibility with entities[] and previous bevavior. - BTW, lots of synonyms found in this table, we shouldn't worry about... -*/ - -static CONST UC_entity_info unicode_entities[] = { - {"AElig", 0x00C6}, /* LATIN CAPITAL LETTER AE */ - {"Aacgr", 0x0386}, /* GREEK CAPITAL LETTER ALPHA WITH TONOS */ - {"Aacute", 0x00C1}, /* LATIN CAPITAL LETTER A WITH ACUTE */ - {"Abreve", 0x0102}, /* LATIN CAPITAL LETTER A WITH BREVE */ - {"Acirc", 0x00C2}, /* LATIN CAPITAL LETTER A WITH CIRCUMFLEX */ - {"Acy", 0x0410}, /* CYRILLIC CAPITAL LETTER A */ - {"Agr", 0x0391}, /* GREEK CAPITAL LETTER ALPHA */ - {"Agrave", 0x00C0}, /* LATIN CAPITAL LETTER A WITH GRAVE */ - {"Alpha", 0x0391}, /* GREEK CAPITAL LETTER ALPHA */ - {"Amacr", 0x0100}, /* LATIN CAPITAL LETTER A WITH MACRON */ - {"Aogon", 0x0104}, /* LATIN CAPITAL LETTER A WITH OGONEK */ - {"Aring", 0x00C5}, /* LATIN CAPITAL LETTER A WITH RING ABOVE */ - {"Atilde", 0x00C3}, /* LATIN CAPITAL LETTER A WITH TILDE */ - {"Auml", 0x00C4}, /* LATIN CAPITAL LETTER A WITH DIAERESIS */ - {"Barwed", 0x2306}, /* PERSPECTIVE */ - {"Bcy", 0x0411}, /* CYRILLIC CAPITAL LETTER BE */ - {"Beta", 0x0392}, /* GREEK CAPITAL LETTER BETA */ - {"Bgr", 0x0392}, /* GREEK CAPITAL LETTER BETA */ - {"CHcy", 0x0427}, /* CYRILLIC CAPITAL LETTER CHE */ - {"Cacute", 0x0106}, /* LATIN CAPITAL LETTER C WITH ACUTE */ - {"Cap", 0x22D2}, /* DOUBLE INTERSECTION */ - {"Ccaron", 0x010C}, /* LATIN CAPITAL LETTER C WITH CARON */ - {"Ccedil", 0x00C7}, /* LATIN CAPITAL LETTER C WITH CEDILLA */ - {"Ccirc", 0x0108}, /* LATIN CAPITAL LETTER C WITH CIRCUMFLEX */ - {"Cdot", 0x010A}, /* LATIN CAPITAL LETTER C WITH DOT ABOVE */ - {"Chi", 0x03A7}, /* GREEK CAPITAL LETTER CHI */ - {"Cup", 0x22D3}, /* DOUBLE UNION */ - {"DJcy", 0x0402}, /* CYRILLIC CAPITAL LETTER DJE */ - {"DScy", 0x0405}, /* CYRILLIC CAPITAL LETTER DZE */ - {"DZcy", 0x040F}, /* CYRILLIC CAPITAL LETTER DZHE */ - {"Dagger", 0x2021}, /* DOUBLE DAGGER */ - {"Dcaron", 0x010E}, /* LATIN CAPITAL LETTER D WITH CARON */ - {"Dcy", 0x0414}, /* CYRILLIC CAPITAL LETTER DE */ - {"Delta", 0x0394}, /* GREEK CAPITAL LETTER DELTA */ - {"Dgr", 0x0394}, /* GREEK CAPITAL LETTER DELTA */ - {"Dot", 0x00A8}, /* DIAERESIS */ - {"DotDot", 0x20DC}, /* COMBINING FOUR DOTS ABOVE */ - {"Dstrok", 0x0110}, /* LATIN CAPITAL LETTER D WITH STROKE */ - {"EEacgr", 0x0389}, /* GREEK CAPITAL LETTER ETA WITH TONOS */ - {"EEgr", 0x0397}, /* GREEK CAPITAL LETTER ETA */ - {"ENG", 0x014A}, /* LATIN CAPITAL LETTER ENG */ - {"ETH", 0x00D0}, /* LATIN CAPITAL LETTER ETH */ - {"Eacgr", 0x0388}, /* GREEK CAPITAL LETTER EPSILON WITH TONOS */ - {"Eacute", 0x00C9}, /* LATIN CAPITAL LETTER E WITH ACUTE */ - {"Ecaron", 0x011A}, /* LATIN CAPITAL LETTER E WITH CARON */ - {"Ecirc", 0x00CA}, /* LATIN CAPITAL LETTER E WITH CIRCUMFLEX */ - {"Ecy", 0x042D}, /* CYRILLIC CAPITAL LETTER E */ - {"Edot", 0x0116}, /* LATIN CAPITAL LETTER E WITH DOT ABOVE */ - {"Egr", 0x0395}, /* GREEK CAPITAL LETTER EPSILON */ - {"Egrave", 0x00C8}, /* LATIN CAPITAL LETTER E WITH GRAVE */ - {"Emacr", 0x0112}, /* LATIN CAPITAL LETTER E WITH MACRON */ - {"Eogon", 0x0118}, /* LATIN CAPITAL LETTER E WITH OGONEK */ - {"Epsilon", 0x0395}, /* GREEK CAPITAL LETTER EPSILON */ - {"Eta", 0x0397}, /* GREEK CAPITAL LETTER ETA */ - {"Euml", 0x00CB}, /* LATIN CAPITAL LETTER E WITH DIAERESIS */ - {"Fcy", 0x0424}, /* CYRILLIC CAPITAL LETTER EF */ - {"GJcy", 0x0403}, /* CYRILLIC CAPITAL LETTER GJE */ - {"Gamma", 0x0393}, /* GREEK CAPITAL LETTER GAMMA */ - {"Gbreve", 0x011E}, /* LATIN CAPITAL LETTER G WITH BREVE */ - {"Gcedil", 0x0122}, /* LATIN CAPITAL LETTER G WITH CEDILLA */ - {"Gcirc", 0x011C}, /* LATIN CAPITAL LETTER G WITH CIRCUMFLEX */ - {"Gcy", 0x0413}, /* CYRILLIC CAPITAL LETTER GHE */ - {"Gdot", 0x0120}, /* LATIN CAPITAL LETTER G WITH DOT ABOVE */ - {"Gg", 0x22D9}, /* VERY MUCH GREATER-THAN */ - {"Ggr", 0x0393}, /* GREEK CAPITAL LETTER GAMMA */ - {"Gt", 0x226B}, /* MUCH GREATER-THAN */ - {"HARDcy", 0x042A}, /* CYRILLIC CAPITAL LETTER HARD SIGN */ - {"Hcirc", 0x0124}, /* LATIN CAPITAL LETTER H WITH CIRCUMFLEX */ - {"Hstrok", 0x0126}, /* LATIN CAPITAL LETTER H WITH STROKE */ - {"IEcy", 0x0415}, /* CYRILLIC CAPITAL LETTER IE */ - {"IJlig", 0x0132}, /* LATIN CAPITAL LIGATURE IJ */ - {"IOcy", 0x0401}, /* CYRILLIC CAPITAL LETTER IO */ - {"Iacgr", 0x038A}, /* GREEK CAPITAL LETTER IOTA WITH TONOS */ - {"Iacute", 0x00CD}, /* LATIN CAPITAL LETTER I WITH ACUTE */ - {"Icirc", 0x00CE}, /* LATIN CAPITAL LETTER I WITH CIRCUMFLEX */ - {"Icy", 0x0418}, /* CYRILLIC CAPITAL LETTER I */ - {"Idigr", 0x03AA}, /* GREEK CAPITAL LETTER IOTA WITH DIALYTIKA */ - {"Idot", 0x0130}, /* LATIN CAPITAL LETTER I WITH DOT ABOVE */ - {"Igr", 0x0399}, /* GREEK CAPITAL LETTER IOTA */ - {"Igrave", 0x00CC}, /* LATIN CAPITAL LETTER I WITH GRAVE */ - {"Imacr", 0x012A}, /* LATIN CAPITAL LETTER I WITH MACRON */ - {"Iogon", 0x012E}, /* LATIN CAPITAL LETTER I WITH OGONEK */ - {"Iota", 0x0399}, /* GREEK CAPITAL LETTER IOTA */ - {"Itilde", 0x0128}, /* LATIN CAPITAL LETTER I WITH TILDE */ - {"Iukcy", 0x0406}, /* CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN*/ - {"Iuml", 0x00CF}, /* LATIN CAPITAL LETTER I WITH DIAERESIS */ - {"Jcirc", 0x0134}, /* LATIN CAPITAL LETTER J WITH CIRCUMFLEX */ - {"Jcy", 0x0419}, /* CYRILLIC CAPITAL LETTER SHORT I */ - {"Jsercy", 0x0408}, /* CYRILLIC CAPITAL LETTER JE */ - {"Jukcy", 0x0404}, /* CYRILLIC CAPITAL LETTER UKRAINIAN IE */ - {"KHcy", 0x0425}, /* CYRILLIC CAPITAL LETTER HA */ - {"KHgr", 0x03A7}, /* GREEK CAPITAL LETTER CHI */ - {"KJcy", 0x040C}, /* CYRILLIC CAPITAL LETTER KJE */ - {"Kappa", 0x039A}, /* GREEK CAPITAL LETTER KAPPA */ - {"Kcedil", 0x0136}, /* LATIN CAPITAL LETTER K WITH CEDILLA */ - {"Kcy", 0x041A}, /* CYRILLIC CAPITAL LETTER KA */ - {"Kgr", 0x039A}, /* GREEK CAPITAL LETTER KAPPA */ - {"LJcy", 0x0409}, /* CYRILLIC CAPITAL LETTER LJE */ - {"Lacute", 0x0139}, /* LATIN CAPITAL LETTER L WITH ACUTE */ - {"Lambda", 0x039B}, /* GREEK CAPITAL LETTER LAMDA */ - {"Larr", 0x219E}, /* LEFTWARDS TWO HEADED ARROW */ - {"Lcaron", 0x013D}, /* LATIN CAPITAL LETTER L WITH CARON */ - {"Lcedil", 0x013B}, /* LATIN CAPITAL LETTER L WITH CEDILLA */ - {"Lcy", 0x041B}, /* CYRILLIC CAPITAL LETTER EL */ - {"Lgr", 0x039B}, /* GREEK CAPITAL LETTER LAMDA */ - {"Ll", 0x22D8}, /* VERY MUCH LESS-THAN */ - {"Lmidot", 0x013F}, /* LATIN CAPITAL LETTER L WITH MIDDLE DOT */ - {"Lstrok", 0x0141}, /* LATIN CAPITAL LETTER L WITH STROKE */ - {"Lt", 0x226A}, /* MUCH LESS-THAN */ - {"Mcy", 0x041C}, /* CYRILLIC CAPITAL LETTER EM */ - {"Mgr", 0x039C}, /* GREEK CAPITAL LETTER MU */ - {"Mu", 0x039C}, /* GREEK CAPITAL LETTER MU */ - {"NJcy", 0x040A}, /* CYRILLIC CAPITAL LETTER NJE */ - {"Nacute", 0x0143}, /* LATIN CAPITAL LETTER N WITH ACUTE */ - {"Ncaron", 0x0147}, /* LATIN CAPITAL LETTER N WITH CARON */ - {"Ncedil", 0x0145}, /* LATIN CAPITAL LETTER N WITH CEDILLA */ - {"Ncy", 0x041D}, /* CYRILLIC CAPITAL LETTER EN */ - {"Ngr", 0x039D}, /* GREEK CAPITAL LETTER NU */ - {"Ntilde", 0x00D1}, /* LATIN CAPITAL LETTER N WITH TILDE */ - {"Nu", 0x039D}, /* GREEK CAPITAL LETTER NU */ - {"OElig", 0x0152}, /* LATIN CAPITAL LIGATURE OE */ - {"OHacgr", 0x038F}, /* GREEK CAPITAL LETTER OMEGA WITH TONOS */ - {"OHgr", 0x03A9}, /* GREEK CAPITAL LETTER OMEGA */ - {"Oacgr", 0x038C}, /* GREEK CAPITAL LETTER OMICRON WITH TONOS */ - {"Oacute", 0x00D3}, /* LATIN CAPITAL LETTER O WITH ACUTE */ - {"Ocirc", 0x00D4}, /* LATIN CAPITAL LETTER O WITH CIRCUMFLEX */ - {"Ocy", 0x041E}, /* CYRILLIC CAPITAL LETTER O */ - {"Odblac", 0x0150}, /* LATIN CAPITAL LETTER O WITH DOUBLE ACUTE */ - {"Ogr", 0x039F}, /* GREEK CAPITAL LETTER OMICRON */ - {"Ograve", 0x00D2}, /* LATIN CAPITAL LETTER O WITH GRAVE */ - {"Omacr", 0x014C}, /* LATIN CAPITAL LETTER O WITH MACRON */ - {"Omega", 0x03A9}, /* GREEK CAPITAL LETTER OMEGA */ - {"Omicron", 0x039F}, /* GREEK CAPITAL LETTER OMICRON */ - {"Oslash", 0x00D8}, /* LATIN CAPITAL LETTER O WITH STROKE */ - {"Otilde", 0x00D5}, /* LATIN CAPITAL LETTER O WITH TILDE */ - {"Ouml", 0x00D6}, /* LATIN CAPITAL LETTER O WITH DIAERESIS */ - {"PHgr", 0x03A6}, /* GREEK CAPITAL LETTER PHI */ - {"PSgr", 0x03A8}, /* GREEK CAPITAL LETTER PSI */ - {"Pcy", 0x041F}, /* CYRILLIC CAPITAL LETTER PE */ - {"Pgr", 0x03A0}, /* GREEK CAPITAL LETTER PI */ - {"Phi", 0x03A6}, /* GREEK CAPITAL LETTER PHI */ - {"Pi", 0x03A0}, /* GREEK CAPITAL LETTER PI */ - {"Prime", 0x2033}, /* DOUBLE PRIME */ - {"Psi", 0x03A8}, /* GREEK CAPITAL LETTER PSI */ - {"Racute", 0x0154}, /* LATIN CAPITAL LETTER R WITH ACUTE */ - {"Rarr", 0x21A0}, /* RIGHTWARDS TWO HEADED ARROW */ - {"Rcaron", 0x0158}, /* LATIN CAPITAL LETTER R WITH CARON */ - {"Rcedil", 0x0156}, /* LATIN CAPITAL LETTER R WITH CEDILLA */ - {"Rcy", 0x0420}, /* CYRILLIC CAPITAL LETTER ER */ - {"Rgr", 0x03A1}, /* GREEK CAPITAL LETTER RHO */ - {"Rho", 0x03A1}, /* GREEK CAPITAL LETTER RHO */ - {"SHCHcy", 0x0429}, /* CYRILLIC CAPITAL LETTER SHCHA */ - {"SHcy", 0x0428}, /* CYRILLIC CAPITAL LETTER SHA */ - {"SOFTcy", 0x042C}, /* CYRILLIC CAPITAL LETTER SOFT SIGN */ - {"Sacute", 0x015A}, /* LATIN CAPITAL LETTER S WITH ACUTE */ - {"Scaron", 0x0160}, /* LATIN CAPITAL LETTER S WITH CARON */ - {"Scedil", 0x015E}, /* LATIN CAPITAL LETTER S WITH CEDILLA */ - {"Scirc", 0x015C}, /* LATIN CAPITAL LETTER S WITH CIRCUMFLEX */ - {"Scy", 0x0421}, /* CYRILLIC CAPITAL LETTER ES */ - {"Sgr", 0x03A3}, /* GREEK CAPITAL LETTER SIGMA */ - {"Sigma", 0x03A3}, /* GREEK CAPITAL LETTER SIGMA */ - {"Sub", 0x22D0}, /* DOUBLE SUBSET */ - {"Sup", 0x22D1}, /* DOUBLE SUPERSET */ - {"THORN", 0x00DE}, /* LATIN CAPITAL LETTER THORN */ - {"THgr", 0x0398}, /* GREEK CAPITAL LETTER THETA */ - {"TSHcy", 0x040B}, /* CYRILLIC CAPITAL LETTER TSHE */ - {"TScy", 0x0426}, /* CYRILLIC CAPITAL LETTER TSE */ - {"Tau", 0x03A4}, /* GREEK CAPITAL LETTER TAU */ - {"Tcaron", 0x0164}, /* LATIN CAPITAL LETTER T WITH CARON */ - {"Tcedil", 0x0162}, /* LATIN CAPITAL LETTER T WITH CEDILLA */ - {"Tcy", 0x0422}, /* CYRILLIC CAPITAL LETTER TE */ - {"Tgr", 0x03A4}, /* GREEK CAPITAL LETTER TAU */ - {"Theta", 0x0398}, /* GREEK CAPITAL LETTER THETA */ - {"Tstrok", 0x0166}, /* LATIN CAPITAL LETTER T WITH STROKE */ - {"Uacgr", 0x038E}, /* GREEK CAPITAL LETTER UPSILON WITH TONOS */ - {"Uacute", 0x00DA}, /* LATIN CAPITAL LETTER U WITH ACUTE */ - {"Ubrcy", 0x040E}, /* CYRILLIC CAPITAL LETTER SHORT U */ - {"Ubreve", 0x016C}, /* LATIN CAPITAL LETTER U WITH BREVE */ - {"Ucirc", 0x00DB}, /* LATIN CAPITAL LETTER U WITH CIRCUMFLEX */ - {"Ucy", 0x0423}, /* CYRILLIC CAPITAL LETTER U */ - {"Udblac", 0x0170}, /* LATIN CAPITAL LETTER U WITH DOUBLE ACUTE */ - {"Udigr", 0x03AB}, /* GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA */ - {"Ugr", 0x03A5}, /* GREEK CAPITAL LETTER UPSILON */ - {"Ugrave", 0x00D9}, /* LATIN CAPITAL LETTER U WITH GRAVE */ - {"Umacr", 0x016A}, /* LATIN CAPITAL LETTER U WITH MACRON */ - {"Uogon", 0x0172}, /* LATIN CAPITAL LETTER U WITH OGONEK */ - {"Upsi", 0x03A5}, /* GREEK CAPITAL LETTER UPSILON */ - {"Upsilon", 0x03A5}, /* GREEK CAPITAL LETTER UPSILON */ - {"Uring", 0x016E}, /* LATIN CAPITAL LETTER U WITH RING ABOVE */ - {"Utilde", 0x0168}, /* LATIN CAPITAL LETTER U WITH TILDE */ - {"Uuml", 0x00DC}, /* LATIN CAPITAL LETTER U WITH DIAERESIS */ - {"Vcy", 0x0412}, /* CYRILLIC CAPITAL LETTER VE */ - {"Vdash", 0x22A9}, /* FORCES */ - {"Verbar", 0x2016}, /* DOUBLE VERTICAL LINE */ - {"Vvdash", 0x22AA}, /* TRIPLE VERTICAL BAR RIGHT TURNSTILE */ - {"Wcirc", 0x0174}, /* LATIN CAPITAL LETTER W WITH CIRCUMFLEX */ - {"Xgr", 0x039E}, /* GREEK CAPITAL LETTER XI */ - {"Xi", 0x039E}, /* GREEK CAPITAL LETTER XI */ - {"YAcy", 0x042F}, /* CYRILLIC CAPITAL LETTER YA */ - {"YIcy", 0x0407}, /* CYRILLIC CAPITAL LETTER YI */ - {"YUcy", 0x042E}, /* CYRILLIC CAPITAL LETTER YU */ - {"Yacute", 0x00DD}, /* LATIN CAPITAL LETTER Y WITH ACUTE */ - {"Ycirc", 0x0176}, /* LATIN CAPITAL LETTER Y WITH CIRCUMFLEX */ - {"Ycy", 0x042B}, /* CYRILLIC CAPITAL LETTER YERU */ - {"Yuml", 0x0178}, /* LATIN CAPITAL LETTER Y WITH DIAERESIS */ - {"ZHcy", 0x0416}, /* CYRILLIC CAPITAL LETTER ZHE */ - {"Zacute", 0x0179}, /* LATIN CAPITAL LETTER Z WITH ACUTE */ - {"Zcaron", 0x017D}, /* LATIN CAPITAL LETTER Z WITH CARON */ - {"Zcy", 0x0417}, /* CYRILLIC CAPITAL LETTER ZE */ - {"Zdot", 0x017B}, /* LATIN CAPITAL LETTER Z WITH DOT ABOVE */ - {"Zeta", 0x0396}, /* GREEK CAPITAL LETTER ZETA */ - {"Zgr", 0x0396}, /* GREEK CAPITAL LETTER ZETA */ - {"aacgr", 0x03AC}, /* GREEK SMALL LETTER ALPHA WITH TONOS */ - {"aacute", 0x00E1}, /* LATIN SMALL LETTER A WITH ACUTE */ - {"abreve", 0x0103}, /* LATIN SMALL LETTER A WITH BREVE */ - {"acirc", 0x00E2}, /* LATIN SMALL LETTER A WITH CIRCUMFLEX */ - {"acute", 0x00B4}, /* ACUTE ACCENT */ - {"acy", 0x0430}, /* CYRILLIC SMALL LETTER A */ - {"aelig", 0x00E6}, /* LATIN SMALL LETTER AE */ - {"agr", 0x03B1}, /* GREEK SMALL LETTER ALPHA */ - {"agrave", 0x00E0}, /* LATIN SMALL LETTER A WITH GRAVE */ - {"alefsym", 0x2135}, /* ALEF SYMBOL */ - {"aleph", 0x2135}, /* ALEF SYMBOL */ - {"alpha", 0x03B1}, /* GREEK SMALL LETTER ALPHA */ - {"amacr", 0x0101}, /* LATIN SMALL LETTER A WITH MACRON */ - {"amalg", 0x2210}, /* N-ARY COPRODUCT */ - {"amp", 0x0026}, /* AMPERSAND */ - {"and", 0x2227}, /* LOGICAL AND */ - {"ang", 0x2220}, /* ANGLE */ - {"ang90", 0x221F}, /* RIGHT ANGLE */ - {"angmsd", 0x2221}, /* MEASURED ANGLE */ - {"angsph", 0x2222}, /* SPHERICAL ANGLE */ - {"angst", 0x212B}, /* ANGSTROM SIGN */ - {"aogon", 0x0105}, /* LATIN SMALL LETTER A WITH OGONEK */ - {"ap", 0x2248}, /* ALMOST EQUAL TO */ - {"ape", 0x224A}, /* ALMOST EQUAL OR EQUAL TO */ - {"apos", 0x02BC}, /* MODIFIER LETTER APOSTROPHE */ - {"aring", 0x00E5}, /* LATIN SMALL LETTER A WITH RING ABOVE */ - {"ast", 0x002A}, /* ASTERISK */ - {"asymp", 0x2248}, /* ALMOST EQUAL TO */ - {"atilde", 0x00E3}, /* LATIN SMALL LETTER A WITH TILDE */ - {"auml", 0x00E4}, /* LATIN SMALL LETTER A WITH DIAERESIS */ - {"b.Delta", 0x0394}, /* GREEK CAPITAL LETTER DELTA */ - {"b.Gamma", 0x0393}, /* GREEK CAPITAL LETTER GAMMA */ - {"b.Lambda", 0x039B}, /* GREEK CAPITAL LETTER LAMDA */ - {"b.Omega", 0x03A9}, /* GREEK CAPITAL LETTER OMEGA */ - {"b.Phi", 0x03A6}, /* GREEK CAPITAL LETTER PHI */ - {"b.Pi", 0x03A0}, /* GREEK CAPITAL LETTER PI */ - {"b.Psi", 0x03A8}, /* GREEK CAPITAL LETTER PSI */ - {"b.Sigma", 0x03A3}, /* GREEK CAPITAL LETTER SIGMA */ - {"b.Theta", 0x0398}, /* GREEK CAPITAL LETTER THETA */ - {"b.Upsi", 0x03A5}, /* GREEK CAPITAL LETTER UPSILON */ - {"b.Xi", 0x039E}, /* GREEK CAPITAL LETTER XI */ - {"b.alpha", 0x03B1}, /* GREEK SMALL LETTER ALPHA */ - {"b.beta", 0x03B2}, /* GREEK SMALL LETTER BETA */ - {"b.chi", 0x03C7}, /* GREEK SMALL LETTER CHI */ - {"b.delta", 0x03B3}, /* GREEK SMALL LETTER GAMMA */ - {"b.epsi", 0x03B5}, /* GREEK SMALL LETTER EPSILON */ - {"b.epsis", 0x03B5}, /* GREEK SMALL LETTER EPSILON */ - {"b.epsiv", 0x03B5}, /* GREEK SMALL LETTER EPSILON */ - {"b.eta", 0x03B7}, /* GREEK SMALL LETTER ETA */ - {"b.gamma", 0x03B3}, /* GREEK SMALL LETTER GAMMA */ - {"b.gammad", 0x03DC}, /* GREEK LETTER DIGAMMA */ - {"b.iota", 0x03B9}, /* GREEK SMALL LETTER IOTA */ - {"b.kappa", 0x03BA}, /* GREEK SMALL LETTER KAPPA */ - {"b.kappav", 0x03F0}, /* GREEK KAPPA SYMBOL */ - {"b.lambda", 0x03BB}, /* GREEK SMALL LETTER LAMDA */ - {"b.mu", 0x03BC}, /* GREEK SMALL LETTER MU */ - {"b.nu", 0x03BD}, /* GREEK SMALL LETTER NU */ - {"b.omega", 0x03CE}, /* GREEK SMALL LETTER OMEGA WITH TONOS */ - {"b.phis", 0x03C6}, /* GREEK SMALL LETTER PHI */ - {"b.phiv", 0x03D5}, /* GREEK PHI SYMBOL */ - {"b.pi", 0x03C0}, /* GREEK SMALL LETTER PI */ - {"b.piv", 0x03D6}, /* GREEK PI SYMBOL */ - {"b.psi", 0x03C8}, /* GREEK SMALL LETTER PSI */ - {"b.rho", 0x03C1}, /* GREEK SMALL LETTER RHO */ - {"b.rhov", 0x03F1}, /* GREEK RHO SYMBOL */ - {"b.sigma", 0x03C3}, /* GREEK SMALL LETTER SIGMA */ - {"b.sigmav", 0x03C2}, /* GREEK SMALL LETTER FINAL SIGMA */ - {"b.tau", 0x03C4}, /* GREEK SMALL LETTER TAU */ - {"b.thetas", 0x03B8}, /* GREEK SMALL LETTER THETA */ - {"b.thetav", 0x03D1}, /* GREEK THETA SYMBOL */ - {"b.upsi", 0x03C5}, /* GREEK SMALL LETTER UPSILON */ - {"b.xi", 0x03BE}, /* GREEK SMALL LETTER XI */ - {"b.zeta", 0x03B6}, /* GREEK SMALL LETTER ZETA */ - {"barwed", 0x22BC}, /* NAND */ - {"bcong", 0x224C}, /* ALL EQUAL TO */ - {"bcy", 0x0431}, /* CYRILLIC SMALL LETTER BE */ - {"bdquo", 0x201E}, /* DOUBLE LOW-9 QUOTATION MARK */ - {"becaus", 0x2235}, /* BECAUSE */ - {"bepsi", 0x220D}, /* SMALL CONTAINS AS MEMBER */ - {"bernou", 0x212C}, /* SCRIPT CAPITAL B */ - {"beta", 0x03B2}, /* GREEK SMALL LETTER BETA */ - {"beth", 0x2136}, /* BET SYMBOL */ - {"bgr", 0x03B2}, /* GREEK SMALL LETTER BETA */ - {"blank", 0x2423}, /* OPEN BOX */ - {"blk12", 0x2592}, /* MEDIUM SHADE */ - {"blk14", 0x2591}, /* LIGHT SHADE */ - {"blk34", 0x2593}, /* DARK SHADE */ - {"block", 0x2588}, /* FULL BLOCK */ - {"bottom", 0x22A5}, /* UP TACK */ - {"bowtie", 0x22C8}, /* BOWTIE */ - {"boxDL", 0x2557}, /* BOX DRAWINGS DOUBLE DOWN AND LEFT */ - {"boxDR", 0x2554}, /* BOX DRAWINGS DOUBLE DOWN AND RIGHT */ - {"boxDl", 0x2556}, /* BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE */ - {"boxDr", 0x2553}, /* BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE */ - {"boxH", 0x2550}, /* BOX DRAWINGS DOUBLE HORIZONTAL */ - {"boxHD", 0x2566}, /* BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL */ - {"boxHU", 0x2569}, /* BOX DRAWINGS DOUBLE UP AND HORIZONTAL */ - {"boxHd", 0x2564}, /* BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE*/ - {"boxHu", 0x2567}, /* BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE */ - {"boxUL", 0x255D}, /* BOX DRAWINGS DOUBLE UP AND LEFT */ - {"boxUR", 0x255A}, /* BOX DRAWINGS DOUBLE UP AND RIGHT */ - {"boxUl", 0x255C}, /* BOX DRAWINGS UP DOUBLE AND LEFT SINGLE */ - {"boxUr", 0x2559}, /* BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE */ - {"boxV", 0x2551}, /* BOX DRAWINGS DOUBLE VERTICAL */ - {"boxVH", 0x256C}, /* BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL */ - {"boxVL", 0x2563}, /* BOX DRAWINGS DOUBLE VERTICAL AND LEFT */ - {"boxVR", 0x2560}, /* BOX DRAWINGS DOUBLE VERTICAL AND RIGHT */ - {"boxVh", 0x256B}, /* BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SI*/ - {"boxVl", 0x2562}, /* BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE */ - {"boxVr", 0x255F}, /* BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE */ - {"boxdL", 0x2555}, /* BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE */ - {"boxdR", 0x2552}, /* BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE */ - {"boxdl", 0x2510}, /* BOX DRAWINGS LIGHT DOWN AND LEFT */ - {"boxdr", 0x250C}, /* BOX DRAWINGS LIGHT DOWN AND RIGHT */ - {"boxh", 0x2500}, /* BOX DRAWINGS LIGHT HORIZONTAL */ - {"boxhD", 0x2565}, /* BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE*/ - {"boxhU", 0x2568}, /* BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE */ - {"boxhd", 0x252C}, /* BOX DRAWINGS LIGHT DOWN AND HORIZONTAL */ - {"boxhu", 0x2534}, /* BOX DRAWINGS LIGHT UP AND HORIZONTAL */ - {"boxuL", 0x255B}, /* BOX DRAWINGS UP SINGLE AND LEFT DOUBLE */ - {"boxuR", 0x2558}, /* BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE */ - {"boxul", 0x2518}, /* BOX DRAWINGS LIGHT UP AND LEFT */ - {"boxur", 0x2514}, /* BOX DRAWINGS LIGHT UP AND RIGHT */ - {"boxv", 0x2502}, /* BOX DRAWINGS LIGHT VERTICAL */ - {"boxvH", 0x256A}, /* BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DO*/ - {"boxvL", 0x2561}, /* BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE */ - {"boxvR", 0x255E}, /* BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE */ - {"boxvh", 0x253C}, /* BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL */ - {"boxvl", 0x2524}, /* BOX DRAWINGS LIGHT VERTICAL AND LEFT */ - {"boxvr", 0x251C}, /* BOX DRAWINGS LIGHT VERTICAL AND RIGHT */ - {"bprime", 0x2035}, /* REVERSED PRIME */ - {"breve", 0x02D8}, /* BREVE */ - {"brkbar", 0x00A6}, /* obsolete synonym for "brvbar" 0x00A6 */ - {"brvbar", 0x00A6}, /* BROKEN BAR */ - {"bsim", 0x223D}, /* REVERSED TILDE */ - {"bsime", 0x22CD}, /* REVERSED TILDE EQUALS */ - {"bsol", 0x005C}, /* REVERSE SOLIDUS */ - {"bull", 0x2022}, /* BULLET */ - {"bump", 0x224E}, /* GEOMETRICALLY EQUIVALENT TO */ - {"bumpe", 0x224F}, /* DIFFERENCE BETWEEN */ - {"cacute", 0x0107}, /* LATIN SMALL LETTER C WITH ACUTE */ - {"cap", 0x2229}, /* INTERSECTION */ - {"caret", 0x2041}, /* CARET INSERTION POINT */ - {"caron", 0x02C7}, /* CARON */ - {"ccaron", 0x010D}, /* LATIN SMALL LETTER C WITH CARON */ - {"ccedil", 0x00E7}, /* LATIN SMALL LETTER C WITH CEDILLA */ - {"ccirc", 0x0109}, /* LATIN SMALL LETTER C WITH CIRCUMFLEX */ - {"cdot", 0x010B}, /* LATIN SMALL LETTER C WITH DOT ABOVE */ - {"cedil", 0x00B8}, /* CEDILLA */ - {"cent", 0x00A2}, /* CENT SIGN */ - {"chcy", 0x0447}, /* CYRILLIC SMALL LETTER CHE */ - {"check", 0x2713}, /* CHECK MARK */ - {"chi", 0x03C7}, /* GREEK SMALL LETTER CHI */ - {"cir", 0x25CB}, /* WHITE CIRCLE */ - {"circ", 0x02C6}, /* MODIFIER LETTER CIRCUMFLEX ACCENT */ - {"cire", 0x2257}, /* RING EQUAL TO */ - {"clubs", 0x2663}, /* BLACK CLUB SUIT */ - {"colon", 0x003A}, /* COLON */ - {"colone", 0x2254}, /* COLON EQUALS */ - {"comma", 0x002C}, /* COMMA */ - {"commat", 0x0040}, /* COMMERCIAL AT */ - {"comp", 0x2201}, /* COMPLEMENT */ - {"compfn", 0x2218}, /* RING OPERATOR */ - {"cong", 0x2245}, /* APPROXIMATELY EQUAL TO */ - {"conint", 0x222E}, /* CONTOUR INTEGRAL */ - {"coprod", 0x2210}, /* N-ARY COPRODUCT */ - {"copy", 0x00A9}, /* COPYRIGHT SIGN */ - {"copysr", 0x2117}, /* SOUND RECORDING COPYRIGHT */ - {"crarr", 0x21B5}, /* DOWNWARDS ARROW WITH CORNER LEFTWARDS */ - {"cross", 0x2717}, /* BALLOT X */ - {"cuepr", 0x22DE}, /* EQUAL TO OR PRECEDES */ - {"cuesc", 0x22DF}, /* EQUAL TO OR SUCCEEDS */ - {"cularr", 0x21B6}, /* ANTICLOCKWISE TOP SEMICIRCLE ARROW */ - {"cup", 0x222A}, /* UNION */ - {"cupre", 0x227C}, /* PRECEDES OR EQUAL TO */ - {"curarr", 0x21B7}, /* CLOCKWISE TOP SEMICIRCLE ARROW */ - {"curren", 0x00A4}, /* CURRENCY SIGN */ - {"cuvee", 0x22CE}, /* CURLY LOGICAL OR */ - {"cuwed", 0x22CF}, /* CURLY LOGICAL AND */ - {"dArr", 0x21D3}, /* DOWNWARDS DOUBLE ARROW */ - {"dagger", 0x2020}, /* DAGGER */ - {"daleth", 0x2138}, /* DALET SYMBOL */ - {"darr", 0x2193}, /* DOWNWARDS ARROW */ - {"darr2", 0x21CA}, /* DOWNWARDS PAIRED ARROWS */ - {"dash", 0x2010}, /* HYPHEN */ - {"dashv", 0x22A3}, /* LEFT TACK */ - {"dblac", 0x02DD}, /* DOUBLE ACUTE ACCENT */ - {"dcaron", 0x010F}, /* LATIN SMALL LETTER D WITH CARON */ - {"dcy", 0x0434}, /* CYRILLIC SMALL LETTER DE */ - {"deg", 0x00B0}, /* DEGREE SIGN */ - {"delta", 0x03B4}, /* GREEK SMALL LETTER DELTA */ - {"dgr", 0x03B4}, /* GREEK SMALL LETTER DELTA */ - {"dharl", 0x21C3}, /* DOWNWARDS HARPOON WITH BARB LEFTWARDS */ - {"dharr", 0x21C2}, /* DOWNWARDS HARPOON WITH BARB RIGHTWARDS */ - {"diam", 0x22C4}, /* DIAMOND OPERATOR */ - {"diams", 0x2666}, /* BLACK DIAMOND SUIT */ - {"die", 0x00A8}, /* DIAERESIS */ - {"divide", 0x00F7}, /* DIVISION SIGN */ - {"divonx", 0x22C7}, /* DIVISION TIMES */ - {"djcy", 0x0452}, /* CYRILLIC SMALL LETTER DJE */ - {"dlarr", 0x2199}, /* SOUTH WEST ARROW */ - {"dlcorn", 0x231E}, /* BOTTOM LEFT CORNER */ - {"dlcrop", 0x230D}, /* BOTTOM LEFT CROP */ - {"dollar", 0x0024}, /* DOLLAR SIGN */ - {"dot", 0x02D9}, /* DOT ABOVE */ - {"drarr", 0x2198}, /* SOUTH EAST ARROW */ - {"drcorn", 0x231F}, /* BOTTOM RIGHT CORNER */ - {"drcrop", 0x230C}, /* BOTTOM RIGHT CROP */ - {"dscy", 0x0455}, /* CYRILLIC SMALL LETTER DZE */ - {"dstrok", 0x0111}, /* LATIN SMALL LETTER D WITH STROKE */ - {"dtri", 0x25BF}, /* WHITE DOWN-POINTING SMALL TRIANGLE */ - {"dtrif", 0x25BE}, /* BLACK DOWN-POINTING SMALL TRIANGLE */ - {"dzcy", 0x045F}, /* CYRILLIC SMALL LETTER DZHE */ - {"eDot", 0x2251}, /* GEOMETRICALLY EQUAL TO */ - {"eacgr", 0x03AD}, /* GREEK SMALL LETTER EPSILON WITH TONOS */ - {"eacute", 0x00E9}, /* LATIN SMALL LETTER E WITH ACUTE */ - {"ecaron", 0x011B}, /* LATIN SMALL LETTER E WITH CARON */ - {"ecir", 0x2256}, /* RING IN EQUAL TO */ - {"ecirc", 0x00EA}, /* LATIN SMALL LETTER E WITH CIRCUMFLEX */ - {"ecolon", 0x2255}, /* EQUALS COLON */ - {"ecy", 0x044D}, /* CYRILLIC SMALL LETTER E */ - {"edot", 0x0117}, /* LATIN SMALL LETTER E WITH DOT ABOVE */ - {"eeacgr", 0x03AE}, /* GREEK SMALL LETTER ETA WITH TONOS */ - {"eegr", 0x03B7}, /* GREEK SMALL LETTER ETA */ - {"efDot", 0x2252}, /* APPROXIMATELY EQUAL TO OR THE IMAGE OF */ - {"egr", 0x03B5}, /* GREEK SMALL LETTER EPSILON */ - {"egrave", 0x00E8}, /* LATIN SMALL LETTER E WITH GRAVE */ - {"egs", 0x22DD}, /* EQUAL TO OR GREATER-THAN */ - {"ell", 0x2113}, /* SCRIPT SMALL L */ - {"els", 0x22DC}, /* EQUAL TO OR LESS-THAN */ - {"emacr", 0x0113}, /* LATIN SMALL LETTER E WITH MACRON */ - {"emdash", 0x2014}, /* obsolete synonym for "mdash" 0x2014 */ - {"empty", 0x2205}, /* EMPTY SET */ - {"emsp", 0x2003}, /* EM SPACE */ - {"emsp13", 0x2004}, /* THREE-PER-EM SPACE */ - {"emsp14", 0x2005}, /* FOUR-PER-EM SPACE */ - {"endash", 0x2013}, /* obsolete synonym for "ndash" 0x2013 */ - {"eng", 0x014B}, /* LATIN SMALL LETTER ENG */ - {"ensp", 0x2002}, /* EN SPACE */ - {"eogon", 0x0119}, /* LATIN SMALL LETTER E WITH OGONEK */ - {"epsi", 0x03B5}, /* GREEK SMALL LETTER EPSILON */ - {"epsilon", 0x03B5}, /* GREEK SMALL LETTER EPSILON */ - {"epsis", 0x220A}, /* SMALL ELEMENT OF */ - {"equals", 0x003D}, /* EQUALS SIGN */ - {"equiv", 0x2261}, /* IDENTICAL TO */ - {"erDot", 0x2253}, /* IMAGE OF OR APPROXIMATELY EQUAL TO */ - {"esdot", 0x2250}, /* APPROACHES THE LIMIT */ - {"eta", 0x03B7}, /* GREEK SMALL LETTER ETA */ - {"eth", 0x00F0}, /* LATIN SMALL LETTER ETH */ - {"euml", 0x00EB}, /* LATIN SMALL LETTER E WITH DIAERESIS */ - {"excl", 0x0021}, /* EXCLAMATION MARK */ - {"exist", 0x2203}, /* THERE EXISTS */ - {"fcy", 0x0444}, /* CYRILLIC SMALL LETTER EF */ - {"female", 0x2640}, /* FEMALE SIGN */ - {"ffilig", 0xFB03}, /* LATIN SMALL LIGATURE FFI */ - {"fflig", 0xFB00}, /* LATIN SMALL LIGATURE FF */ - {"ffllig", 0xFB04}, /* LATIN SMALL LIGATURE FFL */ - {"filig", 0xFB01}, /* LATIN SMALL LIGATURE FI */ - {"flat", 0x266D}, /* MUSIC FLAT SIGN */ - {"fllig", 0xFB02}, /* LATIN SMALL LIGATURE FL */ - {"fnof", 0x0192}, /* LATIN SMALL LETTER F WITH HOOK */ - {"forall", 0x2200}, /* FOR ALL */ - {"fork", 0x22D4}, /* PITCHFORK */ - {"frac12", 0x00BD}, /* VULGAR FRACTION ONE HALF */ - {"frac13", 0x2153}, /* VULGAR FRACTION ONE THIRD */ - {"frac14", 0x00BC}, /* VULGAR FRACTION ONE QUARTER */ - {"frac15", 0x2155}, /* VULGAR FRACTION ONE FIFTH */ - {"frac16", 0x2159}, /* VULGAR FRACTION ONE SIXTH */ - {"frac18", 0x215B}, /* VULGAR FRACTION ONE EIGHTH */ - {"frac23", 0x2154}, /* VULGAR FRACTION TWO THIRDS */ - {"frac25", 0x2156}, /* VULGAR FRACTION TWO FIFTHS */ - {"frac34", 0x00BE}, /* VULGAR FRACTION THREE QUARTERS */ - {"frac35", 0x2157}, /* VULGAR FRACTION THREE FIFTHS */ - {"frac38", 0x215C}, /* VULGAR FRACTION THREE EIGHTHS */ - {"frac45", 0x2158}, /* VULGAR FRACTION FOUR FIFTHS */ - {"frac56", 0x215A}, /* VULGAR FRACTION FIVE SIXTHS */ - {"frac58", 0x215D}, /* VULGAR FRACTION FIVE EIGHTHS */ - {"frac78", 0x215E}, /* VULGAR FRACTION SEVEN EIGHTHS */ - {"frasl", 0x2044}, /* FRACTION SLASH */ - {"frown", 0x2322}, /* FROWN */ - {"gE", 0x2267}, /* GREATER-THAN OVER EQUAL TO */ - {"gacute", 0x01F5}, /* LATIN SMALL LETTER G WITH ACUTE */ - {"gamma", 0x03B3}, /* GREEK SMALL LETTER GAMMA */ - {"gammad", 0x03DC}, /* GREEK LETTER DIGAMMA */ - {"gbreve", 0x011F}, /* LATIN SMALL LETTER G WITH BREVE */ - {"gcedil", 0x0123}, /* LATIN SMALL LETTER G WITH CEDILLA */ - {"gcirc", 0x011D}, /* LATIN SMALL LETTER G WITH CIRCUMFLEX */ - {"gcy", 0x0433}, /* CYRILLIC SMALL LETTER GHE */ - {"gdot", 0x0121}, /* LATIN SMALL LETTER G WITH DOT ABOVE */ - {"ge", 0x2265}, /* GREATER-THAN OR EQUAL TO */ - {"gel", 0x22DB}, /* GREATER-THAN EQUAL TO OR LESS-THAN */ - {"ges", 0x2265}, /* GREATER-THAN OR EQUAL TO */ - {"ggr", 0x03B3}, /* GREEK SMALL LETTER GAMMA */ - {"gimel", 0x2137}, /* GIMEL SYMBOL */ - {"gjcy", 0x0453}, /* CYRILLIC SMALL LETTER GJE */ - {"gl", 0x2277}, /* GREATER-THAN OR LESS-THAN */ - {"gnE", 0x2269}, /* GREATER-THAN BUT NOT EQUAL TO */ - {"gne", 0x2269}, /* GREATER-THAN BUT NOT EQUAL TO */ - {"gnsim", 0x22E7}, /* GREATER-THAN BUT NOT EQUIVALENT TO */ - {"grave", 0x0060}, /* GRAVE ACCENT */ - {"gsdot", 0x22D7}, /* GREATER-THAN WITH DOT */ - {"gsim", 0x2273}, /* GREATER-THAN OR EQUIVALENT TO */ - {"gt", 0x003E}, /* GREATER-THAN SIGN */ - {"gvnE", 0x2269}, /* GREATER-THAN BUT NOT EQUAL TO */ - {"hArr", 0x21D4}, /* LEFT RIGHT DOUBLE ARROW */ - {"hairsp", 0x200A}, /* HAIR SPACE */ - {"half", 0x00BD}, /* VULGAR FRACTION ONE HALF */ - {"hamilt", 0x210B}, /* SCRIPT CAPITAL H */ - {"hardcy", 0x044A}, /* CYRILLIC SMALL LETTER HARD SIGN */ - {"harr", 0x2194}, /* LEFT RIGHT ARROW */ - {"harrw", 0x21AD}, /* LEFT RIGHT WAVE ARROW */ - {"hcirc", 0x0125}, /* LATIN SMALL LETTER H WITH CIRCUMFLEX */ - {"hearts", 0x2665}, /* BLACK HEART SUIT */ - {"hellip", 0x2026}, /* HORIZONTAL ELLIPSIS */ - {"hibar", 0x00AF}, /* obsolete synonym for "macr" 0x00AF */ - {"horbar", 0x2015}, /* HORIZONTAL BAR */ - {"hstrok", 0x0127}, /* LATIN SMALL LETTER H WITH STROKE */ - {"hybull", 0x2043}, /* HYPHEN BULLET */ - {"hyphen", 0x002D}, /* HYPHEN-MINUS */ - {"iacgr", 0x03AF}, /* GREEK SMALL LETTER IOTA WITH TONOS */ - {"iacute", 0x00ED}, /* LATIN SMALL LETTER I WITH ACUTE */ - {"icirc", 0x00EE}, /* LATIN SMALL LETTER I WITH CIRCUMFLEX */ - {"icy", 0x0438}, /* CYRILLIC SMALL LETTER I */ - {"idiagr", 0x0390}, /* GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TON*/ - {"idigr", 0x03CA}, /* GREEK SMALL LETTER IOTA WITH DIALYTIKA */ - {"iecy", 0x0435}, /* CYRILLIC SMALL LETTER IE */ - {"iexcl", 0x00A1}, /* INVERTED EXCLAMATION MARK */ - {"iff", 0x21D4}, /* LEFT RIGHT DOUBLE ARROW */ - {"igr", 0x03B9}, /* GREEK SMALL LETTER IOTA */ - {"igrave", 0x00EC}, /* LATIN SMALL LETTER I WITH GRAVE */ - {"ijlig", 0x0133}, /* LATIN SMALL LIGATURE IJ */ - {"imacr", 0x012B}, /* LATIN SMALL LETTER I WITH MACRON */ - {"image", 0x2111}, /* BLACK-LETTER CAPITAL I */ - {"incare", 0x2105}, /* CARE OF */ - {"infin", 0x221E}, /* INFINITY */ - {"inodot", 0x0131}, /* LATIN SMALL LETTER DOTLESS I */ - {"int", 0x222B}, /* INTEGRAL */ - {"intcal", 0x22BA}, /* INTERCALATE */ - {"iocy", 0x0451}, /* CYRILLIC SMALL LETTER IO */ - {"iogon", 0x012F}, /* LATIN SMALL LETTER I WITH OGONEK */ - {"iota", 0x03B9}, /* GREEK SMALL LETTER IOTA */ - {"iquest", 0x00BF}, /* INVERTED QUESTION MARK */ - {"isin", 0x2208}, /* ELEMENT OF */ - {"itilde", 0x0129}, /* LATIN SMALL LETTER I WITH TILDE */ - {"iukcy", 0x0456}, /* CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I*/ - {"iuml", 0x00EF}, /* LATIN SMALL LETTER I WITH DIAERESIS */ - {"jcirc", 0x0135}, /* LATIN SMALL LETTER J WITH CIRCUMFLEX */ - {"jcy", 0x0439}, /* CYRILLIC SMALL LETTER SHORT I */ - {"jsercy", 0x0458}, /* CYRILLIC SMALL LETTER JE */ - {"jukcy", 0x0454}, /* CYRILLIC SMALL LETTER UKRAINIAN IE */ - {"kappa", 0x03BA}, /* GREEK SMALL LETTER KAPPA */ - {"kappav", 0x03F0}, /* GREEK KAPPA SYMBOL */ - {"kcedil", 0x0137}, /* LATIN SMALL LETTER K WITH CEDILLA */ - {"kcy", 0x043A}, /* CYRILLIC SMALL LETTER KA */ - {"kgr", 0x03BA}, /* GREEK SMALL LETTER KAPPA */ - {"kgreen", 0x0138}, /* LATIN SMALL LETTER KRA */ - {"khcy", 0x0445}, /* CYRILLIC SMALL LETTER HA */ - {"khgr", 0x03C7}, /* GREEK SMALL LETTER CHI */ - {"kjcy", 0x045C}, /* CYRILLIC SMALL LETTER KJE */ - {"lAarr", 0x21DA}, /* LEFTWARDS TRIPLE ARROW */ - {"lArr", 0x21D0}, /* LEFTWARDS DOUBLE ARROW */ - {"lE", 0x2266}, /* LESS-THAN OVER EQUAL TO */ - {"lacute", 0x013A}, /* LATIN SMALL LETTER L WITH ACUTE */ - {"lagran", 0x2112}, /* SCRIPT CAPITAL L */ - {"lambda", 0x03BB}, /* GREEK SMALL LETTER LAMDA */ - {"lang", 0x2329}, /* LEFT-POINTING ANGLE BRACKET */ - {"laquo", 0x00AB}, /* LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ - {"larr", 0x2190}, /* LEFTWARDS ARROW */ - {"larr2", 0x21C7}, /* LEFTWARDS PAIRED ARROWS */ - {"larrhk", 0x21A9}, /* LEFTWARDS ARROW WITH HOOK */ - {"larrlp", 0x21AB}, /* LEFTWARDS ARROW WITH LOOP */ - {"larrtl", 0x21A2}, /* LEFTWARDS ARROW WITH TAIL */ - {"lcaron", 0x013E}, /* LATIN SMALL LETTER L WITH CARON */ - {"lcedil", 0x013C}, /* LATIN SMALL LETTER L WITH CEDILLA */ - {"lceil", 0x2308}, /* LEFT CEILING */ - {"lcub", 0x007B}, /* LEFT CURLY BRACKET */ - {"lcy", 0x043B}, /* CYRILLIC SMALL LETTER EL */ - {"ldot", 0x22D6}, /* LESS-THAN WITH DOT */ - {"ldquo", 0x201C}, /* LEFT DOUBLE QUOTATION MARK */ - {"ldquor", 0x201E}, /* DOUBLE LOW-9 QUOTATION MARK */ - {"le", 0x2264}, /* LESS-THAN OR EQUAL TO */ - {"leg", 0x22DA}, /* LESS-THAN EQUAL TO OR GREATER-THAN */ - {"les", 0x2264}, /* LESS-THAN OR EQUAL TO */ - {"lfloor", 0x230A}, /* LEFT FLOOR */ - {"lg", 0x2276}, /* LESS-THAN OR GREATER-THAN */ - {"lgr", 0x03BB}, /* GREEK SMALL LETTER LAMDA */ - {"lhard", 0x21BD}, /* LEFTWARDS HARPOON WITH BARB DOWNWARDS */ - {"lharu", 0x21BC}, /* LEFTWARDS HARPOON WITH BARB UPWARDS */ - {"lhblk", 0x2584}, /* LOWER HALF BLOCK */ - {"ljcy", 0x0459}, /* CYRILLIC SMALL LETTER LJE */ - {"lmidot", 0x0140}, /* LATIN SMALL LETTER L WITH MIDDLE DOT */ - {"lnE", 0x2268}, /* LESS-THAN BUT NOT EQUAL TO */ - {"lne", 0x2268}, /* LESS-THAN BUT NOT EQUAL TO */ - {"lnsim", 0x22E6}, /* LESS-THAN BUT NOT EQUIVALENT TO */ - {"lowast", 0x2217}, /* ASTERISK OPERATOR */ - {"lowbar", 0x005F}, /* LOW LINE */ - {"loz", 0x25CA}, /* LOZENGE */ - {"loz", 0x2727}, /* WHITE FOUR POINTED STAR */ - {"lozf", 0x2726}, /* BLACK FOUR POINTED STAR */ - {"lpar", 0x0028}, /* LEFT PARENTHESIS */ - {"lrarr2", 0x21C6}, /* LEFTWARDS ARROW OVER RIGHTWARDS ARROW */ - {"lrhar2", 0x21CB}, /* LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON */ - {"lrm", 0x200E}, /* LEFT-TO-RIGHT MARK */ - {"lsaquo", 0x2039}, /* SINGLE LEFT-POINTING ANGLE QUOTATION MARK */ - {"lsh", 0x21B0}, /* UPWARDS ARROW WITH TIP LEFTWARDS */ - {"lsim", 0x2272}, /* LESS-THAN OR EQUIVALENT TO */ - {"lsqb", 0x005B}, /* LEFT SQUARE BRACKET */ - {"lsquo", 0x2018}, /* LEFT SINGLE QUOTATION MARK */ - {"lsquor", 0x201A}, /* SINGLE LOW-9 QUOTATION MARK */ - {"lstrok", 0x0142}, /* LATIN SMALL LETTER L WITH STROKE */ - {"lt", 0x003C}, /* LESS-THAN SIGN */ - {"lthree", 0x22CB}, /* LEFT SEMIDIRECT PRODUCT */ - {"ltimes", 0x22C9}, /* LEFT NORMAL FACTOR SEMIDIRECT PRODUCT */ - {"ltri", 0x25C3}, /* WHITE LEFT-POINTING SMALL TRIANGLE */ - {"ltrie", 0x22B4}, /* NORMAL SUBGROUP OF OR EQUAL TO */ - {"ltrif", 0x25C2}, /* BLACK LEFT-POINTING SMALL TRIANGLE */ - {"lvnE", 0x2268}, /* LESS-THAN BUT NOT EQUAL TO */ - {"macr", 0x00AF}, /* MACRON */ - {"male", 0x2642}, /* MALE SIGN */ - {"malt", 0x2720}, /* MALTESE CROSS */ - {"map", 0x21A6}, /* RIGHTWARDS ARROW FROM BAR */ - {"marker", 0x25AE}, /* BLACK VERTICAL RECTANGLE */ - {"mcy", 0x043C}, /* CYRILLIC SMALL LETTER EM */ - {"mdash", 0x2014}, /* EM DASH */ - {"mgr", 0x03BC}, /* GREEK SMALL LETTER MU */ - {"micro", 0x00B5}, /* MICRO SIGN */ - {"mid", 0x2223}, /* DIVIDES */ - {"middot", 0x00B7}, /* MIDDLE DOT */ - {"minus", 0x2212}, /* MINUS SIGN */ - {"minusb", 0x229F}, /* SQUARED MINUS */ - {"mldr", 0x2026}, /* HORIZONTAL ELLIPSIS */ - {"mnplus", 0x2213}, /* MINUS-OR-PLUS SIGN */ - {"models", 0x22A7}, /* MODELS */ - {"mu", 0x03BC}, /* GREEK SMALL LETTER MU */ - {"mumap", 0x22B8}, /* MULTIMAP */ - {"nVDash", 0x22AF}, /* NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNS*/ - {"nVdash", 0x22AE}, /* DOES NOT FORCE */ - {"nabla", 0x2207}, /* NABLA */ - {"nacute", 0x0144}, /* LATIN SMALL LETTER N WITH ACUTE */ - {"nap", 0x2249}, /* NOT ALMOST EQUAL TO */ - {"napos", 0x0149}, /* LATIN SMALL LETTER N PRECEDED BY APOSTROPHE */ - {"natur", 0x266E}, /* MUSIC NATURAL SIGN */ - {"nbsp", 0x00A0}, /* NO-BREAK SPACE */ - {"ncaron", 0x0148}, /* LATIN SMALL LETTER N WITH CARON */ - {"ncedil", 0x0146}, /* LATIN SMALL LETTER N WITH CEDILLA */ - {"ncong", 0x2247}, /* NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO */ - {"ncy", 0x043D}, /* CYRILLIC SMALL LETTER EN */ - {"ndash", 0x2013}, /* EN DASH */ - {"ne", 0x2260}, /* NOT EQUAL TO */ - {"nearr", 0x2197}, /* NORTH EAST ARROW */ - {"nequiv", 0x2262}, /* NOT IDENTICAL TO */ - {"nexist", 0x2204}, /* THERE DOES NOT EXIST */ - {"nge", 0x2271}, /* NEITHER GREATER-THAN NOR EQUAL TO */ - {"nges", 0x2271}, /* NEITHER GREATER-THAN NOR EQUAL TO */ - {"ngr", 0x03BD}, /* GREEK SMALL LETTER NU */ - {"ngt", 0x226F}, /* NOT GREATER-THAN */ - {"nhArr", 0x21CE}, /* LEFT RIGHT DOUBLE ARROW WITH STROKE */ - {"nharr", 0x21AE}, /* LEFT RIGHT ARROW WITH STROKE */ - {"ni", 0x220B}, /* CONTAINS AS MEMBER */ - {"njcy", 0x045A}, /* CYRILLIC SMALL LETTER NJE */ - {"nlArr", 0x21CD}, /* LEFTWARDS DOUBLE ARROW WITH STROKE */ - {"nlarr", 0x219A}, /* LEFTWARDS ARROW WITH STROKE */ - {"nldr", 0x2025}, /* TWO DOT LEADER */ - {"nle", 0x2270}, /* NEITHER LESS-THAN NOR EQUAL TO */ - {"nles", 0x2270}, /* NEITHER LESS-THAN NOR EQUAL TO */ - {"nlt", 0x226E}, /* NOT LESS-THAN */ - {"nltri", 0x22EA}, /* NOT NORMAL SUBGROUP OF */ - {"nltrie", 0x22EC}, /* NOT NORMAL SUBGROUP OF OR EQUAL TO */ - {"nmid", 0x2224}, /* DOES NOT DIVIDE */ - {"not", 0x00AC}, /* NOT SIGN */ - {"notin", 0x2209}, /* NOT AN ELEMENT OF */ - {"npar", 0x2226}, /* NOT PARALLEL TO */ - {"npr", 0x2280}, /* DOES NOT PRECEDE */ - {"npre", 0x22E0}, /* DOES NOT PRECEDE OR EQUAL */ - {"nrArr", 0x21CF}, /* RIGHTWARDS DOUBLE ARROW WITH STROKE */ - {"nrarr", 0x219B}, /* RIGHTWARDS ARROW WITH STROKE */ - {"nrtri", 0x22EB}, /* DOES NOT CONTAIN AS NORMAL SUBGROUP */ - {"nrtrie", 0x22ED}, /* DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL */ - {"nsc", 0x2281}, /* DOES NOT SUCCEED */ - {"nsce", 0x22E1}, /* DOES NOT SUCCEED OR EQUAL */ - {"nsim", 0x2241}, /* NOT TILDE */ - {"nsime", 0x2244}, /* NOT ASYMPTOTICALLY EQUAL TO */ - {"nspar", 0x2226}, /* NOT PARALLEL TO */ - {"nsub", 0x2284}, /* NOT A SUBSET OF */ - {"nsubE", 0x2288}, /* NEITHER A SUBSET OF NOR EQUAL TO */ - {"nsube", 0x2288}, /* NEITHER A SUBSET OF NOR EQUAL TO */ - {"nsup", 0x2285}, /* NOT A SUPERSET OF */ - {"nsupE", 0x2289}, /* NEITHER A SUPERSET OF NOR EQUAL TO */ - {"nsupe", 0x2289}, /* NEITHER A SUPERSET OF NOR EQUAL TO */ - {"ntilde", 0x00F1}, /* LATIN SMALL LETTER N WITH TILDE */ - {"nu", 0x03BD}, /* GREEK SMALL LETTER NU */ - {"num", 0x0023}, /* NUMBER SIGN */ - {"numero", 0x2116}, /* NUMERO SIGN */ - {"numsp", 0x2007}, /* FIGURE SPACE */ - {"nvDash", 0x22AD}, /* NOT TRUE */ - {"nvdash", 0x22AC}, /* DOES NOT PROVE */ - {"nwarr", 0x2196}, /* NORTH WEST ARROW */ - {"oS", 0x24C8}, /* CIRCLED LATIN CAPITAL LETTER S */ - {"oacgr", 0x03CC}, /* GREEK SMALL LETTER OMICRON WITH TONOS */ - {"oacute", 0x00F3}, /* LATIN SMALL LETTER O WITH ACUTE */ - {"oast", 0x229B}, /* CIRCLED ASTERISK OPERATOR */ - {"ocir", 0x229A}, /* CIRCLED RING OPERATOR */ - {"ocirc", 0x00F4}, /* LATIN SMALL LETTER O WITH CIRCUMFLEX */ - {"ocy", 0x043E}, /* CYRILLIC SMALL LETTER O */ - {"odash", 0x229D}, /* CIRCLED DASH */ - {"odblac", 0x0151}, /* LATIN SMALL LETTER O WITH DOUBLE ACUTE */ - {"odot", 0x2299}, /* CIRCLED DOT OPERATOR */ - {"oelig", 0x0153}, /* LATIN SMALL LIGATURE OE */ - {"ogon", 0x02DB}, /* OGONEK */ - {"ogr", 0x03BF}, /* GREEK SMALL LETTER OMICRON */ - {"ograve", 0x00F2}, /* LATIN SMALL LETTER O WITH GRAVE */ - {"ohacgr", 0x03CE}, /* GREEK SMALL LETTER OMEGA WITH TONOS */ - {"ohgr", 0x03C9}, /* GREEK SMALL LETTER OMEGA */ - {"ohm", 0x2126}, /* OHM SIGN */ - {"olarr", 0x21BA}, /* ANTICLOCKWISE OPEN CIRCLE ARROW */ - {"oline", 0x203E}, /* OVERLINE */ - {"omacr", 0x014D}, /* LATIN SMALL LETTER O WITH MACRON */ - {"omega", 0x03C9}, /* GREEK SMALL LETTER OMEGA */ - {"omicron", 0x03BF}, /* GREEK SMALL LETTER OMICRON */ - {"ominus", 0x2296}, /* CIRCLED MINUS */ - {"oplus", 0x2295}, /* CIRCLED PLUS */ - {"or", 0x2228}, /* LOGICAL OR */ - {"orarr", 0x21BB}, /* CLOCKWISE OPEN CIRCLE ARROW */ - {"order", 0x2134}, /* SCRIPT SMALL O */ - {"ordf", 0x00AA}, /* FEMININE ORDINAL INDICATOR */ - {"ordm", 0x00BA}, /* MASCULINE ORDINAL INDICATOR */ - {"oslash", 0x00F8}, /* LATIN SMALL LETTER O WITH STROKE */ - {"osol", 0x2298}, /* CIRCLED DIVISION SLASH */ - {"otilde", 0x00F5}, /* LATIN SMALL LETTER O WITH TILDE */ - {"otimes", 0x2297}, /* CIRCLED TIMES */ - {"ouml", 0x00F6}, /* LATIN SMALL LETTER O WITH DIAERESIS */ - {"par", 0x2225}, /* PARALLEL TO */ - {"para", 0x00B6}, /* PILCROW SIGN */ - {"part", 0x2202}, /* PARTIAL DIFFERENTIAL */ - {"pcy", 0x043F}, /* CYRILLIC SMALL LETTER PE */ - {"percnt", 0x0025}, /* PERCENT SIGN */ - {"period", 0x002E}, /* FULL STOP */ - {"permil", 0x2030}, /* PER MILLE SIGN */ - {"perp", 0x22A5}, /* UP TACK */ - {"pgr", 0x03C0}, /* GREEK SMALL LETTER PI */ - {"phgr", 0x03C6}, /* GREEK SMALL LETTER PHI */ - {"phi", 0x03C6}, /* GREEK SMALL LETTER PHI */ - {"phis", 0x03C6}, /* GREEK SMALL LETTER PHI */ - {"phiv", 0x03D5}, /* GREEK PHI SYMBOL */ - {"phmmat", 0x2133}, /* SCRIPT CAPITAL M */ - {"phone", 0x260E}, /* BLACK TELEPHONE */ - {"pi", 0x03C0}, /* GREEK SMALL LETTER PI */ - {"piv", 0x03D6}, /* GREEK PI SYMBOL */ - {"planck", 0x210F}, /* PLANCK CONSTANT OVER TWO PI */ - {"plus", 0x002B}, /* PLUS SIGN */ - {"plusb", 0x229E}, /* SQUARED PLUS */ - {"plusdo", 0x2214}, /* DOT PLUS */ - {"plusmn", 0x00B1}, /* PLUS-MINUS SIGN */ - {"pound", 0x00A3}, /* POUND SIGN */ - {"pr", 0x227A}, /* PRECEDES */ - {"pre", 0x227C}, /* PRECEDES OR EQUAL TO */ - {"prime", 0x2032}, /* PRIME */ - {"prnsim", 0x22E8}, /* PRECEDES BUT NOT EQUIVALENT TO */ - {"prod", 0x220F}, /* N-ARY PRODUCT */ - {"prop", 0x221D}, /* PROPORTIONAL TO */ - {"prsim", 0x227E}, /* PRECEDES OR EQUIVALENT TO */ - {"psgr", 0x03C8}, /* GREEK SMALL LETTER PSI */ - {"psi", 0x03C8}, /* GREEK SMALL LETTER PSI */ - {"puncsp", 0x2008}, /* PUNCTUATION SPACE */ - {"quest", 0x003F}, /* QUESTION MARK */ - {"quot", 0x0022}, /* QUOTATION MARK */ - {"rAarr", 0x21DB}, /* RIGHTWARDS TRIPLE ARROW */ - {"rArr", 0x21D2}, /* RIGHTWARDS DOUBLE ARROW */ - {"racute", 0x0155}, /* LATIN SMALL LETTER R WITH ACUTE */ - {"radic", 0x221A}, /* SQUARE ROOT */ - {"rang", 0x232A}, /* RIGHT-POINTING ANGLE BRACKET */ - {"raquo", 0x00BB}, /* RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ - {"rarr", 0x2192}, /* RIGHTWARDS ARROW */ - {"rarr2", 0x21C9}, /* RIGHTWARDS PAIRED ARROWS */ - {"rarrhk", 0x21AA}, /* RIGHTWARDS ARROW WITH HOOK */ - {"rarrlp", 0x21AC}, /* RIGHTWARDS ARROW WITH LOOP */ - {"rarrtl", 0x21A3}, /* RIGHTWARDS ARROW WITH TAIL */ - {"rarrw", 0x219D}, /* RIGHTWARDS WAVE ARROW */ - {"rcaron", 0x0159}, /* LATIN SMALL LETTER R WITH CARON */ - {"rcedil", 0x0157}, /* LATIN SMALL LETTER R WITH CEDILLA */ - {"rceil", 0x2309}, /* RIGHT CEILING */ - {"rcub", 0x007D}, /* RIGHT CURLY BRACKET */ - {"rcy", 0x0440}, /* CYRILLIC SMALL LETTER ER */ - {"rdquo", 0x201D}, /* RIGHT DOUBLE QUOTATION MARK */ - {"rdquor", 0x201C}, /* LEFT DOUBLE QUOTATION MARK */ - {"real", 0x211C}, /* BLACK-LETTER CAPITAL R */ - {"rect", 0x25AD}, /* WHITE RECTANGLE */ - {"reg", 0x00AE}, /* REGISTERED SIGN */ - {"rfloor", 0x230B}, /* RIGHT FLOOR */ - {"rgr", 0x03C1}, /* GREEK SMALL LETTER RHO */ - {"rhard", 0x21C1}, /* RIGHTWARDS HARPOON WITH BARB DOWNWARDS */ - {"rharu", 0x21C0}, /* RIGHTWARDS HARPOON WITH BARB UPWARDS */ - {"rho", 0x03C1}, /* GREEK SMALL LETTER RHO */ - {"rhov", 0x03F1}, /* GREEK RHO SYMBOL */ - {"ring", 0x02DA}, /* RING ABOVE */ - {"rlarr2", 0x21C4}, /* RIGHTWARDS ARROW OVER LEFTWARDS ARROW */ - {"rlhar2", 0x21CC}, /* RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON */ - {"rlm", 0x200F}, /* RIGHT-TO-LEFT MARK */ - {"rpar", 0x0029}, /* RIGHT PARENTHESIS */ - {"rsaquo", 0x203A}, /* SINGLE RIGHT-POINTING ANGLE QUOTATION MARK */ - {"rsh", 0x21B1}, /* UPWARDS ARROW WITH TIP RIGHTWARDS */ - {"rsqb", 0x005D}, /* RIGHT SQUARE BRACKET */ - {"rsquo", 0x2019}, /* RIGHT SINGLE QUOTATION MARK */ - {"rsquor", 0x2018}, /* LEFT SINGLE QUOTATION MARK */ - {"rthree", 0x22CC}, /* RIGHT SEMIDIRECT PRODUCT */ - {"rtimes", 0x22CA}, /* RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT */ - {"rtri", 0x25B9}, /* WHITE RIGHT-POINTING SMALL TRIANGLE */ - {"rtrie", 0x22B5}, /* CONTAINS AS NORMAL SUBGROUP OR EQUAL TO */ - {"rtrif", 0x25B8}, /* BLACK RIGHT-POINTING SMALL TRIANGLE */ - {"rx", 0x211E}, /* PRESCRIPTION TAKE */ - {"sacute", 0x015B}, /* LATIN SMALL LETTER S WITH ACUTE */ - {"samalg", 0x2210}, /* N-ARY COPRODUCT */ - {"sbquo", 0x201A}, /* SINGLE LOW-9 QUOTATION MARK */ - {"sbsol", 0x005C}, /* REVERSE SOLIDUS */ - {"sc", 0x227B}, /* SUCCEEDS */ - {"scaron", 0x0161}, /* LATIN SMALL LETTER S WITH CARON */ - {"sccue", 0x227D}, /* SUCCEEDS OR EQUAL TO */ - {"sce", 0x227D}, /* SUCCEEDS OR EQUAL TO */ - {"scedil", 0x015F}, /* LATIN SMALL LETTER S WITH CEDILLA */ - {"scirc", 0x015D}, /* LATIN SMALL LETTER S WITH CIRCUMFLEX */ - {"scnsim", 0x22E9}, /* SUCCEEDS BUT NOT EQUIVALENT TO */ - {"scsim", 0x227F}, /* SUCCEEDS OR EQUIVALENT TO */ - {"scy", 0x0441}, /* CYRILLIC SMALL LETTER ES */ - {"sdot", 0x22C5}, /* DOT OPERATOR */ - {"sdotb", 0x22A1}, /* SQUARED DOT OPERATOR */ - {"sect", 0x00A7}, /* SECTION SIGN */ - {"semi", 0x003B}, /* SEMICOLON */ - {"setmn", 0x2216}, /* SET MINUS */ - {"sext", 0x2736}, /* SIX POINTED BLACK STAR */ - {"sfgr", 0x03C2}, /* GREEK SMALL LETTER FINAL SIGMA */ - {"sfrown", 0x2322}, /* FROWN */ - {"sgr", 0x03C3}, /* GREEK SMALL LETTER SIGMA */ - {"sharp", 0x266F}, /* MUSIC SHARP SIGN */ - {"shchcy", 0x0449}, /* CYRILLIC SMALL LETTER SHCHA */ - {"shcy", 0x0448}, /* CYRILLIC SMALL LETTER SHA */ - {"shy", 0x00AD}, /* SOFT HYPHEN */ - {"sigma", 0x03C3}, /* GREEK SMALL LETTER SIGMA */ - {"sigmaf", 0x03C2}, /* GREEK SMALL LETTER FINAL SIGMA */ - {"sigmav", 0x03C2}, /* GREEK SMALL LETTER FINAL SIGMA */ - {"sim", 0x223C}, /* TILDE OPERATOR */ - {"sime", 0x2243}, /* ASYMPTOTICALLY EQUAL TO */ - {"smile", 0x2323}, /* SMILE */ - {"softcy", 0x044C}, /* CYRILLIC SMALL LETTER SOFT SIGN */ - {"sol", 0x002F}, /* SOLIDUS */ - {"spades", 0x2660}, /* BLACK SPADE SUIT */ - {"spar", 0x2225}, /* PARALLEL TO */ - {"sqcap", 0x2293}, /* SQUARE CAP */ - {"sqcup", 0x2294}, /* SQUARE CUP */ - {"sqsub", 0x228F}, /* SQUARE IMAGE OF */ - {"sqsube", 0x2291}, /* SQUARE IMAGE OF OR EQUAL TO */ - {"sqsup", 0x2290}, /* SQUARE ORIGINAL OF */ - {"sqsupe", 0x2292}, /* SQUARE ORIGINAL OF OR EQUAL TO */ - {"squ", 0x25A1}, /* WHITE SQUARE */ - {"square", 0x25A1}, /* WHITE SQUARE */ - {"squf", 0x25AA}, /* BLACK SMALL SQUARE */ - {"ssetmn", 0x2216}, /* SET MINUS */ - {"ssmile", 0x2323}, /* SMILE */ - {"sstarf", 0x22C6}, /* STAR OPERATOR */ - {"star", 0x2606}, /* WHITE STAR */ - {"starf", 0x2605}, /* BLACK STAR */ - {"sub", 0x2282}, /* SUBSET OF */ - {"subE", 0x2286}, /* SUBSET OF OR EQUAL TO */ - {"sube", 0x2286}, /* SUBSET OF OR EQUAL TO */ - {"subnE", 0x228A}, /* SUBSET OF WITH NOT EQUAL TO */ - {"subne", 0x228A}, /* SUBSET OF WITH NOT EQUAL TO */ - {"sum", 0x2211}, /* N-ARY SUMMATION */ - {"sung", 0x266A}, /* EIGHTH NOTE */ - {"sup", 0x2283}, /* SUPERSET OF */ - {"sup1", 0x00B9}, /* SUPERSCRIPT ONE */ - {"sup2", 0x00B2}, /* SUPERSCRIPT TWO */ - {"sup3", 0x00B3}, /* SUPERSCRIPT THREE */ - {"supE", 0x2287}, /* SUPERSET OF OR EQUAL TO */ - {"supe", 0x2287}, /* SUPERSET OF OR EQUAL TO */ - {"supnE", 0x228B}, /* SUPERSET OF WITH NOT EQUAL TO */ - {"supne", 0x228B}, /* SUPERSET OF WITH NOT EQUAL TO */ - {"szlig", 0x00DF}, /* LATIN SMALL LETTER SHARP S */ - {"target", 0x2316}, /* POSITION INDICATOR */ - {"tau", 0x03C4}, /* GREEK SMALL LETTER TAU */ - {"tcaron", 0x0165}, /* LATIN SMALL LETTER T WITH CARON */ - {"tcedil", 0x0163}, /* LATIN SMALL LETTER T WITH CEDILLA */ - {"tcy", 0x0442}, /* CYRILLIC SMALL LETTER TE */ - {"tdot", 0x20DB}, /* COMBINING THREE DOTS ABOVE */ - {"telrec", 0x2315}, /* TELEPHONE RECORDER */ - {"tgr", 0x03C4}, /* GREEK SMALL LETTER TAU */ - {"there4", 0x2234}, /* THEREFORE */ - {"theta", 0x03B8}, /* GREEK SMALL LETTER THETA */ - {"thetas", 0x03B8}, /* GREEK SMALL LETTER THETA */ - {"thetasym", 0x03D1}, /* GREEK THETA SYMBOL */ - {"thetav", 0x03D1}, /* GREEK THETA SYMBOL */ - {"thgr", 0x03B8}, /* GREEK SMALL LETTER THETA */ - {"thinsp", 0x2009}, /* THIN SPACE */ - {"thkap", 0x2248}, /* ALMOST EQUAL TO */ - {"thksim", 0x223C}, /* TILDE OPERATOR */ - {"thorn", 0x00FE}, /* LATIN SMALL LETTER THORN */ - {"tilde", 0x02DC}, /* SMALL TILDE */ - {"times", 0x00D7}, /* MULTIPLICATION SIGN */ - {"timesb", 0x22A0}, /* SQUARED TIMES */ - {"top", 0x22A4}, /* DOWN TACK */ - {"tprime", 0x2034}, /* TRIPLE PRIME */ - {"trade", 0x2122}, /* TRADE MARK SIGN */ - {"trie", 0x225C}, /* DELTA EQUAL TO */ - {"tscy", 0x0446}, /* CYRILLIC SMALL LETTER TSE */ - {"tshcy", 0x045B}, /* CYRILLIC SMALL LETTER TSHE */ - {"tstrok", 0x0167}, /* LATIN SMALL LETTER T WITH STROKE */ - {"twixt", 0x226C}, /* BETWEEN */ - {"uArr", 0x21D1}, /* UPWARDS DOUBLE ARROW */ - {"uacgr", 0x03CD}, /* GREEK SMALL LETTER UPSILON WITH TONOS */ - {"uacute", 0x00FA}, /* LATIN SMALL LETTER U WITH ACUTE */ - {"uarr", 0x2191}, /* UPWARDS ARROW */ - {"uarr2", 0x21C8}, /* UPWARDS PAIRED ARROWS */ - {"ubrcy", 0x045E}, /* CYRILLIC SMALL LETTER SHORT U */ - {"ubreve", 0x016D}, /* LATIN SMALL LETTER U WITH BREVE */ - {"ucirc", 0x00FB}, /* LATIN SMALL LETTER U WITH CIRCUMFLEX */ - {"ucy", 0x0443}, /* CYRILLIC SMALL LETTER U */ - {"udblac", 0x0171}, /* LATIN SMALL LETTER U WITH DOUBLE ACUTE */ - {"udiagr", 0x03B0}, /* GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND */ - {"udigr", 0x03CB}, /* GREEK SMALL LETTER UPSILON WITH DIALYTIKA */ - {"ugr", 0x03C5}, /* GREEK SMALL LETTER UPSILON */ - {"ugrave", 0x00F9}, /* LATIN SMALL LETTER U WITH GRAVE */ - {"uharl", 0x21BF}, /* UPWARDS HARPOON WITH BARB LEFTWARDS */ - {"uharr", 0x21BE}, /* UPWARDS HARPOON WITH BARB RIGHTWARDS */ - {"uhblk", 0x2580}, /* UPPER HALF BLOCK */ - {"ulcorn", 0x231C}, /* TOP LEFT CORNER */ - {"ulcrop", 0x230F}, /* TOP LEFT CROP */ - {"umacr", 0x016B}, /* LATIN SMALL LETTER U WITH MACRON */ - {"uml", 0x00A8}, /* DIAERESIS */ - {"uogon", 0x0173}, /* LATIN SMALL LETTER U WITH OGONEK */ - {"uplus", 0x228E}, /* MULTISET UNION */ - {"upsi", 0x03C5}, /* GREEK SMALL LETTER UPSILON */ - {"upsih", 0x03D2}, /* GREEK UPSILON WITH HOOK SYMBOL */ - {"upsilon", 0x03C5}, /* GREEK SMALL LETTER UPSILON */ - {"urcorn", 0x231D}, /* TOP RIGHT CORNER */ - {"urcrop", 0x230E}, /* TOP RIGHT CROP */ - {"uring", 0x016F}, /* LATIN SMALL LETTER U WITH RING ABOVE */ - {"utilde", 0x0169}, /* LATIN SMALL LETTER U WITH TILDE */ - {"utri", 0x25B5}, /* WHITE UP-POINTING SMALL TRIANGLE */ - {"utrif", 0x25B4}, /* BLACK UP-POINTING SMALL TRIANGLE */ - {"uuml", 0x00FC}, /* LATIN SMALL LETTER U WITH DIAERESIS */ - {"vArr", 0x21D5}, /* UP DOWN DOUBLE ARROW */ - {"vDash", 0x22A8}, /* TRUE */ - {"varr", 0x2195}, /* UP DOWN ARROW */ - {"vcy", 0x0432}, /* CYRILLIC SMALL LETTER VE */ - {"vdash", 0x22A2}, /* RIGHT TACK */ - {"veebar", 0x22BB}, /* XOR */ - {"vellip", 0x22EE}, /* VERTICAL ELLIPSIS */ - {"verbar", 0x007C}, /* VERTICAL LINE */ - {"vltri", 0x22B2}, /* NORMAL SUBGROUP OF */ - {"vprime", 0x2032}, /* PRIME */ - {"vprop", 0x221D}, /* PROPORTIONAL TO */ - {"vrtri", 0x22B3}, /* CONTAINS AS NORMAL SUBGROUP */ - {"vsubnE", 0x228A}, /* SUBSET OF WITH NOT EQUAL TO */ - {"vsubne", 0x228A}, /* SUBSET OF WITH NOT EQUAL TO */ - {"vsupnE", 0x228B}, /* SUPERSET OF WITH NOT EQUAL TO */ - {"vsupne", 0x228B}, /* SUPERSET OF WITH NOT EQUAL TO */ - {"wcirc", 0x0175}, /* LATIN SMALL LETTER W WITH CIRCUMFLEX */ - {"wedgeq", 0x2259}, /* ESTIMATES */ - {"weierp", 0x2118}, /* SCRIPT CAPITAL P */ - {"wreath", 0x2240}, /* WREATH PRODUCT */ - {"xcirc", 0x25CB}, /* WHITE CIRCLE */ - {"xdtri", 0x25BD}, /* WHITE DOWN-POINTING TRIANGLE */ - {"xgr", 0x03BE}, /* GREEK SMALL LETTER XI */ - {"xhArr", 0x2194}, /* LEFT RIGHT ARROW */ - {"xharr", 0x2194}, /* LEFT RIGHT ARROW */ - {"xi", 0x03BE}, /* GREEK SMALL LETTER XI */ - {"xlArr", 0x21D0}, /* LEFTWARDS DOUBLE ARROW */ - {"xrArr", 0x21D2}, /* RIGHTWARDS DOUBLE ARROW */ - {"xutri", 0x25B3}, /* WHITE UP-POINTING TRIANGLE */ - {"yacute", 0x00FD}, /* LATIN SMALL LETTER Y WITH ACUTE */ - {"yacy", 0x044F}, /* CYRILLIC SMALL LETTER YA */ - {"ycirc", 0x0177}, /* LATIN SMALL LETTER Y WITH CIRCUMFLEX */ - {"ycy", 0x044B}, /* CYRILLIC SMALL LETTER YERU */ - {"yen", 0x00A5}, /* YEN SIGN */ - {"yicy", 0x0457}, /* CYRILLIC SMALL LETTER YI */ - {"yucy", 0x044E}, /* CYRILLIC SMALL LETTER YU */ - {"yuml", 0x00FF}, /* LATIN SMALL LETTER Y WITH DIAERESIS */ - {"zacute", 0x017A}, /* LATIN SMALL LETTER Z WITH ACUTE */ - {"zcaron", 0x017E}, /* LATIN SMALL LETTER Z WITH CARON */ - {"zcy", 0x0437}, /* CYRILLIC SMALL LETTER ZE */ - {"zdot", 0x017C}, /* LATIN SMALL LETTER Z WITH DOT ABOVE */ - {"zeta", 0x03B6}, /* GREEK SMALL LETTER ZETA */ - {"zgr", 0x03B6}, /* GREEK SMALL LETTER ZETA */ - {"zhcy", 0x0436}, /* CYRILLIC SMALL LETTER ZHE */ - {"zwj", 0x200D}, /* ZERO WIDTH JOINER */ - {"zwnj", 0x200C}, /* ZERO WIDTH NON-JOINER */ -/* {"epsiv", 0x????}, variant epsilon # ISOgrk3 */ -/* {"fjlig", 0x????}, fj ligature # ISOpub */ -/* {"gEl", 0x????}, greater-than, double equals, less-than # ISOamsr */ -/* {"gap", 0x????}, greater-than, approximately equal to # ISOamsr */ -/* {"gnap", 0x????}, greater-than, not approximately equal t# ISOamsn */ -/* {"jnodot", 0x????}, latin small letter dotless j # ISOamso */ -/* {"lEg", 0x????}, less-than, double equals, greater-than # ISOamsr */ -/* {"lap", 0x????}, less-than, approximately equal to # ISOamsr */ -/* {"lnap", 0x????}, less-than, not approximately equal to # ISOamsn */ -/* {"lpargt", 0x????}, left parenthesis, greater-than # ISOamsc */ -/* {"ngE", 0x????}, not greater-than, double equals # ISOamsn */ -/* {"nlE", 0x????}, not less-than, double equals # ISOamsn */ -/* {"nsmid", 0x????}, nshortmid # ISOamsn */ -/* {"prap", 0x????}, precedes, approximately equal to # ISOamsr */ -/* {"prnE", 0x????}, precedes, not double equal # ISOamsn */ -/* {"prnap", 0x????}, precedes, not approximately equal to # ISOamsn */ -/* {"rpargt", 0x????}, right parenthesis, greater-than # ISOamsc */ -/* {"scap", 0x????}, succeeds, approximately equal to # ISOamsr */ -/* {"scnE", 0x????}, succeeds, not double equals # ISOamsn */ -/* {"scnap", 0x????}, succeeds, not approximately equal to # ISOamsn */ -/* {"smid", 0x????}, shortmid # ISOamsr */ -}; - -#endif /* ENTITIES_H */ diff --git a/WWW/Library/djgpp/makefile b/WWW/Library/djgpp/makefile index b89f9295..55c856d0 100644 --- a/WWW/Library/djgpp/makefile +++ b/WWW/Library/djgpp/makefile @@ -7,7 +7,7 @@ WWW_MACH = djgpp # The ASIS repository's name for the machine we are on #ASIS_MACH = hardware/os -CFLAGS = -O3 -DUSE_ZLIB -DDOSPATH -DNOUSERS -DDEBUG -DDISP_PARTIAL \ +CFLAGS = -O3 -DUSE_ZLIB -DDOSPATH -DNOUSERS -DDISP_PARTIAL \ -I../Implementation \ -I../../../djgpp/tcplib/include \ -I../../../djgpp/tcplib/include/tcp \ diff --git a/WWW/Library/djgpp/makefile.sla b/WWW/Library/djgpp/makefile.sla index 875ce37d..fad64b1d 100644 --- a/WWW/Library/djgpp/makefile.sla +++ b/WWW/Library/djgpp/makefile.sla @@ -7,7 +7,7 @@ WWW_MACH = djgpp # The ASIS repository's name for the machine we are on #ASIS_MACH = hardware/os -CFLAGS = -O3 -DUSE_SLANG -DUSE_ZLIB -DDOSPATH -DNOUSERS -DDEBUG -DDISP_PARTIAL \ +CFLAGS = -O3 -DUSE_SLANG -DUSE_ZLIB -DDOSPATH -DNOUSERS -DDISP_PARTIAL \ -I../Implementation \ -I../../../djgpp/tcplib/include \ -I../../../djgpp/tcplib/include/tcp \ diff --git a/WWW/Library/unix/makefile.in b/WWW/Library/unix/makefile.in index 0a7ded68..66ac843b 100644 --- a/WWW/Library/unix/makefile.in +++ b/WWW/Library/unix/makefile.in @@ -66,7 +66,7 @@ lint: .c.i: @RULE_CC@ - @ECHO_CC@$(CPP) -C $(CPPOPTS) $*.c >$@ + @ECHO_CC@$(CPP) -C $(CPPOPTS) $(srcdir)/$*.c >$@ depend : makedepend -fmakefile -- $(CFLAGS) -- $(CFILES) |