*.deb extraction utility (also *.dsc by wrapping “dpkg-source -x”)
authorThorsten Glaser <t.glaser@tarent.de>
Mon, 17 Nov 2014 14:33:11 +0000 (15:33 +0100)
committerThorsten Glaser <t.glaser@tarent.de>
Mon, 17 Nov 2014 14:33:11 +0000 (15:33 +0100)
mksh/debian-dev/debextract [new file with mode: 0644]

diff --git a/mksh/debian-dev/debextract b/mksh/debian-dev/debextract
new file mode 100644 (file)
index 0000000..98a66f5
--- /dev/null
@@ -0,0 +1,45 @@
+#!/bin/mksh
+#-
+# Copyright © 2014
+#      Thorsten “mirabilos” Glaser <t.glaser@tarent.de>
+#
+# Provided that these terms and disclaimer and all copyright notices
+# are retained or reproduced in an accompanying document, permission
+# is granted to deal in this work without restriction, including un‐
+# limited rights to use, publicly perform, distribute, sell, modify,
+# merge, give away, or sublicence.
+#
+# This work is provided “AS IS” and WITHOUT WARRANTY of any kind, to
+# the utmost extent permitted by applicable law, neither express nor
+# implied; without malicious intent or gross negligence. In no event
+# may a licensor, author or contributor be held liable for indirect,
+# direct, other damage, loss, or other issues arising in any way out
+# of dealing in the work, even if advised of the possibility of such
+# damage or existence of a defect, except proven that it results out
+# of said person’s immediate fault when using the work as intended.
+
+function die {
+       print -ru2 -- "E: $*"
+       exit 1
+}
+
+[[ -s $1 ]] || die need package to extract
+
+cd "$(realpath "$1/..")" || die cannot cd
+fn=${1##*/}
+
+[[ $fn = *.dsc ]] && exec dpkg-source -x "$fn"
+
+[[ $fn = *.deb ]] || die not a Debian source or binary package
+dn=${fn%.deb}-extracted
+
+set -e
+rm -rf "$dn"
+mkdir "$dn"
+cd "$dn"
+paxtar xapf ../"$fn"
+mkdir c d
+cd c
+paxtar xapf ../control.*
+cd ../d
+paxtar xapf ../data.*