about summary refs log tree commit diff stats
path: root/WWW/Library/Implementation/HTAnchor.c
diff options
context:
space:
mode:
Diffstat (limited to 'WWW/Library/Implementation/HTAnchor.c')
-rw-r--r--WWW/Library/Implementation/HTAnchor.c181
1 files changed, 81 insertions, 100 deletions
diff --git a/WWW/Library/Implementation/HTAnchor.c b/WWW/Library/Implementation/HTAnchor.c
index 9c8b10cd..ec332eb3 100644
--- a/WWW/Library/Implementation/HTAnchor.c
+++ b/WWW/Library/Implementation/HTAnchor.c
@@ -7,7 +7,7 @@
 ** History
 **
 **	   Nov 1990  Written in Objective-C for the NeXT browser (TBL)
-**	24-Oct-1991 (JFG), written in C, browser-independant
+**	24-Oct-1991 (JFG), written in C, browser-independent
 **	21-Nov-1991 (JFG), first complete version
 **
 **	(c) Copyright CERN 1991 - See Copyright.html
@@ -16,8 +16,6 @@
 #define HASH_SIZE 101		/* Arbitrary prime. Memory/speed tradeoff */
 
 #include <HTUtils.h>
-#include <tcp.h>
-#include <ctype.h>
 #include <HTAnchor.h>
 #include <HTParse.h>
 #include <UCAux.h>
@@ -26,8 +24,6 @@
 #include <LYCharSets.h>
 #include <LYLeaks.h>
 
-#define FREE(x) if (x) {free(x); x = NULL;}
-
 #ifdef NOT_DEFINED
 /*
  *	This is the hashing function used to determine which list in the
@@ -44,12 +40,12 @@ PRIVATE int HASH_FUNCTION ARGS1(
 	CONST char *,	cp_address)
 {
     int hash;
-    unsigned char *p;
+    CONST unsigned char *p;
 
-    for (p = (unsigned char *)cp_address, hash = 0; *p; p++)
-	hash = (int) (hash * 3 + (*(unsigned char *)p)) % HASH_SIZE;
+    for (p = (CONST unsigned char *)cp_address, hash = 0; *p; p++)
+	hash = (int) (hash * 3 + (*(CONST unsigned char *)p)) % HASH_SIZE;
 
-    return hash;
+    return(hash);
 }
 
 typedef struct _HyperDoc Hyperdoc;
@@ -84,7 +80,7 @@ PRIVATE HTParentAnchor * HTParentAnchor_new NOARGS
     newAnchor->no_cache = FALSE;	/* no-cache? - FM */
     newAnchor->content_type = NULL;	/* Content-Type. - FM */
     newAnchor->content_language = NULL; /* Content-Language. - FM */
-    newAnchor->content_encoding = NULL; /* Compression algorith. - FM */
+    newAnchor->content_encoding = NULL; /* Compression algorithm. - FM */
     newAnchor->content_base = NULL;	/* Content-Base. - FM */
     newAnchor->content_disposition = NULL; /* Content-Disposition. - FM */
     newAnchor->content_location = NULL; /* Content-Location. - FM */
@@ -94,7 +90,7 @@ PRIVATE HTParentAnchor * HTParentAnchor_new NOARGS
     newAnchor->expires = NULL;		/* Expires. - FM */
     newAnchor->last_modified = NULL;	/* Last-Modified. - FM */
     newAnchor->server = NULL;		/* Server. - FM */
-    return newAnchor;
+    return(newAnchor);
 }
 
 PRIVATE HTChildAnchor * HTChildAnchor_new NOARGS
@@ -120,12 +116,12 @@ PRIVATE BOOL HTEquivalent ARGS2(
     if (s && t) {  /* Make sure they point to something */
 	for (; *s && *t; s++, t++) {
 	    if (TOUPPER(*s) != TOUPPER(*t)) {
-		return NO;
+		return(NO);
 	    }
 	}
-	return TOUPPER(*s) == TOUPPER(*t);
+	return( TOUPPER(*s) == TOUPPER(*t));
     } else {
-	return s == t;	/* Two NULLs are equivalent, aren't they ? */
+	return(s == t); 	/* Two NULLs are equivalent, aren't they ? */
     }
 }
 
