X-Git-Url: http://cgit.babelmonkeys.de/?p=mpdbot.git;a=blobdiff_plain;f=src%2FPEPThread.m;h=cd13eb382ca57452cf979da8426fc777f83c4131;hp=496ebe6110d0b0bc2e278fb8d6b8fd3730787998;hb=3bfc0d740c800ee4d5ef71acb6fd55998d7a0aad;hpb=58c9d40544119cc2f5861b9c68b4744d08735012 diff --git a/src/PEPThread.m b/src/PEPThread.m index 496ebe6..cd13eb3 100644 --- a/src/PEPThread.m +++ b/src/PEPThread.m @@ -1,3 +1,25 @@ +/* + * Copyright (c) 2011, Florian Zeitz + * + * 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 #import @@ -21,12 +43,12 @@ @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; @@ -35,11 +57,11 @@ } } -- (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) @@ -55,6 +77,16 @@ - (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) {