Changeset 25

Show
Ignore:
Timestamp:
07/11/07 19:43:51 (7 years ago)
Author:
jesus
Message:

make this compile on Solaris where flock is not and fcntl rules the day

Files:

Legend:

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

    r23 r25  
    4343#include <sys/file.h> 
    4444#include <unistd.h> 
     45#include <fcntl.h> 
    4546 
    4647#include "fl_hash.h" 
     
    5051#include "php_fastxsl.h" 
    5152 
    52 ZEND_DECLARE_MODULE_GLOBALS(fastxsl); 
     53ZEND_DECLARE_MODULE_GLOBALS(fastxsl) 
    5354 
    5455static int inshm = 0; 
     
    560561        struct stat       sb; 
    561562        int lockfd; 
     563#ifdef F_SETLK 
     564        struct flock lock; 
     565 
     566        lock.l_start = 0; 
     567        lock.l_whence = SEEK_SET; 
     568        lock.l_len = 0; 
     569#endif 
     570 
    562571         
    563572        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sz|z", &ss_filename, &ss_filename_len, 
     
    597606                sb.st_mtime = 0; 
    598607        } 
     608#ifdef F_SETLK 
     609        lock.l_type = F_WRLCK; 
     610        fcntl(lockfd, F_SETLKW, &lock); 
     611#else 
    599612        flock(lockfd, LOCK_EX); 
     613#endif 
    600614        mm_lock(FASTXSL_G(cache)->mm, MM_LOCK_RW); 
    601615        ss_wrapper = fl_hash_find(FASTXSL_G(cache)->table, ss_filename, ss_filename_len); 
     
    607621inshm = 0; 
    608622                if (!ss_wrapper) { 
     623#ifdef F_SETLK 
     624                        lock.l_type = F_UNLCK; 
     625                        fcntl(lockfd, F_SETLK, &lock); 
     626#else 
    609627                        flock(lockfd, LOCK_UN); 
     628#endif 
    610629                        close(lockfd); 
    611630                        //xmlCleanupParserr(); 
     
    627646                                Xml_UseAllocationFunctions(); 
    628647                                if (!ss_wrapper) { 
     648#ifdef F_SETLK 
     649                                        lock.l_type = F_UNLCK; 
     650                                        fcntl(lockfd, F_SETLK, &lock); 
     651#else 
    629652                                        flock(lockfd, LOCK_UN); 
     653#endif 
    630654                                        close(lockfd); 
    631655                                        _XD_Wrapper_Dtor(result_wrapper); 
     
    639663        //xmlCleanupParserr(); 
    640664        Xml_UseAllocationFunctions(); 
     665#ifdef F_SETLK 
     666        lock.l_type = F_UNLCK; 
     667        fcntl(lockfd, F_SETLK, &lock); 
     668#else 
    641669        flock(lockfd, LOCK_UN); 
     670#endif 
    642671        close(lockfd); 
    643672        result_wrapper->xd = xsltApplyStylesheet(ss_wrapper->ss, xd_wrapper->xd,