plugins: Replace environment variable substitution function with core version

This commit is contained in:
AJR 2020-12-08 09:44:32 -05:00
parent 6082c57817
commit e70d4ebb34
12 changed files with 17 additions and 37 deletions

View File

@ -1,7 +1,7 @@
local lib = {}
local function get_settings_path()
return lfs.env_replace(manager:machine():options().entries.homepath:value():match('([^;]+)')) .. '/autofire/'
return emu.subst_env(manager:machine():options().entries.homepath:value():match('([^;]+)')) .. '/autofire/'
end
local function get_settings_filename()

View File

@ -2,29 +2,10 @@
-- copyright-holders:Miodrag Milanovic
require('lfs')
-- add helper to lfs for plugins to use
function lfs.env_replace(str)
local pathsep = package.config:sub(1,1)
local function dorep(val)
ret = os.getenv(val)
if ret then
return ret
end
return val
end
if pathsep == '\\' then
str = str:gsub("%%([%w_]+)%%", dorep)
else
str = str:gsub("%$([%w_]+)", dorep)
end
return str
end
_G._ = emu.lang_translate
_G.emu.plugin = {} -- table to contain plugin interfaces
-- substitute environment variables in the plugins path from options
local dirs = lfs.env_replace(manager:options().entries.pluginspath:value())
local dirs = emu.subst_env(manager:options().entries.pluginspath:value())
-- and split the paths apart and make them suitable for package.path
package.path = ""

View File

@ -134,7 +134,7 @@ function cheat.startplugin()
local function load_hotkeys()
local json = require("json")
local file = io.open(lfs.env_replace(manager:machine():options().entries.cheatpath:value():match("([^;]+)")) .. "/" .. cheatname .. "_hotkeys.json", "r")
local file = io.open(emu.subst_env(manager:machine():options().entries.cheatpath:value():match("([^;]+)")) .. "/" .. cheatname .. "_hotkeys.json", "r")
if not file then
return
end
@ -160,7 +160,7 @@ function cheat.startplugin()
end
if #hotkeys > 0 then
local json = require("json")
local path = lfs.env_replace(manager:machine():options().entries.cheatpath:value():match("([^;]+)"))
local path = emu.subst_env(manager:machine():options().entries.cheatpath:value():match("([^;]+)"))
local attr = lfs.attributes(path)
if not attr then
lfs.mkdir(path)

View File

@ -959,8 +959,7 @@ function cheatfind.startplugin()
end
end
end
-- lfs.env_replace is defined in boot.lua
cheat_save.path = lfs.env_replace(manager:machine():options().entries.cheatpath:value()):match("([^;]+)")
cheat_save.path = emu.subst_env(manager:machine():options().entries.cheatpath:value()):match("([^;]+)")
cheat_save.filename = string.format("%s/%s", cheat_save.path, setname)
cheat_save.name = cheat.desc
local json = require("json")

View File

@ -9,7 +9,7 @@ local curset
function env.open(file, size)
if file == ".hi" then
local path = "hi"
local ini = emu.file(lfs.env_replace(manager:options().entries.inipath:value()), 1)
local ini = emu.file(emu.subst_env(manager:options().entries.inipath:value()), 1)
local ret = ini:open("hiscore.ini")
if not ret then
local inifile = ini:read(ini:size())
@ -23,7 +23,7 @@ function env.open(file, size)
end
file = path .. "/" .. curset .. ".hi"
else
file = lfs.env_replace(manager:options().entries.nvram_directory:value()) .. "/" .. curset .. "/" .. file
file = emu.subst_env(manager:options().entries.nvram_directory:value()) .. "/" .. curset .. "/" .. file
end
local f = io.open(file, "rb")
local content = f:read("*all")
@ -789,12 +789,12 @@ function dat.check(set, softlist)
output = nil
curset = set
local scrfile = emu.file(lfs.env_replace(mame_manager:ui():options().entries.historypath:value():gsub("([^;]+)", "%1/hi2txt")), 1)
local scrfile = emu.file(emu.subst_env(mame_manager:ui():options().entries.historypath:value():gsub("([^;]+)", "%1/hi2txt")), 1)
local ret = scrfile:open(set .. ".lua")
local script
if ret then
function get_xml_table(fileset)
local file = emu.file(lfs.env_replace(mame_manager:ui():options().entries.historypath:value():gsub("([^;]+)", "%1/hi2txt")), 1)
local file = emu.file(emu.subst_env(mame_manager:ui():options().entries.historypath:value():gsub("([^;]+)", "%1/hi2txt")), 1)
local ret = file:open(fileset .. ".xml")
if ret then
return nil

