httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Dirk-Willem van Gulik <dirk.vangu...@jrc.it>
Subject Re: [PATCH] adding a DefaultLanguage directive
Date Mon, 23 Nov 1998 10:18:11 GMT

On Mon, 23 Nov 1998, Paul Sutton wrote:

Actually Paul, you do realize that if one combines this patch
with DefaultLanguage setting in the srm.conf file (and some
message during install/compile) to make sure people set it
right! that this could be the first GOOD thing ever done since
netscape broke Accept with their */*.

Dw

> On 20 Nov 1998, Rainer Scherg wrote:
> > >Number:         3430
> > >Synopsis:       Enhancement: MultiViews, Multi-Language Documents
> > [...]
> >  The Enhancement Request (Proposal):
> >  -----------------------------------
> > 
> >  1. Config-directive for standard language, handling
> >     the language for e.g. "test.htm".
> > 
> >       >> LanguageDefault       en          #  (test.htm = Lang. en)
> > 
> >     [Right now, apache sometimes return wrong (lang.) docs.]
> >     [see also: PR#1180]
> 
> PR#1180 and PR#3430 both request a way to specify a default language for
> documents which don't have an explicit language extension. This is
> useful for sites moving to multiviews/language negotiation which will
> typically already have a lot of resources in a common language, and do not
> want to rename every file.
> 
> This patch implements a DefaultLanguage directive. It sets the language to
> apply to files with no explicit language set via AddLanguage. Typical use
> would be to set HTML files as English with:
> 
>   <Files *.html>
>   DefaultLanguage en
>   </Files>
> 
> Paul
> 
> Index: mod_mime.c
> ===================================================================
> RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_mime.c,v
> retrieving revision 1.45
> diff -u -r1.45 mod_mime.c
> --- mod_mime.c	1998/10/23 19:28:53	1.45
> +++ mod_mime.c	1998/11/23 09:24:50
> @@ -81,6 +81,7 @@
>  
>      char *type;                 /* Type forced with ForceType  */
>      char *handler;              /* Handler forced with SetHandler */
> +    char *default_language;     /* Language if no AddLanguage ext found */
>  } mime_dir_config;
>  
>  module MODULE_VAR_EXPORT mime_module;
> @@ -98,6 +99,7 @@
>  
>      new->type = NULL;
>      new->handler = NULL;
> +    new->default_language = NULL;
>  
>      return new;
>  }
> @@ -107,13 +109,13 @@
>      mime_dir_config *base = (mime_dir_config *) basev;
>      mime_dir_config *add = (mime_dir_config *) addv;
>      mime_dir_config *new =
> -	(mime_dir_config *) ap_palloc(p, sizeof(mime_dir_config));
> +        (mime_dir_config *) ap_palloc(p, sizeof(mime_dir_config));
>      int i;
>      handlers_info *hand;
>  
>      hand = (handlers_info *) add->handlers_remove->elts;
>      for (i = 0; i < add->handlers_remove->nelts; i++) {
> -	ap_table_unset(base->handlers, hand[i].name);
> +        ap_table_unset(base->handlers, hand[i].name);
>      }
>  
>      new->forced_types = ap_overlay_tables(p, add->forced_types,
> @@ -127,6 +129,8 @@
>  
>      new->type = add->type ? add->type : base->type;
>      new->handler = add->handler ? add->handler : base->handler;
> +    new->default_language = add->default_language ? 
> +        add->default_language : base->default_language;
>  
>      return new;
>  }
> @@ -182,7 +186,7 @@
>      handlers_info *hand;
>  
>      if (*ext == '.') {
> -	++ext;
> +        ++ext;
>      }
>      hand = (handlers_info *) ap_push_array(mcfg->handlers_remove);
>      hand->name = ap_pstrdup(cmd->pool, ext);
> @@ -219,6 +223,9 @@
>       "a handler name"},
>      {"TypesConfig", set_types_config, NULL, RSRC_CONF, TAKE1,
>       "the MIME types config file"},
> +    {"DefaultLanguage", ap_set_string_slot, 
> +     (void*)XtOffsetOf(mime_dir_config, default_language), OR_FILEINFO, TAKE1,
> +     "language to use for documents with no other language file extension" },
>      {NULL}
>  };
>  
> @@ -250,7 +257,7 @@
>  
>      if (!(f = ap_pcfg_openfile(p, types_confname))) {
>          ap_log_error(APLOG_MARK, APLOG_ERR, s,
> -		     "httpd: could not open mime types log file %s.", types_confname);
> +                     "httpd: could not open mime types log file %s.", types_confname);
>          exit(1);
>      }
>  
> @@ -347,6 +354,20 @@
>              r->handler = orighandler;
>          }
>  
> +    }
> +
> +    /* Set default language, if none was specified by the extensions
> +     * and we have a DefaultLanguage setting in force
> +     */
> +
> +    if (!r->content_languages && conf->default_language) {
> +        const char **new;
> +
> +        r->content_language = conf->default_language; /* back compat. only */
> +        if (!r->content_languages)
> +            r->content_languages = ap_make_array(r->pool, 2, sizeof(char *));
> +        new = (const char **) ap_push_array(r->content_languages);
> +        *new = conf->default_language;
>      }
>  
>      /* Check for overrides with ForceType/SetHandler */
> 
> 


Mime
View raw message