]> cgit.babelmonkeys.de Git - mpdbot.git/blobdiff - src/PEPThread.m
Support MPD_HOST/MPD_PORT environment variables
[mpdbot.git] / src / PEPThread.m
index 496ebe6110d0b0bc2e278fb8d6b8fd3730787998..cd13eb382ca57452cf979da8426fc777f83c4131 100644 (file)
@@ -1,3 +1,25 @@
+/*
+ * 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) {