Xauth (empty) → 0.1
raw patch · 4 files changed
+99/−0 lines, 4 filesdep +basesetup-changed
Dependencies added: base
Files
- Graphics/X11/Xauth.hsc +48/−0
- LICENSE +30/−0
- Setup.hs +6/−0
- Xauth.cabal +15/−0
+ Graphics/X11/Xauth.hsc view
@@ -0,0 +1,48 @@+module Graphics.X11.Xauth+ (Xauth(..), familyLocal, familyWild, familyNetname,+ familyKrb5Principal, familyLocalHost, getAuthByAddr) where++#include <X11/Xauth.h>++import Foreign+import Foreign.C+import Control.Monad (liftM2, zipWithM_)++data Xauth = Xauth { xauthName, xauthData :: [CChar] } deriving (Show, Read)++familyLocal, familyWild, familyNetname, familyKrb5Principal, familyLocalHost :: CUShort+familyLocal = #{const FamilyLocal}+familyWild = #{const FamilyWild}+familyNetname = #{const FamilyNetname}+familyKrb5Principal = #{const FamilyKrb5Principal}+familyLocalHost = #{const FamilyLocalHost}++foreign import ccall "X11/Xauth.h XauGetAuthByAddr"+ xauGetAuthByAddr :: CUShort -> CUShort -> Ptr CChar -> CUShort -> Ptr CChar+ -> CInt -> Ptr CChar -> IO (Ptr Xauth)++foreign import ccall "X11/Xauth.h XauDisposeAuth"+ xauDisposeAuth :: Ptr Xauth -> IO ()++getAuthByAddr :: CUShort -> [CChar] -> [CChar] -> [CChar] -> IO (Maybe Xauth)+getAuthByAddr family address number atype+ = withArray address $ \addr_p -> withArray number $ \num_p ->+ withArray atype $ \atype_p -> do+ res <- xauGetAuthByAddr family (slength address) addr_p (slength number)+ num_p (slength atype) atype_p+ if res == nullPtr+ then return Nothing+ else do+ name_p <- #{peek Xauth, name} res+ name_len <- #{peek Xauth, name_length} res :: IO CUShort+ data_p <- #{peek Xauth, data} res+ data_len <- #{peek Xauth, data_length} res :: IO CUShort+ x <- if or [nullPtr == name_p, nullPtr == data_p, data_len <= 0, name_len <= 0]+ then return $ Nothing+ else+ liftM2 ((Just .) . Xauth)+ (peekArray (fromIntegral name_len) name_p)+ (peekArray (fromIntegral data_len) data_p)+ xauDisposeAuth res+ return x+ where slength x = fromIntegral $ length x
+ LICENSE view
@@ -0,0 +1,30 @@+Copyright (c) 2008 Spencer Janssen++All rights reserved.++Redistribution and use in source and binary forms, with or without+modification, are permitted provided that the following conditions+are met:++1. Redistributions of source code must retain the above copyright+ notice, this list of conditions and the following disclaimer.++2. Redistributions in binary form must reproduce the above copyright+ notice, this list of conditions and the following disclaimer in the+ documentation and/or other materials provided with the distribution.++3. Neither the name of the author nor the names of his contributors+ may be used to endorse or promote products derived from this software+ without specific prior written permission.++THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``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 AUTHORS 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.
+ Setup.hs view
@@ -0,0 +1,6 @@+module Main (main) where++import Distribution.Simple++main :: IO ()+main = defaultMain
+ Xauth.cabal view
@@ -0,0 +1,15 @@+name: Xauth+version: 0.1+license: BSD3+license-file: LICENSE+copyright: Spencer Janssen <spencerjanssen@gmail.com>+maintainer: Spencer Janssen <spencerjanssen@gmail.com>+category: Graphics+synopsis: A binding to the X11 authentication library+description: A Haskell binding to the X11 authentication library.+exposed-modules:+ Graphics.X11.Xauth+extensions: ForeignFunctionInterface, CPP+build-depends: base+build-type: Simple+pkgconfig-depends: xau