X-Git-Url: https://git.draconx.ca/gitweb/fvwmconf.git/blobdiff_plain/d012bc360e002eaf8e3bd58fa528439638332258..74a217f96316193daa602b8a5f4a81cc922a42af:/scripts/mpdexec.pl diff --git a/scripts/mpdexec.pl b/scripts/mpdexec.pl new file mode 100755 index 0000000..9c6e069 --- /dev/null +++ b/scripts/mpdexec.pl @@ -0,0 +1,40 @@ +#!/usr/bin/env perl +# +# Copyright © 2012 Nick Bowler +# +# Simple program to send a command to MPD. The result is printed to standard +# output. +# +# License WTFPL2: Do What The Fuck You Want To Public License, version 2. +# This is free software: you are free to do what the fuck you want to. +# There is NO WARRANTY, to the extent permitted by law. + +use strict; + +use utf8; +use encoding 'utf8'; +use IO::Socket::INET6; + +my $host = $ENV{MPD_HOST} // "localhost"; +my $port = $ENV{MPD_PORT} // 6600; + +my $sock = new IO::Socket::INET6( + PeerAddr => $host, + PeerPort => $port, + Proto => 'tcp', +) or die "failed to connect to MPD: $!"; +binmode($sock, ":utf8"); + +if (!(<$sock> =~ /^OK MPD ([0-9]+)\.([0-9]+)\.([0-9]+)$/)) { + die "MPD failed to announce version: $!"; +} + +print $sock join(' ', @ARGV), "\n"; +while (<$sock>) { + last if (/^OK/); + print; + exit 1 if (/^ACK/); +} + +print $sock "close\n"; +close $sock;