Overview
| Artifact ID: | 5c7f1e7a0ecfe359ce4986836f4d3a0a0ea53c64 |
|---|---|
| Ticket: | 9fbc3fad8a30180effa7b55fc496e28987c6d98f |
| Date: | 2011-04-22 03:10:51 |
| User: | anonymous |
| Artifact Attached: | 0b74a6e5b49689cc7bac9de29a03f623b17d1883 |
| Filename: | xhtmlpatch.diff.txt |
| Description: | Patch to send content type application/xhtml+xml to the browser when appropriate. |
Content Appended
1 Index: src/cgi.c
2 ===================================================================
3 --- src/cgi.c
4 +++ src/cgi.c
5 @@ -667,10 +667,16 @@
6 */
7 void cgi_init(void){
8 char *z;
9 const char *zType;
10 int len;
11 +
12 + z = (char *)P("HTTP_ACCEPT");
13 + if( z && strstr(z, "application/xhtml+xml") ){
14 + cgi_set_content_type("application/xhtml+xml");
15 + }
16 +
17 cgi_destination(CGI_BODY);
18 z = (char*)P("QUERY_STRING");
19 if( z ){
20 z = mprintf("%s",z);
21 add_param_list(z, '&');
22 @@ -1027,10 +1033,12 @@
23 cgi_setenv("HTTP_HOST", zVal);
24 }else if( strcmp(zFieldName,"if-none-match:")==0 ){
25 cgi_setenv("HTTP_IF_NONE_MATCH", zVal);
26 }else if( strcmp(zFieldName,"if-modified-since:")==0 ){
27 cgi_setenv("HTTP_IF_MODIFIED_SINCE", zVal);
28 + }else if( strcmp(zFieldName,"accept:")==0 ){
29 + cgi_setenv("HTTP_ACCEPT", zVal);
30 }
31 #if 0
32 else if( strcmp(zFieldName,"referer:")==0 ){
33 cgi_setenv("HTTP_REFERER", zVal);
34 }else if( strcmp(zFieldName,"user-agent:")==0 ){
35
36 Index: src/style.c
37 ===================================================================
38 --- src/style.c
39 +++ src/style.c
40 @@ -18,11 +18,11 @@
41 ** This file contains code to implement the basic web page look and feel.
42 **
43 */
44 #include "config.h"
45 #include "style.h"
46 -
47 +#include <ctype.h>
48
49 /*
50 ** Elements of the submenu are collected into the following
51 ** structure and displayed below the main menu by style_header().
52 **
53 @@ -105,10 +105,15 @@
54 Th_Store("compiler_name", COMPILER_NAME);
55 if( g.zLogin ){
56 Th_Store("login", g.zLogin);
57 }
58 if( g.thTrace ) Th_Trace("BEGIN_HEADER_SCRIPT<br />\n", -1);
59 + while( isspace(*zHeader) ){ ++zHeader; }
60 + if( strncmp(zHeader, "<html>", 6)==0 ) {
61 + Th_Render("<html xmlns=\"http://www.w3.org/1999/xhtml\">");
62 + zHeader += 6;
63 + }
64 Th_Render(zHeader);
65 if( g.thTrace ) Th_Trace("END_HEADER<br />\n", -1);
66 Th_Unstore("title"); /* Avoid collisions with ticket field names */
67 cgi_destination(CGI_BODY);
68 g.cgiOutput = 1;
69
70 Index: src/translate.c
71 ===================================================================
72 --- src/translate.c
73 +++ src/translate.c
74 @@ -107,10 +107,15 @@
75 for(j=0; zLine[i] && zLine[i]!='\r' && zLine[i]!='\n'; i++){
76 if( zLine[i]==c1 && (c2==' ' || zLine[i+1]==c2) ){
77 omitline = 1; break;
78 }
79 if( zLine[i]=='"' || zLine[i]=='\\' ){ zOut[j++] = '\\'; }
80 + if( strncmp(zLine+i, "<html>", 6)==0 ){
81 + strcpy(zOut+j, "<html xmlns=\\\"http://www.w3.org/1999/xhtml\\\">");
82 + i += 6;
83 + j += 45;
84 + }
85 zOut[j++] = zLine[i];
86 }
87 while( j>0 && isspace(zOut[j-1]) ){ j--; }
88 zOut[j] = 0;
89 if( j<=0 && omitline ){
90