about summary refs log tree commit diff stats
path: root/WWW/Library/Implementation/HTAAProt.c
diff options
context:
space:
mode:
Diffstat (limited to 'WWW/Library/Implementation/HTAAProt.c')
-rw-r--r--WWW/Library/Implementation/HTAAProt.c736
1 files changed, 366 insertions, 370 deletions
diff --git a/WWW/Library/Implementation/HTAAProt.c b/WWW/Library/Implementation/HTAAProt.c
index 516b4885..192b974c 100644
--- a/WWW/Library/Implementation/HTAAProt.c
+++ b/WWW/Library/Implementation/HTAAProt.c
@@ -1,68 +1,70 @@
 
 /* MODULE							HTAAProt.c
-**		PROTECTION FILE PARSING MODULE
-**
-** AUTHORS:
-**	AL	Ari Luotonen	luotonen@dxcern.cern.ch
-**	MD	Mark Donszelmann    duns@vxdeop.cern.ch
-**
-** HISTORY:
-**	20 Oct 93  AL	Now finds uid/gid for nobody/nogroup by name
-**			(doesn't use default 65534 right away).
-**			Also understands negative uids/gids.
-**	14 Nov 93  MD	Added VMS compatibility
-**
-** BUGS:
-**
-**
-*/
+ *		PROTECTION FILE PARSING MODULE
+ *
+ * AUTHORS:
+ *	AL	Ari Luotonen	luotonen@dxcern.cern.ch
+ *	MD	Mark Donszelmann    duns@vxdeop.cern.ch
+ *
+ * HISTORY:
+ *	20 Oct 93  AL	Now finds uid/gid for nobody/nogroup by name
+ *			(doesn't use default 65534 right away).
+ *			Also understands negative uids/gids.
+ *	14 Nov 93  MD	Added VMS compatibility
+ *
+ * BUGS:
+ *
+ *
+ */
 
 #include <HTUtils.h>
 
 #ifndef VMS
 #ifndef NOUSERS
-#include <pwd.h>	/* Unix password file routine: getpwnam()	*/
-#include <grp.h>	/* Unix group file routine: getgrnam()		*/
+#include <pwd.h>		/* Unix password file routine: getpwnam()       */
+#include <grp.h>		/* Unix group file routine: getgrnam()          */
 #endif /* NOUSERS */
 #endif /* not VMS */
 
 #include <HTAAUtil.h>
-#include <HTLex.h>	/* Lexical analysor	*/
-#include <HTAAProt.h>	/* Implemented here	*/
+#include <HTLex.h>		/* Lexical analysor     */
+#include <HTAAProt.h>		/* Implemented here     */
 
 #include <LYUtils.h>
 #include <LYLeaks.h>
 
-#define NOBODY    65534	/* -2 in 16-bit environment */
-#define NONESUCH  65533	/* -3 in 16-bit environment */
+#define NOBODY    65534		/* -2 in 16-bit environment */
+#define NONESUCH  65533		/* -3 in 16-bit environment */
 
 /*
-** Protection setup caching
-*/
+ * Protection setup caching
+ */
 typedef struct {
-    char *	prot_filename;
-    HTAAProt *	prot;
+    char *prot_filename;
+    HTAAProt *prot;
 } HTAAProtCache;
 
-static HTList *  prot_cache	= NULL;	/* Protection setup cache.	*/
-static HTAAProt *default_prot	= NULL;	/* Default protection.		*/
-static HTAAProt *current_prot	= NULL;	/* Current protection mode	*/
+static HTList *prot_cache = NULL;	/* Protection setup cache.      */
+static HTAAProt *default_prot = NULL;	/* Default protection.          */
+static HTAAProt *current_prot = NULL;	/* Current protection mode      */
+
 					/* which is set up by callbacks */
-					/* from the rule system when	*/
+					/* from the rule system when    */
 					/* a "protect" rule is matched. */
 
 #ifndef NOUSERS
 /* static							isNumber()
-**		DOES A CHARACTER STRING REPRESENT A NUMBER
-*/
-static BOOL isNumber (const char * s)
+ *		DOES A CHARACTER STRING REPRESENT A NUMBER
+ */
+static BOOL isNumber(const char *s)
 {
     const char *cur = s;
 
-    if (isEmpty(s)) return NO;
+    if (isEmpty(s))
+	return NO;
 
     if (*cur == '-')
-	cur++;		/* Allow initial minus sign in a number */
+	cur++;			/* Allow initial minus sign in a number */
 
     while (*cur) {
 	if (*cur < '0' || *cur > '9')
@@ -73,136 +75,130 @@ static BOOL isNumber (const char * s)
 }
 #endif /* !NOUSERS */
 
-
 #if defined (NOUSERS)
 /* PUBLIC							HTAA_getUidName()
-**		GET THE USER ID NAME (VMS ONLY)
-** ON ENTRY:
-**	No arguments.
-**
-** ON EXIT:
-**	returns	the user name
-**		Default is "" (nobody).
-*/
-char * HTAA_getUidName (void)
+ *		GET THE USER ID NAME (VMS ONLY)
+ * ON ENTRY:
+ *	No arguments.
+ *
+ * ON EXIT:
+ *	returns	the user name
+ *		Default is "" (nobody).
+ */
+char *HTAA_getUidName(void)
 {
     if (current_prot && current_prot->uid_name
-		  && (0 != strcmp(current_prot->uid_name,"nobody")) )
-       return(current_prot->uid_name);
+	&& (0 != strcmp(current_prot->uid_name, "nobody")))
+	return (current_prot->uid_name);
     else
-       return("");
+	return ("");
 }
 
 /* PUBLIC							HTAA_getFileName
-**		GET THE FILENAME (VMS ONLY)
-** ON ENTRY:
-**	No arguments.
-**
-** ON EXIT:
-**	returns	the filename
-*/
-char * HTAA_getFileName (void)
+ *		GET THE FILENAME (VMS ONLY)
+ * ON ENTRY:
+ *	No arguments.
+ *
+ * ON EXIT:
+ *	returns	the filename
+ */
+char *HTAA_getFileName(void)
 {
     if (current_prot && current_prot->filename)
-       return(current_prot->filename);
+	return (current_prot->filename);
     else
-       return("");
+	return ("");
 }
 
 #else /* not VMS */
 
 /* PUBLIC							HTAA_getUid()
-**		GET THE USER ID TO CHANGE THE PROCESS UID TO
-** ON ENTRY:
-**	No arguments.
-**
-** ON EXIT:
-**	returns	the uid number to give to setuid() system call.
-**		Default is 65534 (nobody).
-*/
-int HTAA_getUid (void)
+ *		GET THE USER ID TO CHANGE THE PROCESS UID TO
+ * ON ENTRY:
+ *	No arguments.
+ *
+ * ON EXIT:
+ *	returns	the uid number to give to setuid() system call.
+ *		Default is 65534 (nobody).
+ */
+int HTAA_getUid(void)
 {
     int uid;
 
-    if (current_prot  &&  current_prot->uid_name) {
+    if (current_prot && current_prot->uid_name) {
 	if (isNumber(current_prot->uid_name)) {
 	    uid = atoi(current_prot->uid_name);
-	    if ((*HTAA_UidToName (uid)) != '\0') {
+	    if ((*HTAA_UidToName(uid)) != '\0') {
 		return uid;
 	    }
-	}
-	else {	/* User name (not a number) */
-	    if ((uid = HTAA_NameToUid (current_prot->uid_name)) != NONESUCH) {
+	} else {		/* User name (not a number) */
+	    if ((uid = HTAA_NameToUid(current_prot->uid_name)) != NONESUCH) {
 		return uid;
 	    }
 	}
     }
     /*
-    ** Ok, then let's get uid for nobody.
-    */
-    if ((uid = HTAA_NameToUid ("nobody")) != NONESUCH) {
+     * Ok, then let's get uid for nobody.
+     */
+    if ((uid = HTAA_NameToUid("nobody")) != NONESUCH) {
 	return uid;
     }
     /*
-    ** Ok, then use default.
-    */
-    return NOBODY;	/* nobody */
+     * Ok, then use default.
+     */
+    return NOBODY;		/* nobody */
 }
 
-
 /* PUBLIC							HTAA_getGid()
-**		GET THE GROUP ID TO CHANGE THE PROCESS GID TO
-** ON ENTRY:
-**	No arguments.
-**
-** ON EXIT:
-**	returns	the uid number to give to setgid() system call.
-**		Default is 65534 (nogroup).
-*/
-int HTAA_getGid (void)
+ *		GET THE GROUP ID TO CHANGE THE PROCESS GID TO
+ * ON ENTRY:
+ *	No arguments.
+ *
+ * ON EXIT:
+ *	returns	the uid number to give to setgid() system call.
+ *		Default is 65534 (nogroup).
+ */
+int HTAA_getGid(void)
 {
     int gid;
 
-    if (current_prot  &&  current_prot->gid_name) {
+    if (current_prot && current_prot->gid_name) {
 	if (isNumber(current_prot->gid_name)) {
 	    gid = atoi(current_prot->gid_name);
 	    if (*HTAA_GidToName(gid) != '\0') {
 		return gid;
 	    }
-	}
-	else {	/* Group name (not number) */
-	    if ((gid = HTAA_NameToGid (current_prot->gid_name)) != NONESUCH) {
+	} else {		/* Group name (not number) */
+	    if ((gid = HTAA_NameToGid(current_prot->gid_name)) != NONESUCH) {
 		return gid;
 	    }
 	}
     }
     /*
-    ** Ok, then let's get gid for nogroup.
-    */
-    if ((gid = HTAA_NameToGid ("nogroup")) != NONESUCH) {
+     * Ok, then let's get gid for nogroup.
+     */
+    if ((gid = HTAA_NameToGid("nogroup")) != NONESUCH) {
 	return gid;
     }
     /*
-    ** Ok, then use default.
-    */
-    return NOBODY;	/* nogroup */
+     * Ok, then use default.
+     */
+    return NOBODY;		/* nogroup */
 }
 #endif /* not VMS */
 
-
 /* static							HTAA_setIds()
-**		SET UID AND GID (AS NAMES OR NUMBERS)
-**		TO HTAAProt STRUCTURE
-** ON ENTRY:
-**	prot		destination.
-**	ids		is a string like "james.www" or "1422.69" etc.
-**			giving uid and gid.
-**
-** ON EXIT:
-**	returns		nothing.
-*/
-static void HTAA_setIds (HTAAProt *	prot,
-			       const char *	ids)
+ *		SET UID AND GID (AS NAMES OR NUMBERS)
+ *		TO HTAAProt STRUCTURE
+ * ON ENTRY:
+ *	prot		destination.
+ *	ids		is a string like "james.www" or "1422.69" etc.
+ *			giving uid and gid.
+ *
+ * ON EXIT:
+ *	returns		nothing.
+ */
+static void HTAA_setIds(HTAAProt *prot, const char *ids)
 {
     if (ids) {
 	char *local_copy = NULL;
@@ -211,34 +207,30 @@ static void HTAA_setIds (HTAAProt *	prot,
 	StrAllocCopy(local_copy, ids);
 	point = strchr(local_copy, '.');
 	if (point) {
-	    *(point++) = (char)0;
+	    *(point++) = (char) 0;
 	    StrAllocCopy(prot->gid_name, point);
-	}
-	else {
+	} else {
 	    StrAllocCopy(prot->gid_name, "nogroup");
 	}
 	StrAllocCopy(prot->uid_name, local_copy);
 	FREE(local_copy);
-    }
-    else {
+    } else {
 	StrAllocCopy(prot->uid_name, "nobody");
 	StrAllocCopy(prot->gid_name, "nogroup");
     }
 }
 
-
 /* static						HTAA_parseProtFile()
-**		PARSE A PROTECTION SETUP FILE AND
-**		PUT THE RESULT IN A HTAAProt STRUCTURE
-** ON ENTRY:
-**	prot		destination structure.
-**	fp		open protection file.
-**
-** ON EXIT:
-**	returns		nothing.
-*/
-static void HTAA_parseProtFile (HTAAProt * prot,
-				      FILE *	  fp)
+ *		PARSE A PROTECTION SETUP FILE AND
+ *		PUT THE RESULT IN A HTAAProt STRUCTURE
+ * ON ENTRY:
+ *	prot		destination structure.
+ *	fp		open protection file.
+ *
+ * ON EXIT:
+ *	returns		nothing.
+ */
+static void HTAA_parseProtFile(HTAAProt *prot, FILE *fp)
 {
     if (prot && fp) {
 	LexItem lex_item;
@@ -249,7 +241,7 @@ static void HTAA_parseProtFile (HTAAProt * prot,
 	    while (lex_item == LEX_REC_SEP)	/* Ignore empty lines */
 		lex_item = lex(fp);
 
-	    if (lex_item == LEX_EOF)		/* End of file */
+	    if (lex_item == LEX_EOF)	/* End of file */
 		break;
 
 	    if (lex_item == LEX_ALPH_STR) {	/* Valid setup record */
@@ -258,112 +250,114 @@ static void HTAA_parseProtFile (HTAAProt * prot,
 
 		if (LEX_FIELD_SEP != (lex_item = lex(fp)))
 		    unlex(lex_item);	/* If someone wants to use colon */
-					/* after field name it's ok, but */
-					/* not required. Here we read it.*/
+		/* after field name it's ok, but */
+		/* not required. Here we read it. */
 
-		if (0==strncasecomp(fieldname, "Auth", 4)) {
+		if (0 == strncasecomp(fieldname, "Auth", 4)) {
 		    lex_item = lex(fp);
 		    while (lex_item == LEX_ALPH_STR) {
 			HTAAScheme scheme = HTAAScheme_enum(HTlex_buffer);
+
 			if (scheme != HTAA_UNKNOWN) {
 			    if (!prot->valid_schemes)
 				prot->valid_schemes = HTList_new();
-			    HTList_addObject(prot->valid_schemes,(void*)scheme);
+			    HTList_addObject(prot->valid_schemes, (void *) scheme);
 			    CTRACE((tfp, "%s %s `%s'\n",
-					"HTAA_parseProtFile: valid",
-					"authentication scheme:",
-					HTAAScheme_name(scheme)));
+				    "HTAA_parseProtFile: valid",
+				    "authentication scheme:",
+				    HTAAScheme_name(scheme)));
 			} else {
 			    CTRACE((tfp, "%s %s `%s'\n",
-					"HTAA_parseProtFile: unknown",
-					"authentication scheme:",
-					HTlex_buffer));
+				    "HTAA_parseProtFile: unknown",
+				    "authentication scheme:",
+				    HTlex_buffer));
 			}
 
 			if (LEX_ITEM_SEP != (lex_item = lex(fp)))
 			    break;
 			/*
-			** Here lex_item == LEX_ITEM_SEP; after item separator
-			** it is ok to have one or more newlines (LEX_REC_SEP)
-			** and they are ignored (continuation line).
-			*/
+			 * Here lex_item == LEX_ITEM_SEP; after item separator
+			 * it is ok to have one or more newlines (LEX_REC_SEP)
+			 * and they are ignored (continuation line).
+			 */
 			do {
 			    lex_item = lex(fp);
 			} while (lex_item == LEX_REC_SEP);
-		    } /* while items in list */
-		} /* if "Authenticate" */
-
-		else if (0==strncasecomp(fieldname, "mask", 4)) {
+		    }		/* while items in list */
+		}
+		/* if "Authenticate" */
+		else if (0 == strncasecomp(fieldname, "mask", 4)) {
 		    prot->mask_group = HTAA_parseGroupDef(fp);
-		    lex_item=LEX_REC_SEP; /*groupdef parser read this already*/
+		    lex_item = LEX_REC_SEP;	/*groupdef parser read this already */
 		    if (TRACE) {
 			if (prot->mask_group) {
 			    fprintf(tfp,
 				    "HTAA_parseProtFile: Mask group:\n");
 			    HTAA_printGroupDef(prot->mask_group);
-			} else fprintf(tfp, "HTAA_parseProtFile: Mask group syntax error\n");
+			} else
+			    fprintf(tfp,
+				    "HTAA_parseProtFile: Mask group syntax error\n");
 		    }
-		} /* if "Mask" */
-
-		else {	/* Just a name-value pair, put it to assoclist */
+		}
+		/* if "Mask" */
+		else {		/* Just a name-value pair, put it to assoclist */
 
 		    if (LEX_ALPH_STR == (lex_item = lex(fp))) {
 			if (!prot->values)
 			    prot->values = HTAssocList_new();
 			HTAssocList_add(prot->values, fieldname, HTlex_buffer);
-			lex_item = lex(fp);  /* Read record separator */
+			lex_item = lex(fp);	/* Read record separator */
 			CTRACE((tfp, "%s `%s' bound to value `%s'\n",
-				    "HTAA_parseProtFile: Name",
-				    fieldname, HTlex_buffer));
+				"HTAA_parseProtFile: Name",
+				fieldname, HTlex_buffer));
 		    }
-		} /* else name-value pair */
+		}		/* else name-value pair */
 
-	    } /* if valid field */
-
-	    if (lex_item != LEX_EOF  &&  lex_item != LEX_REC_SEP) {
+	    }
+	    /* if valid field */
+	    if (lex_item != LEX_EOF && lex_item != LEX_REC_SEP) {
 		CTRACE((tfp, "%s %s %d (that line ignored)\n",
-			    "HTAA_parseProtFile: Syntax error",
-			    "in protection setup file at line",
-			    HTlex_line));
+			"HTAA_parseProtFile: Syntax error",
+			"in protection setup file at line",
+			HTlex_line));
 		do {
 		    lex_item = lex(fp);
 		} while (lex_item != LEX_EOF && lex_item != LEX_REC_SEP);
-	    } /* if syntax error */
-	} /* while not end-of-file */
+	    }			/* if syntax error */
+	}			/* while not end-of-file */
 	FREE(fieldname);
