diff options
| author | Alejandro Soto <alejandro@34project.org> | 2022-01-05 07:08:53 -0600 |
|---|---|---|
| committer | Alejandro Soto <alejandro@34project.org> | 2022-01-05 07:11:51 -0600 |
| commit | 92121f5db1ccec523c1b7eb0a817f757b5ef899a (patch) | |
| tree | bae9af4e32711f08cac4338159de6b6f64299774 /src/ops | |
| parent | c1bd6716bd53cb4270eeb032f150ac2c7c1a8f96 (diff) | |
Implement Rmdir
Diffstat (limited to 'src/ops')
| -rw-r--r-- | src/ops/entry.rs | 15 | ||||
| -rw-r--r-- | src/ops/mod.rs | 2 |
2 files changed, 16 insertions, 1 deletions
diff --git a/src/ops/entry.rs b/src/ops/entry.rs index a65be29..6f03d9d 100644 --- a/src/ops/entry.rs +++ b/src/ops/entry.rs @@ -14,6 +14,7 @@ use std::ffi::{CStr, OsStr}; pub enum Forget {} pub enum Getattr {} pub enum Mkdir {} +pub enum Rmdir {} pub trait RequestForget<'o>: Operation<'o> { fn forget_list<'a>(request: &'a Request<'o, Self>) -> ForgetList<'a>; @@ -31,6 +32,7 @@ pub enum ForgetList<'a> { impl Sealed for Forget {} impl Sealed for Getattr {} impl Sealed for Mkdir {} +impl Sealed for Rmdir {} impl<'o> Operation<'o> for Forget { type RequestBody = proto::OpcodeSelect< @@ -52,6 +54,11 @@ impl<'o> Operation<'o> for Mkdir { type ReplyTail = (); } +impl<'o> Operation<'o> for Rmdir { + type RequestBody = &'o CStr; // name() + type ReplyTail = (); +} + impl<'o> RequestForget<'o> for Forget { fn forget_list<'a>(request: &'a Request<'o, Self>) -> ForgetList<'a> { use {proto::OpcodeSelect::*, ForgetList::*}; @@ -119,3 +126,11 @@ impl<'o> RequestMode<'o> for Mkdir { } impl<'o> ReplyKnown<'o> for Mkdir {} + +impl<'o> RequestName<'o> for Rmdir { + fn name<'a>(request: &'a Request<'o, Self>) -> &'a OsStr { + c_to_os(request.body) + } +} + +impl<'o> ReplyOk<'o> for Rmdir {} diff --git a/src/ops/mod.rs b/src/ops/mod.rs index ad019e3..68f5bce 100644 --- a/src/ops/mod.rs +++ b/src/ops/mod.rs @@ -12,7 +12,7 @@ use bytemuck::{bytes_of, Pod}; pub mod traits; pub use dir::{BufferedReaddir, Lookup, Readdir}; -pub use entry::{Forget, Getattr, Mkdir}; +pub use entry::{Forget, Getattr, Mkdir, Rmdir}; pub use global::{Init, Statfs}; pub use open::{Access, Open, Opendir, Release, Releasedir}; pub use rw::{Flush, Read, Readlink, Write}; |
