MCPcopy Create free account
hub / github.com/LibertyOS-Development/kernel / open

Function open

src/fs/mod.rs:274–312  ·  view source on GitHub ↗

Open

(path: &str, flags: usize)

Source from the content-addressed store, hash-verified

272
273// Open
274pub fn open(path: &str, flags: usize) -> Option<Resource>
275{
276 if OpenFlag::DIRECTORY.set(flags)
277 {
278 let res = Directory::open(path);
279 if res.is_none() && OpenFlag::CREATE.set(flags)
280 {
281 Directory::create(path)
282 }
283 else
284 {
285 res
286 }.map(Resource::Directory)
287 }
288 else if OpenFlag::DEVICE.set(flags)
289 {
290 let res = Device::open(path);
291 if res.is_none() && OpenFlag::CREATE.set(flags)
292 {
293 Device::create(path)
294 }
295 else
296 {
297 res
298 }.map(Resource::Device)
299 }
300 else
301 {
302 let res = File::open(path);
303 if res.is_none() && OpenFlag::CREATE.set(flags)
304 {
305 File::create(path)
306 }
307 else
308 {
309 res
310 }.map(Resource::File)
311 }
312}
313
314
315// Read

Callers 15

lsFunction · 0.70
dev_newFunction · 0.70
dev_openFunction · 0.70
directory_newFunction · 0.70
directory_openFunction · 0.70
file_openFunction · 0.70
infoFunction · 0.70
new_fileFunction · 0.70
createMethod · 0.70
delMethod · 0.70
openMethod · 0.70
createMethod · 0.70

Calls 2

setMethod · 0.45
mapMethod · 0.45

Tested by

no test coverage detected