Package: game-data-packager
Version: 33
Severity: normal
Tags: patch

"game-data-packager quake" doesn't seem to support the retail Quake 
v1.06 CDROM that I have.

The attached patches add that support, and also fix a bug in the related 
tempfile cleanup code.

-- System Information:
Debian Release: jessie/sid
  APT prefers testing
  APT policy: (500, 'testing'), (1, 'experimental'), (1, 'unstable')
Architecture: amd64 (x86_64)
Foreign Architectures: armel
i386

Kernel: Linux 3.9-1-amd64 (SMP w/8 CPU cores)
Locale: LANG=en_CA.utf8, LC_CTYPE=en_CA.utf8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages game-data-packager depends on:
ii  dynamite    0.1.1-2
ii  fakeroot    1.18.4-2
ii  p7zip-full  9.20.1~dfsg.1-4
ii  unzip       6.0-9

game-data-packager recommends no packages.

Versions of packages game-data-packager suggests:
ii  jlha-utils  0.1.6-3
pn  lgc-pg      <none>

-- no debconf information
>From 727689affd5bb0ec9cb332f69103d68012da7fd4 Mon Sep 17 00:00:00 2001
From: Dwayne Litzenberger <dl...@dlitz.net>
Date: Sun, 4 Aug 2013 03:41:33 -0700
Subject: [PATCH 2/3] quake: add support for v1.06 CDROM

---
 supported/quake | 55 ++++++++++++++++++++++++++++++++++++-------------------
 1 file changed, 36 insertions(+), 19 deletions(-)

diff --git a/supported/quake b/supported/quake
index a49359c..3f08362 100644
--- a/supported/quake
+++ b/supported/quake
@@ -90,7 +90,7 @@ guess_method() {
         debug "treating $mountpoint like an installed directory"
         method="dir"
         dir_method
-    elif [ -f "$mountpoint/q101_int.1" ]; then
+    elif [ -f "$mountpoint/q101_int.1" ] || [ -f "$mountpoint/resource.1" ]; then
         debug "treating $mountpoint like a CD-ROM"
         method="cdrom"
         cdrom_method
@@ -130,24 +130,41 @@ may not work correctly."
 }
 
 cdrom_method() {
-    bit1="$mountpoint/q101_int.1"
-    bit2="$mountpoint/q101_int.2"
-    bit1sum=752f49131bb3ba832346e873c1bcfdc6
-    bit2sum=9ed67b39020575771e29645d977c9216
-    
-    require_lha
-    verify_file "$bit1"
-    verify_file "$bit2"
-    verify_md5sum "$bit1" "$bit1sum"
-    verify_md5sum "$bit2" "$bit2sum"
-    
-    cat "$bit1" "$bit2" > "$WORKDIR/unpackme.exe"
-    (
-      cd "$WORKDIR"
-      lha xq unpackme.exe
-      rm unpackme.exe
-    )
-    
+    if [ -f "$mountpoint/q101_int.1" ] ; then
+        # Quake 1.01 CD
+        bit1="$mountpoint/q101_int.1"
+        bit2="$mountpoint/q101_int.2"
+        bit1sum=752f49131bb3ba832346e873c1bcfdc6
+        bit2sum=9ed67b39020575771e29645d977c9216
+
+        require_lha
+        verify_file "$bit1"
+        verify_file "$bit2"
+        verify_md5sum "$bit1" "$bit1sum"
+        verify_md5sum "$bit2" "$bit2sum"
+
+        cat "$bit1" "$bit2" > "$WORKDIR/unpackme.exe"
+        (
+          cd "$WORKDIR"
+          lha xq unpackme.exe
+          rm unpackme.exe
+        )
+    elif [ -f "$mountpoint/resource.1" ] ; then
+        # Quake 1.06 registered retail cdrom
+        resource1="$mountpoint/resource.1"
+        resource1sum=959e4bd69d817ee0cbea6ddbf4f3af37
+
+        require_lha
+        verify_file "$resource1"
+        verify_md5sum "$resource1" "$resource1sum"
+        (
+          cd "$WORKDIR"
+          lha xq "$resource1" "ID1/PAK0.PAK" "ID1/PAK1.PAK"
+        )
+    else
+        die "BUG: cdrom_method called with missing archive"
+    fi
+
     pak0="$WORKDIR/id1/pak0.pak"
     if ! test -f "$pak0"; then
         pak0="$WORKDIR/ID1/PAK0.PAK"
-- 
1.8.3.2

>From 89db06398c96b6aeaeb803f745f9938abae4f057 Mon Sep 17 00:00:00 2001
From: Dwayne Litzenberger <dl...@dlitz.net>
Date: Sun, 4 Aug 2013 04:21:05 -0700
Subject: [PATCH 3/3] quake: Fix tempfile cleanup

- $WORKDIR/pak1.pak wasn't being removed (because it was a symlink)
- the uppercase ID1 directory was not getting cleaned up

We were getting this warning:

    rmdir: failed to remove `/tmp/game-data-packager.ikZf91': Directory not empty
    rmdir: failed to remove `/tmp/game-data-packager.ikZf91': Directory not empty
---
 supported/quake | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/supported/quake b/supported/quake
index 3f08362..678862c 100644
--- a/supported/quake
+++ b/supported/quake
@@ -266,7 +266,14 @@ common_method() {
         slipstream "$OUTFILE" "usr/share/games/quake/${folder}" \
             "$WORKDIR/pak0.pak" "$WORKDIR/pak1.pak"
     fi
-    [ -d "$WORKDIR/${folder}" ] && rm -rf "$WORKDIR/${folder}"
-    [ ! -f "$WORKDIR/pak1.pak" ] || rm "$WORKDIR/pak1.pak"
+
+    # clean up
+    if [ -d "$WORKDIR/${folder}" ] ; then
+        rm -rf "$WORKDIR/${folder}"
+    elif [ -d "$WORKDIR/`echo "${folder}" | tr a-z A-Z`" ] ; then
+        # Remove uppercase version of our directory
+        rm -rf "$WORKDIR/`echo "${folder}" | tr a-z A-Z`"
+    fi
+    [ ! -h "$WORKDIR/pak1.pak" ] || rm "$WORKDIR/pak1.pak"
     rm "$WORKDIR/pak0.pak"
 }
-- 
1.8.3.2

Reply via email to