-    } /* if valid parameters */
+    }				/* if valid parameters */
 }
 
-
 /* static						HTAAProt_new()
-**		ALLOCATE A NEW HTAAProt STRUCTURE AND
-**		INITIALIZE IT FROM PROTECTION SETUP FILE
-** ON ENTRY:
-**	cur_docname	current filename after rule translations.
-**	prot_filename	protection setup file name.
-**			If NULL, not an error.
-**	ids		Uid and gid names or numbers,
-**			examples:
-**				james	( <=> james.nogroup)
-**				.www	( <=> nobody.www)
-**				james.www
-**				james.69
-**				1422.69
-**				1422.www
-**
-**			May be NULL, defaults to nobody.nogroup.
-**			Should be NULL, if prot_file is NULL.
-**
-** ON EXIT:
-**	returns		returns a new and initialized protection
-**			setup structure.
-**			If setup file is already read in (found
-**			in cache), only sets uid_name and gid
-**			fields, and returns that.
-*/
-static HTAAProt *HTAAProt_new (const char *	cur_docname,
-				     const char *	prot_filename,
-				     const char *	ids)
+ *		ALLOCATE A NEW HTAAProt STRUCTURE AND
+ *		INITIALIZE IT FROM PROTECTION SETUP FILE
+ * ON ENTRY:
+ *	cur_docname	current filename after rule translations.
+ *	prot_filename	protection setup file name.
+ *			If NULL, not an error.
+ *	ids		Uid and gid names or numbers,
+ *			examples:
+ *				james	( <=> james.nogroup)
+ *				.www	( <=> nobody.www)
+ *				james.www
+ *				james.69
+ *				1422.69
+ *				1422.www
+ *
+ *			May be NULL, defaults to nobody.nogroup.
+ *			Should be NULL, if prot_file is NULL.
+ *
+ * ON EXIT:
+ *	returns		returns a new and initialized protection
+ *			setup structure.
+ *			If setup file is already read in (found
+ *			in cache), only sets uid_name and gid
+ *			fields, and returns that.
+ */
+static HTAAProt *HTAAProt_new(const char *cur_docname,
+			      const char *prot_filename,
+			      const char *ids)
 {
     HTList *cur = prot_cache;
     HTAAProtCache *cache_item = NULL;
@@ -373,28 +367,28 @@ static HTAAProt *HTAAProt_new (const char *	cur_docname,
     if (!prot_cache)
 	prot_cache = HTList_new();
 
-    while (NULL != (cache_item = (HTAAProtCache*)HTList_nextObject(cur))) {
+    while (NULL != (cache_item = (HTAAProtCache *) HTList_nextObject(cur))) {
 	if (!strcmp(cache_item->prot_filename, prot_filename))
 	    break;
     }
     if (cache_item) {
 	prot = cache_item->prot;
 	CTRACE((tfp, "%s `%s' already in cache\n",
-		    "HTAAProt_new: Protection file", prot_filename));
+		"HTAAProt_new: Protection file", prot_filename));
     } else {
 	CTRACE((tfp, "HTAAProt_new: Loading protection file `%s'\n",
-		    prot_filename));
+		prot_filename));
 
 	if ((prot = typecalloc(HTAAProt)) == 0)
