mirror of
https://github.com/holub/mame
synced 2025-10-05 08:41:31 +03:00
plugins/data: don't pollute the namespace and use emu.print_error (nw)
This commit is contained in:
parent
cea7ff08ac
commit
380bff2202
@ -1,6 +1,6 @@
|
|||||||
-- get marp high score file from http://replay.marpirc.net/txt/scores3.htm
|
-- get marp high score file from http://replay.marpirc.net/txt/scores3.htm
|
||||||
local dat = {}
|
local dat = {}
|
||||||
local db, sql = require("data/database")()
|
local db = require("data/database")
|
||||||
local ver, info
|
local ver, info
|
||||||
|
|
||||||
local function init()
|
local function init()
|
||||||
@ -17,9 +17,9 @@ local function init()
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local stmt = db:prepare("SELECT version FROM version WHERE datfile = ?")
|
local stmt = db.prepare("SELECT version FROM version WHERE datfile = ?")
|
||||||
stmt:bind_values(file)
|
stmt:bind_values(file)
|
||||||
if stmt:step() == sql.ROW then
|
if stmt:step() == db.ROW then
|
||||||
dbver = stmt:get_value(0)
|
dbver = stmt:get_value(0)
|
||||||
end
|
end
|
||||||
stmt:finalize()
|
stmt:finalize()
|
||||||
@ -31,10 +31,10 @@ local function init()
|
|||||||
elseif not fh then
|
elseif not fh then
|
||||||
return
|
return
|
||||||
elseif not dbver then
|
elseif not dbver then
|
||||||
db:exec("CREATE TABLE \"" .. file .. [[" (
|
db.exec("CREATE TABLE \"" .. file .. [[" (
|
||||||
romset VARCHAR NOT NULL,
|
romset VARCHAR NOT NULL,
|
||||||
data CLOB NOT NULL)]])
|
data CLOB NOT NULL)]])
|
||||||
db:exec("CREATE INDEX \"romset_" .. file .. "\" ON \"" .. file .. "_idx\"(romset)")
|
db.exec("CREATE INDEX \"romset_" .. file .. "\" ON \"" .. file .. "_idx\"(romset)")
|
||||||
end
|
end
|
||||||
|
|
||||||
for line in fh:lines() do
|
for line in fh:lines() do
|
||||||
@ -56,11 +56,11 @@ local function init()
|
|||||||
end
|
end
|
||||||
|
|
||||||
if dbver then
|
if dbver then
|
||||||
db:exec("DELETE FROM \"" .. file .. "\"")
|
db.exec("DELETE FROM \"" .. file .. "\"")
|
||||||
db:exec("DELETE FROM \"" .. file .. "_idx\"")
|
db.exec("DELETE FROM \"" .. file .. "_idx\"")
|
||||||
stmt = db:prepare("UPDATE version SET version = ? WHERE datfile = ?")
|
stmt = db.prepare("UPDATE version SET version = ? WHERE datfile = ?")
|
||||||
else
|
else
|
||||||
stmt = db:prepare("INSERT INTO version VALUES (?, ?)")
|
stmt = db.prepare("INSERT INTO version VALUES (?, ?)")
|
||||||
end
|
end
|
||||||
stmt:bind_values(ver, file)
|
stmt:bind_values(ver, file)
|
||||||
stmt:step()
|
stmt:step()
|
||||||
@ -68,7 +68,7 @@ local function init()
|
|||||||
|
|
||||||
fh:seek("set")
|
fh:seek("set")
|
||||||
local buffer = fh:read("a")
|
local buffer = fh:read("a")
|
||||||
db:exec("BEGIN TRANSACTION")
|
db.exec("BEGIN TRANSACTION")
|
||||||
|
|
||||||
local function gmatchpos()
|
local function gmatchpos()
|
||||||
local pos = 1
|
local pos = 1
|
||||||
@ -102,25 +102,23 @@ local function init()
|
|||||||
end
|
end
|
||||||
|
|
||||||
for set, data in gmatchpos() do
|
for set, data in gmatchpos() do
|
||||||
stmt = db:prepare("INSERT INTO \"" .. file .. "\" VALUES (?, ?)")
|
stmt = db.prepare("INSERT INTO \"" .. file .. "\" VALUES (?, ?)")
|
||||||
stmt:bind_values(set, data)
|
stmt:bind_values(set, data)
|
||||||
stmt:step()
|
stmt:step()
|
||||||
stmt:finalize()
|
stmt:finalize()
|
||||||
end
|
end
|
||||||
fh:close()
|
fh:close()
|
||||||
db:exec("END TRANSACTION")
|
db.exec("END TRANSACTION")
|
||||||
end
|
end
|
||||||
|
|
||||||
if db then
|
init()
|
||||||
init()
|
|
||||||
end
|
|
||||||
|
|
||||||
function dat.check(set, softlist)
|
function dat.check(set, softlist)
|
||||||
if softlist or not ver or not db then
|
if softlist or not ver then
|
||||||
return nil
|
return nil
|
||||||
end
|
end
|
||||||
info = nil
|
info = nil
|
||||||
local stmt = db:prepare("SELECT data FROM \"scores3.htm\" AS f WHERE romset = ?")
|
local stmt = db.prepare("SELECT data FROM \"scores3.htm\" AS f WHERE romset = ?")
|
||||||
stmt:bind_values(set)
|
stmt:bind_values(set)
|
||||||
if stmt:step() == sql.ROW then
|
if stmt:step() == sql.ROW then
|
||||||
info = "#j2\n" .. stmt:get_value(0)
|
info = "#j2\n" .. stmt:get_value(0)
|
||||||
|
@ -2,9 +2,9 @@ local sql = require("lsqlite3")
|
|||||||
local datfile = {}
|
local datfile = {}
|
||||||
local db
|
local db
|
||||||
|
|
||||||
function check_db(msg)
|
local function check_db(msg)
|
||||||
if db:errcode() > sqlite3.OK then
|
if db:errcode() > sql.OK then
|
||||||
io.stderr:write("Error: " .. msg .. " (" .. db:errcode() .. " - " .. db:errmsg() .. ")\n")
|
emu.print_error("Error: " .. msg .. " (" .. db:errcode() .. " - " .. db:errmsg() .. ")\n")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -31,4 +31,7 @@ if db then
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
return function() return db, sql end
|
local dbtable = { prepare = function(...) return db:prepare(...) end,
|
||||||
|
exec = function(...) return db:exec(...) end, ROW = sql.ROW, check = check_db }
|
||||||
|
|
||||||
|
return db and dbtable or nil
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
local datfile = {}
|
local datfile = {}
|
||||||
local db, sql = require("data/database")()
|
local db = require("data/database")
|
||||||
|
|
||||||
function datfile.open(file, vertag, fixupcb)
|
function datfile.open(file, vertag, fixupcb)
|
||||||
if not db then
|
if not db then
|
||||||
@ -7,11 +7,11 @@ function datfile.open(file, vertag, fixupcb)
|
|||||||
end
|
end
|
||||||
local function read(tag1, tag2, set)
|
local function read(tag1, tag2, set)
|
||||||
local data
|
local data
|
||||||
local stmt = db:prepare("SELECT f.data FROM \"" .. file .. "_idx\" AS fi, \"" .. file .. [["
|
local stmt = db.prepare("SELECT f.data FROM \"" .. file .. "_idx\" AS fi, \"" .. file .. [["
|
||||||
AS f WHERE fi.type = ? AND fi.val = ? AND fi.romset = ? AND f.rowid = fi.data]])
|
AS f WHERE fi.type = ? AND fi.val = ? AND fi.romset = ? AND f.rowid = fi.data]])
|
||||||
check_db("reading " .. tag1 .. " - " .. tag2 .. " - " .. set)
|
db.check("reading " .. tag1 .. " - " .. tag2 .. " - " .. set)
|
||||||
stmt:bind_values(tag1, tag2, set)
|
stmt:bind_values(tag1, tag2, set)
|
||||||
if stmt:step() == sql.ROW then
|
if stmt:step() == db.ROW then
|
||||||
data = stmt:get_value(0)
|
data = stmt:get_value(0)
|
||||||
end
|
end
|
||||||
stmt:finalize()
|
stmt:finalize()
|
||||||
@ -32,10 +32,10 @@ function datfile.open(file, vertag, fixupcb)
|
|||||||
-- remove unsafe chars from file for use in sql statement
|
-- remove unsafe chars from file for use in sql statement
|
||||||
file = file:gsub("[^%w%._]", "")
|
file = file:gsub("[^%w%._]", "")
|
||||||
|
|
||||||
local stmt = db:prepare("SELECT version FROM version WHERE datfile = ?")
|
local stmt = db.prepare("SELECT version FROM version WHERE datfile = ?")
|
||||||
check_db("reading version")
|
db.check("reading version")
|
||||||
stmt:bind_values(file)
|
stmt:bind_values(file)
|
||||||
if stmt:step() == sql.ROW then
|
if stmt:step() == db.ROW then
|
||||||
dbver = stmt:get_value(0)
|
dbver = stmt:get_value(0)
|
||||||
end
|
end
|
||||||
stmt:finalize()
|
stmt:finalize()
|
||||||
@ -46,16 +46,16 @@ function datfile.open(file, vertag, fixupcb)
|
|||||||
elseif not fh then
|
elseif not fh then
|
||||||
return nil
|
return nil
|
||||||
elseif not dbver then
|
elseif not dbver then
|
||||||
db:exec("CREATE TABLE \"" .. file .. [[_idx" (
|
db.exec("CREATE TABLE \"" .. file .. [[_idx" (
|
||||||
type VARCHAR NOT NULL,
|
type VARCHAR NOT NULL,
|
||||||
val VARCHAR NOT NULL,
|
val VARCHAR NOT NULL,
|
||||||
romset VARCHAR NOT NULL,
|
romset VARCHAR NOT NULL,
|
||||||
data INTEGER NOT NULL)]])
|
data INTEGER NOT NULL)]])
|
||||||
check_db("creating index")
|
db.check("creating index")
|
||||||
db:exec("CREATE TABLE \"" .. file .. "\" (data CLOB NOT NULL)")
|
db.exec("CREATE TABLE \"" .. file .. "\" (data CLOB NOT NULL)")
|
||||||
check_db("creating table")
|
db.check("creating table")
|
||||||
db:exec("CREATE INDEX \"typeval_" .. file .. "\" ON \"" .. file .. "_idx\"(type, val)")
|
db.exec("CREATE INDEX \"typeval_" .. file .. "\" ON \"" .. file .. "_idx\"(type, val)")
|
||||||
check_db("creating typeval index")
|
db.check("creating typeval index")
|
||||||
end
|
end
|
||||||
|
|
||||||
if vertag then
|
if vertag then
|
||||||
@ -76,15 +76,15 @@ function datfile.open(file, vertag, fixupcb)
|
|||||||
end
|
end
|
||||||
|
|
||||||
if dbver then
|
if dbver then
|
||||||
db:exec("DELETE FROM \"" .. file .. "\"")
|
db.exec("DELETE FROM \"" .. file .. "\"")
|
||||||
check_db("deleting")
|
db.check("deleting")
|
||||||
db:exec("DELETE FROM \"" .. file .. "_idx\"")
|
db.exec("DELETE FROM \"" .. file .. "_idx\"")
|
||||||
check_db("deleting index")
|
db.check("deleting index")
|
||||||
stmt = db:prepare("UPDATE version SET version = ? WHERE datfile = ?")
|
stmt = db.prepare("UPDATE version SET version = ? WHERE datfile = ?")
|
||||||
check_db("updating version")
|
db.check("updating version")
|
||||||
else
|
else
|
||||||
stmt = db:prepare("INSERT INTO version VALUES (?, ?)")
|
stmt = db.prepare("INSERT INTO version VALUES (?, ?)")
|
||||||
check_db("inserting version")
|
db.check("inserting version")
|
||||||
end
|
end
|
||||||
stmt:bind_values(ver, file)
|
stmt:bind_values(ver, file)
|
||||||
stmt:step()
|
stmt:step()
|
||||||
@ -94,8 +94,8 @@ function datfile.open(file, vertag, fixupcb)
|
|||||||
local inblock = false
|
local inblock = false
|
||||||
fh:seek("set")
|
fh:seek("set")
|
||||||
local buffer = fh:read("a")
|
local buffer = fh:read("a")
|
||||||
db:exec("BEGIN TRANSACTION")
|
db.exec("BEGIN TRANSACTION")
|
||||||
check_db("beginning transaction")
|
db.check("beginning transaction")
|
||||||
local function gmatchpos()
|
local function gmatchpos()
|
||||||
local pos = 1
|
local pos = 1
|
||||||
local function iter()
|
local function iter()
|
||||||
@ -136,8 +136,8 @@ function datfile.open(file, vertag, fixupcb)
|
|||||||
if fixupcb then
|
if fixupcb then
|
||||||
data = fixupcb(data)
|
data = fixupcb(data)
|
||||||
end
|
end
|
||||||
stmt = db:prepare("INSERT INTO \"" .. file .. "\" VALUES (?)")
|
stmt = db.prepare("INSERT INTO \"" .. file .. "\" VALUES (?)")
|
||||||
check_db("inserting values")
|
db.check("inserting values")
|
||||||
stmt:bind_values(data)
|
stmt:bind_values(data)
|
||||||
stmt:step()
|
stmt:step()
|
||||||
local row = stmt:last_insert_rowid()
|
local row = stmt:last_insert_rowid()
|
||||||
@ -147,8 +147,8 @@ function datfile.open(file, vertag, fixupcb)
|
|||||||
if fixupcb then
|
if fixupcb then
|
||||||
fixupcb(data)
|
fixupcb(data)
|
||||||
end
|
end
|
||||||
stmt = db:prepare("INSERT INTO \"" .. file .. "_idx\" VALUES (?, ?, ?, ?)")
|
stmt = db.prepare("INSERT INTO \"" .. file .. "_idx\" VALUES (?, ?, ?, ?)")
|
||||||
check_db("inserting into index")
|
db.check("inserting into index")
|
||||||
stmt:bind_values(tag1, tag2, set, row)
|
stmt:bind_values(tag1, tag2, set, row)
|
||||||
stmt:step()
|
stmt:step()
|
||||||
stmt:finalize()
|
stmt:finalize()
|
||||||
@ -157,8 +157,8 @@ function datfile.open(file, vertag, fixupcb)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
db:exec("END TRANSACTION")
|
db.exec("END TRANSACTION")
|
||||||
check_db("ending transaction")
|
db.check("ending transaction")
|
||||||
end
|
end
|
||||||
fh:close()
|
fh:close()
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user