/[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.1.1 by dpavlin, Mon Apr 3 13:39:00 2000 UTC revision 1.6 by dpavlin, Thu Aug 10 11:46:19 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     * sets `Contnet-type: text/html; charset=foobar' based on user agent string
61   */   * from client browser
62     *
63     * Dobrica Pavlinusic <dpavlin@rot13.org>
64  #include "httpd.h"   * Robert Avilov <ravilov@linux.hr>
65  #include "http_config.h"   *
66  #include "http_core.h"   */
67    
68  module MODULE_VAR_EXPORT ua_charset_module;  
69    #include "httpd.h"
70  static int add_charset_header(request_rec *r)  #include "http_core.h"
71  {  #include "http_config.h"
72      char *ua,*ct;  
73    module MODULE_VAR_EXPORT ua_charset_module;
74          if (ua = ap_table_get(r->headers_in, "User-Agent")) {  
75                  ap_table_setn(r->headers_out, "X-User-Agent", ua);  static int add_charset_header(request_rec * r)
76          }  {
77            const char *ua, *ct;
78  #if 0  
79          if (ct = ap_table_get(r->headers_in, "Content-type")) {          ua = ap_table_get(r->headers_in, "User-Agent");
80                  ap_table_setn(r->headers_out, "X-Content-type", ct);          if (ua == NULL)
81          }                  ua = "<unknown>";
82          if (strstr(ct,"text/html")) {  
83                  return DECLINED;        /* don't mess with other types */          ct = r->content_type;
84          }  
85            if (ct != NULL) {
86          if (strstr(ua,"Mac")) {  
87                  if (strstr(ua,"MSIE")) {                  if (strstr(ct, "text/html") == NULL)
88                          r->content_type = "text/html; charset=x-mac-roman";                          return DECLINED; /* Don't mess with other types */
89                  } else {  
90                          r->content_type = "text/html; charset=MacCE";                  if (strstr(ua, "Mac") != NULL) {
91                  }                          if (strstr(ua, "MSIE") != NULL)
92          } else {                                  r->content_type = "text/html; charset=x-mac-roman";
93                  r->content_type = "text/html; charset=iso-8859-2";                          else
94          }                                  r->content_type = "text/html; charset=MacCE";
95  #endif                  } else
96          return OK;                          r->content_type = "text/html; charset=iso-8859-2";
97          return DECLINED;                  }
98    
99  }  #ifdef DEBUG
100            ap_table_setn(r->headers_out, "X-Content-Type", ct);
101  module MODULE_VAR_EXPORT ua_charset_module = {          ap_table_setn(r->headers_out, "X-new-Content-Type", r->content_type);
102      STANDARD_MODULE_STUFF,          ap_table_setn(r->headers_out, "X-User-Agent", ua);
103      NULL,                       /* initializer */  #endif
104      NULL,                       /* dir config creater */          return DECLINED;
105      NULL,                       /* dir merger --- default is to override */  }
106      NULL,                       /* server config */  
107      NULL,                       /* merge server configs */  module MODULE_VAR_EXPORT ua_charset_module = {
108      NULL,                       /* command table */          STANDARD_MODULE_STUFF,
109      NULL,                       /* handlers */          NULL,                   /* initializer */
110      NULL,                       /* filename translation */          NULL,                   /* dir config creater */
111      NULL,                       /* check_user_id */          NULL,                   /* dir merger --- default is to override */
112      NULL,                       /* check auth */          NULL,                   /* server config */
113      NULL,                       /* check access */          NULL,                   /* merge server configs */
114      NULL,                       /* type_checker */          NULL,                   /* command table */
115      add_charset_header,         /* fixups */          NULL,                   /* handlers */
116      NULL,                       /* logger */          NULL,                   /* filename translation */
117      NULL,                       /* header parser */          NULL,                   /* check_user_id */
118      NULL,                       /* child_init */          NULL,                   /* check auth */
119      NULL,                       /* child_exit */          NULL,                   /* check access */
120      NULL                        /* post read-request */          NULL,                   /* type_checker */
121  };          add_charset_header,     /* fixups */
122            NULL,                   /* logger */
123            NULL,                   /* header parser */
124            NULL,                   /* child_init */
125            NULL,                   /* child_exit */
126            NULL                    /* post read-request */
127    };

Legend:
Removed from v.1.1.1.1  
changed lines
  Added in v.1.6

  ViewVC Help
Powered by ViewVC 1.1.26