From 9f7157dff996b3b2622fd366babb332e455fffa1 Mon Sep 17 00:00:00 2001 From: agibert Date: Fri, 3 Apr 2009 21:32:14 +0000 Subject: [PATCH] - Add 7z archive support, - Add multi compressor support: zip, rar and 7z, - Fix rar decompression bug ! --- nds2rm | 83 +++++++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 71 insertions(+), 12 deletions(-) diff --git a/nds2rm b/nds2rm index 9c69a2c..2c323d3 100644 --- a/nds2rm +++ b/nds2rm @@ -5,9 +5,9 @@ # (C) 2009 Arnaud G. Gibert #----------------------------------------------------------------------------------------------------------------------------------- # $RCSfile: nds2rm,v $ -# $Revision: 1.10 $ +# $Revision: 1.11 $ # $Name: $ -# $Date: 2009/03/30 23:24:15 $ +# $Date: 2009/04/03 21:32:14 $ # $Author: agibert $ #----------------------------------------------------------------------------------------------------------------------------------- @@ -34,6 +34,7 @@ # User Config #----------------------------------------------------------------------------------------------------------------------------------- +# Path Config #NDS_REPOSITORY_IN=/opt/public/nds NDS_REPOSITORY_IN=/opt/public/nds.new #NDS_REPOSITORY_IN=/opt/public/nds.new/nds.old @@ -44,6 +45,16 @@ NDS_ROMS_IN=${NDS_REPOSITORY_IN}/roms NDS_ROMS_OUT=${NDS_REPOSITORY_OUT}/roms NDS_XML=${NDS_REPOSITORY_IN}/misc/dsrom.xml +# Job Parallelisation +JOB_NB=8 + +# Compressor (zip, rar or 7z) +#COMPRESSOR=zip +#COMPRESSOR=rar +COMPRESSOR=7z + + + @@ -54,11 +65,29 @@ STATS_FILE="stats.txt" TMP_DIR=$(mktemp -d) -JOB_NB=8 +case "${COMPRESSOR}" +in + (zip) + CSFX=zip + ;; + + (rar) + CSFX=rar + ;; + + (7z) + CSFX=7z + ;; + + (*) + echo "Error: unsuported compressor: ${COMPRESSOR} !" + exit 1 + ;; +esac NDS_VERSION="$Name: $" -RNFH_REGEX=".... - .* \(.*:.*\) \[..\] \{........} <....>[-]*[0-9]*\.zip$" +RNFH_REGEX=".... - .* \(.*:.*\) \[..\] \{........} <....>[-]*[0-9]*\.${CSFX}$" reg_tab[0]="E"; # Europe reg_tab[1]="U"; # USA @@ -632,9 +661,33 @@ function arc_build() \rm -f "${NDS_ROMS_IN}/${file}" fi - print_verbose "zipping ${rom} into ${file_name}" + case "${COMPRESSOR}" + in + (zip) + print_verbose "zipping ${rom} into ${file_name}" - zip -m9 "${NDS_ROMS_OUT}/${file_name}" "${rom}" >/dev/null 2>&1 + zip -m9 "${NDS_ROMS_OUT}/${file_name}" "${rom}" >/dev/null 2>&1 + ;; + + (rar) + print_verbose "raring ${rom} into ${file_name}" + + rar m -m5 "${NDS_ROMS_OUT}/${file_name}" "${rom}" >/dev/null 2>&1 + ;; + + (7z) + print_verbose "7zipping ${rom} into ${file_name}" + + 7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on -bd "${NDS_ROMS_OUT}/${file_name}" "${rom}" >/dev/null 2>&1 + \rm -f "${rom}" + ;; + + + (*) + echo "arc_build internal error [$COMPRESSOR] !" 1>&2 + exit 1 + ;; + esac else print_verbose "removing ${rom}" @@ -721,7 +774,13 @@ function rom_extract() (*.rar) print_verbose "extracting ${rom} from ${file}" - unrar p "${NDS_ROMS_IN}/${file}" > "${rom}" + unrar p -inul "${NDS_ROMS_IN}/${file}" > "${rom}" + ;; + + (*.7z) + print_verbose "extracting ${rom} from ${file}" + + 7z x -so "${NDS_ROMS_IN}/${file}" > "${rom}" 2>/dev/null ;; (*.zip) @@ -755,7 +814,7 @@ function tmp_mv() do if [[ "${file_src}" != "${NDS_ROMS_OUT}/*.tmp" ]] then - file_trg=${file_src/.zip.tmp/.zip} + file_trg=${file_src/.${CSFX}.tmp/.${CSFX}} print_verbose "move ${file_src} to ${file_trg}" @@ -1077,7 +1136,7 @@ function suffix_mng() idx_old=${idx} status_old=${status} dup_id=0 - file_name="${file/) \[*/}) [${status}] {${crc}} <${fp}>.zip" + file_name="${file/) \[*/}) [${status}] {${crc}} <${fp}>.${CSFX}" dat_fp[${idx}]="${fp}" dat_status[${idx}]="${status}" @@ -1090,7 +1149,7 @@ function suffix_mng() fi else dup_id=$((${dup_id} + 1)) - file_name="${file/) \[*/}) [${status}] {${crc}} <${fp}>-${dup_id}.zip" + file_name="${file/) \[*/}) [${status}] {${crc}} <${fp}>-${dup_id}.${CSFX}" dup_cnt=$((${dup_cnt} + 1)) fi @@ -1309,9 +1368,9 @@ function test_correct_mode() { if [[ ${in_place} == "yes" ]] then - file_suffix=".zip.tmp" + file_suffix=".${CSFX}.tmp" else - file_suffix=".zip" + file_suffix=".${CSFX}" fi # Remove .tmp suffix