Extracting parts of the formatting method into configuration and an options helper...
[cslatevm.git] / src / plugins / old / posix.slate
blobf7ea7c66ee835de5e89ace5fe66857028300e320
2 prototypes ensureNamespace: #POSIX.
4 POSIX define: #Lib
5   &builder: [ExternalInterface newForLibrary: 'posix' primitives:
6     q{
7       (Boolean CreateDirectory (CString))
8       (Boolean DeleteDirectory (CString))
9       (Boolean LinkFile (CString CString))
10       (Boolean UnlinkFile (CString))
11       (Boolean SymbolicLinkFile (CString CString))
12       (Int ReadSymbolicLinkInto (CString Bytes Int))
13       (Boolean RenameFile (CString CString))
14       (Boolean RemoveFile (CString))
15       (Boolean CreateFIFO (CString))
16       "(Boolean CreateFSNode (CString Int Int))??"
17       "(Boolean ChangeFileModes (CString Int))??"
18       "(Boolean GetFileInfo (CString))??"
19       } &leader: 'slate_'].
21 POSIX Lib enable.
23 d@(Directory traits) ensureExists
24 [POSIX Lib primitives CreateDirectory applyTo: {d locator as: String}].
26 d@(Directory traits) delete
27 [POSIX Lib primitives DeleteDirectory applyTo: {d locator as: String}].
29 l@(File Locator traits) hardLinkTo: target
30 [POSIX Lib primitives LinkFile applyTo: {l as: String. target locator as: String}].
32 l@(File Locator traits) symbolicLinkTo: target
33 [POSIX Lib primitives SymbolicLinkFile applyTo: {l as: String. target locator as: String}].
35 l@(File Locator traits) linkTo: target &static: static
37   (static ifNil: [False])
38     ifTrue: [l hardLinkTo: target] ifFalse: [l symbolicLinkTo: target]
41 l@(File Locator traits) unlink
42 [POSIX Lib primitives Unlink applyTo: {l as: String}].
44 l@(File Locator traits) symbolicTarget
45 [| buffer bufSize |
46   buffer: (ByteArray newSize: 1024).
47   bufSize: (POSIX Lib primitives ReadSymbolicLinkInto applyTo:
48     {l as: String. buffer. 1024}).
49   ((buffer first: bufSize) as: String) as: l
52 f@(File traits) renameTo: newName
54   (POSIX Lib primitives RenameFile applyTo:
55     {f locator as: String. newName as: String})
56       ifTrue: [f locator: (newName as: f locator)].
57   f
60 f@(File traits) delete
61 [POSIX Lib primitives RemoveFile applyTo: {f locator as: String}].
63 l@(File Locator traits) createFIFO
64 "TODO: Make a FIFO ExternalResource type?"
65 [POSIX Lib primitives CreateFIFO applyTo: {l as: String}].