Skip to content

Commit

Permalink
split low-level and high-level code in io.directories
Browse files Browse the repository at this point in the history
  • Loading branch information
stepancheg committed Dec 6, 2012
1 parent bc0242b commit 777b172
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 10 deletions.
10 changes: 8 additions & 2 deletions lib-clay/io/directories/directories.clay
@@ -1,10 +1,9 @@
import data.vectors.(Vector);
import data.strings.(String);
import data.strings.tempcstrings.(tempCString);

import io.directories.platform.*;

public import io.directories.platform.(makeDirectory, deleteDirectory);


/// @section listDirectory

Expand All @@ -17,3 +16,10 @@ listDirectory(x) {
return r;
}

makeDirectory(path) {
makeDirectoryImpl(tempCString(path).cstring);
}

deleteDirectory(path) {
deleteDirectoryImpl(tempCString(path).cstring);
}
8 changes: 4 additions & 4 deletions lib-clay/io/directories/platform/platform.unix.clay
Expand Up @@ -55,16 +55,16 @@ overload nextValue(x:DirectoryIterator) {

/// @section makeDirectory, deleteDirectory

makeDirectory(path) {
makeDirectoryImpl(path: CStringRef) {
alias oct777 = 511;
var r = mkdir(cstring(path), mode_t(oct777));
var r = mkdir(path.ptr, mode_t(oct777));
if (r < 0) {
throw GenericIOError(errno(), "mkdir");
}
}

deleteDirectory(path) {
var r = rmdir(cstring(path));
deleteDirectoryImpl(path: CStringRef) {
var r = rmdir(path.ptr);
if (r < 0) {
throw GenericIOError(errno(), "rmdir");
}
Expand Down
8 changes: 4 additions & 4 deletions lib-clay/io/directories/platform/platform.windows.clay
Expand Up @@ -65,15 +65,15 @@ overload nextValue(it: DirectoryIterator) {

/// @section makeDirectory, deleteDirectory

makeDirectory(path) {
var ok = CreateDirectoryA(cstring(path), null(SECURITY_ATTRIBUTES));
makeDirectoryImpl(path: CStringRef) {
var ok = CreateDirectoryA(path.ptr, null(SECURITY_ATTRIBUTES));
if (ok == 0) {
throw GenericIOError(GetLastError(), "CreateDirectoryA");
}
}

deleteDirectory(path) {
var ok = RemoveDirectoryA(cstring(path));
deleteDirectoryImpl(path: CStringRef) {
var ok = RemoveDirectoryA(path.ptr);
if (ok == 0) {
throw GenericIOError(GetLastError(), "RemoveDirectoryA");
}
Expand Down

0 comments on commit 777b172

Please sign in to comment.