aboutsummaryrefslogtreecommitdiff
path: root/main/Windows
diff options
context:
space:
mode:
authormartinw2001-03-13 11:22:21 +0000
committermartinw2001-03-13 11:22:21 +0000
commit4c81888944f3d9b2cb651c0e70583b2849834219 (patch)
tree1297f20ca258db707d14eb171a41ed201a6074cc /main/Windows
parentfixes bug in mergeCases (diff)
enable compiler to create "Clean System Files" folder
git-svn-id: https://svn.cs.ru.nl/repos/clean-compiler/trunk@325 1f8540f1-abd5-4d5b-9d24-4c5ce8603e2d
Diffstat (limited to 'main/Windows')
-rw-r--r--main/Windows/CoclSystemDependent.icl27
1 files changed, 27 insertions, 0 deletions
diff --git a/main/Windows/CoclSystemDependent.icl b/main/Windows/CoclSystemDependent.icl
index dc1d17b..867bcd2 100644
--- a/main/Windows/CoclSystemDependent.icl
+++ b/main/Windows/CoclSystemDependent.icl
@@ -1,6 +1,9 @@
// this is for Windows
implementation module CoclSystemDependent
+import StdEnv
+import code from "cDirectory.obj", library "directory_library" // Windows
+
PathSeparator
:== ';'
DirectorySeparator
@@ -13,3 +16,27 @@ SystemDependentDevices
SystemDependentInitialIO :: [a]
SystemDependentInitialIO
= []
+
+ensureCleanSystemFilesExists :: !String !*Files -> (!Bool, !*Files)
+// returned bool: now there is such a subfolder
+ensureCleanSystemFilesExists path env
+ # path_c_string = path +++ "\0"
+ (err_code, env) = createDirectoryC path_c_string env
+ = (err_code==M_NoDirError || err_code==M_AlreadyExists, env)
+
+createDirectoryC :: !String !*env -> (!Int, !*env)
+createDirectoryC _ _
+ = code
+ {
+ ccall createDirectoryC "S:I:A"
+ }
+
+// createDirectoryC returns the following error codes:
+M_NoDirError :== 0
+M_OtherDirError :== -1
+M_DoesntExist :== -2
+M_BadName :== -3
+M_NotEnoughSpace :== -4
+M_AlreadyExists :== -5
+M_NoPermission :== -6
+