-	    outofmem(__FILE__, "HTAAProt_new");
+	      outofmem(__FILE__, "HTAAProt_new");
 
-	prot->template	= NULL;
-	prot->filename	= NULL;
-	prot->uid_name	= NULL;
-	prot->gid_name	= NULL;
+	prot->template = NULL;
+	prot->filename = NULL;
+	prot->uid_name = NULL;
+	prot->gid_name = NULL;
 	prot->valid_schemes = HTList_new();
-	prot->mask_group= NULL;		/* Masking disabled by defaults */
-	prot->values	= HTAssocList_new();
+	prot->mask_group = NULL;	/* Masking disabled by defaults */
+	prot->values = HTAssocList_new();
 
 	if (prot_filename && NULL != (fp = fopen(prot_filename, TXT_R))) {
 	    HTAA_parseProtFile(prot, fp);
@@ -404,11 +398,11 @@ static HTAAProt *HTAAProt_new (const char *	cur_docname,
 	    cache_item->prot = prot;
 	    cache_item->prot_filename = NULL;
 	    StrAllocCopy(cache_item->prot_filename, prot_filename);
-	    HTList_addObject(prot_cache, (void*)cache_item);
+	    HTList_addObject(prot_cache, (void *) cache_item);
 	} else {
 	    CTRACE((tfp, "HTAAProt_new: %s `%s'\n",
-			"Unable to open protection setup file",
-			NONNULL(prot_filename)));
+		    "Unable to open protection setup file",
+		    NONNULL(prot_filename)));
 	}
     }
 
