X-Git-Url: http://git.draconx.ca/gitweb/fvwmconf.git/blobdiff_plain/402a36125f4da1e4cce1ae651d2cd7af4211ff20..25a02c0e784c071a1fd46e38fc11f858f3c6bf64:/scripts/mpdexec.pl diff --git a/scripts/mpdexec.pl b/scripts/mpdexec.pl deleted file mode 100755 index 962656f..0000000 --- a/scripts/mpdexec.pl +++ /dev/null @@ -1,72 +0,0 @@ -#!/usr/bin/env perl -# -# Copyright © 2012,2019 Nick Bowler -# -# Simple program to send a command to MPD. Each command-line argument is -# quoted as necessary so it appears as a single argument at the protocol -# level. 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 Encode::Locale qw(decode_argv); -decode_argv(Encode::FB_CROAK); - -binmode(STDOUT, ":utf8"); -binmode(STDIN, ":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: $!"; -} - -sub mpd_escape { - ($_) = @_; - - # No way to encode literal newlines in the protocol, so we convert - # any newlines in the arguments into a space, which can help with - # shell quoting. - s/\n/ /g; - - if (/[ \t\\"]/) { - s/[\\"]/\\$&/g; - return "\"$_\""; - } - return $_; -} - -sub mpd_exec { - print $sock join(' ', @_), "\n"; - while (<$sock>) { - last if (/^OK/); - print; - exit 1 if (/^ACK/); - } -} - -if (@ARGV) { - mpd_exec(map { mpd_escape($_) } @ARGV) -} else { - while (<>) { - chomp; - mpd_exec($_); - } -} - -print $sock "close\n"; -close $sock;