Open
(path: &str, flags: usize)
| 272 | |
| 273 | // Open |
| 274 | pub 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 |
no test coverage detected