@@ -419,29 +413,28 @@ static HTAAProt *HTAAProt_new (const char *	cur_docname,
     return prot;
 }
 
-
 /* PUBLIC					HTAA_setDefaultProtection()
-**		SET THE DEFAULT PROTECTION MODE
-**		(called by rule system when a
-**		"defprot" rule is matched)
-** ON ENTRY:
-**	cur_docname	is the current result of rule translations.
-**	prot_filename	is the protection setup file (second argument
-**			for "defprot" rule, optional)
-**	ids		contains user and group names separated by
-**			a dot, corresponding to the uid
-**			gid under which the server should run,
-**			default is "nobody.nogroup" (third argument
-**			for "defprot" rule, optional; can be given
-**			only if protection setup file is also given).
-**
-** ON EXIT:
-**	returns		nothing.
-**			Sets the module-wide variable default_prot.
-*/
-void HTAA_setDefaultProtection (const char *	cur_docname,
-					    const char *	prot_filename,
-					    const char *	ids)
+ *		SET THE DEFAULT PROTECTION MODE
+ *		(called by rule system when a
+ *		"defprot" rule is matched)
+ * ON ENTRY:
+ *	cur_docname	is the current result of rule translations.
+ *	prot_filename	is the protection setup file (second argument
+ *			for "defprot" rule, optional)
+ *	ids		contains user and group names separated by
+ *			a dot, corresponding to the uid
+ *			gid under which the server should run,
+ *			default is "nobody.nogroup" (third argument
+ *			for "defprot" rule, optional; can be given
+ *			only if protection setup file is also given).
+ *
+ * ON EXIT:
+ *	returns		nothing.
+ *			Sets the module-wide variable default_prot.
+ */
+void HTAA_setDefaultProtection(const char *cur_docname,
+			       const char *prot_filename,
+			       const char *ids)
 {
     default_prot = NULL;	/* Not free()'d because this is in cache */
 
@@ -449,34 +442,33 @@ void HTAA_setDefaultProtection (const char *	cur_docname,
 	default_prot = HTAAProt_new(cur_docname, prot_filename, ids);
     } else {
 	CTRACE((tfp, "%s %s\n",
-		    "HTAA_setDefaultProtection: ERROR: Protection file",
-		    "not specified (obligatory for DefProt rule)!!\n"));
+		"HTAA_setDefaultProtection: ERROR: Protection file",
+		"not specified (obligatory for DefProt rule)!!\n"));
     }
 }
 
