You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by Rodent of Unusual Size <co...@hyperreal.org> on 1997/09/15 19:20:13 UTC

cvs commit: apachen/src/modules/standard mod_log_config.c mod_negotiation.c mod_setenvif.c

coar        97/09/15 10:19:58

  Modified:    src      INDENT
               src/modules/standard mod_log_config.c mod_negotiation.c
                        mod_setenvif.c
  Log:
  	Oof!  Some more indentationalisms.
  
  Revision  Changes    Path
  1.16      +3 -3      apachen/src/INDENT
  
  Index: INDENT
  ===================================================================
  RCS file: /export/home/cvs/apachen/src/INDENT,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- INDENT	1997/09/15 14:42:03	1.15
  +++ INDENT	1997/09/15 17:19:52	1.16
  @@ -80,15 +80,15 @@
      mod_include.c
      mod_info.c			DONE by Ken
      mod_log_agent.c
  -   mod_log_config.c		RESERVED by Ken
  +   mod_log_config.c		DONE by Ken
      mod_log_referer.c
      mod_mime.c
      mod_mime.h
      mod_mime_magic.c
  -   mod_negotiation.c		RESERVED by Ken
  +   mod_negotiation.c		DONE by Ken
      mod_rewrite.c
      mod_rewrite.h
  -   mod_setenvif.c		RESERVED by Ken
  +   mod_setenvif.c		DONE by Ken
      mod_speling.c
      mod_status.c
      mod_unique_id.c
  
  
  
  1.40      +433 -315  apachen/src/modules/standard/mod_log_config.c
  
  Index: mod_log_config.c
  ===================================================================
  RCS file: /export/home/cvs/apachen/src/modules/standard/mod_log_config.c,v
  retrieving revision 1.39
  retrieving revision 1.40
  diff -u -r1.39 -r1.40
  --- mod_log_config.c	1997/09/12 20:37:38	1.39
  +++ mod_log_config.c	1997/09/15 17:19:54	1.40
  @@ -163,18 +163,18 @@
   
   #include "httpd.h"
   #include "http_config.h"
  -#include "http_core.h" /* For REMOTE_NAME */
  +#include "http_core.h"          /* For REMOTE_NAME */
   #include "http_log.h"
   #include <limits.h>
   
   module MODULE_VAR_EXPORT config_log_module;
   
  -static int xfer_flags = ( O_WRONLY | O_APPEND | O_CREAT );
  +static int xfer_flags = (O_WRONLY | O_APPEND | O_CREAT);
   #if defined(__EMX__) || defined(WIN32)
   /* OS/2 dosen't support users and groups */
  -static mode_t xfer_mode = ( S_IREAD | S_IWRITE );
  +static mode_t xfer_mode = (S_IREAD | S_IWRITE);
   #else
  -static mode_t xfer_mode = ( S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH );
  +static mode_t xfer_mode = (S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
   #endif
   
   /* POSIX.1 defines PIPE_BUF as the maximum number of bytes that is
  @@ -187,9 +187,9 @@
    * everywhere.
    */
   #ifdef PIPE_BUF
  -#define LOG_BUFSIZE	PIPE_BUF
  +#define LOG_BUFSIZE     PIPE_BUF
   #else
  -#define LOG_BUFSIZE	(512)
  +#define LOG_BUFSIZE     (512)
   #endif
   
   /*
  @@ -209,10 +209,10 @@
    */
   
   typedef struct {
  -  array_header *default_format;
  -  array_header *config_logs;    
  -  array_header *server_config_logs;
  -  table *formats;
  +    array_header *default_format;
  +    array_header *config_logs;
  +    array_header *server_config_logs;
  +    table *formats;
   } multi_log_state;
   
   /*
  @@ -237,7 +237,7 @@
    * Format items...
    */
   
  -typedef char *(*item_key_func)(request_rec *, char *);
  +typedef char *(*item_key_func) (request_rec *, char *);
   
   typedef struct {
       item_key_func func;
  @@ -250,121 +250,162 @@
   static char *format_integer(pool *p, int i)
   {
       char dummy[40];
  -    ap_snprintf (dummy, sizeof(dummy), "%d", i);
  -    return pstrdup (p, dummy);
  +    ap_snprintf(dummy, sizeof(dummy), "%d", i);
  +    return pstrdup(p, dummy);
   }
   
   static char *pfmt(pool *p, int i)
   {
  -    if (i <= 0) return "-";
  -    else return format_integer (p, i);
  +    if (i <= 0) {
  +        return "-";
  +    }
  +    else {
  +        return format_integer(p, i);
  +    }
   }
   
  -static char *constant_item (request_rec *dummy, char *stuff) { return stuff; }
  +static char *constant_item(request_rec *dummy, char *stuff)
  +{
  +    return stuff;
  +}
   
  -static char *log_remote_host (request_rec *r, char *a)
  -{ return (char *)get_remote_host(r->connection, r->per_dir_config, REMOTE_NAME); }
  +static char *log_remote_host(request_rec *r, char *a)
  +{
  +    return (char *) get_remote_host(r->connection, r->per_dir_config,
  +                                    REMOTE_NAME);
  +}
   
   static char *log_remote_logname(request_rec *r, char *a)
  -{return (char *)get_remote_logname(r);}
  +{
  +    return (char *) get_remote_logname(r);
  +}
   
  -static char *log_remote_user (request_rec *r, char *a) {
  +static char *log_remote_user(request_rec *r, char *a)
  +{
       char *rvalue = r->connection->user;
   
       if (rvalue == NULL) {
           rvalue = "-";
  -    } else if (strlen (rvalue) == 0) {
  +    }
  +    else if (strlen(rvalue) == 0) {
           rvalue = "\"\"";
       }
       return rvalue;
   }
   
  -static char *log_request_line (request_rec *r, char *a)
  -{ return r->the_request; }
  +static char *log_request_line(request_rec *r, char *a)
  +{
  +    return r->the_request;
  +}
   
  -static char *log_request_file (request_rec *r, char *a)
  -{ return r->filename; }
  -static char *log_request_uri (request_rec *r, char *a)
  -{ return r->uri; }
  -static char *log_status (request_rec *r, char *a)
  -{ return pfmt(r->pool, r->status); }
  +static char *log_request_file(request_rec *r, char *a)
  +{
  +    return r->filename;
  +}
  +static char *log_request_uri(request_rec *r, char *a)
  +{
  +    return r->uri;
  +}
  +static char *log_status(request_rec *r, char *a)
  +{
  +    return pfmt(r->pool, r->status);
  +}
   
  -static char *log_bytes_sent (request_rec *r, char *a)
  +static char *log_bytes_sent(request_rec *r, char *a)
   {
  -    if (!r->sent_bodyct) return "-";
  -    else
  -    {
  -	long int bs;
  -	char dummy[40];
  -	bgetopt(r->connection->client, BO_BYTECT, &bs);
  -	ap_snprintf(dummy, sizeof(dummy), "%ld", bs);
  -	return pstrdup(r->pool, dummy);
  +    if (!r->sent_bodyct) {
  +        return "-";
  +    }
  +    else {
  +        long int bs;
  +        char dummy[40];
  +        bgetopt(r->connection->client, BO_BYTECT, &bs);
  +        ap_snprintf(dummy, sizeof(dummy), "%ld", bs);
  +        return pstrdup(r->pool, dummy);
       }
   }
   
  -static char *log_header_in (request_rec *r, char *a)
  -{ return table_get (r->headers_in, a); }
  +static char *log_header_in(request_rec *r, char *a)
  +{
  +    return table_get(r->headers_in, a);
  +}
   
  -static char *log_header_out (request_rec *r, char *a)
  +static char *log_header_out(request_rec *r, char *a)
   {
  -    char *cp = table_get (r->headers_out, a);
  -    if (!strcasecmp(a, "Content-type") && r->content_type)
  -	cp = r->content_type;
  -    if (cp) return cp;
  -    return table_get (r->err_headers_out, a);
  +    char *cp = table_get(r->headers_out, a);
  +    if (!strcasecmp(a, "Content-type") && r->content_type) {
  +        cp = r->content_type;
  +    }
  +    if (cp) {
  +        return cp;
  +    }
  +    return table_get(r->err_headers_out, a);
   }
   
  -static char *log_note (request_rec *r, char *a)
  -{ return table_get (r->notes, a); }
  -static char *log_env_var (request_rec *r, char *a)
  -{ return table_get (r->subprocess_env, a); }
  +static char *log_note(request_rec *r, char *a)
  +{
  +    return table_get(r->notes, a);
  +}
  +static char *log_env_var(request_rec *r, char *a)
  +{
  +    return table_get(r->subprocess_env, a);
  +}
   
  -static char *log_request_time (request_rec *r, char *a)
  +static char *log_request_time(request_rec *r, char *a)
   {
       int timz;
       struct tm *t;
       char tstr[MAX_STRING_LEN];
  -    
  +
       t = get_gmtoff(&timz);
   
  -    if (a && *a) /* Custom format */
  -	strftime(tstr, MAX_STRING_LEN, a, t);
  -    else { /* CLF format */
  -	char sign = (timz < 0 ? '-' : '+');
  +    if (a && *a) {              /* Custom format */
  +        strftime(tstr, MAX_STRING_LEN, a, t);
  +    }
  +    else {                      /* CLF format */
  +        char sign = (timz < 0 ? '-' : '+');
   
  -	if(timz < 0) timz = -timz;
  +        if (timz < 0) {
  +            timz = -timz;
  +        }
   
  -	strftime(tstr,MAX_STRING_LEN,"[%d/%b/%Y:%H:%M:%S ",t);
  -	ap_snprintf (tstr + strlen(tstr), sizeof(tstr)-strlen(tstr), 
  -		"%c%.2d%.2d]", sign, timz/60, timz%60);
  +        strftime(tstr, MAX_STRING_LEN, "[%d/%b/%Y:%H:%M:%S ", t);
  +        ap_snprintf(tstr + strlen(tstr), sizeof(tstr) - strlen(tstr),
  +                    "%c%.2d%.2d]", sign, timz / 60, timz % 60);
       }
   
  -    return pstrdup (r->pool, tstr);
  +    return pstrdup(r->pool, tstr);
   }
   
  -static char *log_request_duration (request_rec *r, char *a) {
  -    char duration[22];	/* Long enough for 2^64 */
  +static char *log_request_duration(request_rec *r, char *a)
  +{
  +    char duration[22];          /* Long enough for 2^64 */
   
  -    ap_snprintf(duration, sizeof(duration), "%ld", time(NULL) - r->request_time);
  +    ap_snprintf(duration, sizeof(duration), "%ld",
  +                time(NULL) - r->request_time);
       return pstrdup(r->pool, duration);
   }
   
  -static char *log_virtual_host (request_rec *r, char *a) {
  +static char *log_virtual_host(request_rec *r, char *a)
  +{
       return pstrdup(r->pool, r->server->server_hostname);
   }
   
  -static char *log_server_port (request_rec *r, char *a) {
  +static char *log_server_port(request_rec *r, char *a)
  +{
       char portnum[22];
   
       ap_snprintf(portnum, sizeof(portnum), "%u", r->server->port);
       return pstrdup(r->pool, portnum);
   }
   
  -static char *log_child_pid (request_rec *r, char *a) {
  +static char *log_child_pid(request_rec *r, char *a)
  +{
       char pidnum[22];
  -    ap_snprintf(pidnum, sizeof(pidnum), "%ld", (long)getpid());
  +    ap_snprintf(pidnum, sizeof(pidnum), "%ld", (long) getpid());
       return pstrdup(r->pool, pidnum);
   }
  +
   /*****************************************************************
    *
    * Parsing the log format string
  @@ -375,140 +416,201 @@
       item_key_func func;
       int want_orig_default;
   } log_item_keys[] = {
  -    { 'h', log_remote_host, 0 },
  -    { 'l', log_remote_logname, 0 },
  -    { 'u', log_remote_user, 0 },
  -    { 't', log_request_time, 0 },
  -    { 'T', log_request_duration, 1 },
  -    { 'r', log_request_line, 1 },
  -    { 'f', log_request_file, 0 },
  -    { 'U', log_request_uri, 1 },
  -    { 's', log_status, 1 },
  -    { 'b', log_bytes_sent, 0 },
  -    { 'i', log_header_in, 0 },
  -    { 'o', log_header_out, 0 },
  -    { 'n', log_note, 0 },
  -    { 'e', log_env_var, 0 },
  -    { 'v', log_virtual_host, 0 },
  -    { 'p', log_server_port, 0 },
  -    { 'P', log_child_pid, 0 },
  -    { '\0' }
  +
  +    {
  +        'h', log_remote_host, 0
  +    },
  +    {
  +        'l', log_remote_logname, 0
  +    },
  +    {
  +        'u', log_remote_user, 0
  +    },
  +    {
  +        't', log_request_time, 0
  +    },
  +    {
  +        'T', log_request_duration, 1
  +    },
  +    {
  +        'r', log_request_line, 1
  +    },
  +    {
  +        'f', log_request_file, 0
  +    },
  +    {
  +        'U', log_request_uri, 1
  +    },
  +    {
  +        's', log_status, 1
  +    },
  +    {
  +        'b', log_bytes_sent, 0
  +    },
  +    {
  +        'i', log_header_in, 0
  +    },
  +    {
  +        'o', log_header_out, 0
  +    },
  +    {
  +        'n', log_note, 0
  +    },
  +    {
  +        'e', log_env_var, 0
  +    },
  +    {
  +        'v', log_virtual_host, 0
  +    },
  +    {
  +        'p', log_server_port, 0
  +    },
  +    {
  +        'P', log_child_pid, 0
  +    },
  +    {
  +        '\0'
  +    }
   };
   
  -static struct log_item_list  *find_log_func (char k)
  +static struct log_item_list *find_log_func(char k)
   {
       int i;
   
       for (i = 0; log_item_keys[i].ch; ++i)
  -	if (k == log_item_keys[i].ch)
  -	    return &log_item_keys[i];
  +        if (k == log_item_keys[i].ch) {
  +            return &log_item_keys[i];
  +        }
   
       return NULL;
   }
   
  -static char *log_format_substring (pool *p, const char *start, const char *end)
  +static char *log_format_substring(pool *p, const char *start,
  +                                  const char *end)
   {
  -    char *res = palloc (p, end - start + 1);
  -    strncpy (res, start, end - start);
  +    char *res = palloc(p, end - start + 1);
  +
  +    strncpy(res, start, end - start);
       res[end - start] = '\0';
       return res;
   }
   
  -static char *parse_log_misc_string (pool *p, log_format_item *it, const char **sa)
  +static char *parse_log_misc_string(pool *p, log_format_item *it,
  +                                   const char **sa)
   {
       const char *s = *sa;
  -    
  +
       it->func = constant_item;
       it->conditions = NULL;
   
  -    while (*s && *s != '%') ++s;
  -    it->arg = log_format_substring (p, *sa, s);
  +    while (*s && *s != '%') {
  +        ++s;
  +    }
  +    it->arg = log_format_substring(p, *sa, s);
       *sa = s;
  -    
  +
       return NULL;
   }
   
  -static char *parse_log_item (pool *p, log_format_item *it, const char **sa)
  +static char *parse_log_item(pool *p, log_format_item *it, const char **sa)
   {
       const char *s = *sa;
  -    if (*s != '%') return parse_log_misc_string (p, it, sa);
  +
  +    if (*s != '%') {
  +        return parse_log_misc_string(p, it, sa);
  +    }
   
       ++s;
       it->condition_sense = 0;
       it->conditions = NULL;
       it->want_orig = -1;
  -    it->arg = "";		/* For safety's sake... */
  +    it->arg = "";               /* For safety's sake... */
   
       while (*s) {
  -	int i;
  -	struct log_item_list *l;
  -	
  -	switch (*s) {
  -	case '!':
  -	    ++s;
  -	    it->condition_sense = !it->condition_sense;
  -	    break;
  -
  -	case '<':
  -	    ++s;
  -	    it->want_orig = 1;
  -	    break;
  -
  -	case '>':
  -	    ++s;
  -	    it->want_orig = 0;
  -	    break;
  -	    
  -	case ',':
  -	    ++s;
  -	    break;
  -
  -	case '{':
  -	    ++s;
  -	    it->arg = getword (p, &s, '}');
  -	    break;
  -	    
  -	case '0': case '1': case '2': case '3': case '4': 
  -	case '5': case '6': case '7': case '8': case '9':
  -	    i = *s - '0';
  -	    while (isdigit (*++s)) i = i * 10 + (*s) - '0';
  -	    if (!it->conditions)
  -		it->conditions = make_array (p, 4, sizeof(int));
  -	    *(int *)push_array(it->conditions) = i;
  -	    break;
  -
  -	default:
  -	    l = find_log_func (*s++);
  -	    if (!l) {
  -		char dummy[] = { '\0', '\0'};
  -		dummy[0] = s[-1];
  -		return pstrcat (p, "Unrecognized LogFormat directive %",
  -				dummy, NULL);
  -	    }
  -	    it->func = l->func;
  -	    if (it->want_orig == -1) it->want_orig = l->want_orig_default;
  -	    *sa = s;
  -	    return NULL;
  -	}
  +        int i;
  +        struct log_item_list *l;
  +
  +        switch (*s) {
  +        case '!':
  +            ++s;
  +            it->condition_sense = !it->condition_sense;
  +            break;
  +
  +        case '<':
  +            ++s;
  +            it->want_orig = 1;
  +            break;
  +
  +        case '>':
  +            ++s;
  +            it->want_orig = 0;
  +            break;
  +
  +        case ',':
  +            ++s;
  +            break;
  +
  +        case '{':
  +            ++s;
  +            it->arg = getword(p, &s, '}');
  +            break;
  +
  +        case '0':
  +        case '1':
  +        case '2':
  +        case '3':
  +        case '4':
  +        case '5':
  +        case '6':
  +        case '7':
  +        case '8':
  +        case '9':
  +            i = *s - '0';
  +            while (isdigit(*++s)) {
  +                i = i * 10 + (*s) - '0';
  +            }
  +            if (!it->conditions) {
  +                it->conditions = make_array(p, 4, sizeof(int));
  +            }
  +            *(int *) push_array(it->conditions) = i;
  +            break;
  +
  +        default:
  +            l = find_log_func(*s++);
  +            if (!l) {
  +                char dummy[2];
  +
  +                dummy[0] = s[-1];
  +                dummy[1] = '\0';
  +                return pstrcat(p, "Unrecognized LogFormat directive %",
  +                               dummy, NULL);
  +            }
  +            it->func = l->func;
  +            if (it->want_orig == -1) {
  +                it->want_orig = l->want_orig_default;
  +            }
  +            *sa = s;
  +            return NULL;
  +        }
       }
   
       return "Ran off end of LogFormat parsing args to some directive";
   }
   
  -static array_header *parse_log_string (pool *p, const char *s, const char **err)
  +static array_header *parse_log_string(pool *p, const char *s, const char **err)
   {
  -    array_header *a = make_array (p, 30, sizeof (log_format_item));
  +    array_header *a = make_array(p, 30, sizeof(log_format_item));
       char *res;
   
       while (*s) {
  -	if ((res = parse_log_item (p, (log_format_item *)push_array(a), &s))) {
  -	    *err = res;
  -	    return NULL;
  -	}
  +        if ((res = parse_log_item(p, (log_format_item *) push_array(a), &s))) {
  +            *err = res;
  +            return NULL;
  +        }
       }
   
       s = "\n";
  -    parse_log_item (p, (log_format_item *)push_array(a), &s);
  +    parse_log_item(p, (log_format_item *) push_array(a), &s);
       return a;
   }
   
  @@ -517,48 +619,50 @@
    * Actually logging.
    */
   
  -static char *process_item(request_rec *r, request_rec *orig, log_format_item *item)
  +static char *process_item(request_rec *r, request_rec *orig,
  +                          log_format_item *item)
   {
       char *cp;
  -    
  +
       /* First, see if we need to process this thing at all... */
   
       if (item->conditions && item->conditions->nelts != 0) {
  -	int i;
  -	int *conds = (int *)item->conditions->elts;
  -	int in_list = 0;
  -
  -	for (i = 0; i < item->conditions->nelts; ++i)
  -	    if (r->status == conds[i]) {
  -		in_list = 1;
  -		break;
  -	    }
  -
  -	if ((item->condition_sense && in_list)
  -	    || (!item->condition_sense && !in_list))
  -	{
  -	    return "-";
  -	}
  +        int i;
  +        int *conds = (int *) item->conditions->elts;
  +        int in_list = 0;
  +
  +        for (i = 0; i < item->conditions->nelts; ++i) {
  +            if (r->status == conds[i]) {
  +                in_list = 1;
  +                break;
  +            }
  +        }
  +
  +        if ((item->condition_sense && in_list)
  +            || (!item->condition_sense && !in_list)) {
  +            return "-";
  +        }
       }
   
       /* We do.  Do it... */
   
  -    cp = (*item->func)(item->want_orig ? orig : r, item->arg);
  +    cp = (*item->func) (item->want_orig ? orig : r, item->arg);
       return cp ? cp : "-";
   }
   
   #ifdef BUFFERED_LOGS
  -static void flush_log (config_log_state *cls)
  +static void flush_log(config_log_state *cls)
   {
       if (cls->outcnt && cls->log_fd != -1) {
  -	write (cls->log_fd, cls->outbuf, cls->outcnt);
  -	cls->outcnt = 0;
  +        write(cls->log_fd, cls->outbuf, cls->outcnt);
  +        cls->outcnt = 0;
       }
   }
   #endif
   
   static int config_log_transaction(request_rec *r, config_log_state *cls,
  -			   array_header *default_format) {
  +                                  array_header *default_format)
  +{
       array_header *strsa;
       log_format_item *items;
       char *str, **strs, *s;
  @@ -568,45 +672,52 @@
       array_header *format;
   
       if (cls->fname == NULL) {
  -      return DECLINED;
  +        return DECLINED;
       }
   
       format = cls->format ? cls->format : default_format;
   
  -    strsa= make_array(r->pool, format->nelts,sizeof(char*));
  -    items = (log_format_item *)format->elts;
  +    strsa = make_array(r->pool, format->nelts, sizeof(char *));
  +    items = (log_format_item *) format->elts;
   
       orig = r;
  -    while (orig->prev) orig = orig->prev;
  -    while (r->next) r = r->next;
  +    while (orig->prev) {
  +        orig = orig->prev;
  +    }
  +    while (r->next) {
  +        r = r->next;
  +    }
   
  -    for (i = 0; i < format->nelts; ++i)
  -        *((char**)push_array (strsa)) = process_item (r, orig, &items[i]);
  +    for (i = 0; i < format->nelts; ++i) {
  +        *((char **) push_array(strsa)) = process_item(r, orig, &items[i]);
  +    }
  +
  +    strs = (char **) strsa->elts;
   
  -    strs = (char **)strsa->elts;
  -    
  -    for (i = 0; i < format->nelts; ++i)
  -        len += strlen (strs[i]);
  +    for (i = 0; i < format->nelts; ++i) {
  +        len += strlen(strs[i]);
  +    }
   
  -    str = palloc (r->pool, len + 1);
  +    str = palloc(r->pool, len + 1);
   
       for (i = 0, s = str; i < format->nelts; ++i) {
  -        strcpy (s, strs[i]);
  -        s += strlen (strs[i]);
  +        strcpy(s, strs[i]);
  +        s += strlen(strs[i]);
       }
   
   #ifdef BUFFERED_LOGS
       if (len + cls->outcnt > LOG_BUFSIZE) {
  -	flush_log (cls);
  +        flush_log(cls);
       }
       if (len >= LOG_BUFSIZE) {
  -	write (cls->log_fd, str, len);
  -    } else {
  -	memcpy (&cls->outbuf[cls->outcnt], str, len);
  -	cls->outcnt += len;
  +        write(cls->log_fd, str, len);
  +    }
  +    else {
  +        memcpy(&cls->outbuf[cls->outcnt], str, len);
  +        cls->outcnt += len;
       }
   #else
  -    write (cls->log_fd, str, len);
  +    write(cls->log_fd, str, len);
   #endif
   
       return OK;
  @@ -614,24 +725,24 @@
   
   static int multi_log_transaction(request_rec *r)
   {
  -    multi_log_state *mls = get_module_config (r->server->module_config,
  -                                               &config_log_module);
  +    multi_log_state *mls = get_module_config(r->server->module_config,
  +                                             &config_log_module);
       config_log_state *clsarray;
       int i;
   
       if (mls->config_logs->nelts) {
  -        clsarray = (config_log_state *)mls->config_logs->elts;
  +        clsarray = (config_log_state *) mls->config_logs->elts;
           for (i = 0; i < mls->config_logs->nelts; ++i) {
               config_log_state *cls = &clsarray[i];
  -        
  +
               config_log_transaction(r, cls, mls->default_format);
           }
       }
       else if (mls->server_config_logs) {
  -        clsarray = (config_log_state *)mls->server_config_logs->elts;
  +        clsarray = (config_log_state *) mls->server_config_logs->elts;
           for (i = 0; i < mls->server_config_logs->nelts; ++i) {
               config_log_state *cls = &clsarray[i];
  -        
  +
               config_log_transaction(r, cls, mls->default_format);
           }
       }
  @@ -644,18 +755,16 @@
    * Module glue...
    */
   
  -static void *make_config_log_state (pool *p, server_rec *s)
  +static void *make_config_log_state(pool *p, server_rec *s)
   {
  -    multi_log_state *mls =
  -	(multi_log_state *)palloc(p, sizeof (multi_log_state));
  -    
  -    mls->config_logs = 
  -	make_array(p, 1, sizeof (config_log_state));
  +    multi_log_state *mls = (multi_log_state *) palloc(p, sizeof(multi_log_state));
  +
  +    mls->config_logs = make_array(p, 1, sizeof(config_log_state));
       mls->default_format = NULL;
       mls->server_config_logs = NULL;
       mls->formats = make_table(p, 4);
       table_set(mls->formats, "CLF", DEFAULT_LOG_FORMAT);
  -    
  +
       return mls;
   }
   
  @@ -665,30 +774,30 @@
    * vhosts inherit any globally-defined format names.
    */
   
  -static void *merge_config_log_state (pool *p, void *basev, void *addv)
  +static void *merge_config_log_state(pool *p, void *basev, void *addv)
   {
  -    multi_log_state *base = (multi_log_state *)basev;
  -    multi_log_state *add = (multi_log_state *)addv;
  -    
  +    multi_log_state *base = (multi_log_state *) basev;
  +    multi_log_state *add = (multi_log_state *) addv;
  +
       add->server_config_logs = base->config_logs;
       if (!add->default_format) {
           add->default_format = base->default_format;
       }
       add->formats = overlay_tables(p, base->formats, add->formats);
  -    
  +
       return add;
   }
   
   /*
    * Set the default logfile format, or define a nickname for a format string.
    */
  -static const char *log_format (cmd_parms *cmd, void *dummy, char *fmt,
  -			       char *name)
  +static const char *log_format(cmd_parms *cmd, void *dummy, char *fmt,
  +                              char *name)
   {
       const char *err_string = NULL;
       char *format;
  -    multi_log_state *mls = get_module_config (cmd->server->module_config,
  -					      &config_log_module);
  +    multi_log_state *mls = get_module_config(cmd->server->module_config,
  +                                             &config_log_module);
   
       /*
        * If we were given two arguments, the second is a name to be given to the
  @@ -696,45 +805,45 @@
        * make the format the default.
        */
       if (name != NULL) {
  -	parse_log_string(cmd->pool, fmt, &err_string);
  -	if (err_string == NULL) {
  -	    table_set(mls->formats, name, fmt);
  -	}
  +        parse_log_string(cmd->pool, fmt, &err_string);
  +        if (err_string == NULL) {
  +            table_set(mls->formats, name, fmt);
  +        }
       }
       else {
  -	/*
  -	 * See if we were given a name rather than a format string.
  -	 */
  -	format = table_get(mls->formats, fmt);
  -	if (format == NULL) {
  -	    format = fmt;
  -	}
  -	mls->default_format = parse_log_string (cmd->pool, format, &err_string);
  +        /*
  +         * See if we were given a name rather than a format string.
  +         */
  +        format = table_get(mls->formats, fmt);
  +        if (format == NULL) {
  +            format = fmt;
  +        }
  +        mls->default_format = parse_log_string(cmd->pool, format, &err_string);
       }
       return err_string;
   }
   
   static const char *add_custom_log(cmd_parms *cmd, void *dummy, char *fn,
  -				  char *fmt) 
  +                                  char *fmt)
   {
       const char *err_string = NULL;
  -    multi_log_state *mls = get_module_config (cmd->server->module_config,
  -					      &config_log_module);
  +    multi_log_state *mls = get_module_config(cmd->server->module_config,
  +                                             &config_log_module);
       config_log_state *cls;
       char *format;
   
  -    cls = (config_log_state*)push_array(mls->config_logs);
  +    cls = (config_log_state *) push_array(mls->config_logs);
       cls->fname = fn;
       if (!fmt) {
  -	cls->format = NULL;
  +        cls->format = NULL;
       }
       else {
  -	format = table_get(mls->formats, fmt);
  -	format = (format != NULL) ? format : fmt;
  -	cls->format = parse_log_string (cmd->pool, format, &err_string);
  +        format = table_get(mls->formats, fmt);
  +        format = (format != NULL) ? format : fmt;
  +        cls->format = parse_log_string(cmd->pool, format, &err_string);
       }
       cls->log_fd = -1;
  -    
  +
       return err_string;
   }
   
  @@ -748,42 +857,46 @@
       return add_custom_log(cmd, dummy, fn, "%{Cookie}n \"%r\" %t");
   }
   
  -static command_rec config_log_cmds[] = {
  -{ "CustomLog", add_custom_log, NULL, RSRC_CONF, TAKE2,
  -    "a file name and a custom log format string or format name" },
  -{ "TransferLog", set_transfer_log, NULL, RSRC_CONF, TAKE1,
  -    "the filename of the access log" },
  -{ "LogFormat", log_format, NULL, RSRC_CONF, TAKE12,
  -    "a log format string (see docs) and an optional format name" },
  -{ "CookieLog", set_cookie_log, NULL, RSRC_CONF, TAKE1,
  -    "the filename of the cookie log" },
  -{ NULL }
  +static command_rec config_log_cmds[] =
  +{
  +    {"CustomLog", add_custom_log, NULL, RSRC_CONF, TAKE2,
  +     "a file name and a custom log format string or format name"},
  +    {"TransferLog", set_transfer_log, NULL, RSRC_CONF, TAKE1,
  +     "the filename of the access log"},
  +    {"LogFormat", log_format, NULL, RSRC_CONF, TAKE12,
  +     "a log format string (see docs) and an optional format name"},
  +    {"CookieLog", set_cookie_log, NULL, RSRC_CONF, TAKE1,
  +     "the filename of the cookie log"},
  +    {NULL}
   };
   
  -static config_log_state *open_config_log (server_rec *s, pool *p,
  -				   config_log_state *cls,
  -				   array_header *default_format) {
  -    if (cls->log_fd > 0) return cls; /* virtual config shared w/main server */
  +static config_log_state *open_config_log(server_rec *s, pool *p,
  +                                         config_log_state *cls,
  +                                         array_header *default_format)
  +{
  +    if (cls->log_fd > 0) {
  +        return cls;             /* virtual config shared w/main server */
  +    }
   
       if (cls->fname == NULL) {
  -	  return cls;		/* Leave it NULL to decline.  */
  +        return cls;             /* Leave it NULL to decline.  */
       }
   
       if (*cls->fname == '|') {
  -	piped_log *pl;
  +        piped_log *pl;
   
  -	pl = open_piped_log (p, cls->fname + 1);
  -	if (pl == NULL) {
  -	    exit (1);
  -	}
  -	cls->log_fd = piped_log_write_fd (pl);
  +        pl = open_piped_log(p, cls->fname + 1);
  +        if (pl == NULL) {
  +            exit(1);
  +        }
  +        cls->log_fd = piped_log_write_fd(pl);
       }
       else {
  -        char *fname = server_root_relative (p, cls->fname);
  -        if((cls->log_fd = popenf(p, fname, xfer_flags, xfer_mode)) < 0) {
  +        char *fname = server_root_relative(p, cls->fname);
  +        if ((cls->log_fd = popenf(p, fname, xfer_flags, xfer_mode)) < 0) {
               perror("open");
  -            fprintf (stderr,
  -                     "httpd: could not open transfer log file %s.\n", fname);
  +            fprintf(stderr, "httpd: could not open transfer log file %s.\n",
  +                    fname);
               exit(1);
           }
       }
  @@ -794,7 +907,7 @@
       return cls;
   }
   
  -static config_log_state *open_multi_logs (server_rec *s, pool *p)
  +static config_log_state *open_multi_logs(server_rec *s, pool *p)
   {
       int i;
       multi_log_state *mls = get_module_config(s->module_config,
  @@ -802,19 +915,20 @@
       config_log_state *clsarray;
       const char *dummy;
   
  -    if (!mls->default_format)
  -      mls->default_format = parse_log_string (p, DEFAULT_LOG_FORMAT, &dummy);
  +    if (!mls->default_format) {
  +        mls->default_format = parse_log_string(p, DEFAULT_LOG_FORMAT, &dummy);
  +    }
   
       if (mls->config_logs->nelts) {
  -        clsarray = (config_log_state *)mls->config_logs->elts;
  +        clsarray = (config_log_state *) mls->config_logs->elts;
           for (i = 0; i < mls->config_logs->nelts; ++i) {
               config_log_state *cls = &clsarray[i];
   
               cls = open_config_log(s, p, cls, mls->default_format);
  -                }
  +        }
       }
       else if (mls->server_config_logs) {
  -        clsarray = (config_log_state *)mls->server_config_logs->elts;
  +        clsarray = (config_log_state *) mls->server_config_logs->elts;
           for (i = 0; i < mls->server_config_logs->nelts; ++i) {
               config_log_state *cls = &clsarray[i];
   
  @@ -825,67 +939,71 @@
       return NULL;
   }
   
  -static void init_config_log (server_rec *s, pool *p)
  +static void init_config_log(server_rec *s, pool *p)
   {
       /* First, do "physical" server, which gets default log fd and format
        * for the virtual servers, if they don't override...
        */
  -    
  -    open_multi_logs (s, p);
  -    
  +
  +    open_multi_logs(s, p);
  +
       /* Then, virtual servers */
  -    
  -    for (s = s->next; s; s = s->next) open_multi_logs (s, p);
  +
  +    for (s = s->next; s; s = s->next) {
  +        open_multi_logs(s, p);
  +    }
   }
   
   #ifdef BUFFERED_LOGS
  -static void flush_all_logs (server_rec *s, pool *p)
  +static void flush_all_logs(server_rec *s, pool *p)
   {
       multi_log_state *mls;
       array_header *log_list;
       config_log_state *clsarray;
       int i;
  -    
  +
       for (; s; s = s->next) {
  -	mls = get_module_config(s->module_config, &config_log_module);
  -	log_list = NULL;
  -	if (mls->config_logs->nelts) {
  -	    log_list = mls->config_logs;
  -	} else if (mls->server_config_logs) {
  -	    log_list = mls->server_config_logs;
  -	}
  -	if (log_list) {
  -	    clsarray = (config_log_state *)log_list->elts;
  -	    for (i = 0; i < log_list->nelts; ++i) {
  -		flush_log (&clsarray[i]);
  -	    }
  -	}
  +        mls = get_module_config(s->module_config, &config_log_module);
  +        log_list = NULL;
  +        if (mls->config_logs->nelts) {
  +            log_list = mls->config_logs;
  +        }
  +        else if (mls->server_config_logs) {
  +            log_list = mls->server_config_logs;
  +        }
  +        if (log_list) {
  +            clsarray = (config_log_state *) log_list->elts;
  +            for (i = 0; i < log_list->nelts; ++i) {
  +                flush_log(&clsarray[i]);
  +            }
  +        }
       }
   }
   #endif
   
  -module MODULE_VAR_EXPORT config_log_module = {
  -   STANDARD_MODULE_STUFF,
  -   init_config_log,		/* initializer */
  -   NULL,			/* create per-dir config */
  -   NULL,			/* merge per-dir config */
  -   make_config_log_state,	/* server config */
  -   merge_config_log_state,     	/* merge server config */
  -   config_log_cmds,		/* command table */
  -   NULL,			/* handlers */
  -   NULL,			/* filename translation */
  -   NULL,			/* check_user_id */
  -   NULL,			/* check auth */
  -   NULL,			/* check access */
  -   NULL,			/* type_checker */
  -   NULL,			/* fixups */
  -   multi_log_transaction,	/* logger */
  -   NULL,			/* header parser */
  -   NULL,			/* child_init */
  +module MODULE_VAR_EXPORT config_log_module =
  +{
  +    STANDARD_MODULE_STUFF,
  +    init_config_log,            /* initializer */
  +    NULL,                       /* create per-dir config */
  +    NULL,                       /* merge per-dir config */
  +    make_config_log_state,      /* server config */
  +    merge_config_log_state,     /* merge server config */
  +    config_log_cmds,            /* command table */
  +    NULL,                       /* handlers */
  +    NULL,                       /* filename translation */
  +    NULL,                       /* check_user_id */
  +    NULL,                       /* check auth */
  +    NULL,                       /* check access */
  +    NULL,                       /* type_checker */
  +    NULL,                       /* fixups */
  +    multi_log_transaction,      /* logger */
  +    NULL,                       /* header parser */
  +    NULL,                       /* child_init */
   #ifdef BUFFERED_LOGS
  -   flush_all_logs,		/* child_exit */
  +    flush_all_logs,             /* child_exit */
   #else
  -   NULL,
  +    NULL,
   #endif
  -   NULL				/* post read-request */
  +    NULL                        /* post read-request */
   };
  
  
  
  1.57      +924 -757  apachen/src/modules/standard/mod_negotiation.c
  
  Index: mod_negotiation.c
  ===================================================================
  RCS file: /export/home/cvs/apachen/src/modules/standard/mod_negotiation.c,v
  retrieving revision 1.56
  retrieving revision 1.57
  diff -u -r1.56 -r1.57
  --- mod_negotiation.c	1997/09/01 02:32:54	1.56
  +++ mod_negotiation.c	1997/09/15 17:19:55	1.57
  @@ -71,7 +71,7 @@
    * Since the draft is just that, and we don't yet implement
    * everything, regard the transparent negotiation stuff as experimental.
    */
  -/*#define TCN_02*/
  +/*#define TCN_02 */
   
   /* Commands --- configuring document caching on a per (virtual?)
    * server basis...
  @@ -83,70 +83,71 @@
   
   module MODULE_VAR_EXPORT negotiation_module;
   
  -static char *merge_string_array (pool *p, array_header *arr, char *sep)
  +static char *merge_string_array(pool *p, array_header *arr, char *sep)
   {
       int i;
       char *t = "";
   
       for (i = 0; i < arr->nelts; i++) {
  -	t = pstrcat(p, t, i ? sep : "", ((char**)arr->elts)[i], NULL);
  +        t = pstrcat(p, t, (i ? sep : ""), ((char **) arr->elts)[i], NULL);
       }
       return t;
   }
   
  -static void *create_neg_dir_config (pool *p, char *dummy)
  +static void *create_neg_dir_config(pool *p, char *dummy)
   {
  -    neg_dir_config *new =
  -      (neg_dir_config *) palloc (p, sizeof (neg_dir_config));
  +    neg_dir_config *new = (neg_dir_config *) palloc(p, sizeof(neg_dir_config));
   
  -    new->language_priority = make_array (p, 4, sizeof (char *));
  +    new->language_priority = make_array(p, 4, sizeof(char *));
       return new;
   }
   
  -static void *merge_neg_dir_configs (pool *p, void *basev, void *addv)
  +static void *merge_neg_dir_configs(pool *p, void *basev, void *addv)
   {
  -    neg_dir_config *base = (neg_dir_config *)basev;
  -    neg_dir_config *add = (neg_dir_config *)addv;
  -    neg_dir_config *new =
  -      (neg_dir_config *) palloc (p, sizeof (neg_dir_config));
  +    neg_dir_config *base = (neg_dir_config *) basev;
  +    neg_dir_config *add = (neg_dir_config *) addv;
  +    neg_dir_config *new = (neg_dir_config *) palloc(p, sizeof(neg_dir_config));
   
       /* give priority to the config in the subdirectory */
  -    new->language_priority = append_arrays (p, add->language_priority,
  -					    base->language_priority);
  +    new->language_priority = append_arrays(p, add->language_priority,
  +                                           base->language_priority);
       return new;
   }
   
  -static const char *set_language_priority (cmd_parms *cmd, void *n, char *lang)
  +static const char *set_language_priority(cmd_parms *cmd, void *n, char *lang)
   {
       array_header *arr = ((neg_dir_config *) n)->language_priority;
  -    char **langp = (char **) push_array (arr);
  +    char **langp = (char **) push_array(arr);
   
  -    *langp = pstrdup (arr->pool, lang);
  +    *langp = pstrdup(arr->pool, lang);
       return NULL;
   }
   
  -static const char *cache_negotiated_docs (cmd_parms *cmd, void *dummy, char *dummy2)
  +static const char *cache_negotiated_docs(cmd_parms *cmd, void *dummy,
  +                                         char *dummy2)
   {
       void *server_conf = cmd->server->module_config;
  -    
  -    set_module_config (server_conf, &negotiation_module, "Cache");
  +
  +    set_module_config(server_conf, &negotiation_module, "Cache");
       return NULL;
   }
   
  -static int do_cache_negotiated_docs (server_rec *s)
  +static int do_cache_negotiated_docs(server_rec *s)
   {
  -    return (get_module_config (s->module_config, &negotiation_module) != NULL);
  +    return (get_module_config(s->module_config, &negotiation_module) != NULL);
   }
   
  -static command_rec negotiation_cmds[] = {
  -{ "CacheNegotiatedDocs", cache_negotiated_docs, NULL, RSRC_CONF, NO_ARGS,
  -    "no arguments (either present or absent)" },
  -{ "LanguagePriority", set_language_priority, NULL, OR_FILEINFO, ITERATE,
  -    "space-delimited list of MIME language abbreviations" },
  -{ NULL }
  +static command_rec negotiation_cmds[] =
  +{
  +    {"CacheNegotiatedDocs", cache_negotiated_docs, NULL, RSRC_CONF, NO_ARGS,
  +     "no arguments (either present or absent)"},
  +    {"LanguagePriority", set_language_priority, NULL, OR_FILEINFO, ITERATE,
  +     "space-delimited list of MIME language abbreviations"},
  +    {NULL}
   };
   
  -/* Record of available info on a media type specified by the client
  +/*
  + * Record of available info on a media type specified by the client
    * (we also use 'em for encodings and languages)
    */
   
  @@ -158,7 +159,8 @@
       char *charset;              /* for content-type only */
   } accept_rec;
   
  -/* Record of available info on a particular variant
  +/*
  + * Record of available info on a particular variant
    *
    * Note that a few of these fields are updated by the actual negotiation
    * code.  These are:
  @@ -174,7 +176,7 @@
       char *type_name;
       char *file_name;
       char *content_encoding;
  -    array_header *content_languages; /* list of languages for this variant */
  +    array_header *content_languages;    /* list of languages for this variant */
       char *content_charset;
       char *description;
   
  @@ -188,21 +190,21 @@
        * of the variant description or mime type: see set_mime_fields().
        */
       float lang_quality;         /* quality of this variant's language */
  -    int   encoding_quality;     /* ditto encoding (1 or 0 only) */
  +    int encoding_quality;       /* ditto encoding (1 or 0 only) */
       float charset_quality;      /* ditto charset */
       float accept_type_quality;  /* ditto media type */
       float type_quality;         /* quality of source for this type */
   
       /* Now some special values */
       float level;                /* Auxiliary to content-type... */
  -    float bytes;		/* content length, if known */
  +    float bytes;                /* content length, if known */
       int lang_index;             /* pre HTTP/1.1 language priority stuff */
       int is_pseudo_html;         /* text/html, *or* the INCLUDES_MAGIC_TYPEs */
   
       /* Above are all written-once properties of the variant.  The
        * three fields below are changed during negotiation:
        */
  -    
  +
       float level_matched;
       int mime_stars;
       int definite;
  @@ -216,18 +218,18 @@
       pool *pool;
       request_rec *r;
       char *dir_name;
  -    int accept_q;		/* 1 if an Accept item has a q= param */
  -    float default_lang_quality;	/* fiddle lang q for variants with no lang */
  +    int accept_q;               /* 1 if an Accept item has a q= param */
  +    float default_lang_quality; /* fiddle lang q for variants with no lang */
  +
   
  -   
       array_header *accepts;      /* accept_recs */
  -    int have_accept_header;	/* 1 if Accept-Header present */
  -    array_header *accept_encodings; /* accept_recs */
  -    array_header *accept_charsets; /* accept_recs */
  +    int have_accept_header;     /* 1 if Accept-Header present */
  +    array_header *accept_encodings;     /* accept_recs */
  +    array_header *accept_charsets;      /* accept_recs */
       array_header *accept_langs; /* accept_recs */
       array_header *avail_vars;   /* available variants */
   
  -    int count_multiviews_variants; /* number of variants found on disk */
  +    int count_multiviews_variants;      /* number of variants found on disk */
   
       int ua_can_negotiate;       /* 1 if ua can do transparent negotiate */
       int use_transparent_neg;    /* 1 if we are using transparent neg */
  @@ -238,7 +240,7 @@
    * Cleaning out the fields...
    */
   
  -static void clean_var_rec (var_rec *mime_info)
  +static void clean_var_rec(var_rec *mime_info)
   {
       mime_info->sub_req = NULL;
       mime_info->type_name = "";
  @@ -267,17 +269,16 @@
    * accept_info read out of its content-type, one way or another.
    */
   
  -static void set_mime_fields (var_rec *var, accept_rec *mime_info)
  +static void set_mime_fields(var_rec *var, accept_rec *mime_info)
   {
       var->type_name = mime_info->type_name;
       var->type_quality = mime_info->quality;
       var->level = mime_info->level;
       var->content_charset = mime_info->charset;
   
  -    var->is_pseudo_html = 
  -	(!strcmp (var->type_name, "text/html")
  -	 || !strcmp (var->type_name, INCLUDES_MAGIC_TYPE)
  -	 || !strcmp (var->type_name, INCLUDES_MAGIC_TYPE3));
  +    var->is_pseudo_html = (!strcmp(var->type_name, "text/html")
  +                           || !strcmp(var->type_name, INCLUDES_MAGIC_TYPE)
  +                           || !strcmp(var->type_name, INCLUDES_MAGIC_TYPE3));
   }
   
   /*****************************************************************
  @@ -291,14 +292,15 @@
    * enter the values we recognize into the argument accept_rec
    */
   
  -static char *get_entry (pool *p, accept_rec *result, char *accept_line)
  +static char *get_entry(pool *p, accept_rec *result, char *accept_line)
   {
       result->quality = 1.0f;
       result->max_bytes = 0.0f;
       result->level = 0.0f;
       result->charset = "";
  -    
  -    /* Note that this handles what I gather is the "old format",
  +
  +    /*
  +     * Note that this handles what I gather is the "old format",
        *
        *    Accept: text/html text/plain moo/zot
        *
  @@ -307,78 +309,88 @@
        * otherwise, we know we aren't.  (So why all the pissing and moaning
        * in the CERN server code?  I must be missing something).
        */
  -    
  -    result->type_name = get_token (p, &accept_line, 0);
  -    str_tolower (result->type_name); /* You want case-insensitive,
  -				      * you'll *get* case-insensitive.
  -				      */
  -    
  +
  +    result->type_name = get_token(p, &accept_line, 0);
  +    str_tolower(result->type_name);     /* You want case-insensitive,
  +                                         * you'll *get* case-insensitive.
  +                                         */
   
       /* KLUDGE!!! Default HTML to level 2.0 unless the browser
        * *explicitly* says something else.
        */
  -	
  -    if (!strcmp (result->type_name, "text/html")
  -	&& result->level == 0.0)
  -	result->level = 2.0f;
  -    else if (!strcmp (result->type_name, INCLUDES_MAGIC_TYPE))
  -	result->level = 2.0f;
  -    else if (!strcmp (result->type_name, INCLUDES_MAGIC_TYPE3))
  -	result->level = 3.0f;
  +
  +    if (!strcmp(result->type_name, "text/html") && (result->level == 0.0)) {
  +        result->level = 2.0f;
  +    }
  +    else if (!strcmp(result->type_name, INCLUDES_MAGIC_TYPE)) {
  +        result->level = 2.0f;
  +    }
  +    else if (!strcmp(result->type_name, INCLUDES_MAGIC_TYPE3)) {
  +        result->level = 3.0f;
  +    }
   
       while (*accept_line == ';') {
  -	/* Parameters ... */
  +        /* Parameters ... */
  +
  +        char *parm;
  +        char *cp;
  +        char *end;
  +
  +        ++accept_line;
  +        parm = get_token(p, &accept_line, 1);
  +
  +        /* Look for 'var = value' --- and make sure the var is in lcase. */
  +
  +        for (cp = parm; (*cp && !isspace(*cp) && *cp != '='); ++cp) {
  +            *cp = tolower(*cp);
  +        }
  +
  +        if (!*cp) {
  +            continue;           /* No '='; just ignore it. */
  +        }
  +
  +        *cp++ = '\0';           /* Delimit var */
  +        while (*cp && (isspace(*cp) || *cp == '=')) {
  +            ++cp;
  +        }
  +
  +        if (*cp == '"') {
  +            ++cp;
  +            for (end = cp;
  +                 (*end && *end != '\n' && *end != '\r' && *end != '\"');
  +                 end++);
  +        }
  +        else {
  +            for (end = cp; (*end && !isspace(*end)); end++);
  +        }
  +        if (*end) {
  +            *end = '\0';        /* strip ending quote or return */
  +        }
  +        str_tolower(cp);
   
  -	char *parm;
  -	char *cp;
  -	char *end;
  -	    
  -	++accept_line;
  -	parm = get_token (p, &accept_line, 1);
  -
  -	/* Look for 'var = value' --- and make sure the var is in lcase. */
  -	
  -	for (cp = parm; *cp && !isspace(*cp) && *cp != '='; ++cp)
  -	    *cp = tolower(*cp);
  -
  -	if (!*cp) continue;	/* No '='; just ignore it. */
  -	    
  -	*cp++ = '\0';		/* Delimit var */
  -	while (*cp && (isspace(*cp) || *cp == '='))
  -	    ++cp;
  -
  -	if (*cp == '"') {
  -	    ++cp;
  -	    for (end = cp; *end && 
  -		     *end != '\n' && *end != '\r' && *end != '\"';
  -		 end++)
  -		;
  -	}
  -	else {
  -	    for (end = cp; *end && !isspace(*end); end++)
  -		;
  -	}
  -	if (*end)
  -	    *end = '\0';	/* strip ending quote or return */
  -	str_tolower(cp);
  -	
  -	if (parm[0] == 'q'
  -	    && (parm[1] == '\0' || (parm[1] == 's' && parm[2] == '\0')))
  -	    result->quality = atof(cp);
  -	else if (parm[0] == 'm' && parm[1] == 'x' &&
  -		 parm[2] == 'b' && parm[3] == '\0')
  -	    result->max_bytes = atof(cp);
  -	else if (parm[0] == 'l' && !strcmp (&parm[1], "evel"))
  -	    result->level = atof(cp);
  -	else if (!strcmp(parm, "charset"))
  -	    result->charset = cp;
  +        if (parm[0] == 'q'
  +            && (parm[1] == '\0' || (parm[1] == 's' && parm[2] == '\0'))) {
  +            result->quality = atof(cp);
  +        }
  +        else if (parm[0] == 'm' && parm[1] == 'x' &&
  +                 parm[2] == 'b' && parm[3] == '\0') {
  +            result->max_bytes = atof(cp);
  +        }
  +        else if (parm[0] == 'l' && !strcmp(&parm[1], "evel")) {
  +            result->level = atof(cp);
  +        }
  +        else if (!strcmp(parm, "charset")) {
  +            result->charset = cp;
  +        }
       }
   
  -    if (*accept_line == ',') ++accept_line;
  +    if (*accept_line == ',') {
  +        ++accept_line;
  +    }
   
       return accept_line;
   }
  -                 
  +
   /*****************************************************************
    *
    * Dealing with header lines ...
  @@ -392,15 +404,17 @@
    * and charset is only valid in Accept.
    */
   
  -static array_header *do_header_line (pool *p, char *accept_line)
  +static array_header *do_header_line(pool *p, char *accept_line)
   {
  -    array_header *accept_recs = make_array (p, 40, sizeof (accept_rec));
  -  
  -    if (!accept_line) return accept_recs;
  -    
  +    array_header *accept_recs = make_array(p, 40, sizeof(accept_rec));
  +
  +    if (!accept_line) {
  +        return accept_recs;
  +    }
  +
       while (*accept_line) {
  -        accept_rec *new = (accept_rec *)push_array (accept_recs);
  -	accept_line = get_entry (p, new, accept_line);
  +        accept_rec *new = (accept_rec *) push_array(accept_recs);
  +        accept_line = get_entry(p, new, accept_line);
       }
   
       return accept_recs;
  @@ -410,18 +424,21 @@
    * return an array containing the languages of this variant
    */
   
  -static array_header *do_languages_line (pool *p, char **lang_line)
  +static array_header *do_languages_line(pool *p, char **lang_line)
   {
  -    array_header *lang_recs = make_array (p, 2, sizeof (char *));
  -  
  -    if (!lang_line) return lang_recs;
  -    
  +    array_header *lang_recs = make_array(p, 2, sizeof(char *));
  +
  +    if (!lang_line) {
  +        return lang_recs;
  +    }
  +
       while (**lang_line) {
  -        char **new = (char **)push_array (lang_recs);
  -	*new = get_token (p, lang_line, 0);
  -	str_tolower (*new);
  -	if (**lang_line == ',' || **lang_line == ';')
  -	    ++(*lang_line);
  +        char **new = (char **) push_array(lang_recs);
  +        *new = get_token(p, lang_line, 0);
  +        str_tolower(*new);
  +        if (**lang_line == ',' || **lang_line == ';') {
  +            ++(*lang_line);
  +        }
       }
   
       return lang_recs;
  @@ -432,31 +449,32 @@
    * Handling header lines from clients...
    */
   
  -static negotiation_state *parse_accept_headers (request_rec *r)
  +static negotiation_state *parse_accept_headers(request_rec *r)
   {
  -    negotiation_state *new =
  -        (negotiation_state *)pcalloc (r->pool, sizeof (negotiation_state));
  +    negotiation_state *new = (negotiation_state *) pcalloc(r->pool,
  +                                                 sizeof(negotiation_state));
       accept_rec *elts;
       table *hdrs = r->headers_in;
  -    int i;   
  +    int i;
       char *hdr;
   
       new->pool = r->pool;
       new->r = r;
  -    new->dir_name = make_dirstr_parent (r->pool, r->filename);
  -    
  -    new->accepts = do_header_line (r->pool, table_get (hdrs, "Accept"));
  -
  -    hdr = table_get (hdrs, "Accept-encoding");
  -    if (hdr)
  -      new->have_accept_header = 1;
  -    new->accept_encodings = do_header_line (r->pool, hdr);
  -
  -    new->accept_langs =
  -      do_header_line (r->pool, table_get (hdrs, "Accept-language"));
  -    new->accept_charsets =
  -      do_header_line (r->pool, table_get (hdrs, "Accept-charset"));
  -    new->avail_vars = make_array (r->pool, 40, sizeof (var_rec));
  +    new->dir_name = make_dirstr_parent(r->pool, r->filename);
  +
  +    new->accepts = do_header_line(r->pool, table_get(hdrs, "Accept"));
  +
  +    hdr = table_get(hdrs, "Accept-encoding");
  +    if (hdr) {
  +        new->have_accept_header = 1;
  +    }
  +    new->accept_encodings = do_header_line(r->pool, hdr);
  +
  +    new->accept_langs = do_header_line(r->pool,
  +                                       table_get(hdrs, "Accept-language"));
  +    new->accept_charsets = do_header_line(r->pool,
  +                                          table_get(hdrs, "Accept-charset"));
  +    new->avail_vars = make_array(r->pool, 40, sizeof(var_rec));
   
   #ifdef TCN_02
       if (table_get(r->headers_in, "Negotiate")) {
  @@ -465,15 +483,16 @@
            * we do */
   
           new->ua_can_negotiate = 1;
  -        if (r->method_number == M_GET)
  -            new->use_transparent_neg = 1; /* should be configurable */
  +        if (r->method_number == M_GET) {
  +            new->use_transparent_neg = 1;       /* should be configurable */
  +        }
   
           /* Check for 'Short Accept', ie either no Accept: header,
            * or just "Accept: * / *" */
  -        if (new->accepts->nelts == 0 || 
  +        if (new->accepts->nelts == 0 ||
               (new->accepts->nelts == 1 &&
  -            (!strcmp(((accept_rec *)new->accepts->elts)[0].type_name, 
  -                                               "*/*")))) {
  +             (!strcmp(((accept_rec *) new->accepts->elts)[0].type_name,
  +                      "*/*")))) {
               /* Using short accept header */
               new->short_accept_headers = 1;
           }
  @@ -485,14 +504,19 @@
            * client is "broken", and we are allowed to fiddle with the
            * values later. Otherwise, we leave them alone.
            */
  -    
  -        elts = (accept_rec *)new->accepts->elts;
  -    
  -        for (i = 0; i < new->accepts->nelts; ++i)
  -            if (elts[i].quality < 1.0) new->accept_q = 1;
  +
  +        elts = (accept_rec *) new->accepts->elts;
  +
  +        for (i = 0; i < new->accepts->nelts; ++i) {
  +            if (elts[i].quality < 1.0) {
  +                new->accept_q = 1;
  +            }
  +        }
  +    }
  +    else {
  +        new->accept_q = 1;
       }
  -    else new->accept_q = 1;
  -    
  +
       return new;
   }
   
  @@ -505,17 +529,19 @@
   
   static void maybe_add_default_encodings(negotiation_state *neg, int prefer_scripts)
   {
  -    accept_rec *new_accept = (accept_rec *)push_array (neg->accepts); 
  -  
  +    accept_rec *new_accept = (accept_rec *) push_array(neg->accepts);
  +
       new_accept->type_name = CGI_MAGIC_TYPE;
       new_accept->quality = prefer_scripts ? 1e-20f : 1e20f;
       new_accept->level = 0.0f;
       new_accept->max_bytes = 0.0f;
   
  -    if (neg->accepts->nelts > 1) return;
  -    
  -    new_accept = (accept_rec *)push_array (neg->accepts); 
  -    
  +    if (neg->accepts->nelts > 1) {
  +        return;
  +    }
  +
  +    new_accept = (accept_rec *) push_array(neg->accepts);
  +
       new_accept->type_name = "*/*";
       new_accept->quality = 1.0f;
       new_accept->level = 0.0f;
  @@ -532,67 +558,79 @@
    * handling continuations.
    */
   
  -enum header_state { header_eof, header_seen, header_sep };
  +enum header_state {
  +    header_eof, header_seen, header_sep
  +};
   
  -static enum header_state get_header_line (char *buffer, int len, FILE *map)
  +static enum header_state get_header_line(char *buffer, int len, FILE *map)
   {
       char *buf_end = buffer + len;
       char *cp;
       int c;
  -    
  +
       /* Get a noncommented line */
  -    
  +
       do {
  -	if (fgets(buffer, MAX_STRING_LEN, map) == NULL)
  -	    return header_eof;
  +        if (fgets(buffer, MAX_STRING_LEN, map) == NULL) {
  +            return header_eof;
  +        }
       } while (buffer[0] == '#');
  -    
  +
       /* If blank, just return it --- this ends information on this variant */
  -    
  -    for (cp = buffer; *cp && isspace (*cp); ++cp)
  -      continue;
   
  -    if (*cp == '\0') return header_sep;
  +    for (cp = buffer; (*cp && isspace(*cp)); ++cp) {
  +        continue;
  +    }
  +
  +    if (*cp == '\0') {
  +        return header_sep;
  +    }
   
       /* If non-blank, go looking for header lines, but note that we still
        * have to treat comments specially...
        */
   
       cp += strlen(cp);
  -    
  -    while ((c = getc(map)) != EOF)
  -    {
  -	if (c == '#') {
  -	    /* Comment line */
  -	    while ((c = getc(map)) != EOF && c != '\n')
  -	       continue;
  -	} else if (isspace(c)) {
  -	    /* Leading whitespace.  POSSIBLE continuation line
  -	     * Also, possibly blank --- if so, we ungetc() the final newline
  -	     * so that we will pick up the blank line the next time 'round.
  -	     */
  -	    
  -	    while (c != EOF && c != '\n' && isspace(c))
  -		c = getc(map);
  -
  -	    ungetc (c, map);
  -	    
  -	    if (c == '\n') return header_seen; /* Blank line */
  -
  -	    /* Continuation */
  -
  -	    while (cp < buf_end - 2 && (c = getc(map)) != EOF && c != '\n')
  -		*cp++ = c;
  -
  -	    *cp++ = '\n';
  -	    *cp = '\0';
  -	} else {
  -
  -	    /* Line beginning with something other than whitespace */
  -	    
  -	    ungetc (c, map);
  -	    return header_seen;
  -	}
  +
  +    while ((c = getc(map)) != EOF) {
  +        if (c == '#') {
  +            /* Comment line */
  +            while ((c = getc(map)) != EOF && c != '\n') {
  +                continue;
  +            }
  +        }
  +        else if (isspace(c)) {
  +            /* Leading whitespace.  POSSIBLE continuation line
  +             * Also, possibly blank --- if so, we ungetc() the final newline
  +             * so that we will pick up the blank line the next time 'round.
  +             */
  +
  +            while (c != EOF && c != '\n' && isspace(c)) {
  +                c = getc(map);
  +            }
  +
  +            ungetc(c, map);
  +
  +            if (c == '\n') {
  +                return header_seen;     /* Blank line */
  +            }
  +
  +            /* Continuation */
  +
  +            while (cp < buf_end - 2 && (c = getc(map)) != EOF && c != '\n') {
  +                *cp++ = c;
  +            }
  +
  +            *cp++ = '\n';
  +            *cp = '\0';
  +        }
  +        else {
  +
  +            /* Line beginning with something other than whitespace */
  +
  +            ungetc(c, map);
  +            return header_seen;
  +        }
       }
   
       return header_seen;
  @@ -600,53 +638,63 @@
   
   /* Stripping out RFC822 comments */
   
  -static void strip_paren_comments (char *hdr)
  +static void strip_paren_comments(char *hdr)
   {
       /* Hmmm... is this correct?  In Roy's latest draft, (comments) can nest! */
  -  
  +
       while (*hdr) {
  -	if (*hdr == '"') {
  -	    while (*++hdr && *hdr != '"')
  -		continue;
  -	    ++hdr;
  -	}
  -	else if (*hdr == '(') {
  -	    while (*hdr && *hdr != ')') *hdr++ = ' ';
  -	    
  -	    if (*hdr) *hdr++ = ' ';
  -	}
  -	else ++hdr;
  +        if (*hdr == '"') {
  +            while (*++hdr && *hdr != '"') {
  +                continue;
  +            }
  +            ++hdr;
  +        }
  +        else if (*hdr == '(') {
  +            while (*hdr && *hdr != ')') {
  +                *hdr++ = ' ';
  +            }
  +
  +            if (*hdr) {
  +                *hdr++ = ' ';
  +            }
  +        }
  +        else {
  +            ++hdr;
  +        }
       }
   }
   
   /* Getting to a header body from the header */
   
  -static char *lcase_header_name_return_body (char *header, request_rec *r)
  +static char *lcase_header_name_return_body(char *header, request_rec *r)
   {
       char *cp = header;
  -    
  -    while (*cp && *cp != ':')
  +
  +    while (*cp && *cp != ':') {
           *cp++ = tolower(*cp);
  -    
  +    }
  +
       if (!*cp) {
  -	aplog_error(APLOG_MARK, APLOG_ERR, r->server,
  -		    "Syntax error in type map --- no ':': %s", r->filename);
  -	return NULL;
  +        aplog_error(APLOG_MARK, APLOG_ERR, r->server,
  +                    "Syntax error in type map --- no ':': %s", r->filename);
  +        return NULL;
       }
   
  -    do ++cp; while (*cp && isspace (*cp));
  +    do {
  +        ++cp;
  +    } while (*cp && isspace(*cp));
   
       if (!*cp) {
  -	aplog_error(APLOG_MARK, APLOG_ERR, r->server,
  -		    "Syntax error in type map --- no header body: %s",
  -		    r->filename);
  -	return NULL;
  +        aplog_error(APLOG_MARK, APLOG_ERR, r->server,
  +                    "Syntax error in type map --- no header body: %s",
  +                    r->filename);
  +        return NULL;
       }
   
       return cp;
   }
   
  -static int read_type_map (negotiation_state *neg, request_rec *rr)
  +static int read_type_map(negotiation_state *neg, request_rec *rr)
   {
       request_rec *r = neg->r;
       FILE *map;
  @@ -656,65 +704,67 @@
   
       /* We are not using multiviews */
       neg->count_multiviews_variants = 0;
  -    
  +
       if (rr->status != HTTP_OK) {
  -	return rr->status;
  +        return rr->status;
       }
  -    map = pfopen (neg->pool, rr->filename, "r");
  +    map = pfopen(neg->pool, rr->filename, "r");
       if (map == NULL) {
           aplog_error(APLOG_MARK, APLOG_ERR, r->server,
  -		    "cannot access type map file", rr->filename);
  -	return FORBIDDEN;
  +                    "cannot access type map file", rr->filename);
  +        return HTTP_FORBIDDEN;
       }
   
  -    clean_var_rec (&mime_info);
  -    
  +    clean_var_rec(&mime_info);
  +
       do {
  -	hstate = get_header_line (buffer, MAX_STRING_LEN, map);
  -	
  -	if (hstate == header_seen) {
  -	    char *body = lcase_header_name_return_body (buffer, neg->r);
  -	    
  -	    if (body == NULL) return SERVER_ERROR;
  -	    
  -	    strip_paren_comments (body);
  -	    
  -	    if (!strncmp (buffer, "uri:", 4)) {
  -		mime_info.file_name = get_token (neg->pool, &body, 0);
  -	    }
  -	    else if (!strncmp (buffer, "content-type:", 13)) {
  -		struct accept_rec accept_info;
  -		
  -		get_entry (neg->pool, &accept_info, body);
  -		set_mime_fields (&mime_info, &accept_info);
  -	    }
  -	    else if (!strncmp (buffer, "content-length:", 15)) {
  -		mime_info.bytes = atof(body);
  -	    }
  -	    else if (!strncmp (buffer, "content-language:", 17)) {
  -		mime_info.content_languages = 
  -		    do_languages_line(neg->pool, &body);
  -	    }
  -	    else if (!strncmp (buffer, "content-encoding:", 17)) {
  -		mime_info.content_encoding = get_token (neg->pool, &body, 0);
  -		str_tolower (mime_info.content_encoding);
  -	    }
  -	    else if (!strncmp (buffer, "description:", 12)) {
  -		mime_info.description = get_token (neg->pool, &body, 0);
  -	    }
  -	} else {
  -	    if (mime_info.type_quality > 0 && *mime_info.file_name)
  -		{
  -		    void *new_var = push_array (neg->avail_vars);
  -		    memcpy (new_var, (void *)&mime_info, sizeof (var_rec));
  -		}
  -
  -	    
  -	    clean_var_rec(&mime_info);
  -	}
  +        hstate = get_header_line(buffer, MAX_STRING_LEN, map);
  +
  +        if (hstate == header_seen) {
  +            char *body = lcase_header_name_return_body(buffer, neg->r);
  +
  +            if (body == NULL) {
  +                return SERVER_ERROR;
  +            }
  +
  +            strip_paren_comments(body);
  +
  +            if (!strncmp(buffer, "uri:", 4)) {
  +                mime_info.file_name = get_token(neg->pool, &body, 0);
  +            }
  +            else if (!strncmp(buffer, "content-type:", 13)) {
  +                struct accept_rec accept_info;
  +
  +                get_entry(neg->pool, &accept_info, body);
  +                set_mime_fields(&mime_info, &accept_info);
  +            }
  +            else if (!strncmp(buffer, "content-length:", 15)) {
  +                mime_info.bytes = atof(body);
  +            }
  +            else if (!strncmp(buffer, "content-language:", 17)) {
  +                mime_info.content_languages = do_languages_line(neg->pool,
  +                                                                &body);
  +            }
  +            else if (!strncmp(buffer, "content-encoding:", 17)) {
  +                mime_info.content_encoding = get_token(neg->pool, &body, 0);
  +                str_tolower(mime_info.content_encoding);
  +            }
  +            else if (!strncmp(buffer, "description:", 12)) {
  +                mime_info.description = get_token(neg->pool, &body, 0);
  +            }
  +        }
  +        else {
  +            if (mime_info.type_quality > 0 && *mime_info.file_name) {
  +                void *new_var = push_array(neg->avail_vars);
  +
  +                memcpy(new_var, (void *) &mime_info, sizeof(var_rec));
  +            }
  +
  +            clean_var_rec(&mime_info);
  +        }
       } while (hstate != header_eof);
  -    
  -    pfclose (neg->pool, map);
  +
  +    pfclose(neg->pool, map);
       return OK;
   }
   
  @@ -723,10 +773,10 @@
    * Same, except we use a filtered directory listing as the map...
    */
   
  -static int read_types_multi (negotiation_state *neg)
  +static int read_types_multi(negotiation_state *neg)
   {
       request_rec *r = neg->r;
  -    
  +
       char *filp;
       int prefix_len;
       DIR *dirp;
  @@ -735,93 +785,103 @@
       struct accept_rec accept_info;
       void *new_var;
   
  -    clean_var_rec (&mime_info);
  +    clean_var_rec(&mime_info);
   
  -    if (!(filp = strrchr (r->filename, '/'))) return DECLINED; /* Weird... */
  +    if (!(filp = strrchr(r->filename, '/'))) {
  +        return DECLINED;        /* Weird... */
  +    }
   
  -    if (strncmp(r->filename, "proxy:", 6) == 0)
  +    if (strncmp(r->filename, "proxy:", 6) == 0) {
           return DECLINED;
  +    }
   
       ++filp;
  -    prefix_len = strlen (filp);
  +    prefix_len = strlen(filp);
   
  -    dirp = popendir (neg->pool, neg->dir_name);
  +    dirp = popendir(neg->pool, neg->dir_name);
   
       if (dirp == NULL) {
           aplog_error(APLOG_MARK, APLOG_ERR, r->server,
  -		    "cannot read directory for multi", neg->dir_name);
  -	return FORBIDDEN;
  +                    "cannot read directory for multi", neg->dir_name);
  +        return HTTP_FORBIDDEN;
       }
   
  -    while ((dir_entry = readdir (dirp))) {
  -        
  +    while ((dir_entry = readdir(dirp))) {
           request_rec *sub_req;
  -      
  -	/* Do we have a match? */
  -	
  -	if (strncmp (dir_entry->d_name, filp, prefix_len)) continue;
  -	if (dir_entry->d_name[prefix_len] != '.') continue;
  -	
  -	/* Yep.	 See if it's something which we have access to, and 
  -	 * which has a known type and encoding (as opposed to something
  -	 * which we'll be slapping default_type on later).
  -	 */
  -	
  -	sub_req = sub_req_lookup_file (dir_entry->d_name, r);
  -
  -	/* If it has a handler, we'll pretend it's a CGI script,
  -	 * since that's a good indication of the sort of thing it
  -	 * might be doing.
  -	 */
  -	if (sub_req->handler && !sub_req->content_type)
  -	  sub_req->content_type = CGI_MAGIC_TYPE;
  -
  -	if (sub_req->status != HTTP_OK || !sub_req->content_type) {
  -	    destroy_sub_req(sub_req);
  -	    continue;
  -	}
  -	
  -	/* If it's a map file, we use that instead of the map
  -	 * we're building...
  -	 */
  -
  -	if (((sub_req->content_type) &&
  -	     !strcmp (sub_req->content_type, MAP_FILE_MAGIC_TYPE)) || 
  -	    ((sub_req->handler) && 
  -	    !strcmp (sub_req->handler, "type-map"))) {
  -	    pclosedir(neg->pool, dirp);
  -	    
  -	    neg->avail_vars->nelts = 0;
  -	    return read_type_map (neg, sub_req);
  -	}
  -	
  -	/* Have reasonable variant --- gather notes.
  -	 */
  -	
  -	mime_info.sub_req = sub_req;
  -	mime_info.file_name = pstrdup(neg->pool, dir_entry->d_name);
  -	if (sub_req->content_encoding) {
  -	    mime_info.content_encoding = sub_req->content_encoding;
  -	    str_tolower(mime_info.content_encoding);
  -	}
  -	if (sub_req->content_languages) {
  -	    int i;
  -	    mime_info.content_languages = sub_req->content_languages;
  -	    if (mime_info.content_languages)
  -		for (i = 0; i < mime_info.content_languages->nelts; ++i)
  -		    str_tolower(((char**)
  -				 (mime_info.content_languages->elts))[i]);
  -	}
  -
  -	get_entry (neg->pool, &accept_info, sub_req->content_type);
  -	set_mime_fields (&mime_info, &accept_info);
  -	
  -	new_var = push_array (neg->avail_vars);
  -	memcpy (new_var, (void *)&mime_info, sizeof (var_rec));
  -
  -	neg->count_multiviews_variants++;
  -	    
  -	clean_var_rec(&mime_info);
  +
  +        /* Do we have a match? */
  +
  +        if (strncmp(dir_entry->d_name, filp, prefix_len)) {
  +            continue;
  +        }
  +        if (dir_entry->d_name[prefix_len] != '.') {
  +            continue;
  +        }
  +
  +        /* Yep.  See if it's something which we have access to, and 
  +         * which has a known type and encoding (as opposed to something
  +         * which we'll be slapping default_type on later).
  +         */
  +
  +        sub_req = sub_req_lookup_file(dir_entry->d_name, r);
  +
  +        /* If it has a handler, we'll pretend it's a CGI script,
  +         * since that's a good indication of the sort of thing it
  +         * might be doing.
  +         */
  +        if (sub_req->handler && !sub_req->content_type) {
  +            sub_req->content_type = CGI_MAGIC_TYPE;
  +        }
  +
  +        if (sub_req->status != HTTP_OK || !sub_req->content_type) {
  +            destroy_sub_req(sub_req);
  +            continue;
  +        }
  +
  +        /* If it's a map file, we use that instead of the map
  +         * we're building...
  +         */
  +
  +        if (((sub_req->content_type) &&
  +             !strcmp(sub_req->content_type, MAP_FILE_MAGIC_TYPE)) ||
  +            ((sub_req->handler) &&
  +             !strcmp(sub_req->handler, "type-map"))) {
  +
  +            pclosedir(neg->pool, dirp);
  +            neg->avail_vars->nelts = 0;
  +            return read_type_map(neg, sub_req);
  +        }
  +
  +        /* Have reasonable variant --- gather notes.
  +         */
  +
  +        mime_info.sub_req = sub_req;
  +        mime_info.file_name = pstrdup(neg->pool, dir_entry->d_name);
  +        if (sub_req->content_encoding) {
  +            mime_info.content_encoding = sub_req->content_encoding;
  +            str_tolower(mime_info.content_encoding);
  +        }
  +        if (sub_req->content_languages) {
  +            int i;
  +
  +            mime_info.content_languages = sub_req->content_languages;
  +            if (mime_info.content_languages) {
  +                for (i = 0; i < mime_info.content_languages->nelts; ++i) {
  +                    str_tolower(((char **)
  +                                 (mime_info.content_languages->elts))[i]);
  +                }
  +            }
  +        }
  +
  +        get_entry(neg->pool, &accept_info, sub_req->content_type);
  +        set_mime_fields(&mime_info, &accept_info);
  +
  +        new_var = push_array(neg->avail_vars);
  +        memcpy(new_var, (void *) &mime_info, sizeof(var_rec));
  +
  +        neg->count_multiviews_variants++;
  +
  +        clean_var_rec(&mime_info);
       }
   
       pclosedir(neg->pool, dirp);
  @@ -846,32 +906,34 @@
    * be 1 for star/star, 2 for type/star and 3 for type/subtype.
    */
   
  -static int mime_match (accept_rec *accept_r, var_rec *avail)
  +static int mime_match(accept_rec *accept_r, var_rec *avail)
   {
       char *accept_type = accept_r->type_name;
       char *avail_type = avail->type_name;
       int len = strlen(accept_type);
  -  
  -    if (accept_type[0] == '*')  { /* Anything matches star/star */
  -        if (avail->mime_stars < 1)
  -          avail->mime_stars = 1;
  -        return 1; 
  +
  +    if (accept_type[0] == '*') {        /* Anything matches star/star */
  +        if (avail->mime_stars < 1) {
  +            avail->mime_stars = 1;
  +        }
  +        return 1;
       }
       else if ((accept_type[len - 1] == '*') &&
  -             !strncmp (accept_type, avail_type, len - 2)) {
  -        if (avail->mime_stars < 2)
  -          avail->mime_stars = 2;
  +             !strncmp(accept_type, avail_type, len - 2)) {
  +        if (avail->mime_stars < 2) {
  +            avail->mime_stars = 2;
  +        }
           return 1;
       }
  -    else if (!strcmp (accept_type, avail_type)
  -	     || (!strcmp (accept_type, "text/html")
  -		 && (!strcmp(avail_type, INCLUDES_MAGIC_TYPE)
  -		     || !strcmp(avail_type, INCLUDES_MAGIC_TYPE3)))) {
  -	if (accept_r->level >= avail->level) {
  -	    avail->level_matched = avail->level;
  -	    avail->mime_stars = 3;
  -	    return 1;
  -	}
  +    else if (!strcmp(accept_type, avail_type)
  +             || (!strcmp(accept_type, "text/html")
  +                 && (!strcmp(avail_type, INCLUDES_MAGIC_TYPE)
  +                     || !strcmp(avail_type, INCLUDES_MAGIC_TYPE3)))) {
  +        if (accept_r->level >= avail->level) {
  +            avail->level_matched = avail->level;
  +            avail->mime_stars = 3;
  +            return 1;
  +        }
       }
   
       return OK;
  @@ -902,25 +964,35 @@
    * where the standard does not specify a unique course of action).
    */
   
  -static int level_cmp (var_rec *var1, var_rec *var2)
  +static int level_cmp(var_rec *var1, var_rec *var2)
   {
       /* Levels are only comparable between matching media types */
   
  -    if (var1->is_pseudo_html && !var2->is_pseudo_html)
  +    if (var1->is_pseudo_html && !var2->is_pseudo_html) {
           return 0;
  -    
  -    if (!var1->is_pseudo_html && strcmp (var1->type_name, var2->type_name))
  +    }
  +
  +    if (!var1->is_pseudo_html && strcmp(var1->type_name, var2->type_name)) {
           return 0;
  -    
  +    }
  +
       /* Take highest level that matched, if either did match. */
  -    
  -    if (var1->level_matched > var2->level_matched) return 1;
  -    if (var1->level_matched < var2->level_matched) return -1;
  +
  +    if (var1->level_matched > var2->level_matched) {
  +        return 1;
  +    }
  +    if (var1->level_matched < var2->level_matched) {
  +        return -1;
  +    }
   
       /* Neither matched.  Take lowest level, if there's a difference. */
   
  -    if (var1->level < var2->level) return 1;
  -    if (var1->level > var2->level) return -1;
  +    if (var1->level < var2->level) {
  +        return 1;
  +    }
  +    if (var1->level > var2->level) {
  +        return -1;
  +    }
   
       /* Tied */
   
  @@ -946,21 +1018,24 @@
    * to set lang_index.
    */
   
  -static int find_lang_index (array_header *accept_langs, char *lang)
  +static int find_lang_index(array_header *accept_langs, char *lang)
   {
       accept_rec *accs;
       int i;
   
  -    if (!lang)
  +    if (!lang) {
           return -1;
  +    }
   
  -    accs = (accept_rec *)accept_langs->elts;
  +    accs = (accept_rec *) accept_langs->elts;
   
  -    for (i = 0; i < accept_langs->nelts; ++i)
  -        if (!strncmp (lang, accs[i].type_name, strlen(accs[i].type_name)))
  +    for (i = 0; i < accept_langs->nelts; ++i) {
  +        if (!strncmp(lang, accs[i].type_name, strlen(accs[i].type_name))) {
               return i;
  -            
  -    return -1;          
  +        }
  +    }
  +
  +    return -1;
   }
   
   /* This function returns the priority of a given language
  @@ -968,23 +1043,26 @@
    * between several languages.
    */
   
  -static int find_default_index (neg_dir_config *conf, char *lang)
  +static int find_default_index(neg_dir_config *conf, char *lang)
   {
       array_header *arr;
       int nelts;
       char **elts;
       int i;
   
  -    if (!lang)
  +    if (!lang) {
           return -1;
  +    }
   
       arr = conf->language_priority;
       nelts = arr->nelts;
       elts = (char **) arr->elts;
   
  -    for (i = 0; i < nelts; ++i)
  -        if (!strcasecmp (elts[i], lang))
  +    for (i = 0; i < nelts; ++i) {
  +        if (!strcasecmp(elts[i], lang)) {
               return i;
  +        }
  +    }
   
       return -1;
   }
  @@ -1006,19 +1084,20 @@
   
   static void set_default_lang_quality(negotiation_state *neg)
   {
  -    var_rec *avail_recs = (var_rec *)neg->avail_vars->elts;
  +    var_rec *avail_recs = (var_rec *) neg->avail_vars->elts;
       int j;
   
  -    if (!neg->use_transparent_neg)
  -	for (j = 0; j < neg->avail_vars->nelts; ++j) {
  -	    var_rec *variant = &avail_recs[j];
  -	    if (variant->content_languages && 
  -		variant->content_languages->nelts) {
  -		neg->default_lang_quality = 0.001f;
  -		return;
  -	    }
  -	}
  -	  
  +    if (!neg->use_transparent_neg) {
  +        for (j = 0; j < neg->avail_vars->nelts; ++j) {
  +            var_rec *variant = &avail_recs[j];
  +            if (variant->content_languages &&
  +                variant->content_languages->nelts) {
  +                neg->default_lang_quality = 0.001f;
  +                return;
  +            }
  +        }
  +    }
  +
       neg->default_lang_quality = 1.0f;
   }
   
  @@ -1061,115 +1140,124 @@
       neg_dir_config *conf = NULL;
       char *firstlang;
   
  -    if (naccept == 0)
  -        conf = (neg_dir_config *) get_module_config (neg->r->per_dir_config,
  -                                                     &negotiation_module);
  -
  -    if (naccept == 0 && (!variant->content_languages || 
  -			 !variant->content_languages->nelts))
  -	return;                 /* no accept-language and no variant lang */
  +    if (naccept == 0) {
  +        conf = (neg_dir_config *) get_module_config(neg->r->per_dir_config,
  +                                                    &negotiation_module);
  +    }
  +
  +    if (naccept == 0 && (!variant->content_languages ||
  +                         !variant->content_languages->nelts)) {
  +        return;                 /* no accept-language and no variant lang */
  +    }
   
       if (!variant->content_languages || !variant->content_languages->nelts) {
           /* This variant has no content-language, so use the default
  -	 * quality factor for variants with no content-language
  -	 * (previously set by set_default_lang_quality()). */
  +         * quality factor for variants with no content-language
  +         * (previously set by set_default_lang_quality()). */
           variant->lang_quality = neg->default_lang_quality;
   
  -	if (naccept == 0)
  -	    return;		/* no accept-language items */
  +        if (naccept == 0) {
  +            return;             /* no accept-language items */
  +        }
   
       }
       else if (naccept) {
  -	/* Variant has one (or more) languages, and we have one (or more)
  -	 * language ranges on the Accept-Language header. Look for
  -	 * the best match. We do this by going through each language
  -	 * on the variant description looking for a match on the
  -	 * Accept-Language header. The best match is the longest matching
  -	 * language on the header. The final result is the best q value
  -	 * from all the languages on the variant description.
  -	 */
  -	int j;
  -	float fiddle_q = 0.0f;
  -	accept_rec *accs = (accept_rec *)neg->accept_langs->elts;
  -	accept_rec *best = NULL, *star = NULL;
  -	char *p;
  -	
  -	for (j = 0; j < variant->content_languages->nelts; ++j) {
  -	    char *lang;		/* language from variant description */
  -	    accept_rec *bestthistag = NULL;
  -	    int prefixlen = 0;
  -	    int longest_lang_range_len = 0;
  -	    int len;
  -	    /* lang is the variant's language-tag, which is the one
  -	     * we are allowed to use the prefix of in HTTP/1.1
  -	     */
  -	    lang = ((char **)(variant->content_languages->elts))[j];
  -	    p = strchr(lang, '-');      /* find prefix part (if any) */
  -	    if (p)
  -		prefixlen = p - lang; 
  -	    
  -	    /* now find the best (i.e. longest) matching Accept-Language
  -	     * header language. We put the best match for this tag in 
  -	     * bestthistag. We cannot update the overall best (based on
  -	     * q value) because the best match for this tag is the longest
  -	     * language item on the accept header, not necessarily the
  -	     * highest q.
  -	     */
  -	    for (i = 0; i < neg->accept_langs->nelts; ++i) {
  -		if (!strcmp(accs[i].type_name, "*")) {
  -		    if (!star)
  -			star = &accs[i];
  -		    continue;
  -		}
  -              
  -		/* Find language. We match if either the variant language
  -		 * tag exactly matches, or the prefix of the tag up to the
  -		 * '-' character matches the whole of the language in the
  -		 * Accept-Language header. We only use this accept-language
  -		 * item as the best match for the current tag if it
  -		 * is longer than the previous best match */
  -		if ((!strcmp (lang, accs[i].type_name) ||
  -		     (prefixlen &&
  -		      !strncmp(lang, accs[i].type_name, prefixlen) &&
  -		      (accs[i].type_name[prefixlen] == '\0'))) &&
  -		    ((len = strlen(accs[i].type_name)) > 
  - 		                      longest_lang_range_len)) {
  -		    longest_lang_range_len = len;
  -		    bestthistag = &accs[i];
  -		}
  -  
  -		if (! bestthistag) {
  -		    /* The next bit is a fiddle. Some browsers might be
  -		     * configured to send more specific language ranges
  -		     * than desirable. For example, an Accept-Language of
  -		     * en-US should never match variants with languages en
  -		     * or en-GB. But US English speakers might pick en-US
  -		     * as their language choice.  So this fiddle checks if
  -		     * the language range has a prefix, and if so, it
  -		     * matches variants which match that prefix with a
  -		     * priority of 0.001. So a request for en-US would
  -		     * match variants of types en and en-GB, but at much
  -		     * lower priority than matches of en-US directly, or
  -		     * of any other language listed on the Accept-Language
  -		     * header
  -		     */
  -		    if ((p = strchr(accs[i].type_name, '-'))) {
  -			int plen = p - accs[i].type_name;
  -			if (!strncmp(lang, accs[i].type_name, plen))
  -			    fiddle_q = 0.001f;
  -		    }
  -  		}
  -  	    }
  -	    /* Finished looking at Accept-Language headers, the best
  -	     * (longest) match is in bestthistag, or NULL if no match
  -	     */
  -	    if (!best ||
  -		(bestthistag && bestthistag->quality > best->quality))
  -		best = bestthistag;
  -          }
  -  	
  -          variant->lang_quality = best ? best->quality : 
  -	                     (star ? star->quality : fiddle_q);
  +        /* Variant has one (or more) languages, and we have one (or more)
  +         * language ranges on the Accept-Language header. Look for
  +         * the best match. We do this by going through each language
  +         * on the variant description looking for a match on the
  +         * Accept-Language header. The best match is the longest matching
  +         * language on the header. The final result is the best q value
  +         * from all the languages on the variant description.
  +         */
  +        int j;
  +        float fiddle_q = 0.0f;
  +        accept_rec *accs = (accept_rec *) neg->accept_langs->elts;
  +        accept_rec *best = NULL, *star = NULL;
  +        char *p;
  +
  +        for (j = 0; j < variant->content_languages->nelts; ++j) {
  +            char *lang;         /* language from variant description */
  +            accept_rec *bestthistag = NULL;
  +            int prefixlen = 0;
  +            int longest_lang_range_len = 0;
  +            int len;
  +
  +            /* lang is the variant's language-tag, which is the one
  +             * we are allowed to use the prefix of in HTTP/1.1
  +             */
  +            lang = ((char **) (variant->content_languages->elts))[j];
  +            p = strchr(lang, '-');      /* find prefix part (if any) */
  +            if (p) {
  +                prefixlen = p - lang;
  +            }
  +
  +            /* now find the best (i.e. longest) matching Accept-Language
  +             * header language. We put the best match for this tag in 
  +             * bestthistag. We cannot update the overall best (based on
  +             * q value) because the best match for this tag is the longest
  +             * language item on the accept header, not necessarily the
  +             * highest q.
  +             */
  +            for (i = 0; i < neg->accept_langs->nelts; ++i) {
  +                if (!strcmp(accs[i].type_name, "*")) {
  +                    if (!star) {
  +                        star = &accs[i];
  +                    }
  +                    continue;
  +                }
  +
  +                /* Find language. We match if either the variant language
  +                 * tag exactly matches, or the prefix of the tag up to the
  +                 * '-' character matches the whole of the language in the
  +                 * Accept-Language header. We only use this accept-language
  +                 * item as the best match for the current tag if it
  +                 * is longer than the previous best match */
  +                if ((!strcmp(lang, accs[i].type_name) ||
  +                     (prefixlen &&
  +                      !strncmp(lang, accs[i].type_name, prefixlen) &&
  +                      (accs[i].type_name[prefixlen] == '\0'))) &&
  +                    ((len = strlen(accs[i].type_name)) >
  +                     longest_lang_range_len)) {
  +                    longest_lang_range_len = len;
  +                    bestthistag = &accs[i];
  +                }
  +
  +                if (!bestthistag) {
  +                    /* The next bit is a fiddle. Some browsers might be
  +                     * configured to send more specific language ranges
  +                     * than desirable. For example, an Accept-Language of
  +                     * en-US should never match variants with languages en
  +                     * or en-GB. But US English speakers might pick en-US
  +                     * as their language choice.  So this fiddle checks if
  +                     * the language range has a prefix, and if so, it
  +                     * matches variants which match that prefix with a
  +                     * priority of 0.001. So a request for en-US would
  +                     * match variants of types en and en-GB, but at much
  +                     * lower priority than matches of en-US directly, or
  +                     * of any other language listed on the Accept-Language
  +                     * header
  +                     */
  +                    if ((p = strchr(accs[i].type_name, '-'))) {
  +                        int plen = p - accs[i].type_name;
  +                        if (!strncmp(lang, accs[i].type_name, plen)) {
  +                            fiddle_q = 0.001f;
  +                        }
  +                    }
  +                }
  +            }
  +            /* Finished looking at Accept-Language headers, the best
  +             * (longest) match is in bestthistag, or NULL if no match
  +             */
  +            if (!best ||
  +                (bestthistag && bestthistag->quality > best->quality)) {
  +                best = bestthistag;
  +            }
  +        }
  +
  +        variant->lang_quality = best
  +            ? best->quality
  +            : (star ? star->quality : fiddle_q);
       }
   
       /* Now set the old lang_index field. Since this is old 
  @@ -1177,17 +1265,21 @@
        * per variant, just use the first one assigned to it
        */
       idx = 0;
  -    if (variant->content_languages && variant->content_languages->nelts)
  -	firstlang = ((char**)variant->content_languages->elts)[0];
  -    else
  -	firstlang = "";
  -    if (naccept == 0)           /* Client doesn't care */
  -        idx = find_default_index (conf, firstlang);
  -    else                        /* Client has Accept-Language */
  -        idx = find_lang_index (neg->accept_langs, firstlang);
  +    if (variant->content_languages && variant->content_languages->nelts) {
  +        firstlang = ((char **) variant->content_languages->elts)[0];
  +    }
  +    else {
  +        firstlang = "";
  +    }
  +    if (naccept == 0) {         /* Client doesn't care */
  +        idx = find_default_index(conf, firstlang);
  +    }
  +    else {                      /* Client has Accept-Language */
  +        idx = find_lang_index(neg->accept_langs, firstlang);
  +    }
       variant->lang_index = idx;
   
  -    return;             
  +    return;
   }
   
   /* Determining the content length --- if the map didn't tell us,
  @@ -1203,11 +1295,13 @@
       struct stat statb;
   
       if (variant->bytes == 0) {
  -        char *fullname = make_full_path (neg->pool, neg->dir_name,
  -                                         variant->file_name);
  -        
  -        if (stat (fullname, &statb) >= 0)
  -	    variant->bytes = (float)statb.st_size;    /* Note, precision may be lost */
  +        char *fullname = make_full_path(neg->pool, neg->dir_name,
  +                                        variant->file_name);
  +
  +        if (stat(fullname, &statb) >= 0) {
  +            /* Note, precision may be lost */
  +            variant->bytes = (float) statb.st_size;
  +        }
       }
   
       return variant->bytes;
  @@ -1222,14 +1316,15 @@
   static void set_accept_quality(negotiation_state *neg, var_rec *variant)
   {
       int i;
  -    accept_rec *accept_recs = (accept_rec *)neg->accepts->elts;
  +    accept_rec *accept_recs = (accept_rec *) neg->accepts->elts;
       float q = 0.0f;
       int q_definite = 1;
   
       /* if no Accept: header, leave quality alone (will
        * remain at the default value of 1) */
  -    if (!neg->accepts || neg->accepts->nelts == 0) 
  +    if (!neg->accepts || neg->accepts->nelts == 0) {
           return;
  +    }
   
       /*
        * Go through each of the ranges on the Accept: header,
  @@ -1246,38 +1341,47 @@
   
           accept_rec *type = &accept_recs[i];
           int prev_mime_stars;
  -            
  +
           prev_mime_stars = variant->mime_stars;
   
  -        if (!mime_match(type, variant)) 
  +        if (!mime_match(type, variant)) {
               continue;           /* didn't match the content type at all */
  -        else 
  +        }
  +        else {
               /* did match - see if there were less or more stars than
                * in previous match
                */
  -            if (prev_mime_stars == variant->mime_stars)
  +            if (prev_mime_stars == variant->mime_stars) {
                   continue;       /* more stars => not as good a match */
  +            }
  +        }
   
           /* Check maxbytes -- not in HTTP/1.1 or Holtman */
  -                
  +
           if (type->max_bytes > 0
  -            && (find_content_length(neg, variant)
  -                > type->max_bytes))
  +            && (find_content_length(neg, variant) > type->max_bytes)) {
               continue;
  -        
  +        }
  +
           /* If we are allowed to mess with the q-values,
            * make wildcards very low, so we have a low chance
            * of ending up with them if there's something better.
            */
   
  -        if (!neg->accept_q && variant->mime_stars == 1) q = 0.01f;
  -        else if (!neg->accept_q && variant->mime_stars == 2) q = 0.02f;
  -        else q = type->quality;
  +        if (!neg->accept_q && variant->mime_stars == 1) {
  +            q = 0.01f;
  +        }
  +        else if (!neg->accept_q && variant->mime_stars == 2) {
  +            q = 0.02f;
  +        }
  +        else {
  +            q = type->quality;
  +        }
   
           q_definite = (variant->mime_stars == 3);
       }
       variant->accept_type_quality = q;
  -    variant->definite=variant->definite && q_definite;
  +    variant->definite = variant->definite && q_definite;
   
       /* if the _best_ quality we got for this variant was 0.0,
        * eliminate it now */
  @@ -1291,16 +1395,19 @@
   static void set_charset_quality(negotiation_state *neg, var_rec *variant)
   {
       int i;
  -    accept_rec *accept_recs = (accept_rec *)neg->accept_charsets->elts;
  +    accept_rec *accept_recs = (accept_rec *) neg->accept_charsets->elts;
       char *charset = variant->content_charset;
       accept_rec *star = NULL;
   
       /* if no Accept-Charset: header, leave quality alone (will
        * remain at the default value of 1) */
  -    if (!neg->accept_charsets || neg->accept_charsets->nelts == 0) 
  +    if (!neg->accept_charsets || neg->accept_charsets->nelts == 0) {
           return;
  +    }
   
  -    if (charset == NULL || !*charset) charset = "iso-8859-1";
  +    if (charset == NULL || !*charset) {
  +        charset = "iso-8859-1";
  +    }
   
       /*
        * Go through each of the items on the Accept-Charset: header,
  @@ -1310,13 +1417,13 @@
       for (i = 0; i < neg->accept_charsets->nelts; ++i) {
   
           accept_rec *type = &accept_recs[i];
  -            
  +
           if (!strcmp(type->type_name, charset)) {
               variant->charset_quality = type->quality;
               return;
  -        } else
  -        if (strcmp(type->type_name, "*") == 0) {
  -            star = type;    
  +        }
  +        else if (strcmp(type->type_name, "*") == 0) {
  +            star = type;
           }
       }
       /* No explicit match */
  @@ -1327,7 +1434,8 @@
       /* If this variant is in charset iso-8859-1, the default is 1.0 */
       if (strcmp(charset, "iso-8859-1") == 0) {
           variant->charset_quality = 1.0f;
  -    } else {
  +    }
  +    else {
           variant->charset_quality = 0.0f;
       }
   }
  @@ -1342,27 +1450,28 @@
    * use 7bit, 8bin or binary in their var files??
    */
   
  -static int is_identity_encoding (char *enc)
  +static int is_identity_encoding(char *enc)
   {
  -    return (!enc || !enc[0] || !strcmp (enc, "7bit") || !strcmp (enc, "8bit")
  -            || !strcmp (enc, "binary"));
  +    return (!enc || !enc[0] || !strcmp(enc, "7bit") || !strcmp(enc, "8bit")
  +            || !strcmp(enc, "binary"));
   }
   
   static void set_encoding_quality(negotiation_state *neg, var_rec *variant)
   {
       int i;
  -    accept_rec *accept_recs = (accept_rec *)neg->accept_encodings->elts;
  +    accept_rec *accept_recs = (accept_rec *) neg->accept_encodings->elts;
       char *enc = variant->content_encoding;
   
  -    if (!enc || is_identity_encoding(enc))
  +    if (!enc || is_identity_encoding(enc)) {
           return;
  -    
  +    }
  +
   
       /* if no Accept: header, leave quality alone (will
        * remain at the default value of 1) */
       if (neg->accept_encodings->nelts == 0) {
           /* If we had an empty Accept-Encoding header, assume that
  -	 * no encodings are acceptable, else all encodings are ok */
  +         * no encodings are acceptable, else all encodings are ok */
           variant->encoding_quality = neg->have_accept_header ? 0 : 1;
           return;
       }
  @@ -1419,7 +1528,8 @@
   /* Firstly, the negotiation 'network algorithm' from Holtman.
    */
   
  -static int is_variant_better_na(negotiation_state *neg, var_rec *variant, var_rec *best, float *p_bestq)
  +static int is_variant_better_na(negotiation_state *neg, var_rec *variant,
  +                                var_rec *best, float *p_bestq)
   {
       float bestq = *p_bestq, q;
   
  @@ -1427,32 +1537,35 @@
        * transparent neg draft, so we ignored it here. But
        * it does mean we could return encodings the UA
        * or proxy cannot handle. Eek. */
  -    
  +
       q = variant->accept_type_quality *
           variant->type_quality *
           variant->charset_quality *
           variant->lang_quality;
  -    
  +
   #ifdef NEG_DEBUG
  -    fprintf(stderr, "Variant: file=%s type=%s lang=%s acceptq=%1.3f langq=%1.3f typeq=%1.3f q=%1.3f definite=%d\n",
  -            variant->file_name ? variant->file_name : "",
  -            variant->type_name ? variant->type_name : "",
  -            variant->content_languages ? merge_string_array(neg->pool, variant->content_languages, ",") : "",
  +    fprintf(stderr, "Variant: file=%s type=%s lang=%s acceptq=%1.3f "
  +            "langq=%1.3f typeq=%1.3f q=%1.3f definite=%d\n",
  +            (variant->file_name ? variant->file_name : ""),
  +            (variant->type_name ? variant->type_name : ""),
  +            (variant->content_languages
  +             ? merge_string_array(neg->pool, variant->content_languages, ",")
  +             : ""),
               variant->accept_type_quality,
               variant->lang_quality,
               variant->type_quality,
               q,
  -            variant->definite
  -            );
  +            variant->definite);
   #endif
  -    
  +
       if (q > bestq) {
           *p_bestq = q;
           return 1;
       }
  -    if (q == bestq) {	
  +    if (q == bestq) {
           /* If the best variant's charset is ISO-8859-1 and this variant has
  -           the same charset quality, then we prefer this variant */
  +         * the same charset quality, then we prefer this variant
  +         */
           if (variant->charset_quality == best->charset_quality &&
               (variant->content_charset != NULL &&
                *variant->content_charset != '\0' &&
  @@ -1462,10 +1575,10 @@
                strcmp(best->content_charset, "iso-8859-1") == 0)) {
               *p_bestq = q;
               return 1;
  -	}
  +        }
       }
       return 0;
  -}    
  +}
   
   /* Negotiation algorithm as used by previous versions of Apache
    * (just about). 
  @@ -1504,76 +1617,84 @@
           variant->lang_quality == 0 ||
           variant->type_quality == 0 ||
           variant->charset_quality == 0 ||
  -        variant->accept_type_quality == 0)
  +        variant->accept_type_quality == 0) {
           return 0;               /* don't consider unacceptables */
  -    
  +    }
  +
       q = variant->accept_type_quality * variant->type_quality;
  -    if (q == 0.0 || q < bestq) return 0;
  +    if (q == 0.0 || q < bestq) {
  +        return 0;
  +    }
       if (q > bestq || !best) {
           *p_bestq = q;
           return 1;
       }
  -    
  +
       /* language */
  -    if (variant->lang_quality < best->lang_quality)
  +    if (variant->lang_quality < best->lang_quality) {
           return 0;
  +    }
       if (variant->lang_quality > best->lang_quality) {
           *p_bestq = q;
           return 1;
       }
  -    
  +
       /* if language qualities were equal, try the LanguagePriority
        * stuff */
  -    if (best->lang_index != -1 && variant->lang_index > best->lang_index)
  +    if (best->lang_index != -1 && variant->lang_index > best->lang_index) {
           return 0;
  +    }
       if (variant->lang_index != -1 &&
           (variant->lang_index < best->lang_index || best->lang_index == -1)) {
           *p_bestq = q;
           return 1;
       }
  -    
  +
       /* content-type level (text/html only?) */
  -    levcmp = level_cmp (variant, best);
  -    if (levcmp == -1) return 0;
  +    levcmp = level_cmp(variant, best);
  +    if (levcmp == -1) {
  +        return 0;
  +    }
       if (levcmp == 1) {
           *p_bestq = q;
           return 1;
       }
  -    
  +
       /* encoding -- can only be 1 or 0, and if 0 we eliminated this
        * variant at the start of this function. However we 
        * prefer variants with no encoding over those with encoding */
  -    if (!*best->content_encoding && *variant->content_encoding)
  -	return 0;
  +    if (!*best->content_encoding && *variant->content_encoding) {
  +        return 0;
  +    }
       if (*best->content_encoding && !*variant->content_encoding) {
  -	*p_bestq = q;
  -	return 1;
  +        *p_bestq = q;
  +        return 1;
       }
  -    
   
       /* charset */
  -    if (variant->charset_quality < best->charset_quality)
  +    if (variant->charset_quality < best->charset_quality) {
           return 0;
  +    }
       /* If the best variant's charset is ISO-8859-1 and this variant has
  -       the same charset quality, then we prefer this variant */
  +     * the same charset quality, then we prefer this variant
  +     */
       if (variant->charset_quality > best->charset_quality ||
  -	((variant->content_charset != NULL &&
  +        ((variant->content_charset != NULL &&
             *variant->content_charset != '\0' &&
  -	  strcmp(variant->content_charset, "iso-8859-1") != 0) &&
  -	 (best->content_charset == NULL ||
  -	  *best->content_charset == '\0' ||
  -	  strcmp(best->content_charset, "iso-8859-1") == 0))) {
  +          strcmp(variant->content_charset, "iso-8859-1") != 0) &&
  +         (best->content_charset == NULL ||
  +          *best->content_charset == '\0' ||
  +          strcmp(best->content_charset, "iso-8859-1") == 0))) {
           *p_bestq = q;
           return 1;
       }
  -    
  -    
  +
  +
       /* content length if all else equal */
  -    if (find_content_length(neg, variant)
  -         >=
  -         find_content_length(neg, best))
  +    if (find_content_length(neg, variant) >= find_content_length(neg, best)) {
           return 0;
  -    
  +    }
  +
       /* ok, to get here means every thing turned out equal, except
        * we have a shorter content length, so use this variant */
       *p_bestq = q;
  @@ -1586,8 +1707,8 @@
       var_rec *best = NULL;
       float bestq = 0.0f;
       enum algorithm_results algorithm_result = na_not_applied;
  -    
  -    var_rec *avail_recs = (var_rec *)neg->avail_vars->elts;
  +
  +    var_rec *avail_recs = (var_rec *) neg->avail_vars->elts;
   
       set_default_lang_quality(neg);
   
  @@ -1596,7 +1717,6 @@
        */
   
       for (j = 0; j < neg->avail_vars->nelts; ++j) {
  -            
           var_rec *variant = &avail_recs[j];
   
           /* Find all the relevant 'quality' values from the
  @@ -1615,20 +1735,23 @@
            */
   
           if (neg->use_transparent_neg) {
  -            if (is_variant_better_na(neg, variant, best, &bestq))
  +            if (is_variant_better_na(neg, variant, best, &bestq)) {
                   best = variant;
  -        } 
  +            }
  +        }
           else {
  -            if (is_variant_better(neg, variant, best, &bestq))
  +            if (is_variant_better(neg, variant, best, &bestq)) {
                   best = variant;
  +            }
           }
       }
   
       /* We now either have a best variant, or no best variant 
        */
       if (neg->use_transparent_neg) {
  -        if (neg->short_accept_headers)
  +        if (neg->short_accept_headers) {
               algorithm_result = na_list;
  +        }
           else {
               /* From Holtman, result is:
                *   If variant & URI are not neigbors, list_ua or list_os
  @@ -1643,14 +1766,16 @@
   
               /* assume variant and URI are neigbors (since URI in
                * var map must be in same directory) */
  -            
  -            if(neg->use_transparent_neg)
  -               algorithm_result = (best && best->definite) && (bestq>0)
  -                                       ? na_choice : na_list;
  -            else
  -               algorithm_result = bestq>0 ? na_choice : na_list;
  +
  +            if (neg->use_transparent_neg) {
  +                algorithm_result = (best && best->definite) && (bestq > 0)
  +                    ? na_choice : na_list;
  +            }
  +            else {
  +                algorithm_result = bestq > 0 ? na_choice : na_list;
  +            }
           }
  -    }   
  +    }
   
       *pbest = best;
       return algorithm_result;
  @@ -1671,10 +1796,11 @@
    * configurable in the map file.
    */
   
  -static void set_neg_headers(request_rec *r, negotiation_state *neg, int na_result)
  +static void set_neg_headers(request_rec *r, negotiation_state *neg,
  +                            int na_result)
   {
       int j;
  -    var_rec *avail_recs = (var_rec *)neg->avail_vars->elts;
  +    var_rec *avail_recs = (var_rec *) neg->avail_vars->elts;
       char *sample_type = NULL;
       char *sample_language = NULL;
       char *sample_encoding = NULL;
  @@ -1690,12 +1816,11 @@
       hdrs = r->err_headers_out;
   
       for (j = 0; j < neg->avail_vars->nelts; ++j) {
  -            
           var_rec *variant = &avail_recs[j];
           char *rec;
           char qstr[6];
           long len;
  -        char lenstr[22];                /* enough for 2^64 */
  +        char lenstr[22];        /* enough for 2^64 */
   
           ap_snprintf(qstr, sizeof(qstr), "%1.3f", variant->type_quality);
   
  @@ -1709,58 +1834,78 @@
                   }
               }
           }
  -                              
  +
           rec = pstrcat(r->pool, "{\"", variant->file_name, "\" ", qstr, NULL);
           if (variant->type_name) {
  -	    if (*variant->type_name)
  -	        rec = pstrcat(r->pool, rec, " {type ", 
  -			      variant->type_name, "}", NULL);
  -	    if (!sample_type) sample_type = variant->type_name;
  -	    else if (strcmp(sample_type, variant->type_name))
  -	      vary_by_type = 1;
  +            if (*variant->type_name) {
  +                rec = pstrcat(r->pool, rec, " {type ",
  +                              variant->type_name, "}", NULL);
  +            }
  +            if (!sample_type) {
  +                sample_type = variant->type_name;
  +            }
  +            else if (strcmp(sample_type, variant->type_name)) {
  +                vary_by_type = 1;
  +            }
           }
           if (variant->content_languages && variant->content_languages->nelts) {
  -	    char *langs = 
  -		merge_string_array (r->pool, variant->content_languages, ",");
  -	    rec = pstrcat(r->pool, rec, " {language ", langs, "}", NULL);
  -            if (!sample_language) sample_language = langs;
  -            else if (strcmp(sample_language, langs))
  +            char *langs = merge_string_array(r->pool,
  +                                           variant->content_languages, ",");
  +            rec = pstrcat(r->pool, rec, " {language ", langs, "}", NULL);
  +            if (!sample_language) {
  +                sample_language = langs;
  +            }
  +            else if (strcmp(sample_language, langs)) {
                   vary_by_language = 1;
  +            }
           }
           if (variant->content_encoding) {
  -            if (!sample_encoding) sample_encoding = variant->content_encoding;
  -            else if (strcmp(sample_encoding, variant->content_encoding))
  +            if (!sample_encoding) {
  +                sample_encoding = variant->content_encoding;
  +            }
  +            else if (strcmp(sample_encoding, variant->content_encoding)) {
                   vary_by_encoding = 1;
  +            }
           }
           if (variant->content_charset) {
  -            if (*variant->content_charset)
  -                rec = pstrcat(r->pool, rec, " {charset ", 
  +            if (*variant->content_charset) {
  +                rec = pstrcat(r->pool, rec, " {charset ",
                                 variant->content_charset, "}", NULL);
  -            if (!sample_charset) sample_charset = variant->content_charset;
  -            else if (strcmp(sample_charset, variant->content_charset))
  +            }
  +            if (!sample_charset) {
  +                sample_charset = variant->content_charset;
  +            }
  +            else if (strcmp(sample_charset, variant->content_charset)) {
                   vary_by_charset = 1;
  +            }
           }
  -        if ((len = (long)find_content_length(neg, variant)) != 0) {
  +        if ((len = (long) find_content_length(neg, variant)) != 0) {
               ap_snprintf(lenstr, sizeof(lenstr), "%ld", len);
               rec = pstrcat(r->pool, rec, " {length ", lenstr, "}", NULL);
           }
  -        
  +
           rec = pstrcat(r->pool, rec, "}", NULL);
  -        
  -        if (na_result != na_not_applied)
  +
  +        if (na_result != na_not_applied) {
               table_merge(hdrs, "Alternates", rec);
  +        }
       }
   
  -    if (na_result != na_not_applied)
  +    if (na_result != na_not_applied) {
           table_merge(hdrs, "Vary", "negotiate");
  -    if (vary_by_type) 
  +    }
  +    if (vary_by_type) {
           table_merge(hdrs, "Vary", "accept");
  -    if (vary_by_language) 
  +    }
  +    if (vary_by_language) {
           table_merge(hdrs, "Vary", "accept-language");
  -    if (vary_by_charset) 
  +    }
  +    if (vary_by_charset) {
           table_merge(hdrs, "Vary", "accept-charset");
  -    if (vary_by_encoding && na_result == na_not_applied) 
  +    }
  +    if (vary_by_encoding && na_result == na_not_applied) {
           table_merge(hdrs, "Vary", "accept-encoding");
  +    }
   }
   
   /**********************************************************************
  @@ -1769,45 +1914,51 @@
    * 300 or 406 status body.
    */
   
  -static char *make_variant_list (request_rec *r, negotiation_state *neg)
  +static char *make_variant_list(request_rec *r, negotiation_state *neg)
   {
       int i;
       char *t;
   
       t = pstrdup(r->pool, "Available variants:\n<ul>\n");
       for (i = 0; i < neg->avail_vars->nelts; ++i) {
  -        var_rec *variant = &((var_rec *)neg->avail_vars->elts)[i];
  +        var_rec *variant = &((var_rec *) neg->avail_vars->elts)[i];
           char *filename = variant->file_name ? variant->file_name : "";
           array_header *languages = variant->content_languages;
           char *description = variant->description ? variant->description : "";
   
  -	/* The format isn't very neat, and it would be nice to make
  -	 * the tags human readable (eg replace 'language en' with
  -	 * 'English'). */
  -        t = pstrcat(r->pool, t, "<li><a href=\"", filename, "\">", 
  +        /* The format isn't very neat, and it would be nice to make
  +         * the tags human readable (eg replace 'language en' with
  +         * 'English'). */
  +        t = pstrcat(r->pool, t, "<li><a href=\"", filename, "\">",
                       filename, "</a> ", description, NULL);
  -	if (variant->type_name && *variant->type_name)
  -	    t = pstrcat(r->pool, t, ", type ", variant->type_name, NULL);
  -	if (languages && languages->nelts)
  -	    t = pstrcat(r->pool, t, ", language ",
  -			merge_string_array(r->pool, languages, ", "),
  -			NULL);
  -	if (variant->content_charset && *variant->content_charset)
  -	    t = pstrcat(r->pool, t, ", charset ", variant->content_charset, NULL);
  -	t = pstrcat(r->pool, t, "\n", NULL);
  +        if (variant->type_name && *variant->type_name) {
  +            t = pstrcat(r->pool, t, ", type ", variant->type_name, NULL);
  +        }
  +        if (languages && languages->nelts) {
  +            t = pstrcat(r->pool, t, ", language ",
  +                        merge_string_array(r->pool, languages, ", "),
  +                        NULL);
  +        }
  +        if (variant->content_charset && *variant->content_charset) {
  +            t = pstrcat(r->pool, t, ", charset ", variant->content_charset,
  +                        NULL);
  +        }
  +        t = pstrcat(r->pool, t, "\n", NULL);
       }
       t = pstrcat(r->pool, t, "</ul>\n", NULL);
   
       return t;
   }
   
  -static void store_variant_list (request_rec *r, negotiation_state *neg)
  +static void store_variant_list(request_rec *r, negotiation_state *neg)
   {
  -  if (r->main == NULL) {
  -     table_set (r->notes, "variant-list", make_variant_list (r, neg));
  -  } else {
  -     table_set (r->main->notes, "variant-list", make_variant_list (r->main, neg));
  -  }
  +    if (r->main == NULL) {
  +        table_set(r->notes, "variant-list", make_variant_list(r, neg));
  +    }
  +    else {
  +        table_set(r->main->notes, "variant-list",
  +                  make_variant_list(r->main, neg));
  +    }
   }
   
   /* Called if we got a "Choice" response from the network algorithm.
  @@ -1832,9 +1983,9 @@
           }
           variant->sub_req = sub_req;
       }
  -    else 
  +    else {
           sub_req = variant->sub_req;
  -    
  +    }
   
       /* The network algorithm told us to return a "Choice"
        * response. This is the normal variant response, with
  @@ -1846,13 +1997,15 @@
   
       if ((sub_req->status == HTTP_MULTIPLE_CHOICES) ||
           (table_get(sub_req->err_headers_out, "Alternates")) ||
  -        (table_get(sub_req->err_headers_out, "Content-Location")))
  +        (table_get(sub_req->err_headers_out, "Content-Location"))) {
           return VARIANT_ALSO_VARIES;
  -    
  -    if ((sub_vary = table_get(sub_req->err_headers_out, "Vary")) != NULL)
  +    }
  +
  +    if ((sub_vary = table_get(sub_req->err_headers_out, "Vary")) != NULL) {
           table_set(r->err_headers_out, "Variant-Vary", sub_vary);
  +    }
       table_set(r->err_headers_out, "Content-Location", variant->file_name);
  -    set_neg_headers(r, neg, na_choice); /* add Alternates and Vary */
  +    set_neg_headers(r, neg, na_choice);         /* add Alternates and Vary */
       /* to do: add Expires */
   
       return 0;
  @@ -1863,19 +2016,21 @@
    * Executive...
    */
   
  -static int handle_map_file (request_rec *r)
  +static int handle_map_file(request_rec *r)
   {
  -    negotiation_state *neg = parse_accept_headers (r);
  +    negotiation_state *neg = parse_accept_headers(r);
       var_rec *best;
       int res;
       int na_result;
  -    
  +
       char *udir;
  -    
  -    if ((res = read_type_map (neg, r))) return res;
  -    
  +
  +    if ((res = read_type_map(neg, r))) {
  +        return res;
  +    }
  +
       maybe_add_default_encodings(neg, 0);
  -    
  +
       na_result = best_match(neg, &best);
   
       /* na_result is one of
  @@ -1886,44 +2041,48 @@
   
       if (na_result == na_list) {
           set_neg_headers(r, neg, na_list);
  -        store_variant_list (r, neg);
  +        store_variant_list(r, neg);
           return MULTIPLE_CHOICES;
       }
   
       if (!best) {
  -      aplog_error(APLOG_MARK, APLOG_ERR, r->server,
  -		  "no acceptable variant", r->filename);
  +        aplog_error(APLOG_MARK, APLOG_ERR, r->server,
  +                    "no acceptable variant", r->filename);
   
  -      set_neg_headers(r, neg, na_result);
  -      store_variant_list (r, neg);
  -      return NOT_ACCEPTABLE;
  +        set_neg_headers(r, neg, na_result);
  +        store_variant_list(r, neg);
  +        return NOT_ACCEPTABLE;
       }
   
  -    if (na_result == na_choice)
  -        if ((res = setup_choice_response(r, neg, best)) != 0)
  +    if (na_result == na_choice) {
  +        if ((res = setup_choice_response(r, neg, best)) != 0) {
               return res;
  +        }
  +    }
   
       /* Make sure caching works - Vary should handle HTTP/1.1, but for
        * HTTP/1.0, we can't allow caching at all. NB that we merge the
        * header in case some other module negotiates on something else.
        */
  -    if (!do_cache_negotiated_docs(r->server) && (r->proto_num < 1001))
  +    if (!do_cache_negotiated_docs(r->server) && (r->proto_num < 1001)) {
           r->no_cache = 1;
  +    }
   
  -    if (na_result == na_not_applied)
  +    if (na_result == na_not_applied) {
           set_neg_headers(r, neg, na_not_applied);
  +    }
   
       if (r->path_info && *r->path_info) {
           r->uri[find_path_info(r->uri, r->path_info)] = '\0';
       }
  -    udir = make_dirstr_parent (r->pool, r->uri);
  +    udir = make_dirstr_parent(r->pool, r->uri);
       udir = escape_uri(r->pool, udir);
       internal_redirect(pstrcat(r->pool, udir, best->file_name, r->path_info,
                                 NULL), r);
       return OK;
   }
   
  -static int handle_multi (request_rec *r)
  +static int handle_multi(request_rec *r)
   {
       negotiation_state *neg;
       var_rec *best, *avail_recs;
  @@ -1931,16 +2090,17 @@
       int res;
       int j;
       int na_result;              /* result of network algorithm */
  -    
  -    if (r->finfo.st_mode != 0 || !(allow_options (r) & OPT_MULTI))
  +
  +    if (r->finfo.st_mode != 0 || !(allow_options(r) & OPT_MULTI)) {
           return DECLINED;
  -    
  -    neg = parse_accept_headers (r);
  -    
  -    if ((res = read_types_multi (neg))) {
  -return_from_multi:
  -	/* free all allocated memory from subrequests */
  -        avail_recs = (var_rec *)neg->avail_vars->elts;
  +    }
  +
  +    neg = parse_accept_headers(r);
  +
  +    if ((res = read_types_multi(neg))) {
  +      return_from_multi:
  +        /* free all allocated memory from subrequests */
  +        avail_recs = (var_rec *) neg->avail_vars->elts;
           for (j = 0; j < neg->avail_vars->nelts; ++j) {
               var_rec *variant = &avail_recs[j];
               if (variant->sub_req) {
  @@ -1949,70 +2109,75 @@
           }
           return res;
       }
  -    if (neg->avail_vars->nelts == 0) return DECLINED;
  +    if (neg->avail_vars->nelts == 0) {
  +        return DECLINED;
  +    }
   
       maybe_add_default_encodings(neg,
  -                                r->method_number != M_GET
  -                                  || r->args || r->path_info);
  -    
  +                                (r->method_number != M_GET) ||
  +                                r->args || r->path_info);
  +
       na_result = best_match(neg, &best);
       if (na_result == na_list) {
           /*
            * Network algorithm tols us to output a "List" response.
  -	 * This is output at a 300 status code, which we will
  -	 * return. The list of variants will be stored in r->notes
  -	 * under the name "variants-list".
  +         * This is output at a 300 status code, which we will
  +         * return. The list of variants will be stored in r->notes
  +         * under the name "variants-list".
            */
  -        set_neg_headers(r, neg, na_list); /* set Alternates: and Vary: */
  +        set_neg_headers(r, neg, na_list);       /* set Alternates: and Vary: */
   
  -        store_variant_list (r, neg);
  +        store_variant_list(r, neg);
           res = MULTIPLE_CHOICES;
           goto return_from_multi;
       }
   
       if (!best) {
  -      aplog_error(APLOG_MARK, APLOG_ERR, r->server,
  -		  "no acceptable variant", r->filename);
  +        aplog_error(APLOG_MARK, APLOG_ERR, r->server,
  +                    "no acceptable variant", r->filename);
   
  -      set_neg_headers (r, neg, na_result);
  -      store_variant_list (r, neg);
  -      res = NOT_ACCEPTABLE;
  -      goto return_from_multi;
  +        set_neg_headers(r, neg, na_result);
  +        store_variant_list(r, neg);
  +        res = NOT_ACCEPTABLE;
  +        goto return_from_multi;
       }
   
  -    if (na_result == na_choice)
  +    if (na_result == na_choice) {
           if ((res = setup_choice_response(r, neg, best)) != 0) {
               goto return_from_multi;
           }
  +    }
   
  -    if (! (sub_req = best->sub_req)) {
  +    if (!(sub_req = best->sub_req)) {
           /* We got this out of a map file, so we don't actually have
            * a sub_req structure yet.  Get one now.
            */
  -      
  -        sub_req = sub_req_lookup_file (best->file_name, r);
  +
  +        sub_req = sub_req_lookup_file(best->file_name, r);
           if (sub_req->status != HTTP_OK) {
  -           res = sub_req->status;
  -           destroy_sub_req(sub_req);
  -           goto return_from_multi;
  +            res = sub_req->status;
  +            destroy_sub_req(sub_req);
  +            goto return_from_multi;
           }
       }
  -      
  +
       /* BLETCH --- don't multi-resolve non-ordinary files */
   
       if (!S_ISREG(sub_req->finfo.st_mode)) {
  -	res = NOT_FOUND;
  -	goto return_from_multi;
  +        res = NOT_FOUND;
  +        goto return_from_multi;
       }
  -    
  +
       /* Otherwise, use it. */
  -    
  +
       if ((!do_cache_negotiated_docs(r->server) && (r->proto_num < 1001))
  -	&& neg->count_multiviews_variants != 1)
  +        && neg->count_multiviews_variants != 1) {
           r->no_cache = 1;
  +    }
   
  -    if (na_result == na_not_applied)
  +    if (na_result == na_not_applied) {
           set_neg_headers(r, neg, na_not_applied);
  +    }
   
       r->filename = sub_req->filename;
       r->handler = sub_req->handler;
  @@ -2025,45 +2190,47 @@
       /* copy output headers from subrequest, but leave negotiation headers */
       r->notes = overlay_tables(r->pool, sub_req->notes, r->notes);
       r->headers_out = overlay_tables(r->pool, sub_req->headers_out,
  -                                             r->headers_out);
  +                                    r->headers_out);
       r->err_headers_out = overlay_tables(r->pool, sub_req->err_headers_out,
  -                                                 r->err_headers_out);
  +                                        r->err_headers_out);
       r->subprocess_env = overlay_tables(r->pool, sub_req->subprocess_env,
  -						r->subprocess_env);
  -    avail_recs = (var_rec *)neg->avail_vars->elts;
  +                                       r->subprocess_env);
  +    avail_recs = (var_rec *) neg->avail_vars->elts;
       for (j = 0; j < neg->avail_vars->nelts; ++j) {
           var_rec *variant = &avail_recs[j];
           if (variant != best && variant->sub_req) {
  -	    destroy_sub_req(variant->sub_req);
  +            destroy_sub_req(variant->sub_req);
           }
       }
       return OK;
   }
   
  -static handler_rec negotiation_handlers[] = {
  -{ MAP_FILE_MAGIC_TYPE, handle_map_file },
  -{ "type-map", handle_map_file },
  -{ NULL }
  +static handler_rec negotiation_handlers[] =
  +{
  +    {MAP_FILE_MAGIC_TYPE, handle_map_file},
  +    {"type-map", handle_map_file},
  +    {NULL}
   };
   
  -module MODULE_VAR_EXPORT negotiation_module = {
  -   STANDARD_MODULE_STUFF,
  -   NULL,			/* initializer */
  -   create_neg_dir_config,	/* dir config creater */
  -   merge_neg_dir_configs,	/* dir merger --- default is to override */
  -   NULL,			/* server config */
  -   NULL,			/* merge server config */
  -   negotiation_cmds,		/* command table */
  -   negotiation_handlers,	/* handlers */
  -   NULL,			/* filename translation */
  -   NULL,			/* check_user_id */
  -   NULL,			/* check auth */
  -   NULL,			/* check access */
  -   handle_multi,		/* type_checker */
  -   NULL,			/* fixups */
  -   NULL,			/* logger */
  -   NULL,			/* header parser */
  -   NULL,			/* child_init */
  -   NULL,			/* child_exit */
  -   NULL				/* post read-request */
  +module MODULE_VAR_EXPORT negotiation_module =
  +{
  +    STANDARD_MODULE_STUFF,
  +    NULL,                       /* initializer */
  +    create_neg_dir_config,      /* dir config creater */
  +    merge_neg_dir_configs,      /* dir merger --- default is to override */
  +    NULL,                       /* server config */
  +    NULL,                       /* merge server config */
  +    negotiation_cmds,           /* command table */
  +    negotiation_handlers,       /* handlers */
  +    NULL,                       /* filename translation */
  +    NULL,                       /* check_user_id */
  +    NULL,                       /* check auth */
  +    NULL,                       /* check access */
  +    handle_multi,               /* type_checker */
  +    NULL,                       /* fixups */
  +    NULL,                       /* logger */
  +    NULL,                       /* header parser */
  +    NULL,                       /* child_init */
  +    NULL,                       /* child_exit */
  +    NULL                        /* post read-request */
   };
  
  
  
  1.9       +143 -142  apachen/src/modules/standard/mod_setenvif.c
  
  Index: mod_setenvif.c
  ===================================================================
  RCS file: /export/home/cvs/apachen/src/modules/standard/mod_setenvif.c,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- mod_setenvif.c	1997/08/25 15:39:20	1.8
  +++ mod_setenvif.c	1997/09/15 17:19:56	1.9
  @@ -115,10 +115,10 @@
   #include "http_log.h"
   
   typedef struct {
  -    char *name;			/* header name */
  -    char *regex;		/* regex to match against */
  -    regex_t *preg;		/* compiled regex */
  -    table *features;		/* env vars to set (or unset) */
  +    char *name;                 /* header name */
  +    char *regex;                /* regex to match against */
  +    regex_t *preg;              /* compiled regex */
  +    table *features;            /* env vars to set (or unset) */
   } sei_entry;
   
   typedef struct {
  @@ -129,20 +129,19 @@
   
   static void *create_setenvif_config(pool *p, server_rec *dummy)
   {
  -    sei_cfg_rec *new = (sei_cfg_rec *)palloc(p, sizeof(sei_cfg_rec));
  +    sei_cfg_rec *new = (sei_cfg_rec *) palloc(p, sizeof(sei_cfg_rec));
   
       new->conditionals = make_array(p, 20, sizeof(sei_entry));
  -    return (void *)new;
  +    return (void *) new;
   }
   
   static void *merge_setenvif_config(pool *p, void *basev, void *overridesv)
   {
  -    sei_cfg_rec *a =
  -	pcalloc(p, sizeof(sei_cfg_rec));
  +    sei_cfg_rec *a = pcalloc(p, sizeof(sei_cfg_rec));
       sei_cfg_rec *base = basev, *overrides = overridesv;
   
  -    a->conditionals = append_arrays(p, base->conditionals, 
  -				    overrides->conditionals);
  +    a->conditionals = append_arrays(p, base->conditionals,
  +                                    overrides->conditionals);
       return a;
   }
   
  @@ -152,13 +151,12 @@
       char *regex;
       const char *feature;
       const char *cmdline = args;
  -    sei_cfg_rec *sconf =
  -	get_module_config(cmd->server->module_config, &setenvif_module);
  -    sei_entry *new, *entries = 
  -	(sei_entry *)sconf->conditionals->elts;
  +    sei_cfg_rec *sconf = get_module_config(cmd->server->module_config,
  +                                           &setenvif_module);
  +    sei_entry *new, *entries = (sei_entry *) sconf->conditionals->elts;
       char *var;
       int i;
  -    int cflags = (int)(long)cmd->info;
  +    int cflags = (int) (long) cmd->info;
       char *error;
       int beenhere = 0;
   
  @@ -167,71 +165,72 @@
        */
       fname = getword_conf(cmd->pool, &cmdline);
       if (!*fname) {
  -	error = pstrcat(cmd->pool, "Missing header-field name for ",
  -			cmd->cmd->name, NULL);
  -	return error;
  +        error = pstrcat(cmd->pool, "Missing header-field name for ",
  +                        cmd->cmd->name, NULL);
  +        return error;
       }
       regex = getword_conf(cmd->pool, &cmdline);
       if (!*regex) {
  -	error = pstrcat(cmd->pool, "Missing regular expression for ",
  -		        cmd->cmd->name, NULL);
  -	return error;
  +        error = pstrcat(cmd->pool, "Missing regular expression for ",
  +                        cmd->cmd->name, NULL);
  +        return error;
       }
       while ((feature = getword_conf(cmd->pool, &cmdline))) {
  -	beenhere++;
  +        beenhere++;
   
  -	/*
  -	 * First, try to merge into an existing entry
  -	 */
  -
  -	for (i = 0; i < sconf->conditionals->nelts; ++i) {
  -	    sei_entry *b = &entries[i];
  -	    if (!strcmp(b->name, fname) && !strcmp(b->regex, regex)) {
  -		var = getword(cmd->pool, &feature, '=');
  -		if (*feature) {
  -		    table_set(b->features, var, feature);
  -		}
  -		else if (*var == '!') {
  -		    table_set(b->features, var + 1, "!");
  -		}
  -		else {
  -		    table_set(b->features, var, "1");
  -		}
  -		return NULL;
  -	    }
  -	}
  -
  -	/*
  -	 * If none was found, create a new entry
  -	 */
  -
  -	new = push_array(sconf->conditionals);
  -	new->name = fname;
  -	new->regex = regex;
  -	new->preg = pregcomp (cmd->pool, regex, REG_EXTENDED|REG_NOSUB|cflags);
  -	if (new->preg == NULL) {
  -	    error = pstrcat(cmd->pool, cmd->cmd->name,
  -			    " regex could not be compiled.", NULL);
  -	    return error;
  -	}
  -	new->features = make_table(cmd->pool, 5);
  -
  -	var = getword(cmd->pool, &feature, '=');
  -	if (*feature) {
  -	    table_set(new->features, var, feature);
  -	}
  -	else if (*var == '!') {
  -	    table_set(new->features, var + 1, "!");
  -	}
  -	else {
  -	    table_set(new->features, var, "1");
  -	}
  +        /*
  +         * First, try to merge into an existing entry
  +         */
  +
  +        for (i = 0; i < sconf->conditionals->nelts; ++i) {
  +            sei_entry *b = &entries[i];
  +            if (!strcmp(b->name, fname) && !strcmp(b->regex, regex)) {
  +                var = getword(cmd->pool, &feature, '=');
  +                if (*feature) {
  +                    table_set(b->features, var, feature);
  +                }
  +                else if (*var == '!') {
  +                    table_set(b->features, var + 1, "!");
  +                }
  +                else {
  +                    table_set(b->features, var, "1");
  +                }
  +                return NULL;
  +            }
  +        }
  +
  +        /*
  +         * If none was found, create a new entry
  +         */
  +
  +        new = push_array(sconf->conditionals);
  +        new->name = fname;
  +        new->regex = regex;
  +        new->preg = pregcomp(cmd->pool, regex,
  +                             (REG_EXTENDED | REG_NOSUB | cflags));
  +        if (new->preg == NULL) {
  +            error = pstrcat(cmd->pool, cmd->cmd->name,
  +                            " regex could not be compiled.", NULL);
  +            return error;
  +        }
  +        new->features = make_table(cmd->pool, 5);
  +
  +        var = getword(cmd->pool, &feature, '=');
  +        if (*feature) {
  +            table_set(new->features, var, feature);
  +        }
  +        else if (*var == '!') {
  +            table_set(new->features, var + 1, "!");
  +        }
  +        else {
  +            table_set(new->features, var, "1");
  +        }
       }
   
       if (!beenhere) {
  -	error = pstrcat(cmd->pool, "Missing envariable expression for ",
  -		        cmd->cmd->name, NULL);
  -	return error;
  +        error = pstrcat(cmd->pool, "Missing envariable expression for ",
  +                        cmd->cmd->name, NULL);
  +        return error;
       }
   
       return NULL;
  @@ -243,7 +242,7 @@
    * command handler.
    */
   static const char *add_browser(cmd_parms *cmd, void *mconfig, char *word1,
  -			       char *word2)
  +                               char *word2)
   {
       const char *match_command;
   
  @@ -251,90 +250,92 @@
       return add_setenvif(cmd, mconfig, match_command);
   }
   
  -static command_rec setenvif_module_cmds[] = {
  -{ "SetEnvIf", add_setenvif, (void *)0,
  -    RSRC_CONF, RAW_ARGS, "A header-name, regex and a list of variables." },
  -{ "SetEnvIfNoCase", add_setenvif, (void *)REG_ICASE,
  -    RSRC_CONF, RAW_ARGS, "a header-name, regex and a list of variables." },
  -{ "BrowserMatch", add_browser, (void *)0,
  -    RSRC_CONF, ITERATE2, "A browser regex and a list of variables." },
  -{ "BrowserMatchNoCase", add_browser, (void *)REG_ICASE,
  -    RSRC_CONF, ITERATE2, "A browser regex and a list of variables." },
  -{ NULL },
  +static command_rec setenvif_module_cmds[] =
  +{
  +    {"SetEnvIf", add_setenvif, (void *) 0,
  +     RSRC_CONF, RAW_ARGS, "A header-name, regex and a list of variables."},
  +    {"SetEnvIfNoCase", add_setenvif, (void *) REG_ICASE,
  +     RSRC_CONF, RAW_ARGS, "a header-name, regex and a list of variables."},
  +    {"BrowserMatch", add_browser, (void *) 0,
  +     RSRC_CONF, ITERATE2, "A browser regex and a list of variables."},
  +    {"BrowserMatchNoCase", add_browser, (void *) REG_ICASE,
  +     RSRC_CONF, ITERATE2, "A browser regex and a list of variables."},
  +    {NULL},
   };
   
   static int match_headers(request_rec *r)
   {
       server_rec *s = r->server;
  -    sei_cfg_rec *sconf = (sei_cfg_rec *)get_module_config(s->module_config,
  -					                  &setenvif_module);
  -    sei_entry *entries = (sei_entry *)sconf->conditionals->elts;
  +    sei_cfg_rec *sconf = (sei_cfg_rec *) get_module_config(s->module_config,
  +                                                           &setenvif_module);
  +    sei_entry *entries = (sei_entry *) sconf->conditionals->elts;
       table_entry *elts;
       char *val;
       int i, j;
   
       for (i = 0; i < sconf->conditionals->nelts; ++i) {
  -	sei_entry *b = &entries[i];
  +        sei_entry *b = &entries[i];
   
  -	if (!strcasecmp(b->name, "remote_addr")) {
  -	    val = r->connection->remote_ip;
  -	}
  -	else if (!strcasecmp(b->name, "remote_host")) {
  -	    val = (char *)get_remote_host(r->connection, r->per_dir_config,
  -					  REMOTE_NAME);
  -	}
  -	else if (!strcasecmp(b->name, "remote_user")) {
  -	    val = r->connection->user;
  -	}
  -	else if (!strcasecmp(b->name, "request_uri")) {
  -	    val = r->uri;
  -	}
  -	else if (!strcasecmp(b->name, "request_method")) {
  -	    val = r->method;
  -	}
  -	else {
  -	    val = table_get(r->headers_in, b->name);
  -	}
  -
  -	if (!val) {
  -	    continue;
  -	}
  - 
  -	if (!regexec(b->preg, val, 0, NULL, 0)) {
  -	    elts = (table_entry *)b->features->elts;
  -
  -	    for (j = 0; j < b->features->nelts; ++j) {
  -		if (!strcmp(elts[j].val, "!")) {
  -		    table_unset(r->subprocess_env, elts[j].key);
  -		}
  -		else {
  -		    table_set(r->subprocess_env, elts[j].key, elts[j].val);
  -		}
  -	    }
  -	}
  +        if (!strcasecmp(b->name, "remote_addr")) {
  +            val = r->connection->remote_ip;
  +        }
  +        else if (!strcasecmp(b->name, "remote_host")) {
  +            val = (char *) get_remote_host(r->connection, r->per_dir_config,
  +                                           REMOTE_NAME);
  +        }
  +        else if (!strcasecmp(b->name, "remote_user")) {
  +            val = r->connection->user;
  +        }
  +        else if (!strcasecmp(b->name, "request_uri")) {
  +            val = r->uri;
  +        }
  +        else if (!strcasecmp(b->name, "request_method")) {
  +            val = r->method;
  +        }
  +        else {
  +            val = table_get(r->headers_in, b->name);
  +        }
  +
  +        if (!val) {
  +            continue;
  +        }
  +
  +        if (!regexec(b->preg, val, 0, NULL, 0)) {
  +            elts = (table_entry *) b->features->elts;
  +
  +            for (j = 0; j < b->features->nelts; ++j) {
  +                if (!strcmp(elts[j].val, "!")) {
  +                    table_unset(r->subprocess_env, elts[j].key);
  +                }
  +                else {
  +                    table_set(r->subprocess_env, elts[j].key, elts[j].val);
  +                }
  +            }
  +        }
       }
   
       return DECLINED;
   }
   
  -module MODULE_VAR_EXPORT setenvif_module = {
  -   STANDARD_MODULE_STUFF,
  -   NULL,			/* initializer */
  -   NULL,			/* dir config creater */
  -   NULL,			/* dir merger --- default is to override */
  -   create_setenvif_config,	/* server config */
  -   merge_setenvif_config,     	/* merge server configs */
  -   setenvif_module_cmds,	/* command table */
  -   NULL,			/* handlers */
  -   NULL,			/* filename translation */
  -   NULL,			/* check_user_id */
  -   NULL,			/* check auth */
  -   NULL,			/* check access */
  -   NULL,			/* type_checker */
  -   NULL,			/* fixups */
  -   NULL,			/* logger */
  -   NULL,			/* input header parse */
  -   NULL,			/* child (process) initialization */
  -   NULL,			/* child (process) rundown */
  -   match_headers		/* post_read_request */
  +module MODULE_VAR_EXPORT setenvif_module =
  +{
  +    STANDARD_MODULE_STUFF,
  +    NULL,                       /* initializer */
  +    NULL,                       /* dir config creater */
  +    NULL,                       /* dir merger --- default is to override */
  +    create_setenvif_config,     /* server config */
  +    merge_setenvif_config,      /* merge server configs */
  +    setenvif_module_cmds,       /* command table */
  +    NULL,                       /* handlers */
  +    NULL,                       /* filename translation */
  +    NULL,                       /* check_user_id */
  +    NULL,                       /* check auth */
  +    NULL,                       /* check access */
  +    NULL,                       /* type_checker */
  +    NULL,                       /* fixups */
  +    NULL,                       /* logger */
  +    NULL,                       /* input header parse */
  +    NULL,                       /* child (process) initialization */
  +    NULL,                       /* child (process) rundown */
  +    match_headers               /* post_read_request */
   };