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
|
||||
static ErlDrvData start(ErlDrvPort port, char* cmd) {
|
||||
sqlite3_drv_t* retval = (sqlite3_drv_t*) driver_alloc(sizeof(sqlite3_drv_t));
|
||||
struct sqlite3 *db;
|
||||
int status;
|
||||
|
||||
struct sqlite3 *db = 0;
|
||||
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
|
||||
sqlite3_open(DB_PATH, &db);
|
||||
sqlite3_open(db_name, &db);
|
||||
status = sqlite3_errcode(db);
|
||||
|
||||
if(status != SQLITE_OK) {
|
||||
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
|
||||
retval->port = port;
|
||||
|
||||
@@ -345,7 +345,7 @@ init(Options) ->
|
||||
SearchDir = filename:join([filename:dirname(code:which(?MODULE)), "..", "ebin"]),
|
||||
case erl_ddll:load(SearchDir, atom_to_list(?DRIVER_NAME)) of
|
||||
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}};
|
||||
{error, Error} ->
|
||||
io:format("Error loading ~p: ~p", [?DRIVER_NAME, erl_ddll:format_error(Error)]),
|
||||
|
||||
Reference in New Issue
Block a user