You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by Brian Behlendorf <br...@hyperreal.org> on 1997/09/16 06:30:27 UTC

cvs commit: apachen/src/modules/standard mod_mime_magic.c mod_speling.c mod_unique_id.c mod_userdir.c

brian       97/09/15 21:30:26

  Modified:    src      INDENT
               src/modules/standard mod_mime_magic.c mod_speling.c
                        mod_unique_id.c mod_userdir.c
  Log:
  Okay, enough damage for tonight.  If any of this is wrong, someone please
  scream.  If not, I'll try and do some more tomorrow; I'm just being extra careful.
  
  Revision  Changes    Path
  1.24      +4 -4      apachen/src/INDENT
  
  Index: INDENT
  ===================================================================
  RCS file: /export/home/cvs/apachen/src/INDENT,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- INDENT	1997/09/16 03:51:29	1.23
  +++ INDENT	1997/09/16 04:30:13	1.24
  @@ -82,15 +82,15 @@
      mod_log_referer.c
      mod_mime.c
      mod_mime.h
  -   mod_mime_magic.c		RESERVED by Brian
  +   mod_mime_magic.c		DONE by Brian
      mod_negotiation.c		DONE by Ken
      mod_rewrite.c
      mod_rewrite.h
      mod_setenvif.c		DONE by Ken
  -   mod_speling.c		RESERVED by Brian
  +   mod_speling.c		DONE by Brian
      mod_status.c
  -   mod_unique_id.c		RESERVED by Brian
  -   mod_userdir.c		RESERVED by Brian
  +   mod_unique_id.c		DONE by Brian
  +   mod_userdir.c		DONE by Brian
      mod_usertrack.c		DONE by Brian
   
   ./os/unix:
  
  
  
  1.15      +354 -385  apachen/src/modules/standard/mod_mime_magic.c
  
  Index: mod_mime_magic.c
  ===================================================================
  RCS file: /export/home/cvs/apachen/src/modules/standard/mod_mime_magic.c,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- mod_mime_magic.c	1997/09/01 02:22:56	1.14
  +++ mod_mime_magic.c	1997/09/16 04:30:21	1.15
  @@ -6,7 +6,7 @@
    * are met:
    *
    * 1. Redistributions of source code must retain the above copyright
  - *    notice, this list of conditions and the following disclaimer. 
  + *    notice, this list of conditions and the following disclaimer.
    *
    * 2. Redistributions in binary form must reproduce the above copyright
    *    notice, this list of conditions and the following disclaimer in
  @@ -53,39 +53,39 @@
   /*
    * mod_mime_magic: MIME type lookup via file magic numbers
    * Copyright (c) 1996-1997 Cisco Systems, Inc.
  - * 
  + *
    * This software was submitted by Cisco Systems to the Apache Group in July
    * 1997.  Future revisions and derivatives of this source code must
    * acknowledge Cisco Systems as the original contributor of this module.
    * All other licensing and usage conditions are those of the Apache Group.
  - * 
  + *
    * Some of this code is derived from the free version of the file command
    * originally posted to comp.sources.unix.  Copyright info for that program
    * is included below as required.
    * ---------------------------------------------------------------------------
    * - Copyright (c) Ian F. Darwin, 1987. Written by Ian F. Darwin.
  - * 
  + *
    * This software is not subject to any license of the American Telephone and
    * Telegraph Company or of the Regents of the University of California.
  - * 
  + *
    * Permission is granted to anyone to use this software for any purpose on any
    * computer system, and to alter it and redistribute it freely, subject to
    * the following restrictions:
  - * 
  + *
    * 1. The author is not responsible for the consequences of use of this
    * software, no matter how awful, even if they arise from flaws in it.
  - * 
  + *
    * 2. The origin of this software must not be misrepresented, either by
    * explicit claim or by omission.  Since few users ever read sources, credits
    * must appear in the documentation.
  - * 
  + *
    * 3. Altered versions must be plainly marked as such, and must not be
    * misrepresented as being the original software.  Since few users ever read
    * sources, credits must appear in the documentation.
  - * 
  + *
    * 4. This notice may not be removed or altered.
    * -------------------------------------------------------------------------
  - * 
  + *
    * For compliance with Mr Darwin's terms: this has been very significantly
    * modified from the free "file" command.
    * - all-in-one file for compilation convenience when moving from one
  @@ -105,17 +105,17 @@
    *   list where they're used to set the MIME type in the Apache request
    *   record.
    * - Command-line flags have been removed since they will never be used here.
  - * 
  + *
    * Ian Kluft <ik...@cisco.com>
    * Engineering Information Framework
    * Central Engineering
    * Cisco Systems, Inc.
    * San Jose, CA, USA
  - * 
  + *
    * Initial installation          July/August 1996
    * Misc bug fixes                May 1997
    * Submission to Apache Group    July 1997
  - * 
  + *
    */
   
   #include "httpd.h"
  @@ -143,26 +143,26 @@
   
   #define MAXMIMESTRING        256
   
  -#define HOWMANY 1024      /* big enough to recognize most WWW files */
  -#define MAXDESC    50     /* max leng of text description */
  -#define MAXstring 64      /* max leng of "string" types */
  +#define HOWMANY 1024            /* big enough to recognize most WWW files */
  +#define MAXDESC    50           /* max leng of text description */
  +#define MAXstring 64            /* max leng of "string" types */
   
   struct magic {
  -    struct magic *next;   /* link to next entry */
  -    int lineno;           /* line number from magic file */
  +    struct magic *next;         /* link to next entry */
  +    int lineno;                 /* line number from magic file */
   
       short flag;
  -#define INDIR    1        /* if '>(...)' appears,  */
  -#define    UNSIGNED 2        /* comparison is unsigned */
  -    short cont_level;     /* level of ">" */
  +#define INDIR    1              /* if '>(...)' appears,  */
  +#define    UNSIGNED 2           /* comparison is unsigned */
  +    short cont_level;           /* level of ">" */
       struct {
  -        char type;        /* byte short long */
  -        long offset;      /* offset from indirection */
  -    } in;
  -    long offset;          /* offset to magic number */
  -    unsigned char reln;   /* relation (0=eq, '>'=gt, etc) */
  -    char type;            /* int, short, long or string. */
  -    char vallen;          /* length of string value, if any */
  +        char type;              /* byte short long */
  +        long offset;            /* offset from indirection */
  +    }      in;
  +    long offset;                /* offset to magic number */
  +    unsigned char reln;         /* relation (0=eq, '>'=gt, etc) */
  +    char type;                  /* int, short, long or string. */
  +    char vallen;                /* length of string value, if any */
   #define BYTE    1
   #define SHORT    2
   #define LONG    4
  @@ -181,24 +181,24 @@
           char s[MAXstring];
           unsigned char hs[2];    /* 2 bytes of a fixed-endian "short" */
           unsigned char hl[4];    /* 2 bytes of a fixed-endian "long" */
  -    } value;    /* either number or string */
  -    unsigned long mask;    /* mask before comparison with value */
  -    char nospflag;        /* supress space character */
  +    }         value;            /* either number or string */
  +    unsigned long mask;         /* mask before comparison with value */
  +    char nospflag;              /* supress space character */
   
       /* NOTE: this string is suspected of overrunning - find it! */
  -    char desc[MAXDESC];    /* description */
  +    char desc[MAXDESC];         /* description */
   };
   
   /*
    * data structures for tar file recognition
    * --------------------------------------------------------------------------
    * Header file for public domain tar (tape archive) program.
  - * 
  + *
    * @(#)tar.h 1.20 86/10/29    Public Domain. Created 25 August 1985 by John
    * Gilmore, ihnp4!hoptoad!gnu.
  - * 
  + *
    * Header block on tape.
  - * 
  + *
    * I'm going to use traditional DP naming conventions here. A "block" is a big
    * chunk of stuff that we do I/O on. A "record" is a piece of info that we
    * care about. Typically many "record"s fit into a "block".
  @@ -225,11 +225,11 @@
           char gname[TGNMLEN];
           char devmajor[8];
           char devminor[8];
  -    } header;
  +    }      header;
   };
   
   /* The magic field is filled with this if uname and gname are valid. */
  -#define    TMAGIC        "ustar  "    /* 7 chars and a null */
  +#define    TMAGIC        "ustar  "      /* 7 chars and a null */
   
   /*
    * file-function prototypes
  @@ -246,26 +246,24 @@
   static int getvalue(server_rec *, struct magic *, char **);
   static int hextoint(int);
   static char *getstr(server_rec *, char *, char *, int, int *);
  -static int parse(server_rec *, pool * p, char *, int);
  +static int parse(server_rec *, pool *p, char *, int);
   
   static int match(request_rec *, unsigned char *, int);
  -static int 
  -mget(request_rec *, union VALUETYPE *, unsigned char *,
  -     struct magic *, int);
  +static int mget(request_rec *, union VALUETYPE *, unsigned char *,
  +                    struct magic *, int);
   static int mcheck(request_rec *, union VALUETYPE *, struct magic *);
   static void mprint(request_rec *, union VALUETYPE *, struct magic *);
   static int mconvert(request_rec *, union VALUETYPE *, struct magic *);
   
  -static int 
  -uncompress(request_rec *, int, const unsigned char *,
  -       unsigned char **, int);
  +static int uncompress(request_rec *, int, const unsigned char *,
  +                          unsigned char **, int);
   static long from_oct(int, char *);
  -static int fsmagic(request_rec * r, const char *fn, struct stat * sb);
  +static int fsmagic(request_rec *r, const char *fn, struct stat * sb);
   
   /*
    * includes for ASCII substring recognition formerly "names.h" in file
    * command
  - * 
  + *
    * Original notes: names and types used by ascmagic in file(1). These tokens are
    * here because they can appear anywhere in the first HOWMANY bytes, while
    * tokens in /etc/magic must appear at fixed offsets into the file. Don't
  @@ -274,29 +272,29 @@
   
   /* these types are used to index the table 'types': keep em in sync! */
   /* HTML inserted in first because this is a web server module now */
  -#define L_HTML    0        /* HTML */
  -#define L_C       1        /* first and foremost on UNIX */
  -#define L_FORT    2        /* the oldest one */
  -#define L_MAKE    3        /* Makefiles */
  -#define L_PLI     4        /* PL/1 */
  -#define L_MACH    5        /* some kinda assembler */
  -#define L_ENG     6        /* English */
  -#define L_PAS     7        /* Pascal */
  -#define L_MAIL    8        /* Electronic mail */
  -#define L_NEWS    9        /* Usenet Netnews */
  +#define L_HTML    0             /* HTML */
  +#define L_C       1             /* first and foremost on UNIX */
  +#define L_FORT    2             /* the oldest one */
  +#define L_MAKE    3             /* Makefiles */
  +#define L_PLI     4             /* PL/1 */
  +#define L_MACH    5             /* some kinda assembler */
  +#define L_ENG     6             /* English */
  +#define L_PAS     7             /* Pascal */
  +#define L_MAIL    8             /* Electronic mail */
  +#define L_NEWS    9             /* Usenet Netnews */
   
   static char *types[] = {
  -    "text/html",        /* HTML */
  -    "text/plain",       /* "c program text", */
  -    "text/plain",       /* "fortran program text", */
  -    "text/plain",       /* "make commands text", */
  -    "text/plain",       /* "pl/1 program text", */
  -    "text/plain",       /* "assembler program text", */
  -    "text/plain",       /* "English text", */
  -    "text/plain",       /* "pascal program text", */
  -    "message/rfc822",   /* "mail text", */
  -    "message/news",     /* "news text", */
  -    "application/binary", /* "can't happen error on names.h/types", */
  +    "text/html",                /* HTML */
  +    "text/plain",               /* "c program text", */
  +    "text/plain",               /* "fortran program text", */
  +    "text/plain",               /* "make commands text", */
  +    "text/plain",               /* "pl/1 program text", */
  +    "text/plain",               /* "assembler program text", */
  +    "text/plain",               /* "English text", */
  +    "text/plain",               /* "pascal program text", */
  +    "message/rfc822",           /* "mail text", */
  +    "message/news",             /* "news text", */
  +    "application/binary",       /* "can't happen error on names.h/types", */
   0};
   
   static struct names {
  @@ -337,7 +335,7 @@
       },
       {
           "/*", L_C
  -    },            /* must precede "The", "the", etc. */
  +    },                          /* must precede "The", "the", etc. */
       {
           "#include", L_C
       },
  @@ -381,8 +379,8 @@
           ".PRECIOUS", L_MAKE
       },
       /*
  -     * Too many files of text have these words in them.  Find another way
  -     * to recognize Fortrash.
  +     * Too many files of text have these words in them.  Find another way to
  +     * recognize Fortrash.
        */
   #ifdef    NOTDEF
       {
  @@ -406,7 +404,7 @@
       {
           "data", L_FORT
       },
  -#endif                /* NOTDEF */
  +#endif                          /* NOTDEF */
       {
           ".ascii", L_MACH
       },
  @@ -461,16 +459,16 @@
   
   /*
    * Result String List (RSL)
  - * 
  + *
    * The file(1) command prints its output.  Instead, we store the various
    * "printed" strings in a list (allocating memory as we go) and concatenate
    * them at the end when we finally know how much space they'll need.
    */
   
   typedef struct magic_rsl_s {
  -    char *str;        /* string, possibly a fragment */
  -    struct magic_rsl_s *next;    /* pointer to next fragment */
  -} magic_rsl;
  +    char *str;                  /* string, possibly a fragment */
  +    struct magic_rsl_s *next;   /* pointer to next fragment */
  +}           magic_rsl;
   
   /*
    * Apache module configuration structures
  @@ -478,17 +476,17 @@
   
   /* per-server info */
   typedef struct {
  -    char *magicfile;    /* where magic be found */
  -    struct magic *magic,    /* head of magic config list */
  -        *last;
  -} magic_server_config_rec;
  +    char *magicfile;            /* where magic be found */
  +    struct magic *magic,        /* head of magic config list */
  +         *last;
  +}      magic_server_config_rec;
   
   /* per-request info */
   typedef struct {
  -    magic_rsl *head,    /* result string list */
  -        *tail;
  -    unsigned suf_recursion;    /* recursion depth in suffix check */
  -} magic_req_rec;
  +    magic_rsl *head,            /* result string list */
  +             *tail;
  +    unsigned suf_recursion;     /* recursion depth in suffix check */
  +}      magic_req_rec;
   
   /*
    * configuration functions - called by Apache API routines
  @@ -498,19 +496,19 @@
   extern module mime_module;
   
   static void *
  -create_magic_server_config(pool * p, server_rec *d)
  +     create_magic_server_config(pool *p, server_rec *d)
   {
       /* allocate the config - use pcalloc because it needs to be zeroed */
       return pcalloc(p, sizeof(magic_server_config_rec));
   }
   
   static void *
  -merge_magic_server_config(pool * p, void *basev, void *addv)
  +     merge_magic_server_config(pool *p, void *basev, void *addv)
   {
       magic_server_config_rec *base = (magic_server_config_rec *) basev;
       magic_server_config_rec *add = (magic_server_config_rec *) addv;
       magic_server_config_rec *new = (magic_server_config_rec *)
  -        palloc(p, sizeof(magic_server_config_rec));
  +    palloc(p, sizeof(magic_server_config_rec));
   
       new->magicfile = add->magicfile ? add->magicfile : base->magicfile;
       if (add->magic && add->last) {
  @@ -528,11 +526,11 @@
   }
   
   static const char *
  -set_magicfile(cmd_parms * cmd, char *d, char *arg)
  +     set_magicfile(cmd_parms *cmd, char *d, char *arg)
   {
       magic_server_config_rec *conf = (magic_server_config_rec *)
  -        get_module_config(cmd->server->module_config,
  -        &mime_magic_module);
  +    get_module_config(cmd->server->module_config,
  +                      &mime_magic_module);
   
       if (!conf) {
           return MODNAME ": server structure not allocated";
  @@ -553,12 +551,12 @@
   
   /*
    * RSL (result string list) processing routines
  - * 
  + *
    * These collect strings that would have been printed in fragments by file(1)
    * into a list of magic_rsl structures with the strings. When complete,
    * they're concatenated together to become the MIME content and encoding
    * types.
  - * 
  + *
    * return value conventions for these functions: functions which return int:
    * failure = -1, other = result functions which return pointers: failure = 0,
    * other = result
  @@ -566,15 +564,15 @@
   
   /* allocate a per-request structure and put it in the request record */
   static magic_req_rec *
  -magic_set_config(request_rec * r)
  +              magic_set_config(request_rec *r)
   {
       magic_req_rec *req_dat = (magic_req_rec *)
  -        palloc(r->pool, sizeof(magic_req_rec));
  +    palloc(r->pool, sizeof(magic_req_rec));
   
       if (!req_dat) {
  -	aplog_error(APLOG_MARK, APLOG_ERR, r->server,
  -		    "%s: memory allocation failure in magic_set_config()",
  -		    MODNAME);
  +        aplog_error(APLOG_MARK, APLOG_ERR, r->server,
  +                    "%s: memory allocation failure in magic_set_config()",
  +                    MODNAME);
           return NULL;
       }
       req_dat->head = req_dat->tail = (magic_rsl *) NULL;
  @@ -584,18 +582,17 @@
   
   /* add a string to the result string list for this request */
   /* it is the responsibility of the caller to allocate "str" */
  -static int 
  -magic_rsl_add(request_rec * r, char *str)
  +static int magic_rsl_add(request_rec *r, char *str)
   {
       magic_req_rec *req_dat = (magic_req_rec *)
  -        get_module_config(r->request_config, &mime_magic_module);
  +    get_module_config(r->request_config, &mime_magic_module);
       magic_rsl *rsl;
   
       /* make sure we have a list to put it in */
       if (!req_dat) {
  -	aplog_error(APLOG_MARK, APLOG_ERR, r->server,
  -		    "%s: request config should not be NULL",
  -		    MODNAME);
  +        aplog_error(APLOG_MARK, APLOG_ERR, r->server,
  +                    "%s: request config should not be NULL",
  +                    MODNAME);
           if (!(req_dat = magic_set_config(r))) {
               /* failure */
               return -1;
  @@ -605,8 +602,8 @@
       /* allocate the list entry */
       if (!(rsl = (magic_rsl *) palloc(r->pool, sizeof(magic_rsl)))) {
           aplog_error(APLOG_MARK, APLOG_ERR, r->server,
  -		    "%s: memory allocation failure in magic_rsl_add()",
  -		    MODNAME);
  +                    "%s: memory allocation failure in magic_rsl_add()",
  +                    MODNAME);
           /* failure */
           return -1;
       }
  @@ -629,15 +626,13 @@
   }
   
   /* RSL hook for puts-type functions */
  -static int 
  -magic_rsl_puts(request_rec * r, char *str)
  +static int magic_rsl_puts(request_rec *r, char *str)
   {
       return magic_rsl_add(r, str);
   }
   
   /* RSL hook for printf-type functions */
  -static int 
  -magic_rsl_printf(request_rec * r, char *str,...)
  +static int magic_rsl_printf(request_rec *r, char *str,...)
   {
       va_list ap;
   
  @@ -653,8 +648,7 @@
   }
   
   /* RSL hook for putchar-type functions */
  -static int 
  -magic_rsl_putchar(request_rec * r, char c)
  +static int magic_rsl_putchar(request_rec *r, char c)
   {
       char str[2];
   
  @@ -666,22 +660,22 @@
   
   /* allocate and copy a contiguous string from a result string list */
   static char *
  -rsl_strdup(request_rec * r, int start_frag, int start_pos, int len)
  +     rsl_strdup(request_rec *r, int start_frag, int start_pos, int len)
   {
  -    char *result;        /* return value */
  -    int cur_frag,        /* current fragment number/counter */
  -        cur_pos,        /* current position within fragment */
  -        res_pos;        /* position in result string */
  -    magic_rsl *frag;    /* list-traversal pointer */
  +    char *result;               /* return value */
  +    int cur_frag,               /* current fragment number/counter */
  +        cur_pos,                /* current position within fragment */
  +        res_pos;                /* position in result string */
  +    magic_rsl *frag;            /* list-traversal pointer */
   
       magic_req_rec *req_dat = (magic_req_rec *)
  -        get_module_config(r->request_config, &mime_magic_module);
  +    get_module_config(r->request_config, &mime_magic_module);
   
       /* allocate the result string */
       if (!(result = (char *) palloc(r->pool, len + 1))) {
           aplog_error(APLOG_MARK, APLOG_ERR, r->server,
  -		    "%s: memory allocation failure in rsl_strdup()",
  -		    MODNAME);
  +                    "%s: memory allocation failure in rsl_strdup()",
  +                    MODNAME);
           return NULL;
       }
   
  @@ -713,7 +707,7 @@
       result[res_pos] = 0;
   #if MIME_MAGIC_DEBUG
       aplog_error(APLOG_MARK, APLOG_DEBUG, r->server,
  -		"%s: rsl_strdup() %d chars: %s", MODNAME, res_pos - 1, result);
  +             "%s: rsl_strdup() %d chars: %s", MODNAME, res_pos - 1, result);
   #endif
       return result;
   }
  @@ -721,26 +715,25 @@
   /* states for the state-machine algorithm in magic_rsl_to_request() */
   typedef enum {
       rsl_leading_space, rsl_type, rsl_subtype, rsl_separator, rsl_encoding
  -} rsl_states;
  +}    rsl_states;
   
   /* process the RSL and set the MIME info in the request record */
  -static int 
  -magic_rsl_to_request(request_rec * r)
  +static int magic_rsl_to_request(request_rec *r)
   {
  -    int cur_frag,        /* current fragment number/counter */
  -        cur_pos,        /* current position within fragment */
  -        type_frag,        /* content type starting point: fragment */
  -        type_pos,        /* content type starting point: position */
  -        type_len,        /* content type length */
  -        encoding_frag,    /* content encoding starting point: fragment */
  -        encoding_pos,    /* content encoding starting point: position */
  -        encoding_len;    /* content encoding length */
  +    int cur_frag,               /* current fragment number/counter */
  +        cur_pos,                /* current position within fragment */
  +        type_frag,              /* content type starting point: fragment */
  +        type_pos,               /* content type starting point: position */
  +        type_len,               /* content type length */
  +        encoding_frag,          /* content encoding starting point: fragment */
  +        encoding_pos,           /* content encoding starting point: position */
  +        encoding_len;           /* content encoding length */
   
  -    magic_rsl *frag;    /* list-traversal pointer */
  +    magic_rsl *frag;            /* list-traversal pointer */
       rsl_states state;
   
       magic_req_rec *req_dat = (magic_req_rec *)
  -        get_module_config(r->request_config, &mime_magic_module);
  +    get_module_config(r->request_config, &mime_magic_module);
   
       /* check if we have a result */
       if (!req_dat || !req_dat->head) {
  @@ -786,13 +779,13 @@
                       /* should not be possible */
                       /* abandon malfunctioning module */
                       aplog_error(APLOG_MARK, APLOG_ERR, r->server,
  -				"%s: bad state %d (ws)", MODNAME);
  +                                "%s: bad state %d (ws)", MODNAME);
                       return DECLINED;
                   }
                   /* NOTREACHED */
               }
               else if (state == rsl_type &&
  -                 frag->str[cur_pos] == '/') {
  +                     frag->str[cur_pos] == '/') {
                   /* copy the char and go to rsl_subtype state */
                   type_len++;
                   state++;
  @@ -808,7 +801,7 @@
                       continue;
                   }
                   else if (state == rsl_type ||
  -                     state == rsl_subtype) {
  +                         state == rsl_subtype) {
                       /* non-space: adds to type */
                       type_len++;
                       continue;
  @@ -830,7 +823,7 @@
                       /* should not be possible */
                       /* abandon malfunctioning module */
                       aplog_error(APLOG_MARK, APLOG_ERR, r->server,
  -				"%s: bad state %d (ns)", MODNAME);
  +                                "%s: bad state %d (ns)", MODNAME);
                       return DECLINED;
                   }
                   /* NOTREACHED */
  @@ -853,7 +846,7 @@
       }
       if (state == rsl_encoding) {
           r->content_encoding = rsl_strdup(r, encoding_frag,
  -                         encoding_pos, encoding_len);
  +                                         encoding_pos, encoding_len);
       }
   
       /* detect memory allocation errors */
  @@ -871,14 +864,13 @@
    * (formerly called "process" in file command, prefix added for clarity) Opens
    * the file and reads a fixed-size buffer to begin processing the contents.
    */
  -static void
  -magic_process(request_rec * r)
  +static void magic_process(request_rec *r)
   {
       int fd = 0;
  -    unsigned char buf[HOWMANY + 1];    /* one extra for terminating '\0' */
  +    unsigned char buf[HOWMANY + 1];     /* one extra for terminating '\0' */
       struct utimbuf utbuf;
       struct stat sb;
  -    int nbytes = 0;        /* number of bytes read from a datafile */
  +    int nbytes = 0;             /* number of bytes read from a datafile */
   
       /*
        * first try judging the file based on its filesystem status
  @@ -891,8 +883,8 @@
       if ((fd = open(r->filename, O_RDONLY)) < 0) {
           /* We can't open it, but we were able to stat it. */
           /*
  -         * if (sb.st_mode & 0002) magic_rsl_puts(r,"writable, "); if
  -         * (sb.st_mode & 0111) magic_rsl_puts(r,"executable, ");
  +         * if (sb.st_mode & 0002) magic_rsl_puts(r,"writable, ");
  +         * if (sb.st_mode & 0111) magic_rsl_puts(r,"executable, ");
            */
           aplog_error(APLOG_MARK, APLOG_ERR, r->server, "can't read `%s'", r->filename);
           return;
  @@ -909,7 +901,7 @@
       if (nbytes == 0)
           magic_rsl_puts(r, MIME_TEXT_UNKNOWN);
       else {
  -        buf[nbytes++] = '\0';    /* null-terminate it */
  +        buf[nbytes++] = '\0';   /* null-terminate it */
           tryit(r, buf, nbytes);
       }
   
  @@ -918,14 +910,13 @@
        */
       utbuf.actime = sb.st_atime;
       utbuf.modtime = sb.st_mtime;
  -    (void) utime(r->filename, &utbuf);    /* don't care if loses */
  +    (void) utime(r->filename, &utbuf);  /* don't care if loses */
       (void) close(fd);
       (void) magic_rsl_putchar(r, '\n');
   }
   
   
  -static void
  -tryit(request_rec * r, unsigned char *buf, int nb)
  +static void tryit(request_rec *r, unsigned char *buf, int nb)
   {
       /*
        * Try compression stuff
  @@ -958,7 +949,7 @@
    * apprentice - load configuration from the magic file r
    *  API request record
    */
  -static int apprentice (server_rec * s, pool * p)
  +static int apprentice(server_rec *s, pool *p)
   {
       FILE *f;
       char line[BUFSIZ + 1];
  @@ -971,7 +962,7 @@
       char *fname;
   
       magic_server_config_rec *conf = (magic_server_config_rec *)
  -        get_module_config(s->module_config, &mime_magic_module);
  +    get_module_config(s->module_config, &mime_magic_module);
   
       if (!conf->magicfile) {
           conf->magicfile = pstrdup(p, MAGIC);
  @@ -979,8 +970,8 @@
       fname = server_root_relative(p, conf->magicfile);
       f = pfopen(p, fname, "r");
       if (f == NULL) {
  -	aplog_error(APLOG_MARK, APLOG_ERR, s,
  -		    "%s: can't read magic file %s", MODNAME, fname);
  +        aplog_error(APLOG_MARK, APLOG_ERR, s,
  +                    "%s: can't read magic file %s", MODNAME, fname);
           return -1;
       }
   
  @@ -1025,15 +1016,15 @@
   
   #if MIME_MAGIC_DEBUG
       aplog_error(APLOG_MARK, APLOG_DEBUG, s,
  -		"%s: apprentice conf=%x file=%s m=%s m->next=%s last=%s",
  -		MODNAME, conf,
  -		conf->magicfile ? conf->magicfile : "NULL",
  -		conf->magic ? "set" : "NULL",
  -		(conf->magic && conf->magic->next) ? "set" : "NULL",
  -		conf->last ? "set" : "NULL");
  +                "%s: apprentice conf=%x file=%s m=%s m->next=%s last=%s",
  +                MODNAME, conf,
  +                conf->magicfile ? conf->magicfile : "NULL",
  +                conf->magic ? "set" : "NULL",
  +                (conf->magic && conf->magic->next) ? "set" : "NULL",
  +                conf->last ? "set" : "NULL");
       aplog_error(APLOG_MARK, APLOG_DEBUG, s,
  -		"%s: apprentice read %d lines, %d rules, %d errors",
  -		MODNAME, lineno, rule, errs);
  +                "%s: apprentice read %d lines, %d rules, %d errors",
  +                MODNAME, lineno, rule, errs);
   #endif
   
   #if MIME_MAGIC_DEBUG
  @@ -1045,13 +1036,13 @@
               isprint((((unsigned long) m) >> 8) & 255) &&
               isprint(((unsigned long) m) & 255)) {
               aplog_error(APLOG_MARK, APLOG_DEBUG, s,
  -			"%s: apprentice: POINTER CLOBBERED! "
  -			"m=\"%c%c%c%c\" line=%d", MODNAME,
  -			(((unsigned long) m) >> 24) & 255,
  -			(((unsigned long) m) >> 16) & 255,
  -			(((unsigned long) m) >> 8) & 255,
  -			((unsigned long) m) & 255,
  -			prevm ? prevm->lineno : -1);
  +                        "%s: apprentice: POINTER CLOBBERED! "
  +                        "m=\"%c%c%c%c\" line=%d", MODNAME,
  +                        (((unsigned long) m) >> 24) & 255,
  +                        (((unsigned long) m) >> 16) & 255,
  +                        (((unsigned long) m) >> 8) & 255,
  +                        ((unsigned long) m) & 255,
  +                        prevm ? prevm->lineno : -1);
               break;
           }
           prevm = m;
  @@ -1064,14 +1055,13 @@
   /*
    * extend the sign bit if the comparison is to be signed
    */
  -static unsigned long signextend (server_rec * s, struct magic * m, unsigned long v)
  +static unsigned long signextend(server_rec *s, struct magic * m, unsigned long v)
   {
       if (!(m->flag & UNSIGNED))
           switch (m->type) {
               /*
  -             * Do not remove the casts below.  They are vital.
  -             * When later compared with the data, the sign
  -             * extension must have happened.
  +             * Do not remove the casts below.  They are vital. When later
  +             * compared with the data, the sign extension must have happened.
                */
               case BYTE:
               v = (char) v;
  @@ -1093,7 +1083,7 @@
               break;
           default:
               aplog_error(APLOG_MARK, APLOG_ERR, s,
  -			"%s: can't happen: m->type=%d", MODNAME, m->type);
  +                        "%s: can't happen: m->type=%d", MODNAME, m->type);
               return -1;
           }
       return v;
  @@ -1102,19 +1092,18 @@
   /*
    * parse one line from magic file, put into magic[index++] if valid
    */
  -static int
  -parse(server_rec * serv, pool * p, char *l, int lineno)
  +static int parse(server_rec *serv, pool *p, char *l, int lineno)
   {
       int i = 0;
       struct magic *m;
       char *t, *s;
       magic_server_config_rec *conf = (magic_server_config_rec *)
  -        get_module_config(serv->module_config, &mime_magic_module);
  +    get_module_config(serv->module_config, &mime_magic_module);
   
       /* allocate magic structure entry */
       if ((m = (struct magic *) pcalloc(p, sizeof(struct magic))) == NULL) {
           (void) aplog_error(APLOG_MARK, APLOG_ERR, serv,
  -			   "%s: Out of memory.", MODNAME);
  +                           "%s: Out of memory.", MODNAME);
           return -1;
       }
   
  @@ -1134,12 +1123,12 @@
       m->lineno = lineno;
   
       while (*l == '>') {
  -        ++l;        /* step over */
  +        ++l;                    /* step over */
           m->cont_level++;
       }
   
       if (m->cont_level != 0 && *l == '(') {
  -        ++l;        /* step over */
  +        ++l;                    /* step over */
           m->flag |= INDIR;
       }
   
  @@ -1147,7 +1136,7 @@
       m->offset = (int) strtol(l, &t, 0);
       if (l == t) {
           aplog_error(APLOG_MARK, APLOG_ERR, serv,
  -		    "%s: offset %s invalid", MODNAME, l);
  +                    "%s: offset %s invalid", MODNAME, l);
       }
       l = t;
   
  @@ -1170,7 +1159,7 @@
                   break;
               default:
                   aplog_error(APLOG_MARK, APLOG_ERR, serv,
  -			    "%s: indirect offset type %c invalid", MODNAME, *l);
  +                        "%s: indirect offset type %c invalid", MODNAME, *l);
                   break;
               }
               l++;
  @@ -1187,7 +1176,7 @@
               t = l;
           if (*t++ != ')') {
               aplog_error(APLOG_MARK, APLOG_ERR, serv,
  -			"%s: missing ')' in indirect offset", MODNAME);
  +                        "%s: missing ')' in indirect offset", MODNAME);
           }
           l = t;
       }
  @@ -1261,7 +1250,7 @@
       }
       else {
           aplog_error(APLOG_MARK, APLOG_ERR, serv,
  -		    "%s: type %s invalid", MODNAME, l);
  +                    "%s: type %s invalid", MODNAME, l);
           return -1;
       }
       /* New-style anding: "0 byte&0x80 =0x80 dynamically linked" */
  @@ -1295,7 +1284,7 @@
               isspace((unsigned char) l[1])) {
               m->reln = *l;
               ++l;
  -            goto GetDesc;    /* Bill The Cat */
  +            goto GetDesc;       /* Bill The Cat */
           }
           m->reln = '=';
           break;
  @@ -1325,10 +1314,10 @@
   
   #if MIME_MAGIC_DEBUG
       aplog_error(APLOG_MARK, APLOG_DEBUG, serv,
  -		"%s: parse line=%d m=%x next=%x cont=%d desc=%s",
  -		MODNAME, lineno, m, m->next, m->cont_level,
  -		m->desc ? m->desc : "NULL");
  -#endif                /* MIME_MAGIC_DEBUG */
  +                "%s: parse line=%d m=%x next=%x cont=%d desc=%s",
  +                MODNAME, lineno, m, m->next, m->cont_level,
  +                m->desc ? m->desc : "NULL");
  +#endif                          /* MIME_MAGIC_DEBUG */
   
       return 0;
   }
  @@ -1338,8 +1327,7 @@
    * pointer, according to the magic type.  Update the string pointer to point
    * just after the number read.  Return 0 for success, non-zero for failure.
    */
  -static int
  -getvalue(server_rec * s, struct magic * m, char **p)
  +static int getvalue(server_rec *s, struct magic * m, char **p)
   {
       int slen;
   
  @@ -1358,8 +1346,8 @@
    * *slen. Return updated scan pointer as function result.
    */
   static char *
  -getstr(server_rec *serv, register char *s, register char *p, 
  -    int plen, int *slen)
  +     getstr(server_rec *serv, register char *s, register char *p,
  +                 int plen, int *slen)
   {
       char *origs = s, *origp = p;
       char *pmax = p + plen - 1;
  @@ -1417,10 +1405,10 @@
               case '6':
               case '7':
                   val = c - '0';
  -                c = *s++;    /* try for 2 */
  +                c = *s++;       /* try for 2 */
                   if (c >= '0' && c <= '7') {
                       val = (val << 3) | (c - '0');
  -                    c = *s++;    /* try for 3 */
  +                    c = *s++;   /* try for 3 */
                       if (c >= '0' && c <= '7')
                           val = (val << 3) | (c - '0');
                       else
  @@ -1433,8 +1421,8 @@
   
                   /* \x and up to 3 hex digits */
               case 'x':
  -                val = 'x';    /* Default if no digits */
  -                c = hextoint(*s++);    /* Get next char */
  +                val = 'x';      /* Default if no digits */
  +                c = hextoint(*s++);     /* Get next char */
                   if (c >= 0) {
                       val = c;
                       c = hextoint(*s++);
  @@ -1467,8 +1455,7 @@
   
   
   /* Single hex char to int; -1 if not a hex char. */
  -static int
  -hextoint(c)
  +static int hextoint(c)
       int c;
   {
       if (!isascii((unsigned char) c))
  @@ -1483,25 +1470,24 @@
   }
   
   
  -static int
  -fsmagic(request_rec * r, const char *fn, struct stat * sb)
  +static int fsmagic(request_rec *r, const char *fn, struct stat * sb)
   {
       int ret = 0;
   
       /*
  -     * Fstat is cheaper but fails for files you don't have read perms on.
  -     * On 4.2BSD and similar systems, use lstat() to identify symlinks.
  +     * Fstat is cheaper but fails for files you don't have read perms on. On
  +     * 4.2BSD and similar systems, use lstat() to identify symlinks.
        */
  -    ret = stat(fn, sb);    /* don't merge into if; see "ret =" above */
  +    ret = stat(fn, sb);         /* don't merge into if; see "ret =" above */
   
       if (ret) {
           return 1;
       }
   
       /*
  -     * if (sb->st_mode & S_ISUID) magic_rsl_puts(r,"setuid "); if
  -     * (sb->st_mode & S_ISGID) magic_rsl_puts(r,"setgid "); if
  -     * (sb->st_mode & S_ISVTX) magic_rsl_puts(r,"sticky ");
  +     * if (sb->st_mode & S_ISUID) magic_rsl_puts(r,"setuid "); 
  +     * if (sb->st_mode & S_ISGID) magic_rsl_puts(r,"setgid "); 
  +     * if (sb->st_mode & S_ISVTX) magic_rsl_puts(r,"sticky ");
        */
   
       switch (sb->st_mode & S_IFMT) {
  @@ -1540,8 +1526,8 @@
   
               if ((nch = readlink(fn, buf, BUFSIZ - 1)) <= 0) {
                   /*
  -                 * magic_rsl_printf(r, "unreadable symlink
  -                 * (%s).", strerror(errno));
  +                 * magic_rsl_printf(r, "unreadable symlink (%s).",
  +                 * strerror(errno));
                    */
                   magic_rsl_puts(r, MIME_BINARY_UNKNOWN);
                   return 1;
  @@ -1552,8 +1538,8 @@
               if (*buf == '/') {
                   if (stat(buf, &tstatbuf) < 0) {
                       /*
  -                     * magic_rsl_printf(r, "broken
  -                     * symbolic link to %s", buf);
  +                     * magic_rsl_printf(r, "broken symbolic link to %s",
  +                     * buf);
                        */
                       magic_rsl_puts(r, MIME_BINARY_UNKNOWN);
                       return 1;
  @@ -1564,19 +1550,18 @@
                   char buf2[BUFSIZ + BUFSIZ + 4];
   
                   if ((tmp = strrchr(fn, '/')) == NULL) {
  -                    tmp = buf;    /* in current directory
  -                             * anyway */
  +                    tmp = buf;  /* in current directory anyway */
                   }
                   else {
  -		    /* directory part plus (relative) symlink */
  -		    ap_snprintf(buf2, sizeof(buf2), "%s%s",
  -			fn, buf);
  +                    /* directory part plus (relative) symlink */
  +                    ap_snprintf(buf2, sizeof(buf2), "%s%s",
  +                                fn, buf);
                       tmp = buf2;
                   }
                   if (stat(tmp, &tstatbuf) < 0) {
                       /*
  -                     * magic_rsl_printf(r, "broken
  -                     * symbolic link to %s", buf);
  +                     * magic_rsl_printf(r, "broken symbolic link to %s",
  +                     * buf);
                        */
                       magic_rsl_puts(r, MIME_BINARY_UNKNOWN);
                       return 1;
  @@ -1587,7 +1572,7 @@
               /* So just handle it. */
               magic_process(r);
           }
  -	return 1;
  +        return 1;
   #endif
   #ifdef    S_IFSOCK
   #ifndef __COHERENT__
  @@ -1600,7 +1585,7 @@
           break;
       default:
           aplog_error(APLOG_MARK, APLOG_ERR, r->server,
  -		    "%s: invalid mode 0%o.", MODNAME, sb->st_mode);
  +                    "%s: invalid mode 0%o.", MODNAME, sb->st_mode);
           /* NOTREACHED */
       }
   
  @@ -1618,9 +1603,8 @@
    * softmagic - lookup one file in database (already read from /etc/magic by
    * apprentice.c). Passed the name and FILE * of one file to be typed.
    */
  -/* ARGSUSED1 *//* nbytes passed for regularity, maybe need later */
  -static int
  -softmagic(request_rec * r, unsigned char *buf, int nbytes)
  + /* ARGSUSED1 *//* nbytes passed for regularity, maybe need later */
  +static int softmagic(request_rec *r, unsigned char *buf, int nbytes)
   {
       if (match(r, buf, nbytes))
           return 1;
  @@ -1631,31 +1615,30 @@
   /*
    * Go through the whole list, stopping if you find a match.  Process all the
    * continuations of that match before returning.
  - * 
  + *
    * We support multi-level continuations:
  - * 
  + *
    * At any time when processing a successful top-level match, there is a current
    * continuation level; it represents the level of the last successfully
    * matched continuation.
  - * 
  + *
    * Continuations above that level are skipped as, if we see one, it means that
    * the continuation that controls them - i.e, the lower-level continuation
    * preceding them - failed to match.
  - * 
  + *
    * Continuations below that level are processed as, if we see one, it means
    * we've finished processing or skipping higher-level continuations under the
    * control of a successful or unsuccessful lower-level continuation, and are
    * now seeing the next lower-level continuation and should process it.  The
    * current continuation level reverts to the level of the one we're seeing.
  - * 
  + *
    * Continuations at the current level are processed as, if we see one, there's
    * no lower-level continuation that may have failed.
  - * 
  + *
    * If a continuation matches, we bump the current continuation level so that
    * higher-level continuations are processed.
    */
  -static int
  -match(request_rec * r, unsigned char *s, int nbytes)
  +static int match(request_rec *r, unsigned char *s, int nbytes)
   {
   #if MIME_MAGIC_DEBUG
       int rule_counter = 0;
  @@ -1664,17 +1647,17 @@
       int need_separator = 0;
       union VALUETYPE p;
       magic_server_config_rec *conf = (magic_server_config_rec *)
  -        get_module_config(r->server->module_config, &mime_magic_module);
  +    get_module_config(r->server->module_config, &mime_magic_module);
       struct magic *m;
   
   #if MIME_MAGIC_DEBUG
       aplog_error(APLOG_MARK, APLOG_DEBUG, r->server,
  -		"%s: match conf=%x file=%s m=%s m->next=%s last=%s",
  -		MODNAME, conf,
  -		conf->magicfile ? conf->magicfile : "NULL",
  -		conf->magic ? "set" : "NULL",
  -		(conf->magic && conf->magic->next) ? "set" : "NULL",
  -		conf->last ? "set" : "NULL");
  +                "%s: match conf=%x file=%s m=%s m->next=%s last=%s",
  +                MODNAME, conf,
  +                conf->magicfile ? conf->magicfile : "NULL",
  +                conf->magic ? "set" : "NULL",
  +                (conf->magic && conf->magic->next) ? "set" : "NULL",
  +                conf->last ? "set" : "NULL");
   #endif
   
   #if MIME_MAGIC_DEBUG
  @@ -1684,12 +1667,12 @@
               isprint((((unsigned long) m) >> 8) & 255) &&
               isprint(((unsigned long) m) & 255)) {
               aplog_error(APLOG_MARK, APLOG_DEBUG, r->server,
  -			"%s: match: POINTER CLOBBERED! "
  -			"m=\"%c%c%c%c\"", MODNAME,
  -			(((unsigned long) m) >> 24) & 255,
  -			(((unsigned long) m) >> 16) & 255,
  -			(((unsigned long) m) >> 8) & 255,
  -			((unsigned long) m) & 255);
  +                        "%s: match: POINTER CLOBBERED! "
  +                        "m=\"%c%c%c%c\"", MODNAME,
  +                        (((unsigned long) m) >> 24) & 255,
  +                        (((unsigned long) m) >> 16) & 255,
  +                        (((unsigned long) m) >> 8) & 255,
  +                        ((unsigned long) m) & 255);
               break;
           }
       }
  @@ -1699,7 +1682,7 @@
   #if MIME_MAGIC_DEBUG
           rule_counter++;
           aplog_error(APLOG_MARK, APLOG_DEBUG, r->server,
  -		    "%s: line=%d desc=%s", MODNAME, m->lineno, m->desc);
  +                    "%s: line=%d desc=%s", MODNAME, m->lineno, m->desc);
   #endif
   
           /* check if main entry matches */
  @@ -1719,14 +1702,14 @@
   #if MIME_MAGIC_DEBUG
                   rule_counter++;
                   aplog_error(APLOG_MARK, APLOG_DEBUG, r->server,
  -			    "%s: line=%d mc=%x mc->next=%x cont=%d desc=%s",
  -			    MODNAME, m_cont->lineno, m_cont,
  -			    m_cont->next, m_cont->cont_level,
  -			    m_cont->desc ? m_cont->desc : "NULL");
  +                            "%s: line=%d mc=%x mc->next=%x cont=%d desc=%s",
  +                            MODNAME, m_cont->lineno, m_cont,
  +                            m_cont->next, m_cont->cont_level,
  +                            m_cont->desc ? m_cont->desc : "NULL");
   #endif
                   /*
  -                 * this trick allows us to keep *m in sync
  -                 * when the continue advances the pointer
  +                 * this trick allows us to keep *m in sync when the continue
  +                 * advances the pointer
                    */
                   m = m_cont;
                   m_cont = m_cont->next;
  @@ -1738,49 +1721,48 @@
           /* this will be the last run through the loop */
   #if MIME_MAGIC_DEBUG
           aplog_error(APLOG_MARK, APLOG_DEBUG, r->server,
  -		    "%s: rule matched, line=%d type=%d %s",
  -		    MODNAME, m->lineno, m->type,
  -		    (m->type == STRING) ? m->value.s : "");
  +                    "%s: rule matched, line=%d type=%d %s",
  +                    MODNAME, m->lineno, m->type,
  +                    (m->type == STRING) ? m->value.s : "");
   #endif
   
           /* print the match */
           mprint(r, &p, m);
   
           /*
  -         * If we printed something, we'll need to print a blank
  -         * before we print something else.
  +         * If we printed something, we'll need to print a blank before we
  +         * print something else.
            */
           if (m->desc[0])
               need_separator = 1;
           /* and any continuations that match */
           cont_level++;
           /*
  -         * while (m && m->next && m->next->cont_level != 0 && ( m =
  -         * m->next ))
  +         * while (m && m->next && m->next->cont_level != 0 && ( m = m->next
  +         * ))
            */
           m = m->next;
           while (m && (m->cont_level != 0)) {
   #if MIME_MAGIC_DEBUG
               aplog_error(APLOG_MARK, APLOG_DEBUG, r->server,
  -			"%s: match line=%d cont=%d type=%d %s",
  -			MODNAME, m->lineno, m->cont_level, m->type,
  -			(m->type == STRING) ? m->value.s : "");
  +                        "%s: match line=%d cont=%d type=%d %s",
  +                        MODNAME, m->lineno, m->cont_level, m->type,
  +                        (m->type == STRING) ? m->value.s : "");
   #endif
               if (cont_level >= m->cont_level) {
                   if (cont_level > m->cont_level) {
                       /*
  -                     * We're at the end of the level
  -                     * "cont_level" continuations.
  +                     * We're at the end of the level "cont_level"
  +                     * continuations.
                        */
                       cont_level = m->cont_level;
                   }
                   if (mget(r, &p, s, m, nbytes) &&
                       mcheck(r, &p, m)) {
                       /*
  -                     * This continuation matched. Print
  -                     * its message, with a blank before
  -                     * it if the previous item printed
  -                     * and this item isn't empty.
  +                     * This continuation matched. Print its message, with a
  +                     * blank before it if the previous item printed and this
  +                     * item isn't empty.
                        */
                       /* space if previous printed */
                       if (need_separator
  @@ -1795,8 +1777,8 @@
                           need_separator = 1;
   
                       /*
  -                     * If we see any continuations at a
  -                     * higher level, process them.
  +                     * If we see any continuations at a higher level, process
  +                     * them.
                        */
                       cont_level++;
                   }
  @@ -1807,19 +1789,18 @@
           }
   #if MIME_MAGIC_DEBUG
           aplog_error(APLOG_MARK, APLOG_DEBUG, r->server,
  -		    "%s: matched after %d rules", MODNAME, rule_counter);
  +                    "%s: matched after %d rules", MODNAME, rule_counter);
   #endif
  -        return 1;    /* all through */
  +        return 1;               /* all through */
       }
   #if MIME_MAGIC_DEBUG
       aplog_error(APLOG_MARK, APLOG_DEBUG, r->server,
  -		"%s: failed after %d rules", MODNAME, rule_counter);
  +                "%s: failed after %d rules", MODNAME, rule_counter);
   #endif
  -    return 0;        /* no match at all */
  +    return 0;                   /* no match at all */
   }
   
  -static void
  -mprint(request_rec * r, union VALUETYPE * p, struct magic * m)
  +static void mprint(request_rec *r, union VALUETYPE * p, struct magic * m)
   {
       char *pp, *rt;
       unsigned long v;
  @@ -1861,8 +1842,8 @@
           return;
       default:
           aplog_error(APLOG_MARK, APLOG_ERR, r->server,
  -		    "%s: invalid m->type (%d) in mprint().",
  -		    MODNAME, m->type);
  +                    "%s: invalid m->type (%d) in mprint().",
  +                    MODNAME, m->type);
           return;
       }
   
  @@ -1873,8 +1854,7 @@
   /*
    * Convert the byte order of the data we are looking at
    */
  -static int
  -mconvert(request_rec * r, union VALUETYPE * p, struct magic * m)
  +static int mconvert(request_rec *r, union VALUETYPE * p, struct magic * m)
   {
       char *rt;
   
  @@ -1908,15 +1888,14 @@
           return 1;
       default:
           aplog_error(APLOG_MARK, APLOG_ERR, r->server,
  -		    "%s: invalid type %d in mconvert().", MODNAME, m->type);
  +                    "%s: invalid type %d in mconvert().", MODNAME, m->type);
           return 0;
       }
   }
   
   
  -static int
  -mget(request_rec * r, union VALUETYPE * p, unsigned char *s, struct magic * m,
  -     int nbytes)
  +static int mget(request_rec *r, union VALUETYPE * p, unsigned char *s, struct magic * m,
  +                    int nbytes)
   {
       long offset = m->offset;
       if (offset + sizeof(union VALUETYPE) > nbytes)
  @@ -1953,8 +1932,7 @@
       return 1;
   }
   
  -static int
  -mcheck(request_rec * r, union VALUETYPE * p, struct magic * m)
  +static int mcheck(request_rec *r, union VALUETYPE * p, struct magic * m)
   {
       register unsigned long l = m->value.l;
       register unsigned long v;
  @@ -1989,9 +1967,9 @@
       case STRING:
           l = 0;
           /*
  -         * What we want here is: v = strncmp(m->value.s, p->s,
  -         * m->vallen); but ignoring any nulls.  bcmp doesn't give
  -         * -/+/0 and isn't universally available anyway.
  +         * What we want here is: v = strncmp(m->value.s, p->s, m->vallen);
  +         * but ignoring any nulls.  bcmp doesn't give -/+/0 and isn't
  +         * universally available anyway.
            */
           v = 0;
           {
  @@ -2006,8 +1984,8 @@
           break;
       default:
           aplog_error(APLOG_MARK, APLOG_ERR, r->server,
  -		    "%s: invalid type %d in mcheck().", MODNAME, m->type);
  -        return 0;    /* NOTREACHED */
  +                    "%s: invalid type %d in mcheck().", MODNAME, m->type);
  +        return 0;               /* NOTREACHED */
       }
   
       v = signextend(r->server, m, v) & m->mask;
  @@ -2024,7 +2002,7 @@
           matched = v != l;
   #if MIME_MAGIC_DEBUG
           aplog_error(APLOG_MARK, APLOG_DEBUG, r->server,
  -		    "%lu != %lu = %d", v, l, matched);
  +                    "%lu != %lu = %d", v, l, matched);
   #endif
           break;
   
  @@ -2032,7 +2010,7 @@
           matched = v == l;
   #if MIME_MAGIC_DEBUG
           aplog_error(APLOG_MARK, APLOG_DEBUG, r->server,
  -		    "%lu == %lu = %d", v, l, matched);
  +                    "%lu == %lu = %d", v, l, matched);
   #endif
           break;
   
  @@ -2041,14 +2019,14 @@
               matched = v > l;
   #if MIME_MAGIC_DEBUG
               aplog_error(APLOG_MARK, APLOG_DEBUG, r->server,
  -			"%lu > %lu = %d", v, l, matched);
  +                        "%lu > %lu = %d", v, l, matched);
   #endif
           }
           else {
               matched = (long) v > (long) l;
   #if MIME_MAGIC_DEBUG
               aplog_error(APLOG_MARK, APLOG_DEBUG, r->server,
  -			"%ld > %ld = %d", v, l, matched);
  +                        "%ld > %ld = %d", v, l, matched);
   #endif
           }
           break;
  @@ -2057,15 +2035,15 @@
           if (m->flag & UNSIGNED) {
               matched = v < l;
   #if MIME_MAGIC_DEBUG
  -                aplog_error(APLOG_MARK, APLOG_DEBUG, r->server,
  -			    "%lu < %lu = %d", v, l, matched);
  +            aplog_error(APLOG_MARK, APLOG_DEBUG, r->server,
  +                        "%lu < %lu = %d", v, l, matched);
   #endif
           }
           else {
               matched = (long) v < (long) l;
   #if MIME_MAGIC_DEBUG
               aplog_error(APLOG_MARK, APLOG_DEBUG, r->server,
  -			"%ld < %ld = %d", v, l, matched);
  +                        "%ld < %ld = %d", v, l, matched);
   #endif
           }
           break;
  @@ -2074,7 +2052,7 @@
           matched = (v & l) == l;
   #if MIME_MAGIC_DEBUG
           aplog_error(APLOG_MARK, APLOG_DEBUG, r->server,
  -		    "((%lx & %lx) == %lx) = %d", v, l, l, matched);
  +                    "((%lx & %lx) == %lx) = %d", v, l, l, matched);
   #endif
           break;
   
  @@ -2082,16 +2060,16 @@
           matched = (v & l) != l;
   #if MIME_MAGIC_DEBUG
           aplog_error(APLOG_MARK, APLOG_DEBUG, r->server,
  -		    "((%lx & %lx) != %lx) = %d", v, l, l, matched);
  +                    "((%lx & %lx) != %lx) = %d", v, l, l, matched);
   #endif
           break;
   
       default:
           matched = 0;
           aplog_error(APLOG_MARK, APLOG_ERR, r->server,
  -		    "%s: mcheck: can't happen: invalid relation %d.",
  -		    MODNAME, m->reln);
  -        break;        /* NOTREACHED */
  +                    "%s: mcheck: can't happen: invalid relation %d.",
  +                    MODNAME, m->reln);
  +        break;                  /* NOTREACHED */
       }
   
       return matched;
  @@ -2100,29 +2078,28 @@
   /* an optimization over plain strcmp() */
   #define    STREQ(a, b)    (*(a) == *(b) && strcmp((a), (b)) == 0)
   
  -static int
  -ascmagic(request_rec * r, unsigned char *buf, int nbytes)
  +static int ascmagic(request_rec *r, unsigned char *buf, int nbytes)
   {
       int i, has_escapes = 0;
       unsigned char *s;
  -    char nbuf[HOWMANY + 1];    /* one extra for terminating '\0' */
  +    char nbuf[HOWMANY + 1];     /* one extra for terminating '\0' */
       char *token;
       register struct names *p;
   
       /* these are easy, do them first */
   
       /*
  -     * for troff, look for . + letter + letter or .\"; this must be done
  -     * to disambiguate tar archives' ./file and other trash from real
  -     * troff input.
  +     * for troff, look for . + letter + letter or .\"; this must be done to
  +     * disambiguate tar archives' ./file and other trash from real troff
  +     * input.
        */
       if (*buf == '.') {
           unsigned char *tp = buf + 1;
   
           while (isascii(*tp) && isspace(*tp))
  -            ++tp;    /* skip leading whitespace */
  +            ++tp;               /* skip leading whitespace */
           if ((isascii(*tp) && (isalnum(*tp) || *tp == '\\') &&
  -        isascii(*(tp + 1)) && (isalnum(*(tp + 1)) || *tp == '"'))) {
  +             isascii(*(tp + 1)) && (isalnum(*(tp + 1)) || *tp == '"'))) {
               magic_rsl_puts(r, "application/x-troff");
               return 1;
           }
  @@ -2140,7 +2117,7 @@
       s[nbytes] = '\0';
       has_escapes = (memchr(s, '\033', nbytes) != NULL);
       while ((token = strtok((char *) s, " \t\n\r\f")) != NULL) {
  -        s = NULL;    /* make strtok() keep on tokin' */
  +        s = NULL;               /* make strtok() keep on tokin' */
           for (p = names; p < names + NNAMES; p++) {
               if (STREQ(p->name, token)) {
                   magic_rsl_puts(r, types[p->type]);
  @@ -2164,7 +2141,7 @@
   
       for (i = 0; i < nbytes; i++) {
           if (!isascii(*(buf + i)))
  -            return 0;    /* not all ascii */
  +            return 0;           /* not all ascii */
       }
   
       /* all else fails, but it is ascii... */
  @@ -2201,24 +2178,23 @@
       },
       {
           "\037\213", 2, {
  -	    "gzip", "-dcq", NULL
  +            "gzip", "-dcq", NULL
           }, 1, "x-gzip"
       },
       /*
  -     * XXX pcat does not work, cause I don't know how to make it read
  -     * stdin, so we use gzip
  +     * XXX pcat does not work, cause I don't know how to make it read stdin,
  +     * so we use gzip
        */
       {
           "\037\036", 2, {
  -	    "gzip", "-dcq", NULL
  +            "gzip", "-dcq", NULL
           }, 0, "x-gzip"
       },
   };
   
   static int ncompr = sizeof(compr) / sizeof(compr[0]);
   
  -static int
  -zmagic(request_rec * r, unsigned char *buf, int nbytes)
  +static int zmagic(request_rec *r, unsigned char *buf, int nbytes)
   {
       unsigned char *newbuf;
       int newsize;
  @@ -2244,19 +2220,18 @@
   }
   
   
  -static int
  -uncompress(request_rec *r, int method, const unsigned char *old,
  -       unsigned char **newch, int n)
  +static int uncompress(request_rec *r, int method, const unsigned char *old,
  +                          unsigned char **newch, int n)
   {
       int fdin[2], fdout[2];
   
       if (pipe(fdin) == -1 || pipe(fdout) == -1) {
           aplog_error(APLOG_MARK, APLOG_ERR, r->server,
  -		    "%s: cannot create pipe.", MODNAME);
  +                    "%s: cannot create pipe.", MODNAME);
           return -1;
       }
       switch (fork()) {
  -    case 0:        /* child */
  +    case 0:                     /* child */
           (void) close(STDIN_FILENO);
           (void) dup(fdin[0]);
           (void) close(fdin[0]);
  @@ -2271,30 +2246,30 @@
   
           execvp(compr[method].argv[0], compr[method].argv);
           aplog_error(APLOG_MARK, APLOG_ERR, r->server,
  -		    "%s: could not execute `%s'.", MODNAME, compr[method].argv[0]);
  +             "%s: could not execute `%s'.", MODNAME, compr[method].argv[0]);
           return -1;
       case -1:
           aplog_error(APLOG_MARK, APLOG_ERR, r->server,
  -		    "%s: could not fork.", MODNAME);
  +                    "%s: could not fork.", MODNAME);
           return -1;
   
  -    default:        /* parent */
  +    default:                    /* parent */
           (void) close(fdin[0]);
           (void) close(fdout[1]);
           if (write(fdin[1], old, n) != n) {
               aplog_error(APLOG_MARK, APLOG_ERR, r->server,
  -			"%s: write failed.", MODNAME);
  +                        "%s: write failed.", MODNAME);
               return -1;
           }
           (void) close(fdin[1]);
           if ((*newch = (unsigned char *) palloc(r->pool, n)) == NULL) {
               aplog_error(APLOG_MARK, APLOG_ERR, r->server,
  -			"%s: out of memory in uncompress()", MODNAME);
  +                        "%s: out of memory in uncompress()", MODNAME);
               return -1;
           }
           if ((n = read(fdout[0], *newch, n)) <= 0) {
               aplog_error(APLOG_MARK, APLOG_ERR, r->server,
  -			"%s: read failed", MODNAME);
  +                        "%s: read failed", MODNAME);
               return -1;
           }
           (void) close(fdout[0]);
  @@ -2305,13 +2280,13 @@
   
   /*
    * is_tar() -- figure out whether file is a tar archive.
  - * 
  + *
    * Stolen (by author of file utility) from the public domain tar program: Public
    * Domain version written 26 Aug 1985 John Gilmore (ihnp4!hoptoad!gnu).
  - * 
  + *
    * @(#)list.c 1.18 9/23/86 Public Domain - gnu $Id: mod_mime_magic.c,v 1.7
    * 1997/06/24 00:41:02 ikluft Exp ikluft $
  - * 
  + *
    * Comments changed and some code/comments reformatted for file command by Ian
    * Darwin.
    */
  @@ -2323,8 +2298,7 @@
    * old UNIX tar file, 2 for Unix Std (POSIX) tar file.
    */
   
  -static int
  -is_tar(buf, nbytes)
  +static int is_tar(buf, nbytes)
       unsigned char *buf;
       int nbytes;
   {
  @@ -2342,8 +2316,7 @@
       p = header->charptr;
       for (i = sizeof(union record); --i >= 0;) {
           /*
  -         * We can't use unsigned char here because of old compilers,
  -         * e.g. V7.
  +         * We can't use unsigned char here because of old compilers, e.g. V7.
            */
           sum += 0xFF & *p++;
       }
  @@ -2354,38 +2327,37 @@
       sum += ' ' * sizeof header->header.chksum;
   
       if (sum != recsum)
  -        return 0;    /* Not a tar archive */
  +        return 0;               /* Not a tar archive */
   
       if (0 == strcmp(header->header.magic, TMAGIC))
  -        return 2;    /* Unix Standard tar archive */
  +        return 2;               /* Unix Standard tar archive */
   
  -    return 1;        /* Old fashioned tar archive */
  +    return 1;                   /* Old fashioned tar archive */
   }
   
   
   /*
    * Quick and dirty octal conversion.
  - * 
  + *
    * Result is -1 if the field is invalid (all blank, or nonoctal).
    */
  -static long
  -from_oct(int digs, char *where)
  +static long from_oct(int digs, char *where)
   {
       register long value;
   
  -    while (isspace(*where)) {    /* Skip spaces */
  +    while (isspace(*where)) {   /* Skip spaces */
           where++;
           if (--digs <= 0)
  -            return -1;    /* All blank field */
  +            return -1;          /* All blank field */
       }
       value = 0;
  -    while (digs > 0 && isodigit(*where)) {    /* Scan til nonoctal */
  +    while (digs > 0 && isodigit(*where)) {      /* Scan til nonoctal */
           value = (value << 3) | (*where++ - '0');
           --digs;
       }
   
       if (digs > 0 && *where && !isspace(*where))
  -        return -1;    /* Ended on non-space/nul */
  +        return -1;              /* Ended on non-space/nul */
   
       return value;
   }
  @@ -2400,8 +2372,7 @@
    * through a sub-request.  The base file name (without the @num suffix)
    * must exist because its type will be used as the result.
    */
  -static int 
  -revision_suffix(request_rec * r)
  +static int revision_suffix(request_rec *r)
   {
       int suffix_pos, result;
       char *sub_filename;
  @@ -2409,8 +2380,8 @@
   
   #if MIME_MAGIC_DEBUG
       aplog_error(APLOG_MARK, APLOG_DEBUG, r->server,
  -		"%s: revision_suffix checking%s", MODNAME, r->filename);
  -#endif                /* MIME_MAGIC_DEBUG */
  +                "%s: revision_suffix checking%s", MODNAME, r->filename);
  +#endif                          /* MIME_MAGIC_DEBUG */
   
       /* check for recognized revision suffix */
       suffix_pos = strlen(r->filename) - 1;
  @@ -2428,8 +2399,8 @@
       sub_filename = pstrndup(r->pool, r->filename, suffix_pos);
   #if MIME_MAGIC_DEBUG
       aplog_error(APLOG_MARK, APLOG_DEBUG, r->server,
  -		"%s: subrequest lookup for %s", MODNAME, sub_filename);
  -#endif                /* MIME_MAGIC_DEBUG */
  +                "%s: subrequest lookup for %s", MODNAME, sub_filename);
  +#endif                          /* MIME_MAGIC_DEBUG */
       sub = sub_req_lookup_file(sub_filename, r);
   
       /* extract content type/encoding/language from sub-request */
  @@ -2437,9 +2408,9 @@
           r->content_type = pstrdup(r->pool, sub->content_type);
   #if MIME_MAGIC_DEBUG
           aplog_error(APLOG_MARK, APLOG_DEBUG, r->server,
  -		    "%s: subrequest %s got %s",
  -		    MODNAME, sub_filename, r->content_type);
  -#endif                /* MIME_MAGIC_DEBUG */
  +                    "%s: subrequest %s got %s",
  +                    MODNAME, sub_filename, r->content_type);
  +#endif                          /* MIME_MAGIC_DEBUG */
           if (sub->content_encoding)
               r->content_encoding =
                   pstrdup(r->pool, sub->content_encoding);
  @@ -2459,15 +2430,14 @@
    * initialize the module
    */
   
  -static void 
  -magic_init(server_rec * s, pool * p)
  +static void magic_init(server_rec *s, pool *p)
   {
       int result;
       magic_server_config_rec *conf = (magic_server_config_rec *)
  -        get_module_config(s->module_config, &mime_magic_module);
  +    get_module_config(s->module_config, &mime_magic_module);
   #if MIME_MAGIC_DEBUG
       struct magic *m, *prevm;
  -#endif                /* MIME_MAGIC_DEBUG */
  +#endif                          /* MIME_MAGIC_DEBUG */
   
       /* on the first time through we read the magic file */
       if (conf->magicfile && !conf->magic) {
  @@ -2483,13 +2453,13 @@
                   isprint((((unsigned long) m) >> 8) & 255) &&
                   isprint(((unsigned long) m) & 255)) {
                   aplog_error(APLOG_MARK, APLOG_DEBUG, s,
  -			    "%s: magic_init 1: POINTER CLOBBERED! "
  -			    "m=\"%c%c%c%c\" line=%d", MODNAME,
  -			    (((unsigned long) m) >> 24) & 255,
  -			    (((unsigned long) m) >> 16) & 255,
  -			    (((unsigned long) m) >> 8) & 255,
  -			    ((unsigned long) m) & 255,
  -			    prevm ? prevm->lineno : -1);
  +                            "%s: magic_init 1: POINTER CLOBBERED! "
  +                            "m=\"%c%c%c%c\" line=%d", MODNAME,
  +                            (((unsigned long) m) >> 24) & 255,
  +                            (((unsigned long) m) >> 16) & 255,
  +                            (((unsigned long) m) >> 8) & 255,
  +                            ((unsigned long) m) & 255,
  +                            prevm ? prevm->lineno : -1);
                   break;
               }
               prevm = m;
  @@ -2506,8 +2476,7 @@
    * Find the Content-Type from any resource this module has available
    */
   
  -static int 
  -magic_find_ct(request_rec * r)
  +static int magic_find_ct(request_rec *r)
   {
       int result;
   
  @@ -2544,23 +2513,23 @@
    */
   
   module mime_magic_module = {
  -   STANDARD_MODULE_STUFF,
  -   magic_init,			/* initializer */
  -   NULL,			/* dir config creator */
  -   NULL,			/* dir merger --- default is to override */
  -   create_magic_server_config,	/* server config */
  -   merge_magic_server_config,	/* merge server config */
  -   mime_magic_cmds,		/* command table */
  -   NULL,			/* handlers */
  -   NULL,			/* filename translation */
  -   NULL,			/* check_user_id */
  -   NULL,			/* check auth */
  -   NULL,			/* check access */
  -   magic_find_ct,		/* type_checker */
  -   NULL,			/* fixups */
  -   NULL,			/* logger */
  -   NULL,			/* header parser */
  -   NULL,			/* child_init */
  -   NULL,			/* child_exit */
  -   NULL				/* post read-request */
  +    STANDARD_MODULE_STUFF,
  +    magic_init,                 /* initializer */
  +    NULL,                       /* dir config creator */
  +    NULL,                       /* dir merger --- default is to override */
  +    create_magic_server_config, /* server config */
  +    merge_magic_server_config,  /* merge server config */
  +    mime_magic_cmds,            /* command table */
  +    NULL,                       /* handlers */
  +    NULL,                       /* filename translation */
  +    NULL,                       /* check_user_id */
  +    NULL,                       /* check auth */
  +    NULL,                       /* check access */
  +    magic_find_ct,              /* type_checker */
  +    NULL,                       /* fixups */
  +    NULL,                       /* logger */
  +    NULL,                       /* header parser */
  +    NULL,                       /* child_init */
  +    NULL,                       /* child_exit */
  +    NULL                        /* post read-request */
   };
  
  
  
  1.2       +210 -205  apachen/src/modules/standard/mod_speling.c
  
  Index: mod_speling.c
  ===================================================================
  RCS file: /export/home/cvs/apachen/src/modules/standard/mod_speling.c,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- mod_speling.c	1997/09/11 18:50:33	1.1
  +++ mod_speling.c	1997/09/16 04:30:22	1.2
  @@ -7,7 +7,7 @@
    * are met:
    *
    * 1. Redistributions of source code must retain the above copyright
  - *    notice, this list of conditions and the following disclaimer. 
  + *    notice, this list of conditions and the following disclaimer.
    *
    * 2. Redistributions in binary form must reproduce the above copyright
    *    notice, this list of conditions and the following disclaimer in
  @@ -82,12 +82,12 @@
    * here it's just one int!
    */
   
  -static void *create_speling_config(pool * dummy, server_rec * s)
  +static void *create_speling_config(pool *dummy, server_rec *s)
   {
       return (void *) 0;
   }
   
  -static const char *set_speling(cmd_parms * cmd, void *dummy, int arg)
  +static const char *set_speling(cmd_parms *cmd, void *dummy, int arg)
   {
       void *server_conf = cmd->server->module_config;
   
  @@ -98,7 +98,7 @@
   command_rec speling_cmds[] =
   {
       {"CheckSpelling", set_speling, NULL, RSRC_CONF, FLAG,
  -       "whether or not to fix miscapitalized/misspelled requests"},
  +    "whether or not to fix miscapitalized/misspelled requests"},
       {NULL}
   };
   
  @@ -126,7 +126,7 @@
   typedef struct {
       const char *name;
       sp_reason quality;
  -} misspelled_file;
  +}      misspelled_file;
   
   /*
    * spdist() is taken from Kernighan & Pike,
  @@ -150,31 +150,31 @@
   static sp_reason spdist(const char *s, const char *t)
   {
       for (; tolower(*s) == tolower(*t); t++, s++)
  -	if (*t == '\0')
  -	    return SP_MISCAPITALIZED;	/* exact match (sans case) */
  +        if (*t == '\0')
  +            return SP_MISCAPITALIZED;   /* exact match (sans case) */
       if (*s) {
  -	if (*t) {
  -	    if (s[1] && t[1] && tolower(*s) == tolower(t[1]) &&
  -	      tolower(*t) == tolower(s[1]) && strcasecmp(s + 2, t + 2) == 0)
  -		return SP_TRANSPOSITION;	/* transposition */
  -	    if (strcasecmp(s + 1, t + 1) == 0)
  -		return SP_SIMPLETYPO;	/* 1 char mismatch */
  -	}
  -	if (strcasecmp(s + 1, t) == 0)
  -	    return SP_EXTRACHAR;	/* extra character */
  +        if (*t) {
  +            if (s[1] && t[1] && tolower(*s) == tolower(t[1]) &&
  +              tolower(*t) == tolower(s[1]) && strcasecmp(s + 2, t + 2) == 0)
  +                return SP_TRANSPOSITION;        /* transposition */
  +            if (strcasecmp(s + 1, t + 1) == 0)
  +                return SP_SIMPLETYPO;   /* 1 char mismatch */
  +        }
  +        if (strcasecmp(s + 1, t) == 0)
  +            return SP_EXTRACHAR;/* extra character */
       }
       if (*t && strcasecmp(s, t + 1) == 0)
  -	return SP_MISSINGCHAR;	/* missing character */
  -    return SP_VERYDIFFERENT;	/* distance too large to fix. */
  +        return SP_MISSINGCHAR;  /* missing character */
  +    return SP_VERYDIFFERENT;    /* distance too large to fix. */
   }
   
   static int sort_by_quality(const void *left, const void *rite)
   {
       return (int) (((misspelled_file *) left)->quality)
  -	 - (int) (((misspelled_file *) rite)->quality);
  +    - (int) (((misspelled_file *) rite)->quality);
   }
   
  -static int check_speling(request_rec * r)
  +static int check_speling(request_rec *r)
   {
       void *server_conf = r->server->module_config;
       char *good, *bad, *postgood, *url;
  @@ -184,21 +184,22 @@
       array_header *candidates = NULL;
   
       if (!(int) get_module_config(server_conf, &speling_module))
  -	return DECLINED;
  +        return DECLINED;
   
       /* We only want to worry about GETs */
       if (r->method_number != M_GET)
  -	return DECLINED;
  +        return DECLINED;
   
       /* We've already got a file of some kind or another */
       if (r->proxyreq || (r->finfo.st_mode != 0))
  -	return DECLINED;
  +        return DECLINED;
   
       /* This is a sub request - don't mess with it */
       if (r->main)
  -	return DECLINED;
  +        return DECLINED;
   
  -    /* The request should end up looking like this:
  +    /*
  +     * The request should end up looking like this:
        * r->uri: /correct-url/mispelling/more
        * r->filename: /correct-file/mispelling r->path_info: /more
        *
  @@ -207,7 +208,7 @@
   
       filoc = rind(r->filename, '/');
       if (filoc == -1)
  -	return DECLINED;
  +        return DECLINED;
   
       /* good = /correct-file */
       good = pstrndup(r->pool, r->filename, filoc);
  @@ -221,211 +222,215 @@
   
       /* Check to see if the URL pieces add up */
       if (strcmp(postgood, r->uri + (urlen - pglen)))
  -	return DECLINED;
  +        return DECLINED;
   
       /* url = /correct-url */
       url = pstrndup(r->pool, r->uri, (urlen - pglen));
   
       /* Now open the directory and do ourselves a check... */
       dirp = opendir(good);
  -    if (dirp == NULL)		/* Oops, not a directory... */
  -	return DECLINED;
  +    if (dirp == NULL)           /* Oops, not a directory... */
  +        return DECLINED;
   
       candidates = make_array(r->pool, 2, sizeof(misspelled_file));
   
       dotloc = ind(bad, '.');
       if (dotloc == -1)
  -	dotloc = strlen(bad);
  +        dotloc = strlen(bad);
   
       while ((dir_entry = readdir(dirp))) {
  -	sp_reason q;
  +        sp_reason q;
   
  -	/* If we end up with a "fixed" URL which is identical to the
  -	 * requested one, we must have found a broken symlink or some such.
  -	 * Do _not_ try to redirect this, it causes a loop!
  -	 */
  -	if (strcmp(bad, dir_entry->d_name) == 0)
  -	{
  -	    closedir(dirp);
  -	    return OK;
  -	}
  -	/*
  -	 * miscapitalization errors are checked first
  -	 * (like, e.g., lower case file, upper case request)
  -	 */
  -	else if (strcasecmp(bad, dir_entry->d_name) == 0) {
  -	    misspelled_file *sp_new = (misspelled_file *) push_array(candidates);
  -	    sp_new->name = pstrdup(r->pool, dir_entry->d_name);
  -	    sp_new->quality = SP_MISCAPITALIZED;
  -	}
  -	/*
  -	 * simple typing errors are checked next
  -	 * (like, e.g., missing/extra/transposed char)
  -	 */
  -	else if ((q = spdist(bad, dir_entry->d_name)) != SP_VERYDIFFERENT) {
  -	    misspelled_file *sp_new = (misspelled_file *) push_array(candidates);
  -	    sp_new->name = pstrdup(r->pool, dir_entry->d_name);
  -	    sp_new->quality = q;
  -	}
  -	/* The spdist() should have found the majority of the misspelled requests.
  -	 * it is of questionable use to continue looking for files with the same
  -	 * base name, but potentially of totally wrong type (index.html <-> index.db)
  -	 * I would propose to not set the WANT_BASENAME_MATCH define.
  -	 *      08-Aug-1997 <Ma...@Mch.SNI.De>
  -	 *
  -	 * However, Alexei replied giving some reasons to add it anyway:
  -	 * > Oh, by the way, I remembered why having the
  -	 * > extension-stripping-and-matching stuff is a good idea:
  -	 * >
  -	 * > If you're using MultiViews, and have a file named foobar.html, which you
  -	 * > refer to as "foobar", and someone tried to access "Foobar", mod_speling
  -	 * > won't find it, because it won't find anything matching that
  -	 * > spelling. With the extension-munging, it would locate "foobar.html". Not
  -	 * > perfect, but I ran into that problem when I first wrote the module.
  -	 */
  -	else {
  +        /*
  +         * If we end up with a "fixed" URL which is identical to the
  +         * requested one, we must have found a broken symlink or some such.
  +         * Do _not_ try to redirect this, it causes a loop!
  +         */
  +        if (strcmp(bad, dir_entry->d_name) == 0) {
  +            closedir(dirp);
  +            return OK;
  +        }
  +        /*
  +         * miscapitalization errors are checked first (like, e.g., lower case
  +         * file, upper case request)
  +         */
  +        else if (strcasecmp(bad, dir_entry->d_name) == 0) {
  +            misspelled_file *sp_new = (misspelled_file *) push_array(candidates);
  +            sp_new->name = pstrdup(r->pool, dir_entry->d_name);
  +            sp_new->quality = SP_MISCAPITALIZED;
  +        }
  +        /*
  +         * simple typing errors are checked next (like, e.g.,
  +         * missing/extra/transposed char)
  +         */
  +        else if ((q = spdist(bad, dir_entry->d_name)) != SP_VERYDIFFERENT) {
  +            misspelled_file *sp_new = (misspelled_file *) push_array(candidates);
  +            sp_new->name = pstrdup(r->pool, dir_entry->d_name);
  +            sp_new->quality = q;
  +        }
  +        /* The spdist() should have found the majority of the misspelled requests.
  +         * it is of questionable use to continue looking for files with the same
  +         * base name, but potentially of totally wrong type (index.html <-> index.db)
  +         * I would propose to not set the WANT_BASENAME_MATCH define.
  +         *      08-Aug-1997 <Ma...@Mch.SNI.De>
  +         *
  +         * However, Alexei replied giving some reasons to add it anyway:
  +         * > Oh, by the way, I remembered why having the
  +         * > extension-stripping-and-matching stuff is a good idea:
  +         * >
  +         * > If you're using MultiViews, and have a file named foobar.html, which you
  +         * > refer to as "foobar", and someone tried to access "Foobar", mod_speling
  +         * > won't find it, because it won't find anything matching that
  +         * > spelling. With the extension-munging, it would locate "foobar.html". Not
  +         * > perfect, but I ran into that problem when I first wrote the module.
  +         */
  +        else {
   #ifdef WANT_BASENAME_MATCH
  -	    /* Okay... we didn't find anything. Now we take out the hard-core
  -	     * power tools. There are several cases here. Someone might have
  -	     * entered a wrong extension (.htm instead of .html or vice versa)
  -	     * or the document could be negotiated. At any rate, now we just compare
  -	     * stuff before the first dot. If it matches, we figure we got us a
  -	     * match. This can result in wrong things if there are files of
  -	     * different content types but the same prefix (e.g. foo.gif and foo.html)
  -	     * This code will pick the first one it finds. Better than a Not Found,
  -	     * though.
  -	     */
  -	    int entloc = ind(dir_entry->d_name, '.');
  -	    if (entloc == -1)
  -		entloc = strlen(dir_entry->d_name);
  -
  -	    if ((dotloc == entloc)
  -		&& !strncasecmp(bad, dir_entry->d_name, dotloc)) {
  -		misspelled_file *sp_new = (misspelled_file *) push_array(candidates);
  -		sp_new->name = pstrdup(r->pool, dir_entry->d_name);
  -		sp_new->quality = SP_VERYDIFFERENT;
  -	    }
  +            /*
  +             * Okay... we didn't find anything. Now we take out the hard-core
  +             * power tools. There are several cases here. Someone might have
  +             * entered a wrong extension (.htm instead of .html or vice
  +             * versa) or the document could be negotiated. At any rate, now
  +             * we just compare stuff before the first dot. If it matches, we
  +             * figure we got us a match. This can result in wrong things if
  +             * there are files of different content types but the same prefix
  +             * (e.g. foo.gif and foo.html) This code will pick the first one
  +             * it finds. Better than a Not Found, though.
  +             */
  +            int entloc = ind(dir_entry->d_name, '.');
  +            if (entloc == -1)
  +                entloc = strlen(dir_entry->d_name);
  +
  +            if ((dotloc == entloc)
  +                && !strncasecmp(bad, dir_entry->d_name, dotloc)) {
  +                misspelled_file *sp_new = (misspelled_file *) push_array(candidates);
  +                sp_new->name = pstrdup(r->pool, dir_entry->d_name);
  +                sp_new->quality = SP_VERYDIFFERENT;
  +            }
   #endif
  -	}
  +        }
       }
       closedir(dirp);
   
       if (candidates->nelts != 0) {
  -	/* Wow... we found us a mispelling. Construct a fixed url */
  -	char *nuri, *ref;
  -	misspelled_file *variant = (misspelled_file *) candidates->elts;
  -	int i;
  -
  -	ref = table_get(r->headers_in, "Referer");
  -
  -	qsort((void *) candidates->elts, candidates->nelts,
  -	      sizeof(misspelled_file), sort_by_quality);
  -
  -	/*
  -	 * Conditions for immediate redirection:
  -	 *     a) the first candidate was not found by stripping the suffix
  +        /* Wow... we found us a mispelling. Construct a fixed url */
  +        char *nuri, *ref;
  +        misspelled_file *variant = (misspelled_file *) candidates->elts;
  +        int i;
  +
  +        ref = table_get(r->headers_in, "Referer");
  +
  +        qsort((void *) candidates->elts, candidates->nelts,
  +              sizeof(misspelled_file), sort_by_quality);
  +
  +        /*
  +         * Conditions for immediate redirection: 
  +         *     a) the first candidate was not found by stripping the suffix 
   	 * AND b) there exists only one candidate OR the best match is not ambigous
  -	 *
  -	 * Otherwise, a "[300] Multiple Choices" list with the variants is returned.
  -	 */
  -	if (variant[0].quality != SP_VERYDIFFERENT &&
  -	    (candidates->nelts == 1 || variant[0].quality != variant[1].quality)) {
  -
  -	    nuri = pstrcat(r->pool, url, variant[0].name,
  -			   r->path_info, NULL);
  -
  -	    table_set(r->headers_out, "Location",
  -		      construct_url(r->pool, nuri, r->server));
  -
  -	    aplog_error(APLOG_MARK, APLOG_ERR, r->server,
  -			ref ? "Fixed spelling: %s to %s from %s"
  -			: "Fixed spelling: %s to %s",
  -			r->uri, nuri, ref);
  -
  -	    return HTTP_MOVED_PERMANENTLY;
  -	}
  -	/*
  -	 * Otherwise, a "[300] Multiple Choices" list with the variants is returned.
  -	 */
  -	else {
  -	    char *t;
  -	    pool *pool;
  -	    table *notes;
  -
  -	    if (r->main == NULL) {
  -		pool = r->pool;
  -		notes = r->notes;
  -	    }
  -	    else {
  -		pool = r->main->pool;
  -		notes = r->main->notes;
  -	    }
  -
  -	    /* Generate the reponse text. */
  -	    t = pstrcat(pool, "The document name you requested (<code>",
  -		     r->uri, "</code>) could not be found on this server.\n"
  -			"However, we found documents with names similar to the one you requested.<p>"
  -			"Available documents:\n<ul>\n", NULL);
  -
  -	    for (i = 0; i < candidates->nelts; ++i) {
  -
  -		/* The format isn't very neat... */
  -		t = pstrcat(pool, t, "<li><a href=\"", variant[i].name, "\">",
  -			    variant[i].name, "</a> (",
  -			    sp_reason_str[(int) (variant[i].quality)], ")\n", NULL);
  -
  -		/* when we have printed the "close matches" and there
  -		 * are more "distant matches" (matched by stripping the
  -		 * suffix), then we insert an additional separator text
  -		 * to suggest that the user LOOK CLOSELY whether these
  -		 * are really the files she wanted.
  -		 */
  -		if (i > 0 && i < candidates->nelts - 1
  -		    && variant[i].quality != SP_VERYDIFFERENT
  -		    && variant[i + 1].quality == SP_VERYDIFFERENT) {
  -		    t = pstrcat(pool, t, "</ul>\nFurthermore, the following related documents were found:\n<ul>\n", NULL);
  -		}
  -	    }
  -	    t = pstrcat(pool, t, "</ul>\n", NULL);
  -
  -	    /* If we know there was a referring page, add a note: */
  -	    if (ref != NULL)
  -		t = pstrcat(pool, t, "Please consider informing the owner of the <a href=\"",
  -		ref, "\">referring page</a> about the broken link.\n", NULL);
  -
  -	    /* Pass our table to http_protocol.c (see mod_negotiation): */
  -	    table_set(notes, "variant-list", t);
  -
  -	    aplog_error(APLOG_MARK, APLOG_WARNING, r->server,
  -			ref ? "Spelling fix: %s: %d candidates from %s"
  -			: "Spelling fix: %s: %d candidates",
  -			r->uri, candidates->nelts, ref);
  +         * 
  +         * Otherwise, a "[300] Multiple Choices" list with the variants is
  +         * returned.
  +         */
  +        if (variant[0].quality != SP_VERYDIFFERENT &&
  +            (candidates->nelts == 1 || variant[0].quality != variant[1].quality)) {
  +
  +            nuri = pstrcat(r->pool, url, variant[0].name,
  +                           r->path_info, NULL);
  +
  +            table_set(r->headers_out, "Location",
  +                      construct_url(r->pool, nuri, r->server));
  +
  +            aplog_error(APLOG_MARK, APLOG_ERR, r->server,
  +                        ref ? "Fixed spelling: %s to %s from %s"
  +                        : "Fixed spelling: %s to %s",
  +                        r->uri, nuri, ref);
  +
  +            return HTTP_MOVED_PERMANENTLY;
  +        }
  +        /*
  +         * Otherwise, a "[300] Multiple Choices" list with the variants is
  +         * returned.
  +         */
  +        else {
  +            char *t;
  +            pool *pool;
  +            table *notes;
  +
  +            if (r->main == NULL) {
  +                pool = r->pool;
  +                notes = r->notes;
  +            }
  +            else {
  +                pool = r->main->pool;
  +                notes = r->main->notes;
  +            }
  +
  +            /* Generate the reponse text. */
  +            t = pstrcat(pool, "The document name you requested (<code>",
  +                     r->uri, "</code>) could not be found on this server.\n"
  +                        "However, we found documents with names similar to the one you requested.<p>"
  +                        "Available documents:\n<ul>\n", NULL);
  +
  +            for (i = 0; i < candidates->nelts; ++i) {
  +
  +                /* The format isn't very neat... */
  +                t = pstrcat(pool, t, "<li><a href=\"", variant[i].name, "\">",
  +                            variant[i].name, "</a> (",
  +                    sp_reason_str[(int) (variant[i].quality)], ")\n", NULL);
  +
  +                /*
  +                 * when we have printed the "close matches" and there are
  +                 * more "distant matches" (matched by stripping the suffix),
  +                 * then we insert an additional separator text to suggest
  +                 * that the user LOOK CLOSELY whether these are really the
  +                 * files she wanted.
  +                 */
  +                if (i > 0 && i < candidates->nelts - 1
  +                    && variant[i].quality != SP_VERYDIFFERENT
  +                    && variant[i + 1].quality == SP_VERYDIFFERENT) {
  +                    t = pstrcat(pool, t, "</ul>\nFurthermore, the following related documents were found:\n<ul>\n", NULL);
  +                }
  +            }
  +            t = pstrcat(pool, t, "</ul>\n", NULL);
  +
  +            /* If we know there was a referring page, add a note: */
  +            if (ref != NULL)
  +                t = pstrcat(pool, t, "Please consider informing the owner of the <a href=\"",
  +                ref, "\">referring page</a> about the broken link.\n", NULL);
  +
  +            /* Pass our table to http_protocol.c (see mod_negotiation): */
  +            table_set(notes, "variant-list", t);
  +
  +            aplog_error(APLOG_MARK, APLOG_WARNING, r->server,
  +                        ref ? "Spelling fix: %s: %d candidates from %s"
  +                        : "Spelling fix: %s: %d candidates",
  +                        r->uri, candidates->nelts, ref);
   
  -	    return HTTP_MULTIPLE_CHOICES;
  -	}
  +            return HTTP_MULTIPLE_CHOICES;
  +        }
       }
   
       return OK;
   }
   
   module MODULE_VAR_EXPORT speling_module = {
  -   STANDARD_MODULE_STUFF,
  -   NULL,                        /* initializer */
  -   NULL,                        /* create per-dir config */
  -   NULL,                        /* merge per-dir config */
  -   create_speling_config,       /* server config */
  -   NULL,                        /* merge server config */
  -   speling_cmds,                /* command table */
  -   NULL,                        /* handlers */
  -   NULL,                        /* filename translation */
  -   NULL,                        /* check_user_id */
  -   NULL,                        /* check auth */
  -   NULL,                        /* check access */
  -   NULL,                        /* type_checker */
  -   check_speling,               /* fixups */
  -   NULL,                        /* logger */
  -   NULL,                        /* header parser */
  -   NULL,                        /* child_init */
  -   NULL,                        /* child_exit */
  -   NULL                         /* post read-request */
  +    STANDARD_MODULE_STUFF,
  +    NULL,                       /* initializer */
  +    NULL,                       /* create per-dir config */
  +    NULL,                       /* merge per-dir config */
  +    create_speling_config,      /* server config */
  +    NULL,                       /* merge server config */
  +    speling_cmds,               /* command table */
  +    NULL,                       /* handlers */
  +    NULL,                       /* filename translation */
  +    NULL,                       /* check_user_id */
  +    NULL,                       /* check auth */
  +    NULL,                       /* check access */
  +    NULL,                       /* type_checker */
  +    check_speling,              /* fixups */
  +    NULL,                       /* logger */
  +    NULL,                       /* header parser */
  +    NULL,                       /* child_init */
  +    NULL,                       /* child_exit */
  +    NULL                        /* post read-request */
   };
  
  
  
  1.3       +107 -100  apachen/src/modules/standard/mod_unique_id.c
  
  Index: mod_unique_id.c
  ===================================================================
  RCS file: /export/home/cvs/apachen/src/modules/standard/mod_unique_id.c,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- mod_unique_id.c	1997/09/01 02:49:45	1.2
  +++ mod_unique_id.c	1997/09/16 04:30:22	1.3
  @@ -6,7 +6,7 @@
    * are met:
    *
    * 1. Redistributions of source code must retain the above copyright
  - *    notice, this list of conditions and the following disclaimer. 
  + *    notice, this list of conditions and the following disclaimer.
    *
    * 2. Redistributions in binary form must reproduce the above copyright
    *    notice, this list of conditions and the following disclaimer in
  @@ -72,7 +72,7 @@
       unsigned int in_addr;
       unsigned int pid;
       unsigned short counter;
  -} unique_id_rec;
  +}      unique_id_rec;
   
   /* Comments:
    *
  @@ -127,129 +127,136 @@
   
   static APACHE_TLS unique_id_rec cur_unique_id;
   
  -static void unique_id_global_init (server_rec *s, pool *p)
  +static void unique_id_global_init(server_rec *s, pool *p)
   {
   #ifndef MAXHOSTNAMELEN
   #define MAXHOSTNAMELEN 256
   #endif
  -    char str[MAXHOSTNAMELEN+1];
  +    char str[MAXHOSTNAMELEN + 1];
       struct hostent *hent;
   #ifndef NO_GETTIMEOFDAY
       struct timeval tv;
   #endif
   
  -    /* First of all, verify some assumptions that have been made about
  -     * the contents of unique_id_rec.  We do it this way because it
  -     * isn't affected by trailing padding.
  +    /*
  +     * First of all, verify some assumptions that have been made about the
  +     * contents of unique_id_rec.  We do it this way because it isn't
  +     * affected by trailing padding.
        */
  -    if (XtOffsetOf (unique_id_rec, counter) + sizeof (cur_unique_id.counter)
  -	!= 14) {
  -	aplog_error(APLOG_MARK, APLOG_ALERT, s,
  -		    "mod_unique_id: sorry the size assumptions are wrong "
  -		    "in mod_unique_id.c, please remove it from your server "
  -		    "or fix the code!");
  -	exit (1);
  +    if (XtOffsetOf(unique_id_rec, counter) + sizeof(cur_unique_id.counter)
  +        != 14) {
  +        aplog_error(APLOG_MARK, APLOG_ALERT, s,
  +                    "mod_unique_id: sorry the size assumptions are wrong "
  +                    "in mod_unique_id.c, please remove it from your server "
  +                    "or fix the code!");
  +        exit(1);
       }
   
  -    /* Now get the global in_addr.  Note that it is not sufficient to use
  -     * one of the addresses from the main_server, since those aren't as likely
  -     * to be unique as the physical address of the machine
  +    /*
  +     * Now get the global in_addr.  Note that it is not sufficient to use one
  +     * of the addresses from the main_server, since those aren't as likely to
  +     * be unique as the physical address of the machine
        */
  -    if (gethostname (str, sizeof (str) - 1) != 0) {
  -	aplog_error(APLOG_MARK, APLOG_ALERT, s,
  -		    "gethostname: mod_unique_id requires the hostname of the server");
  -	exit (1);
  +    if (gethostname(str, sizeof(str) - 1) != 0) {
  +        aplog_error(APLOG_MARK, APLOG_ALERT, s,
  +          "gethostname: mod_unique_id requires the hostname of the server");
  +        exit(1);
       }
   
  -    if ((hent = gethostbyname (str)) == NULL) {
  -	aplog_error(APLOG_MARK, APLOG_ALERT, s,
  -		    "mod_unique_id: unable to gethostbyname(\"%s\")", str);
  -	exit (1);
  +    if ((hent = gethostbyname(str)) == NULL) {
  +        aplog_error(APLOG_MARK, APLOG_ALERT, s,
  +                    "mod_unique_id: unable to gethostbyname(\"%s\")", str);
  +        exit(1);
       }
   
  -    global_in_addr = ((struct in_addr *)hent->h_addr_list[0])->s_addr;
  +    global_in_addr = ((struct in_addr *) hent->h_addr_list[0])->s_addr;
   
       aplog_error(APLOG_MARK, APLOG_INFO, s,
  -		"mod_unique_id: using ip addr %s",
  -		inet_ntoa (*(struct in_addr *)hent->h_addr_list[0]));
  +                "mod_unique_id: using ip addr %s",
  +                inet_ntoa(*(struct in_addr *) hent->h_addr_list[0]));
   
  -    /* If the server is pummelled with restart requests we could possibly
  -     * end up in a situation where we're starting again during the same
  -     * second that has been used in previous identifiers.  Avoid that
  -     * situation.
  -     *
  -     * In truth, for this to actually happen not only would it have to
  -     * restart in the same second, but it would have to somehow get the
  -     * same pids as one of the other servers that was running in that second.
  -     * Which would mean a 64k wraparound on pids ... not very likely at
  -     * all.
  -     *
  -     * But protecting against it is relatively cheap.  We just sleep into
  -     * the next second.
  +    /*
  +     * If the server is pummelled with restart requests we could possibly end
  +     * up in a situation where we're starting again during the same second
  +     * that has been used in previous identifiers.  Avoid that situation.
  +     * 
  +     * In truth, for this to actually happen not only would it have to restart
  +     * in the same second, but it would have to somehow get the same pids as
  +     * one of the other servers that was running in that second. Which would
  +     * mean a 64k wraparound on pids ... not very likely at all.
  +     * 
  +     * But protecting against it is relatively cheap.  We just sleep into the
  +     * next second.
        */
   #ifdef NO_GETTIMEOFDAY
  -    sleep (1);
  +    sleep(1);
   #else
  -    if (gettimeofday (&tv, NULL) == -1) {
  -	sleep (1);
  -    } else if (tv.tv_usec) {
  -	tv.tv_sec = 0;
  -	tv.tv_usec = 1000000 - tv.tv_usec;
  -	select (0, NULL, NULL, NULL, &tv);
  +    if (gettimeofday(&tv, NULL) == -1) {
  +        sleep(1);
  +    }
  +    else if (tv.tv_usec) {
  +        tv.tv_sec = 0;
  +        tv.tv_usec = 1000000 - tv.tv_usec;
  +        select(0, NULL, NULL, NULL, &tv);
       }
   #endif
   }
   
  -static void unique_id_child_init (server_rec *s, pool *p)
  +static void unique_id_child_init(server_rec *s, pool *p)
   {
       pid_t pid;
   #ifndef NO_GETTIMEOFDAY
       struct timeval tv;
   #endif
   
  -    /* Note that we use the pid because it's possible that on the same
  -     * physical machine there are multiple servers (i.e. using Listen).
  -     * But it's guaranteed that none of them will share the same pids
  -     * between children.
  -     *
  -     * XXX: for multithread this needs to use a pid/tid combo and probably
  -     * XXX: needs to be expanded to 32 bits
  +    /*
  +     * Note that we use the pid because it's possible that on the same
  +     * physical machine there are multiple servers (i.e. using Listen). But
  +     * it's guaranteed that none of them will share the same pids between
  +     * children.
  +     * 
  +     * XXX: for multithread this needs to use a pid/tid combo and probably XXX:
  +     * needs to be expanded to 32 bits
        */
       pid = getpid();
       cur_unique_id.pid = pid;
   
  -    /* Test our assumption that the pid is 16-bits.  But note we can't just
  -     * test sizeof (pid_t) because on some machines pid_t is 32-bits but
  -     * pids are actually only 16-bits.  It would have been really nice to
  -     * test this during global_init ... but oh well.
  +    /*
  +     * Test our assumption that the pid is 16-bits.  But note we can't just
  +     * test sizeof (pid_t) because on some machines pid_t is 32-bits but pids
  +     * are actually only 16-bits.  It would have been really nice to test
  +     * this during global_init ... but oh well.
        */
       if (cur_unique_id.pid != pid) {
  -	aplog_error(APLOG_MARK, APLOG_DEBUG, s,
  -		    "oh no! pids are greater than 16-bits!  I'm broken!");
  +        aplog_error(APLOG_MARK, APLOG_DEBUG, s,
  +                    "oh no! pids are greater than 16-bits!  I'm broken!");
       }
   
       cur_unique_id.in_addr = global_in_addr;
   
  -    /* If we use 0 as the initial counter we have a little less protection
  -     * against restart problems, and a little less protection against a
  -     * clock going backwards in time.
  +    /*
  +     * If we use 0 as the initial counter we have a little less protection
  +     * against restart problems, and a little less protection against a clock
  +     * going backwards in time.
        */
   #ifndef NO_GETTIMEOFDAY
  -    if (gettimeofday (&tv, NULL) == -1) {
  -	cur_unique_id.counter = 0;
  -    } else {
  -	cur_unique_id.counter = tv.tv_usec;
  +    if (gettimeofday(&tv, NULL) == -1) {
  +        cur_unique_id.counter = 0;
  +    }
  +    else {
  +        cur_unique_id.counter = tv.tv_usec;
       }
   #else
       cur_unique_id.counter = 0;
   #endif
   
  -    /* We must always use network ordering for these bytes, so that identifiers
  -     * are comparable between machines of different byte orderings.  Note
  -     * in_addr is already in network order.
  +    /*
  +     * We must always use network ordering for these bytes, so that
  +     * identifiers are comparable between machines of different byte
  +     * orderings.  Note in_addr is already in network order.
        */
  -    cur_unique_id.pid = htons (cur_unique_id.pid);
  -    cur_unique_id.counter = htons (cur_unique_id.counter);
  +    cur_unique_id.pid = htons(cur_unique_id.pid);
  +    cur_unique_id.counter = htons(cur_unique_id.counter);
   }
   
   /* NOTE: This is *NOT* the same encoding used by uuencode ... the last two
  @@ -265,17 +272,17 @@
       '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '@', '-',
   };
   
  -static int gen_unique_id (request_rec *r)
  +static int gen_unique_id(request_rec *r)
   {
       /* when we uuencode it will take 19 bytes plus \0 */
       char str[19 + 1];
       const unsigned char *x;
       unsigned short counter;
   
  -    cur_unique_id.stamp = htonl (r->request_time);
  +    cur_unique_id.stamp = htonl(r->request_time);
   
       /* do the uuencoding */
  -    x = (const unsigned char *)&cur_unique_id;
  +    x = (const unsigned char *) &cur_unique_id;
       str[0] = uuencoder[x[0] >> 2];
       str[1] = uuencoder[((x[0] & 0x03) << 4) | ((x[1] & 0xf0) >> 4)];
       str[2] = uuencoder[((x[1] & 0x0f) << 2) | ((x[2] & 0xc0) >> 6)];
  @@ -298,37 +305,37 @@
       x += 3;
       str[16] = uuencoder[x[0] >> 2];
       str[17] = uuencoder[((x[0] & 0x03) << 4) | ((x[1] & 0xf0) >> 4)];
  -    str[18] = uuencoder[((x[1] & 0x0f) << 2) | ((   0 & 0xc0) >> 6)];
  +    str[18] = uuencoder[((x[1] & 0x0f) << 2) | ((0 & 0xc0) >> 6)];
       str[19] = '\0';
   
  -    table_set (r->subprocess_env, "UNIQUE_ID", str);
  +    table_set(r->subprocess_env, "UNIQUE_ID", str);
   
       /* and increment the identifier for the next call */
  -    counter = ntohs (cur_unique_id.counter) + 1;
  -    cur_unique_id.counter = htons (counter);
  +    counter = ntohs(cur_unique_id.counter) + 1;
  +    cur_unique_id.counter = htons(counter);
   
       return DECLINED;
   }
   
   
   module MODULE_VAR_EXPORT unique_id_module = {
  -   STANDARD_MODULE_STUFF,
  -   unique_id_global_init,	/* initializer */
  -   NULL,			/* dir config creater */
  -   NULL,			/* dir merger --- default is to override */
  -   NULL,			/* server config */
  -   NULL,			/* merge server configs */
  -   NULL,			/* 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,			/* header parser */
  -   unique_id_child_init,	/* child_init */
  -   NULL,			/* child_exit */
  -   gen_unique_id		/* post_read_request */
  +    STANDARD_MODULE_STUFF,
  +    unique_id_global_init,      /* initializer */
  +    NULL,                       /* dir config creater */
  +    NULL,                       /* dir merger --- default is to override */
  +    NULL,                       /* server config */
  +    NULL,                       /* merge server configs */
  +    NULL,                       /* 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,                       /* header parser */
  +    unique_id_child_init,       /* child_init */
  +    NULL,                       /* child_exit */
  +    gen_unique_id               /* post_read_request */
   };
  
  
  
  1.23      +125 -125  apachen/src/modules/standard/mod_userdir.c
  
  Index: mod_userdir.c
  ===================================================================
  RCS file: /export/home/cvs/apachen/src/modules/standard/mod_userdir.c,v
  retrieving revision 1.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- mod_userdir.c	1997/09/16 04:13:06	1.22
  +++ mod_userdir.c	1997/09/16 04:30:23	1.23
  @@ -6,7 +6,7 @@
    * are met:
    *
    * 1. Redistributions of source code must retain the above copyright
  - *    notice, this list of conditions and the following disclaimer. 
  + *    notice, this list of conditions and the following disclaimer.
    *
    * 2. Redistributions in binary form must reproduce the above copyright
    *    notice, this list of conditions and the following disclaimer in
  @@ -91,11 +91,11 @@
   module userdir_module;
   
   typedef struct userdir_config {
  -    int     globally_disabled;
  -    char    *userdir;
  -    table   *enabled_users;
  -    table   *disabled_users;
  -} userdir_config;
  +    int globally_disabled;
  +    char *userdir;
  +    table *enabled_users;
  +    table *disabled_users;
  +}              userdir_config;
   
   /*
    * Server config for this module: global disablement flag, a list of usernames
  @@ -103,69 +103,70 @@
    * explicit) disablement, and the replacement string for all others.
    */
   
  -static void *create_userdir_config (pool *p, server_rec *s) { 
  +static void *create_userdir_config(pool *p, server_rec *s)
  +{
       userdir_config
  -            *newcfg = (userdir_config *) pcalloc (p, sizeof(userdir_config));
  +    * newcfg = (userdir_config *) pcalloc(p, sizeof(userdir_config));
   
       newcfg->globally_disabled = 0;
       newcfg->userdir = DEFAULT_USER_DIR;
  -    newcfg->enabled_users = make_table (p, 4);
  -    newcfg->disabled_users = make_table (p, 4);
  -    return (void *) newcfg; 
  +    newcfg->enabled_users = make_table(p, 4);
  +    newcfg->disabled_users = make_table(p, 4);
  +    return (void *) newcfg;
   }
   
   #define O_DEFAULT 0
   #define O_ENABLE 1
   #define O_DISABLE 2
   
  -static const char *set_user_dir (cmd_parms *cmd, void *dummy, char *arg)
  +static const char *set_user_dir(cmd_parms *cmd, void *dummy, char *arg)
   {
       userdir_config
  -            *s_cfg = (userdir_config *) get_module_config
  -                                            (
  -                                                cmd->server->module_config,
  -                                                &userdir_module
  -                                            ); 
  -    char    *username;
  +    * s_cfg = (userdir_config *) get_module_config
  +    (
  +     cmd->server->module_config,
  +     &userdir_module
  +    );
  +    char *username;
       const char
  -            *usernames = arg;
  -    char    *kw = getword_conf (cmd->pool, &usernames);
  -    table   *usertable;
  -    int     optype = O_DEFAULT;
  +        *usernames = arg;
  +    char *kw = getword_conf(cmd->pool, &usernames);
  +    table *usertable;
  +    int optype = O_DEFAULT;
   
       /*
        * Let's do the comparisons once.
        */
  -    if ((! strcasecmp (kw, "disable")) || (! strcasecmp (kw, "disabled"))) {
  +    if ((!strcasecmp(kw, "disable")) || (!strcasecmp(kw, "disabled"))) {
           optype = O_DISABLE;
           /*
            * If there are no usernames specified, this is a global disable - we
            * need do no more at this point than record the fact.
            */
  -        if (strlen (usernames) == 0) {
  +        if (strlen(usernames) == 0) {
               s_cfg->globally_disabled = 1;
               return NULL;
           }
           usertable = s_cfg->disabled_users;
       }
  -    else if ((! strcasecmp (kw, "enable")) || (! strcasecmp (kw, "enabled"))) {
  +    else if ((!strcasecmp(kw, "enable")) || (!strcasecmp(kw, "enabled"))) {
           /*
            * The "disable" keyword can stand alone or take a list of names, but
            * the "enable" keyword requires the list.  Whinge if it doesn't have
            * it.
            */
  -        if (strlen (usernames) == 0) {
  +        if (strlen(usernames) == 0) {
               return "UserDir \"enable\" keyword requires a list of usernames";
           }
           optype = O_ENABLE;
           usertable = s_cfg->enabled_users;
       }
       else {
  -	/*
  -	 * If the first (only?) value isn't one of our keywords, just copy the
  -	 * string to the userdir string.
  -	 */
  -        s_cfg->userdir = pstrdup (cmd->pool, arg);
  +        /*
  +         * If the first (only?) value isn't one of our keywords, just copy
  +         * the string to the userdir string.
  +         */
  +        s_cfg->userdir = pstrdup(cmd->pool, arg);
           return NULL;
       }
       /*
  @@ -173,25 +174,25 @@
        * the appropriate table.
        */
       while (*usernames) {
  -        username = getword_conf (cmd->pool, &usernames);
  -        table_set (usertable, username, kw);
  +        username = getword_conf(cmd->pool, &usernames);
  +        table_set(usertable, username, kw);
       }
       return NULL;
   }
   
   static command_rec userdir_cmds[] = {
  -{ "UserDir", set_user_dir, NULL, RSRC_CONF, RAW_ARGS,
  -    "the public subdirectory in users' home directories, or 'disabled', or 'disabled username username...', or 'enabled username username...'" },
  -{ NULL }
  +    {"UserDir", set_user_dir, NULL, RSRC_CONF, RAW_ARGS,
  +    "the public subdirectory in users' home directories, or 'disabled', or 'disabled username username...', or 'enabled username username...'"},
  +    {NULL}
   };
   
  -static int translate_userdir (request_rec *r)
  +static int translate_userdir(request_rec *r)
   {
       void *server_conf = r->server->module_config;
       const userdir_config *s_cfg =
  -            (userdir_config *) get_module_config (server_conf, &userdir_module);
  +    (userdir_config *) get_module_config(server_conf, &userdir_module);
       char *name = r->uri;
  -    const char *userdirs = pstrdup (r->pool, s_cfg->userdir);
  +    const char *userdirs = pstrdup(r->pool, s_cfg->userdir);
       const char *w, *dname, *redirect;
       char *x = NULL;
       struct stat statbuf;
  @@ -204,7 +205,7 @@
           (s_cfg->userdir == NULL) ||
           (name[0] != '/') ||
           (name[1] != '~')
  -       ) {
  +        ) {
           return DECLINED;
       }
   
  @@ -212,13 +213,12 @@
       w = getword(r->pool, &dname, '/');
   
       /*
  -     * The 'dname' funny business involves backing it up to capture
  -     * the '/' delimiting the "/~user" part from the rest of the URL,
  -     * in case there was one (the case where there wasn't being just
  -     * "GET /~user HTTP/1.0", for which we don't want to tack on a
  -     * '/' onto the filename).
  +     * The 'dname' funny business involves backing it up to capture the '/'
  +     * delimiting the "/~user" part from the rest of the URL, in case there
  +     * was one (the case where there wasn't being just "GET /~user HTTP/1.0",
  +     * for which we don't want to tack on a '/' onto the filename).
        */
  -        
  +
       if (dname[-1] == '/') {
           --dname;
       }
  @@ -226,23 +226,23 @@
       /*
        * If there's no username, it's not for us.
        */
  -    if (! strcmp(w, "")) {
  +    if (!strcmp(w, "")) {
           return DECLINED;
       }
       /*
        * Nor if there's an username but it's in the disabled list.
        */
  -    if (table_get (s_cfg->disabled_users, w) != NULL) {
  +    if (table_get(s_cfg->disabled_users, w) != NULL) {
           return DECLINED;
       }
       /*
  -     * If there's a global interdiction on UserDirs, check to see if this name
  -     * is one of the Blessed.
  +     * If there's a global interdiction on UserDirs, check to see if this
  +     * name is one of the Blessed.
        */
       if (
           s_cfg->globally_disabled &&
  -        (table_get (s_cfg->enabled_users, w) == NULL)
  -       ) {
  +        (table_get(s_cfg->enabled_users, w) == NULL)
  +        ) {
           return DECLINED;
       }
   
  @@ -251,96 +251,96 @@
        */
   
       while (*userdirs) {
  -      const char *userdir = getword_conf (r->pool, &userdirs);
  -      char *filename = NULL;
  +        const char *userdir = getword_conf(r->pool, &userdirs);
  +        char *filename = NULL;
   
  -      if (strchr(userdir, '*'))
  -        x = getword(r->pool, &userdir, '*');
  +        if (strchr(userdir, '*'))
  +            x = getword(r->pool, &userdir, '*');
   
   #if defined(__EMX__) || defined(WIN32)
  -      /* Add support for OS/2 drive letters */
  -      if ((userdir[0] == '/') || (userdir[1] == ':') || (userdir[0] == '\0')) {
  +        /* Add support for OS/2 drive letters */
  +        if ((userdir[0] == '/') || (userdir[1] == ':') || (userdir[0] == '\0')) {
   #else
  -      if ((userdir[0] == '/') || (userdir[0] == '\0')) {
  +        if ((userdir[0] == '/') || (userdir[0] == '\0')) {
   #endif
  -        if (x) {
  +            if (x) {
   #ifdef WIN32
  -          /*
  -           * Crummy hack. Need to figure out whether we have
  -           * been redirected to a URL or to a file on some
  -           * drive. Since I know of no protocols that are a
  -           * single letter, if the : is the second character,
  -           * I will assume a file was specified
  -           */
  -          if (strchr(x+2, ':')) {
  +                /*
  +                 * Crummy hack. Need to figure out whether we have been
  +                 * redirected to a URL or to a file on some drive. Since I
  +                 * know of no protocols that are a single letter, if the : is
  +                 * the second character, I will assume a file was specified
  +                 */
  +                if (strchr(x + 2, ':')) {
   #else
  -          if (strchr(x, ':')) {
  -#endif /* WIN32 */
  -            redirect = pstrcat(r->pool, x, w, userdir, dname, NULL);
  -            table_set (r->headers_out, "Location", redirect);
  +                if (strchr(x, ':')) {
  +#endif                          /* WIN32 */
  +                    redirect = pstrcat(r->pool, x, w, userdir, dname, NULL);
  +                    table_set(r->headers_out, "Location", redirect);
  +                    return REDIRECT;
  +                }
  +                else
  +                    filename = pstrcat(r->pool, x, w, userdir, NULL);
  +            }
  +            else
  +                filename = pstrcat(r->pool, userdir, "/", w, NULL);
  +        }
  +        else if (strchr(userdir, ':')) {
  +            redirect = pstrcat(r->pool, userdir, "/", w, dname, NULL);
  +            table_set(r->headers_out, "Location", redirect);
               return REDIRECT;
  -          }
  -          else
  -            filename = pstrcat (r->pool, x, w, userdir, NULL);
           }
  -        else
  -          filename = pstrcat (r->pool, userdir, "/", w, NULL);
  -      }
  -      else if (strchr(userdir, ':')) {
  -        redirect = pstrcat(r->pool, userdir, "/", w, dname, NULL);
  -        table_set (r->headers_out, "Location", redirect);
  -        return REDIRECT;
  -      }
  -      else {
  +        else {
   #ifdef WIN32
  -          /* Need to figure out home dirs on NT */
  -          return DECLINED;
  -#else /* WIN32 */
  -        struct passwd *pw;
  -        if ((pw = getpwnam(w))) {
  +            /* Need to figure out home dirs on NT */
  +            return DECLINED;
  +#else                           /* WIN32 */
  +            struct passwd *pw;
  +            if ((pw = getpwnam(w))) {
   #ifdef __EMX__
  -            /* Need to manually add user name for OS/2 */
  -            filename = pstrcat (r->pool, pw->pw_dir, w, "/", userdir, NULL);
  +                /* Need to manually add user name for OS/2 */
  +                filename = pstrcat(r->pool, pw->pw_dir, w, "/", userdir, NULL);
   #else
  -            filename = pstrcat (r->pool, pw->pw_dir, "/", userdir, NULL);
  +                filename = pstrcat(r->pool, pw->pw_dir, "/", userdir, NULL);
   #endif
  +            }
  +#endif                          /* WIN32 */
           }
  -#endif /* WIN32 */
  -      }
   
  -      /* Now see if it exists, or we're at the last entry. If we are at the
  -       last entry, then use the filename generated (if there is one) anyway,
  -       in the hope that some handler might handle it. This can be used, for
  -       example, to run a CGI script for the user. 
  -       */
  -      if (filename && (!*userdirs || stat(filename, &statbuf) != -1)) {
  -        r->filename = pstrcat(r->pool, filename, dname, NULL);
  -	r->finfo = statbuf;
  -        return OK;
  -      }
  +        /*
  +         * Now see if it exists, or we're at the last entry. If we are at the
  +         * last entry, then use the filename generated (if there is one)
  +         * anyway, in the hope that some handler might handle it. This can be
  +         * used, for example, to run a CGI script for the user.
  +         */
  +        if (filename && (!*userdirs || stat(filename, &statbuf) != -1)) {
  +            r->filename = pstrcat(r->pool, filename, dname, NULL);
  +            r->finfo = statbuf;
  +            return OK;
  +        }
       }
   
  -  return DECLINED;    
  +    return DECLINED;
   }
  -    
  +
   module userdir_module = {
  -   STANDARD_MODULE_STUFF,
  -   NULL,                        /* initializer */
  -   NULL,                        /* dir config creater */
  -   NULL,                        /* dir merger --- default is to override */
  -   create_userdir_config,       /* server config */
  -   NULL,                        /* merge server config */
  -   userdir_cmds,                /* command table */
  -   NULL,                        /* handlers */
  -   translate_userdir,           /*filename translation */
  -   NULL,                        /* check_user_id */
  -   NULL,                        /* check auth */
  -   NULL,                        /* check access */
  -   NULL,                        /* type_checker */
  -   NULL,                        /* fixups */
  -   NULL,                        /* logger */
  -   NULL,                        /* header parser */
  -   NULL,			/* child_init */
  -   NULL,			/* child_exit */
  -   NULL				/* post read-request */
  +    STANDARD_MODULE_STUFF,
  +    NULL,                       /* initializer */
  +    NULL,                       /* dir config creater */
  +    NULL,                       /* dir merger --- default is to override */
  +    create_userdir_config,      /* server config */
  +    NULL,                       /* merge server config */
  +    userdir_cmds,               /* command table */
  +    NULL,                       /* handlers */
  +    translate_userdir,          /* filename translation */
  +    NULL,                       /* check_user_id */
  +    NULL,                       /* check auth */
  +    NULL,                       /* check access */
  +    NULL,                       /* type_checker */
  +    NULL,                       /* fixups */
  +    NULL,                       /* logger */
  +    NULL,                       /* header parser */
  +    NULL,                       /* child_init */
  +    NULL,                       /* child_exit */
  +    NULL                        /* post read-request */
   };