+/*
+ * Copyright (c) 2011, Florian Zeitz <florob@babelmonkeys.de>
+ *
+ * http://cgit.babelmonkeys.de/cgit.cgi/mpdbot/
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice is present in all copies.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
#import <ObjFW/ObjFW.h>
#import <ObjXMPP/ObjXMPP.h>
@try {
[sock release];
sock = [[OFTCPSocket alloc] init];
- [sock connectToHost: @"localhost"
- port: 6600];
+ [sock connectToHost: mpd_host
+ port: mpd_port];
return;
} @catch (id e) {
- of_log(@"Connection failed, retrying in %" PRIi64
- " seconds", pause);
+ [of_stderr writeFormat: @"Connection failed, retrying"
+ @" in %" PRIi64 @" seconds\n", pause];
[OFThread sleepForTimeInterval: pause];
if (pause < 120)
pause *= 2;
}
}
-- (OFMutableDictionary*)MPD_responseFromSocket: (OFTCPSocket*)sock
+- (OFMutableDictionary*)MPD_responseFromSocket: (OFTCPSocket*)sock_
{
OFString *answer;
OFMutableDictionary *response = [OFMutableDictionary dictionary];
- while ((answer = [sock readLine]) && ![answer hasPrefix: @"OK"]) {
+ while ((answer = [sock_ readLine]) && ![answer hasPrefix: @"OK"]) {
size_t index;
index = [answer indexOfFirstOccurrenceOfString: @":"];
if (index == OF_INVALID_INDEX)
- (id)main
{
+ OFDictionary *environment = [OFApplication environment];
+ OFString *mpd_port_string;
+ mpd_host = [environment objectForKey: @"MPD_HOST"];
+ if (mpd_host == nil)
+ mpd_host = @"localhost";
+ mpd_port_string = [environment objectForKey: @"MPD_PORT"];
+ if (mpd_port_string && [mpd_port_string decimalValue] <= UINT16_MAX)
+ mpd_port = (uint16_t) [mpd_port_string decimalValue];
+ else
+ mpd_port = 6600;
[self MPD_connect];
[self MPD_responseFromSocket: sock];
while (1) {