Index: src/cgi.c =================================================================== --- src/cgi.c +++ src/cgi.c @@ -667,10 +667,16 @@ */ void cgi_init(void){ char *z; const char *zType; int len; + + z = (char *)P("HTTP_ACCEPT"); + if( z && strstr(z, "application/xhtml+xml") ){ + cgi_set_content_type("application/xhtml+xml"); + } + cgi_destination(CGI_BODY); z = (char*)P("QUERY_STRING"); if( z ){ z = mprintf("%s",z); add_param_list(z, '&'); @@ -1027,10 +1033,12 @@ cgi_setenv("HTTP_HOST", zVal); }else if( strcmp(zFieldName,"if-none-match:")==0 ){ cgi_setenv("HTTP_IF_NONE_MATCH", zVal); }else if( strcmp(zFieldName,"if-modified-since:")==0 ){ cgi_setenv("HTTP_IF_MODIFIED_SINCE", zVal); + }else if( strcmp(zFieldName,"accept:")==0 ){ + cgi_setenv("HTTP_ACCEPT", zVal); } #if 0 else if( strcmp(zFieldName,"referer:")==0 ){ cgi_setenv("HTTP_REFERER", zVal); }else if( strcmp(zFieldName,"user-agent:")==0 ){ Index: src/style.c =================================================================== --- src/style.c +++ src/style.c @@ -18,11 +18,11 @@ ** This file contains code to implement the basic web page look and feel. ** */ #include "config.h" #include "style.h" - +#include /* ** Elements of the submenu are collected into the following ** structure and displayed below the main menu by style_header(). ** @@ -105,10 +105,15 @@ Th_Store("compiler_name", COMPILER_NAME); if( g.zLogin ){ Th_Store("login", g.zLogin); } if( g.thTrace ) Th_Trace("BEGIN_HEADER_SCRIPT
\n", -1); + while( isspace(*zHeader) ){ ++zHeader; } + if( strncmp(zHeader, "", 6)==0 ) { + Th_Render(""); + zHeader += 6; + } Th_Render(zHeader); if( g.thTrace ) Th_Trace("END_HEADER
\n", -1); Th_Unstore("title"); /* Avoid collisions with ticket field names */ cgi_destination(CGI_BODY); g.cgiOutput = 1; Index: src/translate.c =================================================================== --- src/translate.c +++ src/translate.c @@ -107,10 +107,15 @@ for(j=0; zLine[i] && zLine[i]!='\r' && zLine[i]!='\n'; i++){ if( zLine[i]==c1 && (c2==' ' || zLine[i+1]==c2) ){ omitline = 1; break; } if( zLine[i]=='"' || zLine[i]=='\\' ){ zOut[j++] = '\\'; } + if( strncmp(zLine+i, "", 6)==0 ){ + strcpy(zOut+j, ""); + i += 6; + j += 45; + } zOut[j++] = zLine[i]; } while( j>0 && isspace(zOut[j-1]) ){ j--; } zOut[j] = 0; if( j<=0 && omitline ){