diff --git a/doc/examples/scd-event b/doc/examples/scd-event --- a/doc/examples/scd-event +++ b/doc/examples/scd-event @@ -1,102 +1,83 @@ #!/bin/sh -# Sample script for scdaemon event mechanism. +# +# Sample script for the scdaemon event mechanism. -#exec >>/tmp/scd-event.log -PGM=scd-event +set -eu -reader_port= -old_code=0x0000 -new_code=0x0000 -status= +# Uncomment to append script output to a system log file. +# exec >>"${TMPDIR:-/tmp}/scd-event.log" 2>&1 -tick='`' -prev= -while [ $# -gt 0 ]; do - arg="$1" - case $arg in - -*=*) optarg=$(echo "X$arg" | sed -e '1s/^X//' -e 's/[-_a-zA-Z0-9]*=//') - ;; - *) optarg= - ;; - esac - if [ -n "$prev" ]; then - eval "$prev=\$arg" - prev= - shift - continue - fi - case $arg in - --help|-h) - cat <&2 - exit 1 - ;; +reader_port='' +old_code='' +new_code='' +status_code='' - *) - break - ;; +temp=$(getopt -o 'h' --long 'help,reader-port:,old-code:,new-code:,status:' --name "$progname" -- "$@") + +eval set -- "$temp" +unset temp + +while true; do + case "$1" in + -h|--help) + usage; exit 0 + ;; + --reader-port) + reader_port="$2" + shift 2; continue + ;; + --old-code) + old_code="$2" + shift 2; continue + ;; + --new-code) + new_code="$2" + shift 2; continue + ;; + --status) + status_code="$2" + shift 2; continue + ;; + --) + shift; break + ;; + *) + printf 'Internal error!\n' >&2 + exit 1 + ;; esac - shift done -if [ -n "$prev" ]; then - echo "$PGM: argument missing for option $tick$prev'" >&2 - exit 1 + +if [ $# -gt 0 ]; then + printf '%s: invalid arguments\n' "$progname" >&2 && exit 1 fi -cat <&1 +if [ "$status_code" = 'USABLE' ]; then + gpg --batch --card-status 2>&1 fi -