@@ -147,12 +143,12 @@ PRIVATE BOOL HTIdentical ARGS2(
     if (s && t) {  /* Make sure they point to something */
 	for (; *s && *t; s++, t++) {
 	    if (*s != *t) {
-		return NO;
+		return(NO);
 	    }
 	}
-	return *s == *t;
+	return(*s == *t);
     } else {
-	return s == t;	/* Two NULLs are identical, aren't they ? */
+	return(s == t); 	/* Two NULLs are identical, aren't they ? */
     }
 }
 #endif /* CASE_INSENSITIVE_ANCHORS */
@@ -172,9 +168,8 @@ PUBLIC HTChildAnchor * HTAnchor_findChild ARGS2(
     HTList *kids;
 
     if (!parent) {
-	if (TRACE)
-	    fprintf(stderr, "HTAnchor_findChild called with NULL parent.\n");
-	return NULL;
+	CTRACE(tfp, "HTAnchor_findChild called with NULL parent.\n");
+	return(NULL);
     }
     if ((kids = parent->children) != 0) {
 	/*
@@ -183,15 +178,14 @@ PUBLIC HTChildAnchor * HTAnchor_findChild ARGS2(
 	if (tag && *tag) {		/* TBL */
 	    while (NULL != (child=(HTChildAnchor *)HTList_nextObject(kids))) {
 #ifdef CASE_INSENSITIVE_ANCHORS
-		if (HTEquivalent(child->tag, tag)) { /* Case insensitive */
+		if (HTEquivalent(child->tag, tag)) /* Case insensitive */
 #else
-		if (HTIdentical(child->tag, tag)) {  /* Case sensitive - FM */
+		if (HTIdentical(child->tag, tag)) /* Case sensitive - FM */
 #endif /* CASE_INSENSITIVE_ANCHORS */
-		    if (TRACE)
-			fprintf(stderr,
-	      "Child anchor %p of parent %p with name `%s' already exists.\n",
+		{
+		    CTRACE(tfp, "Child anchor %p of parent %p with name `%s' already exists.\n",
 				(void *)child, (void *)parent, tag);
-		    return child;
+		    return(child);
 		}
 	    }
 	}  /*  end if tag is void */
@@ -200,16 +194,14 @@ PUBLIC HTChildAnchor * HTAnchor_findChild ARGS2(
     }
 
     child = HTChildAnchor_new();
-    if (TRACE)
-	fprintf(stderr,
-		"new Anchor %p named `%s' is child of %p\n",
+    CTRACE(tfp, "new Anchor %p named `%s' is child of %p\n",
 		(void *)child,
 		tag ? tag : (CONST char *)"",
 		(void *)parent); /* int for apollo */
     HTList_addObject (parent->children, child);
     child->parent = parent;
     StrAllocCopy(child->tag, tag);
-    return child;
+    return(child);
 }
 
 
@@ -228,8 +220,7 @@ PUBLIC HTChildAnchor * HTAnchor_findChildAndLink ARGS4(
 {
     HTChildAnchor * child = HTAnchor_findChild(parent, tag);
 
-    if (TRACE)
-	fprintf(stderr,"Entered HTAnchor_findChildAndLink\n");
+    CTRACE(tfp,"Entered HTAnchor_findChildAndLink\n");
 
     if (href && *href) {
 	char *relative_to = HTAnchor_address((HTAnchor *)parent);
@@ -258,7 +249,7 @@ PUBLIC HTChildAnchor * HTAnchor_findChildAndLink ARGS4(
 	FREE(parsed_doc.address);
 	FREE(relative_to);
     }
-    return child;
+    return(child);
 }
 
 /*
@@ -306,8 +297,7 @@ PUBLIC HTAnchor * HTAnchor_findAddress ARGS1(
     /* Anchor tag specified ? */
     char *tag = HTParse(newdoc->address, "", PARSE_ANCHOR);
 
-    if (TRACE)
-	fprintf(stderr,"Entered HTAnchor_findAddress\n");
+    CTRACE(tfp,"Entered HTAnchor_findAddress\n");
 
     /*
     **	If the address represents a sub-anchor, we recursively load its
@@ -371,9 +361,7 @@ PUBLIC HTAnchor * HTAnchor_findAddress ARGS1(
 		foundAnchor->isHEAD == newdoc->isHEAD)
 #endif /* CASE_INSENSITIVE_ANCHORS */
 	    {
-		if (TRACE)
-		    fprintf(stderr,
-			    "Anchor %p with address `%s' already exists.\n",
+		CTRACE(tfp, "Anchor %p with address `%s' already exists.\n",
 			    (void *)foundAnchor, newdoc->address);
 		 return (HTAnchor *)foundAnchor;
 	     }
@@ -383,9 +371,7 @@ PUBLIC HTAnchor * HTAnchor_findAddress ARGS1(
 	**  Node not found: create new anchor.
 	*/
 	foundAnchor = HTParentAnchor_new();
-	if (TRACE)
-	    fprintf(stderr,
-		    "New anchor %p has hash %d and address `%s'\n",
+	CTRACE(tfp, "New anchor %p has hash %d and address `%s'\n",
 		    (void *)foundAnchor, hash, newdoc->address);
 	StrAllocCopy(foundAnchor->address, newdoc->address);
 	if (newdoc->post_data)
@@ -731,7 +717,7 @@ PUBLIC void HTAnchor_makeLastChild ARGS1(
 PUBLIC HTParentAnchor * HTAnchor_parent ARGS1(
 	HTAnchor *,	me)
 {
-    return me ? me->parent : NULL;
+    return( me ? me->parent : NULL);
 }
 
 PUBLIC void HTAnchor_setDocument ARGS2(
@@ -745,7 +731,7 @@ PUBLIC void HTAnchor_setDocument ARGS2(
 PUBLIC HyperDoc * HTAnchor_document ARGS1(
 	HTParentAnchor *,	me)
 {
-    return me ? me->document : NULL;
+    return( me ? me->document : NULL);
 }
 
 
@@ -778,7 +764,7 @@ PUBLIC char * HTAnchor_address ARGS1(
 			   me->parent->address, ((HTChildAnchor *)me)->tag);
 	}
     }
-    return addr;
+    return(addr);
 }
 
 PUBLIC void HTAnchor_setFormat ARGS2(
@@ -792,7 +778,7 @@ PUBLIC void HTAnchor_setFormat ARGS2(
 PUBLIC HTFormat HTAnchor_format ARGS1(
 	HTParentAnchor *,	me)
 {
-    return me ? me->format : NULL;
+    return( me ? me->format : NULL);
 }
 
 PUBLIC void HTAnchor_setIndex ARGS2(
@@ -817,7 +803,7 @@ PUBLIC void HTAnchor_setPrompt ARGS2(
 PUBLIC BOOL HTAnchor_isIndex ARGS1(
 	HTParentAnchor *,	me)
 {
-    return me ? me->isIndex : NO;
+    return( me ? me->isIndex : NO);
 }
 
 /*	Whether Anchor has been designated as an ISMAP link
@@ -826,13 +812,13 @@ PUBLIC BOOL HTAnchor_isIndex ARGS1(
 PUBLIC BOOL HTAnchor_isISMAPScript ARGS1(
 	HTAnchor *,	me)
 {
-    return me ? me->parent->isISMAPScript : NO;
+    return( me ? me->parent->isISMAPScript : NO);
 }
 
 PUBLIC BOOL HTAnchor_hasChildren ARGS1(
 	HTParentAnchor *,	me)
 {
-    return me ? ! HTList_isEmpty(me->children) : NO;
+    return( me ? ! HTList_isEmpty(me->children) : NO);
 }
 
 #if defined(USE_HASH)
@@ -841,7 +827,7 @@ PUBLIC BOOL HTAnchor_hasChildren ARGS1(
 PUBLIC CONST char * HTAnchor_style ARGS1(
 	HTParentAnchor *,	me)
 {
-	return me ? me->style : NULL;
+	return( me ? me->style : NULL);
 }
 
 PUBLIC void HTAnchor_setStyle ARGS2(
@@ -860,7 +846,7 @@ PUBLIC void HTAnchor_setStyle ARGS2(
 PUBLIC CONST char * HTAnchor_title ARGS1(
 	HTParentAnchor *,	me)
 {
-    return me ? me->title : NULL;
+    return( me ? me->title : NULL);
 }
 
 PUBLIC void HTAnchor_setTitle ARGS2(
@@ -902,7 +888,7 @@ PUBLIC void HTAnchor_appendTitle ARGS2(
 PUBLIC CONST char * HTAnchor_bookmark ARGS1(
 	HTParentAnchor *,	me)
 {
-    return me ? me->bookmark : NULL;
+    return( me ? me->bookmark : NULL);
 }
 
 PUBLIC void HTAnchor_setBookmark ARGS2(
@@ -918,7 +904,7 @@ PUBLIC void HTAnchor_setBookmark ARGS2(
 PUBLIC CONST char * HTAnchor_owner ARGS1(
 	HTParentAnchor *,	me)
 {
-    return (me ? me->owner : NULL);
+    return( me ? me->owner : NULL);
 }
 
 PUBLIC void HTAnchor_setOwner ARGS2(
@@ -935,7 +921,7 @@ PUBLIC void HTAnchor_setOwner ARGS2(
 PUBLIC CONST char * HTAnchor_RevTitle ARGS1(
 	HTParentAnchor *,	me)
 {
-    return (me ? me->RevTitle : NULL);
+    return( me ? me->RevTitle : NULL);
 }
 
 PUBLIC void HTAnchor_setRevTitle ARGS2(
@@ -962,7 +948,7 @@ PUBLIC void HTAnchor_setRevTitle ARGS2(
 PUBLIC CONST char * HTAnchor_SugFname ARGS1(
 	HTParentAnchor *,	me)
 {
-    return me ? me->SugFname : NULL;
+    return( me ? me->SugFname : NULL);
 }
 
 /*	Content-Encoding handling. - FM
@@ -972,7 +958,7 @@ PUBLIC CONST char * HTAnchor_SugFname ARGS1(
 PUBLIC CONST char * HTAnchor_content_encoding ARGS1(
 	HTParentAnchor *,	me)
 {
-    return me ? me->content_encoding : NULL;
+    return( me ? me->content_encoding : NULL);
 }
 
 /*	Content-Type handling. - FM
@@ -980,7 +966,7 @@ PUBLIC CONST char * HTAnchor_content_encoding ARGS1(
 PUBLIC CONST char * HTAnchor_content_type ARGS1(
 	HTParentAnchor *,	me)
 {
-    return me ? me->content_type : NULL;
+    return( me ? me->content_type : NULL);
 }
 
 /*	Last-Modified header handling. - FM
@@ -988,7 +974,7 @@ PUBLIC CONST char * HTAnchor_content_type ARGS1(
 PUBLIC CONST char * HTAnchor_last_modified ARGS1(
 	HTParentAnchor *,	me)
 {
-    return me ? me->last_modified : NULL;
+    return( me ? me->last_modified : NULL);
 }
 
 /*	Date header handling. - FM
@@ -996,7 +982,7 @@ PUBLIC CONST char * HTAnchor_last_modified ARGS1(
 PUBLIC CONST char * HTAnchor_date ARGS1(
 	HTParentAnchor *,	me)
 {
-    return me ? me->date : NULL;
+    return( me ? me->date : NULL);
 }
 
 /*	Server header handling. - FM
@@ -1004,7 +990,7 @@ PUBLIC CONST char * HTAnchor_date ARGS1(
 PUBLIC CONST char * HTAnchor_server ARGS1(
 	HTParentAnchor *,	me)
 {
-    return me ? me->server : NULL;
+    return( me ? me->server : NULL);
 }
 
 /*	Safe header handling. - FM
@@ -1012,7 +998,7 @@ PUBLIC CONST char * HTAnchor_server ARGS1(
 PUBLIC BOOL HTAnchor_safe ARGS1(
 	HTParentAnchor *,	me)
 {
-    return me ? me->safe : FALSE;
+    return( me ? me->safe : FALSE);
 }
 
 /*	Content-Base header handling. - FM
@@ -1020,7 +1006,7 @@ PUBLIC BOOL HTAnchor_safe ARGS1(
 PUBLIC CONST char * HTAnchor_content_base ARGS1(
 	HTParentAnchor *,	me)
 {
-    return me ? me->content_base : NULL;
+    return( me ? me->content_base : NULL);
 }
 
 /*	Content-Location header handling. - FM
@@ -1028,7 +1014,7 @@ PUBLIC CONST char * HTAnchor_content_base ARGS1(
 PUBLIC CONST char * HTAnchor_content_location ARGS1(
 	HTParentAnchor *,	me)
 {
-    return me ? me->content_location : NULL;
+    return( me ? me->content_location : NULL);
 }
 
 /*	Link me Anchor to another given one
@@ -1040,10 +1026,8 @@ PUBLIC BOOL HTAnchor_link ARGS3(
 	HTLinkType *,	type)
 {
     if (!(source && destination))
-	return NO;  /* Can't link to/from non-existing anchor */
-    if (TRACE)
-	fprintf(stderr,
-		"Linking anchor %p to anchor %p\n", source, destination);
+	return(NO);  /* Can't link to/from non-existing anchor */
+    CTRACE(tfp, "Linking anchor %p to anchor %p\n", source, destination);
     if (!source->mainLink.dest) {
 	source->mainLink.dest = destination;
 	source->mainLink.type = type;
@@ -1060,7 +1044,7 @@ PUBLIC BOOL HTAnchor_link ARGS3(
     if (!destination->parent->sources)
 	destination->parent->sources = HTList_new();
     HTList_addObject (destination->parent->sources, source);
-    return YES;  /* Success */
+    return(YES);  /* Success */
 }
 
 
@@ -1070,7 +1054,7 @@ PUBLIC BOOL HTAnchor_link ARGS3(
 PUBLIC HTAnchor * HTAnchor_followMainLink ARGS1(
 	HTAnchor *,	me)
 {
-    return me->mainLink.dest;
+    return( me->mainLink.dest);
 }
 
 PUBLIC HTAnchor * HTAnchor_followTypedLink ARGS2(
@@ -1078,17 +1062,17 @@ PUBLIC HTAnchor * HTAnchor_followTypedLink ARGS2(
 	HTLinkType *,	type)
 {
     if (me->mainLink.type == type)
-	return me->mainLink.dest;
+	return( me->mainLink.dest);
     if (me->links) {
 	HTList *links = me->links;
 	HTLink *the_link;
 	while (NULL != (the_link=(HTLink *)HTList_nextObject(links))) {
 	    if (the_link->type == type) {
-		return the_link->dest;
+		return( the_link->dest);
 	    }
 	}
     }
-    return NULL;  /* No link of me type */
+    return(NULL);  /* No link of me type */
 }
 
 
@@ -1100,7 +1084,7 @@ PUBLIC BOOL HTAnchor_makeMainLink ARGS2(
 {
     /* Check that everything's OK */
     if (!(me && HTList_removeObject (me->links, movingLink))) {
-	return NO;  /* link not found or NULL anchor */
+	return(NO);  /* link not found or NULL anchor */
     } else {
 	/* First push current main link onto top of links list */
 	HTLink *newLink = (HTLink *)calloc (1, sizeof (HTLink));
@@ -1114,7 +1098,7 @@ PUBLIC BOOL HTAnchor_makeMainLink ARGS2(
 	memcpy((void *)&me->mainLink,
 	       (CONST void *)movingLink, sizeof (HTLink));
 	FREE(movingLink);
-	return YES;
+	return(YES);
     }
 }
 
@@ -1128,7 +1112,7 @@ PUBLIC HTList * HTAnchor_methods ARGS1(
     if (!me->methods) {
 	me->methods = HTList_new();
     }
-    return me->methods;
+    return( me->methods);
 }
 
 /*	Protocol
@@ -1137,7 +1121,7 @@ PUBLIC HTList * HTAnchor_methods ARGS1(
 PUBLIC void * HTAnchor_protocol ARGS1(
 	HTParentAnchor *,	me)
 {
-    return me->protocol;
+    return( me->protocol);
 }
 
 PUBLIC void HTAnchor_setProtocol ARGS2(
@@ -1153,7 +1137,7 @@ PUBLIC void HTAnchor_setProtocol ARGS2(
 PUBLIC char * HTAnchor_physical ARGS1(
 	HTParentAnchor *,	me)
 {
-    return me->physical;
+    return( me->physical);
 }
 
 PUBLIC void HTAnchor_setPhysical ARGS2(
@@ -1195,7 +1179,7 @@ PUBLIC LYUCcharset * HTAnchor_getUCInfoStage ARGS2(
 {
     if (me && !me->UCStages) {
 	int i;
-	int chndl = UCLYhndl_for_unspec;
+	int chndl = UCLYhndl_for_unspec;  /* always >= 0 */
 	UCAnchorInfo * stages = (UCAnchorInfo*)calloc(1,
 						      sizeof(UCAnchorInfo));
 	if (stages == NULL)
@@ -1206,28 +1190,25 @@ PUBLIC LYUCcharset * HTAnchor_getUCInfoStage ARGS2(
 	}
 	if (me->charset) {
 	    chndl = UCGetLYhndl_byMIME(me->charset);
-	    if (chndl < 0) {
+	    if (chndl < 0)
 		chndl = UCLYhndl_for_unrec;
-	    }
-	}
-	if (chndl >= 0) {
-	    memcpy(&stages->s[UCT_STAGE_MIME].C, &LYCharSet_UC[chndl],
-		   sizeof(LYUCcharset));
-	    stages->s[UCT_STAGE_MIME].lock = UCT_SETBY_DEFAULT;
-	} else {
-	    /*
-	     *	Should not happen...
-	     */
-	    stages->s[UCT_STAGE_MIME].C.UChndl = -1;
-	    stages->s[UCT_STAGE_MIME].lock = UCT_SETBY_NONE;
+	    if (chndl < 0)
+		/*
+		**  UCLYhndl_for_unrec not defined :-(
+		**  fallback to UCLYhndl_for_unspec which always valid.
+		*/
+		chndl = UCLYhndl_for_unspec;  /* always >= 0 */
 	}
+	memcpy(&stages->s[UCT_STAGE_MIME].C, &LYCharSet_UC[chndl],
+	       sizeof(LYUCcharset));
+	stages->s[UCT_STAGE_MIME].lock = UCT_SETBY_DEFAULT;
 	stages->s[UCT_STAGE_MIME].LYhndl = chndl;
 	me->UCStages = stages;
     }
     if (me) {
-	return &me->UCStages->s[which_stage].C;
+	return( &me->UCStages->s[which_stage].C);
     }
-    return NULL;
+    return(NULL);
 }
 
 PUBLIC int HTAnchor_getUCLYhndl ARGS2(
@@ -1242,10 +1223,10 @@ PUBLIC int HTAnchor_getUCLYhndl ARGS2(
 	    (void) HTAnchor_getUCInfoStage(me, which_stage);
 	}
 	if (me->UCStages->s[which_stage].lock > UCT_SETBY_NONE) {
-	    return me->UCStages->s[which_stage].LYhndl;
+	    return( me->UCStages->s[which_stage].LYhndl);
 	}
     }
-    return -1;
+    return( -1);
 }
 
 PUBLIC LYUCcharset * HTAnchor_setUCInfoStage ARGS4(
@@ -1271,10 +1252,10 @@ PUBLIC LYUCcharset * HTAnchor_setUCInfoStage ARGS4(
 	    else {
 		p->UChndl = -1;
 	    }
-	    return p;
+	    return(p);
 	}
     }
-    return NULL;
+    return(NULL);
 }
 
 PUBLIC LYUCcharset * HTAnchor_resetUCInfoStage ARGS4(
@@ -1284,10 +1265,10 @@ PUBLIC LYUCcharset * HTAnchor_resetUCInfoStage ARGS4(
 	int,			set_by)
 {
     if (!me || !me->UCStages)
-	return NULL;
+	return(NULL);
     me->UCStages->s[which_stage].lock = set_by;
     me->UCStages->s[which_stage].LYhndl = LYhndl;
-    return &me->UCStages->s[which_stage].C;
+    return( &me->UCStages->s[which_stage].C);
 }
 
 /*
@@ -1318,8 +1299,8 @@ PUBLIC LYUCcharset * HTAnchor_copyUCInfoStage ARGS4(
 		me->UCStages->s[from_stage].LYhndl;
 	    if (p_to != p_from)
 		memcpy(p_to, p_from, sizeof(LYUCcharset));
-	    return p_to;
+	    return(p_to);
 	}
     }
-    return NULL;
+    return(NULL);
 }