| ... |
... |
@@ -502,9 +502,14 @@ hIsClosed handle = |
|
502
|
502
|
|
|
503
|
503
|
-- | @'hIsReadable' hdl@ returns whether it is possible to read from the handle.
|
|
504
|
504
|
hIsReadable :: Handle -> IO Bool
|
|
505
|
|
-hIsReadable (DuplexHandle _ _ _) = return True
|
|
506
|
|
-hIsReadable handle =
|
|
507
|
|
- withHandle_ "hIsReadable" handle $ \ handle_ -> do
|
|
|
505
|
+hIsReadable handle@(FileHandle _ var)
|
|
|
506
|
+ = hIsReadable' handle var
|
|
|
507
|
+hIsReadable handle@(DuplexHandle _ readingVar _)
|
|
|
508
|
+ = hIsReadable' handle readingVar
|
|
|
509
|
+
|
|
|
510
|
+hIsReadable' :: Handle -> MVar Handle__ -> IO Bool
|
|
|
511
|
+hIsReadable' handle readingVar =
|
|
|
512
|
+ withHandle_' "hIsReadable" handle readingVar $ \ handle_ -> do
|
|
508
|
513
|
case haType handle_ of
|
|
509
|
514
|
ClosedHandle -> ioe_closedHandle
|
|
510
|
515
|
SemiClosedHandle -> ioe_semiclosedHandle
|
| ... |
... |
@@ -512,9 +517,14 @@ hIsReadable handle = |
|
512
|
517
|
|
|
513
|
518
|
-- | @'hIsWritable' hdl@ returns whether it is possible to write to the handle.
|
|
514
|
519
|
hIsWritable :: Handle -> IO Bool
|
|
515
|
|
-hIsWritable (DuplexHandle _ _ _) = return True
|
|
516
|
|
-hIsWritable handle =
|
|
517
|
|
- withHandle_ "hIsWritable" handle $ \ handle_ -> do
|
|
|
520
|
+hIsWritable handle@(FileHandle _ var)
|
|
|
521
|
+ = hIsWritable' handle var
|
|
|
522
|
+hIsWritable handle@(DuplexHandle _ _ writingVar)
|
|
|
523
|
+ = hIsWritable' handle writingVar
|
|
|
524
|
+
|
|
|
525
|
+hIsWritable' :: Handle -> MVar Handle__ -> IO Bool
|
|
|
526
|
+hIsWritable' handle writingVar =
|
|
|
527
|
+ withHandle_' "hIsWritable" handle writingVar $ \ handle_ -> do
|
|
518
|
528
|
case haType handle_ of
|
|
519
|
529
|
ClosedHandle -> ioe_closedHandle
|
|
520
|
530
|
SemiClosedHandle -> ioe_semiclosedHandle
|