summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xqr96
1 files changed, 96 insertions, 0 deletions
diff --git a/qr b/qr
new file mode 100755
index 0000000..287c852
--- /dev/null
+++ b/qr
@@ -0,0 +1,96 @@
+#!/bin/bash
+
+# Copyright (c) 2012 Peter Palfrader
+#
+# Permission is hereby granted, free of charge, to any person
+# obtaining a copy of this software and associated documentation
+# files (the "Software"), to deal in the Software without
+# restriction, including without limitation the rights to use,
+# copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the
+# Software is furnished to do so, subject to the following
+# conditions:
+#
+# The above copyright notice and this permission notice shall be
+# included in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+# OTHER DEALINGS IN THE SOFTWARE.
+
+usage()
+{
+cat << EOF
+usage: $0 -m <MSG>
+ $0 [options] [<file>]
+
+OPTIONS:
+ -m <MSG> Use MSG instead of reading input from file/stdin.
+ -M Add a/Include the trailing newline for single-line data.
+EOF
+}
+
+msg=""
+have_msg=0
+multi_line=0
+while getopts "hm:M" OPTION
+do
+ case $OPTION in
+ h)
+ usage
+ exit
+ ;;
+ M)
+ multi_line=1
+ ;;
+ m)
+ have_msg=1
+ msg="$OPTARG"
+ ;;
+ *)
+ usage >&2
+ exit 1
+ ;;
+ esac
+done
+shift $(($OPTIND - 1))
+
+
+img="$(tempfile --suffix .png)"
+trap "rm -f '$img'" EXIT
+
+
+if [ "$have_msg" -eq 0 ]; then
+ if [ "$#" -gt 1 ]; then
+ usage >&2
+ exit 1
+ fi
+
+ if [ "$#" -eq 0 ]; then
+ stdin="$(tempfile)"
+ trap "rm -f '$img' '$stdin'" EXIT
+ cat > "$stdin"
+ set dummy "$stdin"
+ shift
+ fi
+
+ fn="$1"; shift
+ if [ "$multi_line" = 1 ] || [ "$(cat "$fn" | wc -l)" -gt 1 ] ; then
+ qrencode -s 5 -l H -o "$img" < "$fn"
+ else
+ echo -n $( cat "$fn" ) | qrencode -s 5 -l H -o "$img"
+ fi
+else
+ echo -n "$msg" | qrencode -s 5 -l H -o "$img"
+fi
+
+display "$img"
+
+# vim:set et:
+# vim:set ts=4:
+# vim:set shiftwidth=4: