simple Inline PGP decrypter
authorThorsten Glaser <t.glaser@tarent.de>
Thu, 3 Jul 2014 08:36:35 +0000 (10:36 +0200)
committerThorsten Glaser <t.glaser@tarent.de>
Thu, 3 Jul 2014 08:36:44 +0000 (10:36 +0200)
mksh/g [new file with mode: 0644]

diff --git a/mksh/g b/mksh/g
new file mode 100644 (file)
index 0000000..1af9057
--- /dev/null
+++ b/mksh/g
@@ -0,0 +1,39 @@
+#!/bin/mksh
+#-
+# Copyright © 2014
+#      Thorsten 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.
+
+nl=$'\n'
+set -o pipefail
+msg=$(cat; print x)
+if [[ $msg = *'> -----BEGIN'* ]]; then
+       msg=${msg//"${nl}> "/"$nl"}
+       repl="sed 's/^/> /'"
+else
+       repl=cat
+fi
+cs=${msg##*-----BEGIN PGP MESSAGE-----}
+cs=${cs%%-----END PGP MESSAGE-----*}
+if [[ $cs != *"${nl}Charset: "*$nl* ]]; then
+       print -nr -- "${msg%x}" | gpg "$@" | eval "$repl"
+       exit $?
+fi
+cs=${cs#*"${nl}Charset:"}
+cs=${cs%%"$nl"*}
+cs=${cs##+([    ])}
+print -nr -- "${msg%x}" | gpg "$@" | iconv -f "$cs" -t utf-8 | eval "$repl"