28 lines
579 B
Nix
28 lines
579 B
Nix
|
{ coreutils, gnused, writeDashBin, zbar }:
|
||
|
|
||
|
writeDashBin "qrscan" ''
|
||
|
set -efu
|
||
|
|
||
|
tmpdir=$(${coreutils}/bin/mktemp --tmpdir -d qrscan.XXXXXXXX)
|
||
|
codefile=$tmpdir/code
|
||
|
|
||
|
cleanup() {
|
||
|
${coreutils}/bin/rm "$codefile"
|
||
|
${coreutils}/bin/rmdir "$tmpdir"
|
||
|
}
|
||
|
|
||
|
${coreutils}/bin/mkfifo "$codefile"
|
||
|
|
||
|
${zbar}/bin/zbarcam > "$codefile" &
|
||
|
zbarcampid=$!
|
||
|
|
||
|
exec < "$codefile"
|
||
|
while read -r code; do
|
||
|
code=$(printf %s "$code" | ${gnused}/bin/sed -n 's/^QR-Code://p')
|
||
|
if test -n "$code"; then
|
||
|
${coreutils}/bin/kill "$zbarcampid"
|
||
|
echo "$code"
|
||
|
fi
|
||
|
done
|
||
|
''
|