@@ -184,11 +184,12 @@ exqlite_open(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[])
184184
185185 int rc = 0 ;
186186 int size = 0 ;
187+ int flags ;
187188 connection_t * conn = NULL ;
188189 char filename [MAX_PATHNAME ];
189190 ERL_NIF_TERM result ;
190191
191- if (argc != 1 ) {
192+ if (argc != 2 ) {
192193 return enif_make_badarg (env );
193194 }
194195
@@ -202,7 +203,11 @@ exqlite_open(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[])
202203 return make_error_tuple (env , "out_of_memory" );
203204 }
204205
205- rc = sqlite3_open (filename , & conn -> db );
206+ if (!enif_get_int (env , argv [1 ], & flags )) {
207+ return make_error_tuple (env , "invalid flags" );
208+ }
209+
210+ rc = sqlite3_open_v2 (filename , & conn -> db , flags , NULL );
206211 if (rc != SQLITE_OK ) {
207212 enif_release_resource (conn );
208213 return make_error_tuple (env , "database_open_failed" );
@@ -944,7 +949,7 @@ exqlite_enable_load_extension(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[
944949//
945950
946951static ErlNifFunc nif_funcs [] = {
947- {"open" , 1 , exqlite_open , ERL_NIF_DIRTY_JOB_IO_BOUND },
952+ {"open" , 2 , exqlite_open , ERL_NIF_DIRTY_JOB_IO_BOUND },
948953 {"close" , 1 , exqlite_close , ERL_NIF_DIRTY_JOB_IO_BOUND },
949954 {"execute" , 2 , exqlite_execute , ERL_NIF_DIRTY_JOB_IO_BOUND },
950955 {"changes" , 1 , exqlite_changes , ERL_NIF_DIRTY_JOB_IO_BOUND },
0 commit comments