diff options
author | Mike Buland <mike@xagasoft.com> | 2024-10-01 11:45:17 -0700 |
---|---|---|
committer | Mike Buland <mike@xagasoft.com> | 2024-10-01 11:45:17 -0700 |
commit | 03cafb600101c4bc659521b833a1f3a8c56938be (patch) | |
tree | ef8bc84d129e84cd3b5a937ffaa3a66be6a45920 | |
parent | 00651aeaf50f8481a2c894f9462cd3b8eb6971d6 (diff) | |
download | libbu++-03cafb600101c4bc659521b833a1f3a8c56938be.tar.gz libbu++-03cafb600101c4bc659521b833a1f3a8c56938be.tar.bz2 libbu++-03cafb600101c4bc659521b833a1f3a8c56938be.tar.xz libbu++-03cafb600101c4bc659521b833a1f3a8c56938be.zip |
More fixes opening files & exclusive mode.
-rw-r--r-- | src/stable/myriad.cpp | 2 | ||||
-rw-r--r-- | src/stable/myriad.h | 2 | ||||
-rw-r--r-- | src/tests/myriadfs.cpp | 62 |
3 files changed, 64 insertions, 2 deletions
diff --git a/src/stable/myriad.cpp b/src/stable/myriad.cpp index f9fcd3e..03cffa9 100644 --- a/src/stable/myriad.cpp +++ b/src/stable/myriad.cpp | |||
@@ -84,7 +84,7 @@ Bu::MyriadStream Bu::Myriad::open( Bu::Myriad::StreamId iStream, | |||
84 | Bu::MutexLocker l( mhStream ); | 84 | Bu::MutexLocker l( mhStream ); |
85 | if( (eMode&Create) ) | 85 | if( (eMode&Create) ) |
86 | { | 86 | { |
87 | if( !hStream.has( iStream ) ) | 87 | if( hStream.has( iStream ) ) |
88 | { | 88 | { |
89 | if( (eMode&Exclusive) ) | 89 | if( (eMode&Exclusive) ) |
90 | { | 90 | { |
diff --git a/src/stable/myriad.h b/src/stable/myriad.h index 7f84c2a..6168aa2 100644 --- a/src/stable/myriad.h +++ b/src/stable/myriad.h | |||
@@ -45,7 +45,7 @@ namespace Bu | |||
45 | Truncate = 0x08, ///< Truncate file if it does exist | 45 | Truncate = 0x08, ///< Truncate file if it does exist |
46 | Append = 0x10, ///< Start writing at end of file | 46 | Append = 0x10, ///< Start writing at end of file |
47 | //NonBlock = 0x20, ///< Open file in non-blocking mode | 47 | //NonBlock = 0x20, ///< Open file in non-blocking mode |
48 | Exclusive = 0x44, ///< Create file, if it exists then fail | 48 | Exclusive = 0x40, ///< Create file, if it exists then fail |
49 | 49 | ||
50 | // Helpful mixes | 50 | // Helpful mixes |
51 | ReadWrite = 0x03, ///< Open for reading and writing | 51 | ReadWrite = 0x03, ///< Open for reading and writing |
diff --git a/src/tests/myriadfs.cpp b/src/tests/myriadfs.cpp new file mode 100644 index 0000000..1266e4b --- /dev/null +++ b/src/tests/myriadfs.cpp | |||
@@ -0,0 +1,62 @@ | |||
1 | #include "bu/file.h" | ||
2 | #include "bu/membuf.h" | ||
3 | #include "bu/myriadfs.h" | ||
4 | #include "bu/myriadstream.h" | ||
5 | #include "bu/sio.h" | ||
6 | |||
7 | using namespace Bu; | ||
8 | |||
9 | int main() | ||
10 | { | ||
11 | // Bu::MemBuf mb; | ||
12 | Bu::File mb("store.myr", File::Read|File::Write|File::Create ); | ||
13 | Bu::MyriadFs mfs( mb, 512 ); | ||
14 | |||
15 | sio << "Creating dirs..." << sio.nl; | ||
16 | mfs.create("/etc", Bu::MyriadFs::typeDir|0755 ); | ||
17 | mfs.create("/dev", Bu::MyriadFs::typeDir|0755 ); | ||
18 | mfs.create("/usr", Bu::MyriadFs::typeDir|0755 ); | ||
19 | |||
20 | mfs.create("/dev/null", Bu::MyriadFs::typeChrDev|0666, 1, 3 ); | ||
21 | mfs.create("/dev/zero", Bu::MyriadFs::typeChrDev|0666, 1, 5 ); | ||
22 | mfs.create("/dev/sda", Bu::MyriadFs::typeBlkDev|0660, 8, 0 ); | ||
23 | |||
24 | sio << "Creating files..." << sio.nl; | ||
25 | { | ||
26 | Bu::MyriadStream ms = mfs.open("/hello", Bu::MyriadFs::Read ); | ||
27 | ms.write("world!"); | ||
28 | } | ||
29 | { | ||
30 | Bu::MyriadStream ms = mfs.open("/etc/hello", Bu::MyriadFs::Read ); | ||
31 | ms.write("world, again!"); | ||
32 | } | ||
33 | { | ||
34 | Bu::MyriadStream ms = mfs.open("/etc/trunc", Bu::MyriadFs::Write ); | ||
35 | ms.write("[longer text shouldn't be seen]"); | ||
36 | } | ||
37 | { | ||
38 | Bu::MyriadStream ms = mfs.open("/etc/trunc", Bu::MyriadFs::Write|Bu::MyriadFs::Create|Bu::MyriadFs::Truncate ); | ||
39 | ms.write("[short text]"); | ||
40 | } | ||
41 | |||
42 | sio << "Reading files..." << sio.nl; | ||
43 | { | ||
44 | Bu::MyriadStream ms = mfs.open("/hello", Bu::MyriadFs::Read ); | ||
45 | char buf[512]; | ||
46 | buf[ms.read( buf, 512 )] = '\0'; | ||
47 | sio << "read: '" << buf << "'" << sio.nl; | ||
48 | } | ||
49 | { | ||
50 | Bu::MyriadStream ms = mfs.open("/etc/hello", Bu::MyriadFs::Read ); | ||
51 | char buf[512]; | ||
52 | buf[ms.read( buf, 512 )] = '\0'; | ||
53 | sio << "read: '" << buf << "'" << sio.nl; | ||
54 | } | ||
55 | { | ||
56 | Bu::MyriadStream ms = mfs.open("/etc/trunc", Bu::MyriadFs::Read ); | ||
57 | char buf[512]; | ||
58 | buf[ms.read( buf, 512 )] = '\0'; | ||
59 | sio << "read: '" << buf << "'" << sio.nl; | ||
60 | } | ||
61 | } | ||
62 | |||