packages feed

libmpd 0.9.0.10 → 0.9.1.0

raw patch · 5 files changed

+30/−8 lines, 5 files

Files

changelog.md view
@@ -1,4 +1,8 @@-* v0.9.10+* v0.9.1.0+    - Support partition in Network.MPD.Status+    - Ignore unknown key-value pairs in Network.MPD.status so that it breaks much less often.++* v0.9.0.10     - Port it for newer network library  * v0.9.0, 2014-09-21
libmpd.cabal view
@@ -1,5 +1,5 @@ Name:               libmpd-Version:            0.9.0.10+Version:            0.9.1.0 Synopsis:           An MPD client library. Description:        A client library for MPD, the Music Player Daemon. Category:           Network, Sound
src/Network/MPD/Applicative/Status.hs view
@@ -104,7 +104,8 @@                 "audio"          -> audio $ \x -> a { stAudio           = x }                 "updating_db"    -> num   $ \x -> a { stUpdatingDb      = Just x }                 "error"          -> Right         a { stError           = Just (UTF8.toString v) }-                _                -> unexpectedPair+                "partition"      -> Right a { stPartition = UTF8.toString v }+                _                -> Right a                 where                     unexpectedPair = Left ("unexpected key-value pair: " ++ show p)                     int   f = maybe unexpectedPair (Right . f) (parseNum v :: Maybe Int)
src/Network/MPD/Commands/Types.hs view
@@ -303,8 +303,11 @@ -- @current - new = 0   if current - new < 0@ -- -- but @current / 0@ still yields a division by zero exception.-newtype Volume = Volume Int deriving (Eq, Ord, Show)+newtype Volume = Volume Int deriving (Eq, Ord) +instance Show Volume where+    showsPrec p (Volume v) = showsPrec p v+ instance Enum Volume where     toEnum = Volume . min 100 . max 0     fromEnum (Volume x) = x@@ -377,7 +380,9 @@              -- | If True, a song will be removed after it has been played.            , stConsume         :: Bool              -- | Last error message (if any).-           , stError           :: Maybe String }+           , stError           :: Maybe String+             -- | The name of MPD partition.+           , stPartition       :: String }     deriving (Eq, Show)  defaultStatus :: Status@@ -388,7 +393,8 @@            , stNextSongPos = Nothing, stNextSongID = Nothing            , stBitrate = Nothing, stXFadeWidth = 0, stMixRampdB = 0            , stMixRampDelay = 0, stAudio = (0,0,0), stUpdatingDb = Nothing-           , stSingle = False, stConsume = False, stError = Nothing }+           , stSingle = False, stConsume = False, stError = Nothing+           , stPartition = "" }  instance Default Status where     def = defaultStatus
src/Network/MPD/Core.hs view
@@ -36,7 +36,9 @@ import qualified Data.Foldable as F import           System.IO (IOMode(..)) import Network.Socket-  ( SockAddr(..)+  ( Family(..)+  , SockAddr(..)+  , SocketType(..)   , addrAddress   , addrFamily   , addrProtocol@@ -119,12 +121,21 @@ mpdOpen = MPD $ do     (host, port) <- ask     runMPD close-    addr:_ <- liftIO $ getAddrInfo (Just defaultHints) (Just host) (Just $ show port)+    addr:_ <- liftIO $ getAddr host port     sock <- liftIO $ socket (addrFamily addr) (addrSocketType addr) (addrProtocol addr)     mHandle <- liftIO (safeConnectTo (sock,(addrAddress addr)))     modify (\st -> st { stHandle = mHandle })     F.forM_ mHandle $ \_ -> runMPD checkConn >>= (`unless` runMPD close)     where+        getAddr addr@('/':_) _ = return [+                defaultHints { addrFamily = AF_UNIX+                             , addrSocketType = Stream+                             , addrAddress = SockAddrUnix addr+                             }+            ]++        getAddr host port = getAddrInfo (Just defaultHints) (Just host) (Just $ show port)+         safeConnectTo (sock,addr) =             (connect sock addr) >> (Just <$> socketToHandle sock ReadWriteMode)             `catchAny` const (return Nothing)