Ticket #149: SQLite3.pir.patch

File SQLite3.pir.patch, 2.0 KB (added by donaldh, 6 years ago)
  • ext/SQLite3/SQLite3.pir

     
    3333.const int SQLITE_DONE       =  101  # sqlite3_step() has finished executing 
    3434 
    3535.sub '_sqlite_init' :load 
    36     .local pmc libname 
    37     .local pmc function 
    38     .local pmc sqlite_funcs 
     36    .local pmc lib 
     37     
     38    .local pmc lib_names 
     39    lib_names = new 'ResizableStringArray' 
     40    push lib_names, 'libsqlite3' 
     41    push lib_names, 'cygsqlite3-0' 
    3942 
    40     libname = loadlib 'libsqlite3' 
    41     set_global '_sqlite3', libname 
     43    .local pmc lib_iter 
     44    lib_iter = iter lib_names 
     45    .local string libname 
     46lib_loop: 
     47    unless lib_iter goto lib_fail 
     48    libname = shift lib_iter 
     49    lib = loadlib libname 
     50    if lib goto lib_done 
     51    goto lib_loop 
    4252 
     53lib_fail: 
     54    .local pmc exception 
     55    exception = new 'Exception' 
     56    .local pmc message 
     57    message = new 'String' 
     58    message = 'Failed to load sqlite3 library.' 
     59    setattribute exception, 'message', message 
     60    throw exception 
     61 
     62lib_done:        
     63    set_global '_sqlite3', lib 
     64 
     65    .local pmc sqlite_funcs 
    4366    sqlite_funcs = new 'ResizableStringArray' 
    4467    push sqlite_funcs, 'step' 
    4568    push sqlite_funcs, 'ip' 
     
    6285    push sqlite_funcs, 'column_text' 
    6386    push sqlite_funcs, 'tpi' 
    6487 
    65     function  = dlfunc libname, 'sqlite3_open', 'itV' 
     88    .local pmc function 
     89    function  = dlfunc lib, 'sqlite3_open', 'itV' 
    6690    set_global 'open_raw', function 
    6791 
    68     function  = dlfunc libname, 'sqlite3_prepare_v2', 'iptiVp' 
     92    function  = dlfunc lib, 'sqlite3_prepare_v2', 'iptiVp' 
    6993    set_global 'prepare_raw', function 
    7094 
    7195    .local pmc list_iter 
     
    78102    func_name = shift list_iter 
    79103    signature = shift list_iter 
    80104    $S0 = concat 'sqlite3_', func_name 
    81     function  = dlfunc libname, $S0, signature 
     105    function  = dlfunc lib, $S0, signature 
    82106    set_global func_name, function 
    83107    goto list_loop 
    84108