Skip to content

Commit a34b703

Browse files
committed
WIP
1 parent 3540e98 commit a34b703

File tree

4 files changed

+48
-63
lines changed

4 files changed

+48
-63
lines changed

build-logic/src/main/kotlin/kotlinx/io/conventions/kotlinx-io-multiplatform.gradle.kts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,10 @@ kotlin {
9797
group("androidNative")
9898
}
9999
}
100+
group("appleAndLinux") {
101+
group("apple")
102+
group("linux")
103+
}
100104
}
101105
group("nodeFilesystemShared") {
102106
withJs()

core/apple/src/files/FileSystemApple.kt

Lines changed: 0 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,8 @@
66

77
package kotlinx.io.files
88

9-
import kotlinx.cinterop.CPointer
109
import kotlinx.cinterop.ExperimentalForeignApi
1110
import kotlinx.cinterop.cstr
12-
import kotlinx.cinterop.get
1311
import kotlinx.cinterop.memScoped
1412
import kotlinx.cinterop.toKString
1513
import kotlinx.io.IOException
@@ -19,9 +17,7 @@ import platform.Foundation.NSFileType
1917
import platform.Foundation.NSFileTypeDirectory
2018
import platform.Foundation.NSFileTypeRegular
2119
import platform.Foundation.NSTemporaryDirectory
22-
import platform.posix.DIR
2320
import platform.posix.basename
24-
import platform.posix.closedir
2521
import platform.posix.dirname
2622
import platform.posix.errno
2723
import platform.posix.free
@@ -84,29 +80,3 @@ internal actual fun metadataOrNullImpl(path: Path): FileMetadata? {
8480
)
8581
}
8682

87-
@OptIn(ExperimentalForeignApi::class)
88-
internal actual class OpaqueDirEntry(private val dir: CPointer<DIR>) : AutoCloseable {
89-
actual fun readdir(): String? {
90-
val entry = platform.posix.readdir(dir) ?: return null
91-
return entry[0].d_name.toKString()
92-
}
93-
94-
actual override fun close() {
95-
if (closedir(dir) != 0) {
96-
val err = errno
97-
val strerr = strerror(err)?.toKString() ?: "unknown error"
98-
throw IOException("closedir failed with errno $err ($strerr)")
99-
}
100-
}
101-
}
102-
103-
@OptIn(ExperimentalForeignApi::class)
104-
internal actual fun opendir(path: String): OpaqueDirEntry {
105-
val dirent = platform.posix.opendir(path)
106-
if (dirent != null) return OpaqueDirEntry(dirent)
107-
108-
val err = errno
109-
val strerr = strerror(err)?.toKString() ?: "unknown error"
110-
throw IOException("Can't open directory $path: $err ($strerr)")
111-
}
112-
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
/*
2+
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
3+
* Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE.txt file.
4+
*/
5+
6+
package kotlinx.io.files
7+
8+
import kotlinx.cinterop.CPointer
9+
import kotlinx.cinterop.ExperimentalForeignApi
10+
import kotlinx.cinterop.get
11+
import kotlinx.cinterop.toKString
12+
import kotlinx.io.IOException
13+
import platform.posix.DIR
14+
import platform.posix.closedir
15+
import platform.posix.errno
16+
import platform.posix.opendir
17+
import platform.posix.strerror
18+
19+
20+
@OptIn(ExperimentalForeignApi::class)
21+
internal actual class OpaqueDirEntry(private val dir: CPointer<DIR>) : AutoCloseable {
22+
actual fun readdir(): String? {
23+
val entry = platform.posix.readdir(dir) ?: return null
24+
return entry[0].d_name.toKString()
25+
}
26+
27+
actual override fun close() {
28+
if (closedir(dir) != 0) {
29+
val err = errno
30+
val strerr = strerror(err)?.toKString() ?: "unknown error"
31+
throw IOException("closedir failed with errno $err ($strerr)")
32+
}
33+
}
34+
}
35+
36+
@OptIn(ExperimentalForeignApi::class)
37+
internal actual fun opendir(path: String): OpaqueDirEntry {
38+
val dirent = opendir(path)
39+
if (dirent != null) return OpaqueDirEntry(dirent)
40+
41+
val err = errno
42+
val strerr = strerror(err)?.toKString() ?: "unknown error"
43+
throw IOException("Can't open directory $path: $err ($strerr)")
44+
}

core/linux/src/files/FileSystemLinux.kt

Lines changed: 0 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,12 @@
55

66
package kotlinx.io.files
77

8-
import kotlinx.cinterop.CPointer
98
import kotlinx.cinterop.ExperimentalForeignApi
109
import kotlinx.cinterop.cstr
11-
import kotlinx.cinterop.get
1210
import kotlinx.cinterop.memScoped
1311
import kotlinx.cinterop.toKString
14-
import kotlinx.io.IOException
15-
import platform.posix.DIR
1612
import platform.posix.__xpg_basename
17-
import platform.posix.closedir
1813
import platform.posix.dirname
19-
import platform.posix.errno
20-
import platform.posix.strerror
2114

2215
@OptIn(ExperimentalForeignApi::class)
2316
internal actual fun dirnameImpl(path: String): String {
@@ -38,29 +31,3 @@ internal actual fun basenameImpl(path: String): String {
3831

3932
internal actual fun isAbsoluteImpl(path: String): Boolean = path.startsWith('/')
4033

41-
42-
@OptIn(ExperimentalForeignApi::class)
43-
internal actual class OpaqueDirEntry(private val dir: CPointer<DIR>) : AutoCloseable {
44-
actual fun readdir(): String? {
45-
val entry = platform.posix.readdir(dir) ?: return null
46-
return entry[0].d_name.toKString()
47-
}
48-
49-
actual override fun close() {
50-
if (closedir(dir) != 0) {
51-
val err = errno
52-
val strerr = strerror(err)?.toKString() ?: "unknown error"
53-
throw IOException("closedir failed with errno $err ($strerr)")
54-
}
55-
}
56-
}
57-
58-
@OptIn(ExperimentalForeignApi::class)
59-
internal actual fun opendir(path: String): OpaqueDirEntry {
60-
val dirent = platform.posix.opendir(path)
61-
if (dirent != null) return OpaqueDirEntry(dirent)
62-
63-
val err = errno
64-
val strerr = strerror(err)?.toKString() ?: "unknown error"
65-
throw IOException("Can't open directory $path: $err ($strerr)")
66-
}

0 commit comments

Comments
 (0)