-
 /* PUBLIC					HTAA_setCurrentProtection()
-**		SET THE CURRENT PROTECTION MODE
-**		(called by rule system when a
-**		"protect" rule is matched)
-** ON ENTRY:
-**	cur_docname	is the current result of rule translations.
-**	prot_filename	is the protection setup file (second argument
-**			for "protect" rule, optional)
-**	ids		contains user and group names separated by
-**			a dot, corresponding to the uid
-**			gid under which the server should run,
-**			default is "nobody.nogroup" (third argument
-**			for "protect" rule, optional; can be given
-**			only if protection setup file is also given).
-**
-** ON EXIT:
-**	returns		nothing.
-**			Sets the module-wide variable current_prot.
-*/
-void HTAA_setCurrentProtection (const char *	cur_docname,
-					    const char *	prot_filename,
-					    const char *	ids)
+ *		SET THE CURRENT PROTECTION MODE
+ *		(called by rule system when a
+ *		"protect" rule is matched)
+ * ON ENTRY:
+ *	cur_docname	is the current result of rule translations.
+ *	prot_filename	is the protection setup file (second argument
+ *			for "protect" rule, optional)
+ *	ids		contains user and group names separated by
+ *			a dot, corresponding to the uid
+ *			gid under which the server should run,
+ *			default is "nobody.nogroup" (third argument
+ *			for "protect" rule, optional; can be given
+ *			only if protection setup file is also given).
+ *
+ * ON EXIT:
+ *	returns		nothing.
+ *			Sets the module-wide variable current_prot.
+ */
+void HTAA_setCurrentProtection(const char *cur_docname,
+			       const char *prot_filename,
+			       const char *ids)
 {
     current_prot = NULL;	/* Not free()'d because this is in cache */
 
@@ -487,63 +479,61 @@ void HTAA_setCurrentProtection (const char *	cur_docname,
 	    current_prot = default_prot;
 	    HTAA_setIds(current_prot, ids);
 	    CTRACE((tfp, "%s %s %s\n",
-			"HTAA_setCurrentProtection: Protection file",
-			"not specified for Protect rule",
-			"-- using default protection"));
+		    "HTAA_setCurrentProtection: Protection file",
+		    "not specified for Protect rule",
+		    "-- using default protection"));
 	} else {
 	    CTRACE((tfp, "%s %s %s\n",
-			"HTAA_setCurrentProtection: ERROR: Protection",
-			"file not specified for Protect rule, and",
-			"default protection is not set!!"));
+		    "HTAA_setCurrentProtection: ERROR: Protection",
+		    "file not specified for Protect rule, and",
+		    "default protection is not set!!"));
 	}
     }
 }
 
