Pass DB name to sqlite3_drv
If DB name not passed 'store.db' will be opened.
This commit is contained in:
@@ -31,17 +31,26 @@ DRIVER_INIT(basic_driver) {
|
|||||||
// Driver Start
|
// Driver Start
|
||||||
static ErlDrvData start(ErlDrvPort port, char* cmd) {
|
static ErlDrvData start(ErlDrvPort port, char* cmd) {
|
||||||
sqlite3_drv_t* retval = (sqlite3_drv_t*) driver_alloc(sizeof(sqlite3_drv_t));
|
sqlite3_drv_t* retval = (sqlite3_drv_t*) driver_alloc(sizeof(sqlite3_drv_t));
|
||||||
struct sqlite3 *db;
|
struct sqlite3 *db = 0;
|
||||||
int status;
|
int status = 0;
|
||||||
|
|
||||||
|
const char *db_name = strstr (cmd, " ");
|
||||||
|
if (!db_name) {
|
||||||
|
fprintf (stderr, "DB name should be passed at command line (cmd: %s)\n", cmd);
|
||||||
|
db_name = DB_PATH;
|
||||||
|
} else {
|
||||||
|
++db_name;
|
||||||
|
}
|
||||||
|
|
||||||
// Create and open the database
|
// Create and open the database
|
||||||
sqlite3_open(DB_PATH, &db);
|
sqlite3_open(db_name, &db);
|
||||||
status = sqlite3_errcode(db);
|
status = sqlite3_errcode(db);
|
||||||
|
|
||||||
if(status != SQLITE_OK) {
|
if(status != SQLITE_OK) {
|
||||||
fprintf(stderr, "Unabled to open file: %s because %s\n\n", DB_PATH, sqlite3_errmsg(db));
|
fprintf(stderr, "Unabled to open file: %s because %s\n\n", DB_PATH, sqlite3_errmsg(db));
|
||||||
|
} else {
|
||||||
|
fprintf(stderr, "Opened file %s\n", db_name);
|
||||||
}
|
}
|
||||||
fprintf(stderr, "Opened file %s\n", DB_PATH);
|
|
||||||
|
|
||||||
// Set the state for the driver
|
// Set the state for the driver
|
||||||
retval->port = port;
|
retval->port = port;
|
||||||
|
|||||||
@@ -345,7 +345,7 @@ init(Options) ->
|
|||||||
SearchDir = filename:join([filename:dirname(code:which(?MODULE)), "..", "ebin"]),
|
SearchDir = filename:join([filename:dirname(code:which(?MODULE)), "..", "ebin"]),
|
||||||
case erl_ddll:load(SearchDir, atom_to_list(?DRIVER_NAME)) of
|
case erl_ddll:load(SearchDir, atom_to_list(?DRIVER_NAME)) of
|
||||||
ok ->
|
ok ->
|
||||||
Port = open_port({spawn, ?DRIVER_NAME}, [binary]),
|
Port = open_port({spawn, string:join ([atom_to_list (?DRIVER_NAME), Dbase], " ")}, [binary]),
|
||||||
{ok, #state{port = Port, ops = Options}};
|
{ok, #state{port = Port, ops = Options}};
|
||||||
{error, Error} ->
|
{error, Error} ->
|
||||||
io:format("Error loading ~p: ~p", [?DRIVER_NAME, erl_ddll:format_error(Error)]),
|
io:format("Error loading ~p: ~p", [?DRIVER_NAME, erl_ddll:format_error(Error)]),
|
||||||
|
|||||||
Reference in New Issue
Block a user