aboutsummaryrefslogtreecommitdiffhomepage
path: root/System/Posix/Files.hsc
diff options
context:
space:
mode:
authorGravatar dons <unknown>2003-09-15 20:59:07 +0000
committerGravatar dons <unknown>2003-09-15 20:59:07 +0000
commit9a9842f47af4488ce71a296026be1e3f3c739e6a (patch)
tree1278b9c54dd768ca3f48fa971684c74373ebeb8c /System/Posix/Files.hsc
parent70e90e1b2ea10a725db32e9d333aa29b03646bb4 (diff)
[project @ 2003-09-15 20:59:07 by dons]
#ifdef's for the _PC_SYNC_IO, _PC_ASYNC_IO, _PC_FILESIZEBITS, _PC_SYMLINK_MAX. These 4 symbols are not universal: FreeBSD and Linux and the only OS's that appear to have them at the moment.
Diffstat (limited to 'System/Posix/Files.hsc')
-rw-r--r--System/Posix/Files.hsc35
1 files changed, 30 insertions, 5 deletions
diff --git a/System/Posix/Files.hsc b/System/Posix/Files.hsc
index 36127d9..c66b9a9 100644
--- a/System/Posix/Files.hsc
+++ b/System/Posix/Files.hsc
@@ -449,20 +449,45 @@ data PathVar
pathVarConst :: PathVar -> CInt
pathVarConst v = case v of
- FileSizeBits -> (#const _PC_FILESIZEBITS)
LinkLimit -> (#const _PC_LINK_MAX)
InputLineLimit -> (#const _PC_MAX_CANON)
InputQueueLimit -> (#const _PC_MAX_INPUT)
FileNameLimit -> (#const _PC_NAME_MAX)
PathNameLimit -> (#const _PC_PATH_MAX)
PipeBufferLimit -> (#const _PC_PIPE_BUF)
- SymbolicLinkLimit -> (#const _PC_SYMLINK_MAX)
SetOwnerAndGroupIsRestricted -> (#const _PC_CHOWN_RESTRICTED)
FileNamesAreNotTruncated -> (#const _PC_NO_TRUNC)
VDisableChar -> (#const _PC_VDISABLE)
- AsyncIOAvailable -> (#const _PC_ASYNC_IO)
- PrioIOAvailable -> (#const _PC_PRIO_IO)
- SyncIOAvailable -> (#const _PC_SYNC_IO)
+
+#ifdef _PC_SYNC_IO
+ SyncIOAvailable -> (#const _PC_SYNC_IO)
+#else
+ SyncIOAvailable -> error "_PC_SYNC_IO not available"
+#endif
+
+#ifdef _PC_ASYNC_IO
+ AsyncIOAvailable -> (#const _PC_ASYNC_IO)
+#else
+ AsyncIOAvailable -> error "_PC_ASYNC_IO not available"
+#endif
+
+#ifdef _PC_PRIO_IO
+ PrioIOAvailable -> (#const _PC_PRIO_IO)
+#else
+ PrioIOAvailable -> error "_PC_PRIO_IO not available"
+#endif
+
+#if _PC_FILESIZEBITS
+ FileSizeBits -> (#const _PC_FILESIZEBITS)
+#else
+ FileSizeBits -> error "_PC_FILESIZEBITS not available"
+#endif
+
+#if _PC_SYMLINK_MAX
+ SymbolicLinkLimit -> (#const _PC_SYMLINK_MAX)
+#else
+ SymbolicLinkLimit -> error "_PC_SYMLINK_MAX not available"
+#endif
getPathVar :: FilePath -> PathVar -> IO Limit
getPathVar name v = do