2012-06-09 42 views

回答

0

是相關的varnish.vcf全部分

C{ 
    #include <stdio.h> 
    #include <stddef.h> 
    #include <stdlib.h> 
}C 
sub vcl_error { 

set obj.http.Content-Type = "text/html; charset=utf-8"; 
set obj.http.Retry-After = "5"; 
if ((obj.status == 500 || obj.status == 503)&&client.ip !~ flnet){ 
    C{ 
    FILE *infile; 
    char *buffer; 
    char fname [50]; 
    long numbytes; 

     sprintf(fname, "/var/www/html/%d.html", VRT_r_obj_status(sp)); 
    infile = fopen(fname, "r"); 
     if(infile == NULL) 
     return 1; 

     fseek(infile, 0L, SEEK_END); 
     numbytes = ftell(infile); 
     fseek(infile, 0L, SEEK_SET); 
     buffer = (char*)calloc(numbytes, sizeof(char)); 
     fread(buffer, sizeof(char), numbytes, infile); 
     fclose(infile); 
     VRT_synth_page(sp, 0, buffer, "<!-- XID: ", VRT_r_req_xid(sp), " -->", vrt_magic_string_end); 

     free(buffer); 
    return 0; 
    }C 
    } 
0

example you're pointing to操縱與sprintf和strcat的文件內容,這可能不會對UTF-8很好地工作(你的文件是UTF-8像標題狀態,對不對?)。你可以使用像memcpy這樣的基於字節的C函數來測試你的運氣,或者使用UTF-8驗證字符串複製/格式化函數(從不用C處理這些東西)。

你能描述一下它不工作嗎更詳細?

下面
+0

感謝答覆,很抱歉我沒有反饋,直到now.I位於C是新的,但是經過大量的調試和跟蹤,這問題已經解決,下面是varnish.vcf中相關的完整部分 –