/[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.2 by dpavlin, Tue Apr 18 06:54:05 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    #include "httpd.h"
64  #include "httpd.h"  #include "http_config.h"
65  #include "http_config.h"  #include "http_core.h"
66  #include "http_core.h"  
67    module MODULE_VAR_EXPORT ua_charset_module;
68  module MODULE_VAR_EXPORT ua_charset_module;  
69    static int add_charset_header(request_rec * r)
70  static int add_charset_header(request_rec *r)  {
71  {          char *ua, *ct;
72      char *ua,*ct;          if (ua = ap_table_get(r->headers_in, "User-Agent")) {
73                    ap_table_setn(r->headers_out, "X-User-Agent", ua);
74          if (ua = ap_table_get(r->headers_in, "User-Agent")) {          }
75                  ap_table_setn(r->headers_out, "X-User-Agent", ua);  #if 1
76          }          if (ct = ap_table_get(r->headers_in, "Content-type")) {
77                    ap_table_setn(r->headers_out, "X-Content-type", ct);
78  #if 0          }
79          if (ct = ap_table_get(r->headers_in, "Content-type")) {          if (strstr(ct, "text/html")) {
80                  ap_table_setn(r->headers_out, "X-Content-type", ct);                  return DECLINED;        /* don't mess with other types */
81          }          }
82          if (strstr(ct,"text/html")) {          if (strstr(ua, "Mac")) {
83                  return DECLINED;        /* don't mess with other types */                  if (strstr(ua, "MSIE")) {
84          }                          r->content_type = "text/html; charset=x-mac-roman";
85                    } else {
86          if (strstr(ua,"Mac")) {                          r->content_type = "text/html; charset=MacCE";
87                  if (strstr(ua,"MSIE")) {                  }
88                          r->content_type = "text/html; charset=x-mac-roman";          } else {
89                  } else {                  r->content_type = "text/html; charset=iso-8859-2";
90                          r->content_type = "text/html; charset=MacCE";          }
91                  }  
92          } else {  #endif
93                  r->content_type = "text/html; charset=iso-8859-2";          return OK;
94          }          return DECLINED;
95  #endif  }
96          return OK;  module MODULE_VAR_EXPORT ua_charset_module = {
97          return DECLINED;          STANDARD_MODULE_STUFF, NULL,    /* initializer */
98            NULL,                   /* dir config creater */
99  }          NULL,                   /* dir merger --- default is to override */
100            NULL,                   /* server config */
101  module MODULE_VAR_EXPORT ua_charset_module = {          NULL,                   /* merge server configs */
102      STANDARD_MODULE_STUFF,          NULL,                   /* command table */
103      NULL,                       /* initializer */          NULL,                   /* handlers */
104      NULL,                       /* dir config creater */          NULL,                   /* filename translation */
105      NULL,                       /* dir merger --- default is to override */          NULL,                   /* check_user_id */
106      NULL,                       /* server config */          NULL,                   /* check auth */
107      NULL,                       /* merge server configs */          NULL,                   /* check access */
108      NULL,                       /* command table */          NULL,                   /* type_checker */
109      NULL,                       /* handlers */          add_charset_header,     /* fixups */
110      NULL,                       /* filename translation */          NULL,                   /* logger */
111      NULL,                       /* check_user_id */          NULL,                   /* header parser */
112      NULL,                       /* check auth */          NULL,                   /* child_init */
113      NULL,                       /* check access */          NULL,                   /* child_exit */
114      NULL,                       /* type_checker */          NULL                    /* post read-request */
115      add_charset_header,         /* fixups */  };
     NULL,                       /* logger */  
     NULL,                       /* header parser */  
     NULL,                       /* child_init */  
     NULL,                       /* child_exit */  
     NULL                        /* post read-request */  
 };  
   
   

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

  ViewVC Help
Powered by ViewVC 1.1.26