Fixed issues reading XML and creating filters

This commit is contained in:
Eric Ostrowski
2019-03-16 13:24:08 -05:00
parent 46bc415207
commit 2e94f088e5
2 changed files with 44 additions and 27 deletions

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<emulators> <emulators>
<emulator> <emulator>
<name>ppsspp</name> <name>lr-ppsspp</name>
<saveFilePath>/opt/retropie/configs/psp/PSP/SAVEDATA</saveFilePath> <saveFilePath>/opt/retropie/configs/psp/PSP/SAVEDATA</saveFilePath>
<saveStatePath>/opt/retropie/configs/psp/PSP/PPSSPP_STATE</saveStatePath> <saveStatePath>/opt/retropie/configs/psp/PSP/PPSSPP_STATE</saveStatePath>
<saveFileExtensions> <saveFileExtensions>

View File

@@ -143,38 +143,54 @@ function prepareFilter ()
} }
# Builds a filter compatible with Find # Builds a filter compatible with Find
function prepareLocalFilter () function prepareSaveFilters ()
{ {
# Create an array of save file extensions log 3 "emu_settings: ${emu_settings}"
read -a exts <<< $(xmlstarlet sel -t -m "emulators/emulator[name='${emulator}']/saveFileExtensions" -v . "${emu_settings}")
# If any custom save file extensions are defined # Read in any extensions
if [ ${#exts[@]} -gt 0 ] extensions=$(xmlstarlet sel -t -m "emulators/emulator[name='${emulator}']/saveFileExtensions" -v "ext" "${emu_settings}")
# If no extensions were defined
if [ -z "${extensions// }" ]
then then
# Build the filter for the extensions
log 3 "Custom save extentions defined for emulator: ${emulator}" # Default to "<ROM_name>.*"
localFilter="\( -iname '*.${exts[0]}'"
for ext in ${exts[@]:1}; do
localFilter="${localFilter} -o -iname '*.${ext}'"
done
localFilter="${localFilter} \)"
else
# Otherwise, default to "<ROM_name>.*"
localFilter="${romfilebase//\[/\\[}" localFilter="${romfilebase//\[/\\[}"
localFilter="${localFilter//\]/\\]}" localFilter="${localFilter//\]/\\]}"
remoteFilter="${localFilter}"
else
# Otherwise, build custom filters
log 3 "Custom save extentions defined for emulator: ${emulator}"
i=0
# Build the filters for the extensions
while read ext; do
if [ "${i}" -eq "0" ]
then
remoteFilter="{*.${ext}"
localFilter="\( -iname '*.${ext}'"
((i++))
else
localFilter="${localFilter} -o -iname '*.${ext}'"
remoteFilter="${remoteFilter}, *.${ext}"
fi
done <<< ${extensions}
localFilter="${localFilter} \)"
remoteFilter="${remoteFilter}}"
fi fi
log 3 "Local save file filter: ${localFilter}" log 3 "Local save file filter: ${localFilter}"
} log 3 "Remote save file filter: ${remoteFilter}"
function prepareRemoteFilter ()
{
}
function getSavePathForEmulator ()
{
} }
function getTypeOfRemote () function getTypeOfRemote ()
@@ -388,7 +404,7 @@ log 3 "romfileext: ${romfileext}"
if [ "${direction}" == "up" ] && [ "${system}" != "kodi" ] if [ "${direction}" == "up" ] && [ "${system}" != "kodi" ]
then then
getROMFileName getROMFileName
prepareLocalFilter prepareSaveFilters
prepareFilter prepareFilter
getTypeOfRemote getTypeOfRemote
uploadSaves uploadSaves
@@ -397,6 +413,7 @@ fi
if [ "${direction}" == "down" ] && [ "${system}" != "kodi" ] if [ "${direction}" == "down" ] && [ "${system}" != "kodi" ]
then then
getROMFileName getROMFileName
prepareSaveFilters
prepareFilter prepareFilter
getTypeOfRemote getTypeOfRemote
downloadSaves downloadSaves