-
 /* PUBLIC					HTAA_getCurrentProtection()
-**		GET CURRENT PROTECTION SETUP STRUCTURE
-**		(this is set up by callbacks made from
-**		 the rule system when matching "protect"
-**		 (and "defprot") rules)
-** ON ENTRY:
-**	HTTranslate() must have been called before calling
-**	this function.
-**
-** ON EXIT:
-**	returns	a HTAAProt structure representing the
-**		protection setup of the HTTranslate()'d file.
-**		This must not be free()'d.
-*/
-HTAAProt *HTAA_getCurrentProtection (void)
+ *		GET CURRENT PROTECTION SETUP STRUCTURE
+ *		(this is set up by callbacks made from
+ *		 the rule system when matching "protect"
+ *		 (and "defprot") rules)
+ * ON ENTRY:
+ *	HTTranslate() must have been called before calling
+ *	this function.
+ *
+ * ON EXIT:
+ *	returns	a HTAAProt structure representing the
+ *		protection setup of the HTTranslate()'d file.
+ *		This must not be free()'d.
+ */
+HTAAProt *HTAA_getCurrentProtection(void)
 {
     return current_prot;
 }
 
-
 /* PUBLIC					HTAA_getDefaultProtection()
-**		GET DEFAULT PROTECTION SETUP STRUCTURE
-**		AND SET IT TO CURRENT PROTECTION
-**		(this is set up by callbacks made from
-**		 the rule system when matching "defprot"
-**		 rules)
-** ON ENTRY:
-**	HTTranslate() must have been called before calling
-**	this function.
-**
-** ON EXIT:
-**	returns	a HTAAProt structure representing the
-**		default protection setup of the HTTranslate()'d
-**		file (if HTAA_getCurrentProtection() returned
-**		NULL, i.e., if there is no "protect" rule
-**		but ACL exists, and we need to know default
-**		protection settings).
-**		This must not be free()'d.
-** IMPORTANT:
-**	As a side-effect this tells the protection system that
-**	the file is in fact protected and sets the current
-**	protection mode to default.
-*/
-HTAAProt *HTAA_getDefaultProtection (void)
+ *		GET DEFAULT PROTECTION SETUP STRUCTURE
+ *		AND SET IT TO CURRENT PROTECTION
+ *		(this is set up by callbacks made from
+ *		 the rule system when matching "defprot"
+ *		 rules)
+ * ON ENTRY:
+ *	HTTranslate() must have been called before calling
+ *	this function.
+ *
+ * ON EXIT:
+ *	returns	a HTAAProt structure representing the
+ *		default protection setup of the HTTranslate()'d
+ *		file (if HTAA_getCurrentProtection() returned
+ *		NULL, i.e., if there is no "protect" rule
+ *		but ACL exists, and we need to know default
+ *		protection settings).
+ *		This must not be free()'d.
+ * IMPORTANT:
+ *	As a side-effect this tells the protection system that
+ *	the file is in fact protected and sets the current
+ *	protection mode to default.
+ */
+HTAAProt *HTAA_getDefaultProtection(void)
 {
     if (!current_prot) {
 	current_prot = default_prot;
@@ -552,28 +542,27 @@ HTAAProt *HTAA_getDefaultProtection (void)
     return current_prot;
 }
 
-
 /* SERVER INTERNAL					HTAA_clearProtections()
-**		CLEAR DOCUMENT PROTECTION MODE
-**		(ALSO DEFAULT PROTECTION)
-**		(called by the rule system)
-** ON ENTRY:
-**	No arguments.
-**
-** ON EXIT:
-**	returns	nothing.
-**		Frees the memory used by protection information.
-*/
-void HTAA_clearProtections (void)
+ *		CLEAR DOCUMENT PROTECTION MODE
+ *		(ALSO DEFAULT PROTECTION)
+ *		(called by the rule system)
+ * ON ENTRY:
+ *	No arguments.
+ *
+ * ON EXIT:
+ *	returns	nothing.
+ *		Frees the memory used by protection information.
+ */
+void HTAA_clearProtections(void)
 {
-    current_prot = NULL;	/* These are not freed because	*/
-    default_prot = NULL;	/* they are actually in cache.	*/
+    current_prot = NULL;	/* These are not freed because  */
+    default_prot = NULL;	/* they are actually in cache.  */
 }
 
 typedef struct {
-	char *name;
-	int user;
-	} USER_DATA;
+    char *name;
+    int user;
+} USER_DATA;
 
 #ifndef NOUSERS
 static HTList *known_grp = NULL;
