Explorar o código

Fixed issues reading XML and creating filters

Eric Ostrowski %!s(int64=6) %!d(string=hai) anos
pai
achega
2e94f088e5
Modificáronse 2 ficheiros con 42 adicións e 25 borrados
  1. 1 1
      emulator_settings.xml
  2. 41 24
      rclone_script.sh

+ 1 - 1
emulator_settings.xml

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

+ 41 - 24
rclone_script.sh

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