/[jscoverage]/trunk/jscoverage-server.c
ViewVC logotype

Diff of /trunk/jscoverage-server.c

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

revision 275 by siliconforks, Sat Oct 11 22:38:05 2008 UTC revision 278 by siliconforks, Sat Oct 11 22:38:50 2008 UTC
# Line 38  Line 38 
38  #include "stream.h"  #include "stream.h"
39  #include "util.h"  #include "util.h"
40    
41    static const char * specified_encoding = NULL;
42  const char * jscoverage_encoding = "ISO-8859-1";  const char * jscoverage_encoding = "ISO-8859-1";
43  bool jscoverage_highlight = true;  bool jscoverage_highlight = true;
44    
# Line 868  Line 869 
869        if (is_hop_by_hop_header(h->name) || strcasecmp(h->name, HTTP_CONTENT_LENGTH) == 0) {        if (is_hop_by_hop_header(h->name) || strcasecmp(h->name, HTTP_CONTENT_LENGTH) == 0) {
870          continue;          continue;
871        }        }
872          else if (strcasecmp(h->name, HTTP_CONTENT_TYPE) == 0) {
873            HTTPExchange_add_response_header(client_exchange, HTTP_CONTENT_TYPE, "text/javascript; charset=ISO-8859-1");
874            continue;
875          }
876        HTTPExchange_add_response_header(client_exchange, h->name, h->value);        HTTPExchange_add_response_header(client_exchange, h->name, h->value);
877      }      }
878      add_via_header(HTTPExchange_get_response_message(client_exchange), HTTPExchange_get_response_http_version(server_exchange));      add_via_header(HTTPExchange_get_response_message(client_exchange), HTTPExchange_get_response_http_version(server_exchange));
# Line 1004  Line 1009 
1009        goto done;        goto done;
1010      }      }
1011    
1012        /*
1013        When do we send a charset with Content-Type?
1014        if Content-Type is "text" or "application"
1015          if instrumented JavaScript
1016            use Content-Type: application/javascript; charset=ISO-8859-1
1017          else if --encoding is given
1018            use that encoding
1019          else
1020            send no charset
1021        else
1022          send no charset
1023        */
1024      const char * content_type = get_content_type(filesystem_path);      const char * content_type = get_content_type(filesystem_path);
     HTTPExchange_set_response_header(exchange, HTTP_CONTENT_TYPE, content_type);  
1025      if (strcmp(content_type, "text/javascript") == 0 && ! is_no_instrument(abs_path)) {      if (strcmp(content_type, "text/javascript") == 0 && ! is_no_instrument(abs_path)) {
1026          HTTPExchange_set_response_header(exchange, HTTP_CONTENT_TYPE, "text/javascript; charset=ISO-8859-1");
1027    
1028        Stream * input_stream = Stream_new(0);        Stream * input_stream = Stream_new(0);
1029        Stream_write_file_contents(input_stream, f);        Stream_write_file_contents(input_stream, f);
1030    
# Line 1034  Line 1052 
1052        Stream_delete(output_stream);        Stream_delete(output_stream);
1053      }      }
1054      else {      else {
1055          /* send the Content-Type with charset if necessary */
1056          if (specified_encoding != NULL && (str_starts_with(content_type, "text/") || str_starts_with(content_type, "application/"))) {
1057            char * content_type_with_charset = NULL;
1058            xasprintf(&content_type_with_charset, "%s; charset=%s", content_type, specified_encoding);
1059            HTTPExchange_set_response_header(exchange, HTTP_CONTENT_TYPE, content_type_with_charset);
1060            free(content_type_with_charset);
1061          }
1062          else {
1063            HTTPExchange_set_response_header(exchange, HTTP_CONTENT_TYPE, content_type);
1064          }
1065    
1066        char buffer[8192];        char buffer[8192];
1067        size_t bytes_read;        size_t bytes_read;
1068        while ((bytes_read = fread(buffer, 1, 8192, f)) > 0) {        while ((bytes_read = fread(buffer, 1, 8192, f)) > 0) {
# Line 1117  Line 1146 
1146          fatal_command_line("--encoding: option requires an argument");          fatal_command_line("--encoding: option requires an argument");
1147        }        }
1148        jscoverage_encoding = argv[i];        jscoverage_encoding = argv[i];
1149          specified_encoding = jscoverage_encoding;
1150      }      }
1151      else if (strncmp(argv[i], "--encoding=", 11) == 0) {      else if (strncmp(argv[i], "--encoding=", 11) == 0) {
1152        jscoverage_encoding = argv[i] + 11;        jscoverage_encoding = argv[i] + 11;
1153          specified_encoding = jscoverage_encoding;
1154      }      }
1155    
1156      else if (strcmp(argv[i], "--ip-address") == 0) {      else if (strcmp(argv[i], "--ip-address") == 0) {

Legend:
Removed from v.275  
changed lines
  Added in v.278

  ViewVC Help
Powered by ViewVC 1.1.24