@@ -582,10 +571,11 @@ static BOOL uidgid_cache_inited = NO;
 #endif
 
 #ifdef LY_FIND_LEAKS
-static void clear_uidgid_cache (void)
+static void clear_uidgid_cache(void)
 {
 #ifndef NOUSERS
     USER_DATA *data;
+
     if (known_grp) {
 	while ((data = HTList_removeLastObject(known_grp)) != NULL) {
 	    FREE(data->name);
@@ -605,9 +595,10 @@ static void clear_uidgid_cache (void)
 #endif /* LY_FIND_LEAKS */
 
 #ifndef NOUSERS
-static void save_gid_info (char * name, int user)
+static void save_gid_info(char *name, int user)
 {
     USER_DATA *data = typecalloc(USER_DATA);
+
     if (!data)
 	return;
     if (!known_grp) {
@@ -621,14 +612,15 @@ static void save_gid_info (char * name, int user)
     }
     StrAllocCopy(data->name, name);
     data->user = user;
-    HTList_addObject (known_grp, data);
+    HTList_addObject(known_grp, data);
 }
 #endif /* NOUSERS */
 
 #ifndef NOUSERS
-static void save_uid_info (char * name, int user)
+static void save_uid_info(char *name, int user)
 {
     USER_DATA *data = typecalloc(USER_DATA);
+
     if (!data)
 	return;
     if (!known_pwd) {
@@ -642,36 +634,37 @@ static void save_uid_info (char * name, int user)
     }
     StrAllocCopy(data->name, name);
     data->user = user;
-    HTList_addObject (known_pwd, data);
+    HTList_addObject(known_pwd, data);
 }
 #endif /* !NOUSERS */
 
 /* PUBLIC							HTAA_UidToName
-**		GET THE USER NAME
-** ON ENTRY:
-**      The user-id
-**
-** ON EXIT:
-**      returns the user name, or an empty string if not found.
-*/
-char * HTAA_UidToName (int uid)
+ *		GET THE USER NAME
+ * ON ENTRY:
+ *      The user-id
+ *
+ * ON EXIT:
+ *      returns the user name, or an empty string if not found.
+ */
+char *HTAA_UidToName(int uid)
 {
 #ifndef NOUSERS
     struct passwd *pw;
     HTList *me = known_pwd;
 
     while (HTList_nextObject(me)) {
-	USER_DATA *data = (USER_DATA *)(me->object);
+	USER_DATA *data = (USER_DATA *) (me->object);
+
 	if (uid == data->user)
 	    return data->name;
     }
 
     if ((pw = getpwuid(uid)) != 0
-     && pw->pw_name != 0) {
+	&& pw->pw_name != 0) {
 	CTRACE((tfp, "%s(%d) returned (%s:%d:...)\n",
-		    "HTAA_UidToName: getpwuid",
-		    uid,
-		    pw->pw_name, (int) pw->pw_uid));
+		"HTAA_UidToName: getpwuid",
+		uid,
+		pw->pw_name, (int) pw->pw_uid));
 	save_uid_info(pw->pw_name, (int) pw->pw_uid);
 	return pw->pw_name;
     }
@@ -680,30 +673,31 @@ char * HTAA_UidToName (int uid)
 }
 
 /* PUBLIC							HTAA_NameToUid
-**		GET THE USER ID
-** ON ENTRY:
-**      The user-name
-**
-** ON EXIT:
-**      returns the user id, or NONESUCH if not found.
-*/
-int HTAA_NameToUid (char * name)
+ *		GET THE USER ID
+ * ON ENTRY:
+ *      The user-name
+ *
+ * ON EXIT:
+ *      returns the user id, or NONESUCH if not found.
+ */
+int HTAA_NameToUid(char *name)
 {
 #ifndef NOUSERS
     struct passwd *pw;
     HTList *me = known_pwd;
 
     while (HTList_nextObject(me)) {
-	USER_DATA *data = (USER_DATA *)(me->object);
+	USER_DATA *data = (USER_DATA *) (me->object);
+
 	if (!strcmp(name, data->name))
 	    return data->user;
     }
 
     if ((pw = getpwnam(name)) != 0) {
 	CTRACE((tfp, "%s(%s) returned (%s:%d:...)\n",
-		    "HTAA_NameToUid: getpwnam",
-		    name,
-		    pw->pw_name, (int) pw->pw_uid));
+		"HTAA_NameToUid: getpwnam",
+		name,
+		pw->pw_name, (int) pw->pw_uid));
 	save_uid_info(pw->pw_name, (int) pw->pw_uid);
 	return (int) pw->pw_uid;
     }
