/[mod_ua_charset]/mod_ua_charset.c
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /mod_ua_charset.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.1 by dpavlin, Mon Apr 3 13:39:00 2000 UTC revision 1.3 by dpavlin, Tue Apr 18 06:56:17 2000 UTC
# Line 1  Line 1 
1  /* ====================================================================  /* ====================================================================
2   * Copyright (c) 1995-1998 The Apache Group.  All rights reserved.   * Copyright (c) 1995-1998 The Apache Group.  All rights reserved.
3   *   *
4   * Redistribution and use in source and binary forms, with or without   * Redistribution and use in source and binary forms, with or without
5   * modification, are permitted provided that the following conditions   * modification, are permitted provided that the following conditions
6   * are met:   * are met:
7   *   *
8   * 1. Redistributions of source code must retain the above copyright   * 1. Redistributions of source code must retain the above copyright
9   *    notice, this list of conditions and the following disclaimer.   *    notice, this list of conditions and the following disclaimer.
10   *   *
11   * 2. Redistributions in binary form must reproduce the above copyright   * 2. Redistributions in binary form must reproduce the above copyright
12   *    notice, this list of conditions and the following disclaimer in   *    notice, this list of conditions and the following disclaimer in
13   *    the documentation and/or other materials provided with the   *    the documentation and/or other materials provided with the
14   *    distribution.   *    distribution.
15   *   *
16   * 3. All advertising materials mentioning features or use of this   * 3. All advertising materials mentioning features or use of this
17   *    software must display the following acknowledgment:   *    software must display the following acknowledgment:
18   *    "This product includes software developed by the Apache Group   *    "This product includes software developed by the Apache Group
19   *    for use in the Apache HTTP server project (http://www.apache.org/)."   *    for use in the Apache HTTP server project (http://www.apache.org/)."
20   *   *
21   * 4. The names "Apache Server" and "Apache Group" must not be used to   * 4. The names "Apache Server" and "Apache Group" must not be used to
22   *    endorse or promote products derived from this software without   *    endorse or promote products derived from this software without
23   *    prior written permission. For written permission, please contact   *    prior written permission. For written permission, please contact
24   *    apache@apache.org.   *    apache@apache.org.
25   *   *
26   * 5. Products derived from this software may not be called "Apache"   * 5. Products derived from this software may not be called "Apache"
27   *    nor may "Apache" appear in their names without prior written   *    nor may "Apache" appear in their names without prior written
28   *    permission of the Apache Group.   *    permission of the Apache Group.
29   *   *
30   * 6. Redistributions of any form whatsoever must retain the following   * 6. Redistributions of any form whatsoever must retain the following
31   *    acknowledgment:   *    acknowledgment:
32   *    "This product includes software developed by the Apache Group   *    "This product includes software developed by the Apache Group
33   *    for use in the Apache HTTP server project (http://www.apache.org/)."   *    for use in the Apache HTTP server project (http://www.apache.org/)."
34   *   *
35   * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY   * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY
36   * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE   * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
37   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
38   * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE APACHE GROUP OR   * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE APACHE GROUP OR
39   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
40   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
41   * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;   * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
42   * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)   * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
43   * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,   * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
44   * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)   * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
45   * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED   * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
46   * OF THE POSSIBILITY OF SUCH DAMAGE.   * OF THE POSSIBILITY OF SUCH DAMAGE.
47   * ====================================================================   * ====================================================================
48   *   *
49   * This software consists of voluntary contributions made by many   * This software consists of voluntary contributions made by many
50   * individuals on behalf of the Apache Group and was originally based   * individuals on behalf of the Apache Group and was originally based
51   * on public domain software written at the National Center for   * on public domain software written at the National Center for
52   * Supercomputing Applications, University of Illinois, Urbana-Champaign.   * Supercomputing Applications, University of Illinois, Urbana-Champaign.
53   * For more information on the Apache Group and the Apache HTTP server   * For more information on the Apache Group and the Apache HTTP server
54   * project, please see <http://www.apache.org/>.   * project, please see <http://www.apache.org/>.
55   *   *
56   */   */
57    
58  /* charset module  /* charset module
59   *   *
60    
61   */   */
62    
63    
64  #include "httpd.h"  #include "httpd.h"
65  #include "http_config.h"  #include "http_core.h"
66  #include "http_core.h"  #include "http_config.h"
67    
68  module MODULE_VAR_EXPORT ua_charset_module;  module MODULE_VAR_EXPORT ua_charset_module;
69    
70  static int add_charset_header(request_rec *r)  static int add_charset_header(request_rec * r)
71  {  {
72      char *ua,*ct;          const char *ua, *ct;
73    
74          if (ua = ap_table_get(r->headers_in, "User-Agent")) {          ua = ap_table_get(r->headers_in, "User-Agent");
75                  ap_table_setn(r->headers_out, "X-User-Agent", ua);          /*ct = ap_table_get(r->headers_in, "Content-Type"); */
76          }          /**** Isn't this better? */
77            ct = r->content_type;
78  #if 0          if (ua != NULL)
79          if (ct = ap_table_get(r->headers_in, "Content-type")) {                  ap_table_setn(r->headers_out, "X-User-Agent", ua);
80                  ap_table_setn(r->headers_out, "X-Content-type", ct);          else
81          }                  ua = "<unknown>";
82          if (strstr(ct,"text/html")) {  #if 1
83                  return DECLINED;        /* don't mess with other types */          if (ct != NULL)
84          }                  ap_table_setn(r->headers_out, "X-Content-Type", ct);
85            if (strstr(ct, "text/html") == NULL)
86          if (strstr(ua,"Mac")) {                  return DECLINED;        /* Don't mess with other types */
87                  if (strstr(ua,"MSIE")) {          if (strstr(ua, "Mac") != NULL) {
88                          r->content_type = "text/html; charset=x-mac-roman";                  if (strstr(ua, "MSIE") != NULL)
89                  } else {                          r->content_type = "text/html; charset=x-mac-roman";
90                          r->content_type = "text/html; charset=MacCE";                  else
91                  }                          r->content_type = "text/html; charset=MacCE";
92          } else {          } else
93                  r->content_type = "text/html; charset=iso-8859-2";                  r->content_type = "text/html; charset=iso-8859-2";
94          }  #endif
95  #endif          return OK;
96          return OK;  }
97          return DECLINED;  
98    module MODULE_VAR_EXPORT ua_charset_module = {
99  }          STANDARD_MODULE_STUFF,
100            NULL,                   /* initializer */
101  module MODULE_VAR_EXPORT ua_charset_module = {          NULL,                   /* dir config creater */
102      STANDARD_MODULE_STUFF,          NULL,                   /* dir merger --- default is to override */
103      NULL,                       /* initializer */          NULL,                   /* server config */
104      NULL,                       /* dir config creater */          NULL,                   /* merge server configs */
105      NULL,                       /* dir merger --- default is to override */          NULL,                   /* command table */
106      NULL,                       /* server config */          NULL,                   /* handlers */
107      NULL,                       /* merge server configs */          NULL,                   /* filename translation */
108      NULL,                       /* command table */          NULL,                   /* check_user_id */
109      NULL,                       /* handlers */          NULL,                   /* check auth */
110      NULL,                       /* filename translation */          NULL,                   /* check access */
111      NULL,                       /* check_user_id */          NULL,                   /* type_checker */
112      NULL,                       /* check auth */          add_charset_header,     /* fixups */
113      NULL,                       /* check access */          NULL,                   /* logger */
114      NULL,                       /* type_checker */          NULL,                   /* header parser */
115      add_charset_header,         /* fixups */          NULL,                   /* child_init */
116      NULL,                       /* logger */          NULL,                   /* child_exit */
117      NULL,                       /* header parser */          NULL                    /* post read-request */
118      NULL,                       /* child_init */  };
     NULL,                       /* child_exit */  
     NULL                        /* post read-request */  
 };  
   
   

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.3

  ViewVC Help
Powered by ViewVC 1.1.26