Changeset 8

Show
Ignore:
Timestamp:
07/25/04 14:49:50 (10 years ago)
Author:
george
Message:

make error handling more php5 esque

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/fastxsl.c

    r7 r8  
    5858#define FASTXSL_SHARED_ALLOC 2 
    5959 
     60void fastxsl_errorfunc(void *ctx, const char *msg, ...); 
     61 
    6062static php_ss_wrapper * 
    6163SS_Wrapper_Alloc(int shared TSRMLS_DC) 
     
    380382 
    381383        wrapper = (php_ss_wrapper *) SS_Wrapper_Alloc(0 TSRMLS_CC); 
    382         wrapper->ss = xsltParseStylesheetFile((const xmlChar *) filename); 
     384        wrapper->ss = xsltParseStylesheetFile(filename); 
    383385        if (!wrapper->ss) { 
    384386                RETURN_FALSE; 
     
    547549        } 
    548550 
     551        wrapper = (php_ss_wrapper *) SS_Wrapper_Alloc(0 TSRMLS_CC); 
    549552        result_wrapper->xd = xsltApplyStylesheet(ss_wrapper->ss, xd_wrapper->xd,  
    550553                        (const char **) parameters); 
     
    902905                xmlFreeDoc(wrapper->xd); 
    903906        free(wrapper); 
     907} 
     908 
     909void fastxsl_errorfunc(void *ctx, const char *msg, ...) 
     910{ 
     911        char *frag; 
     912        int fraglen; 
     913        int output = 0; 
     914        va_list args; 
     915        va_start(args, msg); 
     916        fraglen = vspprintf(&frag, 0, msg, args); 
     917        while(fraglen && frag[fraglen - 1] == '\n') { 
     918                frag[--fraglen] = '\0'; 
     919                output = 1; 
     920        } 
     921        if(fraglen) { 
     922                if(FASTXSL_G(errbuf)) { 
     923                        FASTXSL_G(errbuf) = erealloc(FASTXSL_G(errbuf), fraglen + strlen(FASTXSL_G(errbuf))); 
     924                        strcat(FASTXSL_G(errbuf), frag); 
     925                } else { 
     926                        FASTXSL_G(errbuf) = frag; 
     927                } 
     928        } 
     929        va_end(args); 
     930        if(output) { 
     931                php_error_docref(NULL TSRMLS_CC, E_WARNING, FASTXSL_G(errbuf)); 
     932                efree(FASTXSL_G(errbuf)); 
     933                FASTXSL_G(errbuf) = NULL; 
     934        } 
    904935} 
    905936 
     
    10301061        fname = xmlXPathPopString(ctxt); 
    10311062        if(!fname) { 
    1032                 xsltGenericDebug(xsltGenericDebugContext, 
     1063                xsltGenericError(xsltGenericDebugContext, 
    10331064                        "passed function name is not a string"); 
    10341065                xmlXPathReturnEmptyString(ctxt); 
     
    10421073        if(call_user_function(EG(function_table), NULL, function, ret,  
    10431074                                 param_count, params TSRMLS_CC) == FAILURE) { 
    1044                         xsltGenericDebug(xsltGenericDebugContext, 
     1075                        xsltGenericError(xsltGenericDebugContext, 
    10451076                                "function evaluation error"); 
    10461077                xmlXPathReturnEmptyString(ctxt); 
     
    10961127 
    10971128        ZEND_INIT_MODULE_GLOBALS(fastxsl, php_fastxsl_init_globals, php_fastxsl_destroy_globals); 
    1098  
     1129         
    10991130        REGISTER_INI_ENTRIES(); 
    11001131         
     
    11111142        xmlRegisterOutputCallbacks(Stream_MatchWrapper, Stream_XmlWrite_OpenWrapper,  
    11121143                                           Stream_XmlWrite_WriteWrapper, Stream_CloseWrapper); 
    1113          
     1144        xsltSetGenericErrorFunc(NULL, fastxsl_errorfunc); 
     1145        xmlSetGenericErrorFunc(NULL, fastxsl_errorfunc); 
    11141146#ifdef FASTXSL_MM 
    11151147        if (!sprintf(euid, "%d", geteuid())) { 
  • trunk/php_fastxsl.h

    r7 r8  
    8484        fl_cache *cache; 
    8585        char     *shmpath; 
     86        char     *errbuf; 
    8687        long      nostat; 
    8788        long      register_functions;