@@ -712,31 +706,32 @@ int HTAA_NameToUid (char * name)
 }
 
 /* PUBLIC							HTAA_GidToName
-**		GET THE GROUP NAME
-** ON ENTRY:
-**      The group-id
-**
-** ON EXIT:
-**      returns the group name, or an empty string if not found.
-*/
-char * HTAA_GidToName (int gid)
+ *		GET THE GROUP NAME
+ * ON ENTRY:
+ *      The group-id
+ *
+ * ON EXIT:
+ *      returns the group name, or an empty string if not found.
+ */
+char *HTAA_GidToName(int gid)
 {
 #ifndef NOUSERS
     struct group *gr;
     HTList *me = known_grp;
 
     while (HTList_nextObject(me)) {
-	USER_DATA *data = (USER_DATA *)(me->object);
+	USER_DATA *data = (USER_DATA *) (me->object);
+
 	if (gid == data->user)
 	    return data->name;
     }
 
     if ((gr = getgrgid(gid)) != 0
-     && gr->gr_name != 0) {
+	&& gr->gr_name != 0) {
 	CTRACE((tfp, "%s(%d) returned (%s:%d:...)\n",
-		    "HTAA_GidToName: getgrgid",
-		    gid,
-		    gr->gr_name, (int) gr->gr_gid));
+		"HTAA_GidToName: getgrgid",
+		gid,
+		gr->gr_name, (int) gr->gr_gid));
 	save_gid_info(gr->gr_name, (int) gr->gr_gid);
 	return gr->gr_name;
     }
@@ -745,30 +740,31 @@ char * HTAA_GidToName (int gid)
 }
 
 /* PUBLIC							HTAA_NameToGid
-**		GET THE GROUP ID
-** ON ENTRY:
-**      The group-name
-**
-** ON EXIT:
-**      returns the group id, or NONESUCH if not found.
-*/
-int HTAA_NameToGid (char * name)
+ *		GET THE GROUP ID
+ * ON ENTRY:
+ *      The group-name
+ *
+ * ON EXIT:
+ *      returns the group id, or NONESUCH if not found.
+ */
+int HTAA_NameToGid(char *name)
 {
 #ifndef NOUSERS
     struct group *gr;
     HTList *me = known_grp;
 
     while (HTList_nextObject(me)) {
-	USER_DATA *data = (USER_DATA *)(me->object);
+	USER_DATA *data = (USER_DATA *) (me->object);
+
 	if (!strcmp(name, data->name))
 	    return data->user;
     }
 
     if ((gr = getgrnam(name)) != 0) {
 	CTRACE((tfp, "%s(%s) returned (%s:%d:...)\n",
-		    "HTAA_NameToGid: getgrnam",
-		    name,
-		    gr->gr_name, (int) gr->gr_gid));
+		"HTAA_NameToGid: getgrnam",
+		name,
+		gr->gr_name, (int) gr->gr_gid));
 	save_gid_info(gr->gr_name, (int) gr->gr_gid);
 	return (int) gr->gr_gid;
     }