View File

@ -10,7 +10,7 @@ local function init()
local file = "scores3.htm"
for path in mame_manager:ui():options().entries.historypath:value():gmatch("([^;]+)") do
filepath = lfs.env_replace(path) .. "/" .. file
filepath = emu.subst_env(path) .. "/" .. file
fh = io.open(filepath, "r")
if fh then
break

View File

@ -9,7 +9,7 @@ local function check_db(msg)
end
do
local dbpath = lfs.env_replace(mame_manager:ui():options().entries.historypath:value():match("([^;]+)"))
local dbpath = emu.subst_env(mame_manager:ui():options().entries.historypath:value():match("([^;]+)"))
db = sql.open(dbpath .. "/history.db")
if not db then
lfs.mkdir(dbpath)

View File

@ -27,7 +27,7 @@ function datfile.open(file, vertag, fixupcb)
local fh
for path in mame_manager:ui():options().entries.historypath:value():gmatch("([^;]+)") do
filepath = lfs.env_replace(path) .. "/" .. file
filepath = emu.subst_env(path) .. "/" .. file
fh = io.open(filepath, "r")
if fh then
break

View File

@ -23,7 +23,7 @@ function hiscore.startplugin()
local hiscoredata_path = "hiscore.dat";
local hiscore_path = "hi";
local config_path = lfs.env_replace(manager:options().entries.inipath:value():match("[^;]+") .. "/hiscore.ini");
local config_path = emu.subst_env(manager:options().entries.inipath:value():match("[^;]+") .. "/hiscore.ini");
local current_checksum = 0;
local default_checksum = 0;
@ -51,7 +51,7 @@ function hiscore.startplugin()
_conf[token] = value;
end
end
hiscore_path = lfs.env_replace(_conf["hi_path"] or hiscore_path);
hiscore_path = emu.subst_env(_conf["hi_path"] or hiscore_path);
timed_save = _conf["only_save_at_exit"] ~= "1"
-- hiscoredata_path = _conf["dat_path"]; -- don't know if I should do it, but wathever
return true

View File

@ -28,7 +28,7 @@ local portname = exports
function portname.startplugin()
local json = require("json")
local ctrlrpath = lfs.env_replace(manager:options().entries.ctrlrpath:value():match("([^;]+)"))
local ctrlrpath = lfs.subst_env(manager:options().entries.ctrlrpath:value():match("([^;]+)"))
local function get_filename(nosoft)
local filename
if emu.softname() ~= "" and not nosoft then

View File

@ -12,7 +12,7 @@ exports.author = { name = "Carl" }
local timer = exports
function timer.startplugin()
local dir = lfs.env_replace(manager:options().entries.homepath:value())
local dir = emu.subst_env(manager:options().entries.homepath:value())
local timer_db = dir .. "/timer/timer.db"
local timer_started = false
local total_time = 0

View File

@ -555,7 +555,7 @@ void lua_engine::initialize()
* emu.keypost(keys) - post keys to natural keyboard
* emu.wait(len) - wait for len within coroutine
* emu.lang_translate(str) - get translation for str if available
* emu.subst_env(str) - substitute environment variables with values for str
* emu.subst_env(str) - substitute environment variables with values for str (semantics are OS-specific)
*
* emu.register_prestart(callback) - register callback before reset
* emu.register_start(callback) - register callback after reset