Initial commit
This commit is contained in:
59
src/smbc.rs
59
src/smbc.rs
@@ -124,6 +124,11 @@ pub struct SmbFile<'a: 'b, 'b> {
|
||||
smbc: &'b SmbClient<'a>,
|
||||
fd: *mut SMBCFILE,
|
||||
}
|
||||
|
||||
pub struct SmbDirectory<'a: 'b, 'b> {
|
||||
smbc: &'b SmbClient<'a>,
|
||||
pub fd: *mut smbc_dirent,
|
||||
}
|
||||
// 1}}}
|
||||
|
||||
/// Default (dummy) credential `WORKGROUP\guest` with empty password
|
||||
@@ -233,6 +238,60 @@ impl<'a> SmbClient<'a> {
|
||||
Ok(SmbFile { smbc: &self, fd })
|
||||
}
|
||||
|
||||
/// READ DIR
|
||||
///
|
||||
/// See [OpenOptions](struct.OpenOptions.html).
|
||||
pub fn read_dir<'b, P: AsRef<str>>(&'b self,path: P) -> Result<SmbDirectory<'a, 'b>>{
|
||||
|
||||
let read_dir_fn = self.get_fn(smbc_getFunctionReaddir)?;
|
||||
let open_dir_fn = self.get_fn(smbc_getFunctionOpendir)?;
|
||||
|
||||
let path = cstring(path)?;
|
||||
trace!(target: "smbc", "opening {:?} with {:?}", path, read_dir_fn);
|
||||
|
||||
let dir = result_from_ptr_mut(open_dir_fn(self.ctx, path.as_ptr()))?;
|
||||
let fd = result_from_ptr_mut(read_dir_fn(self.ctx, dir))?;
|
||||
if (fd as i64) < 0 {
|
||||
trace!(target: "smbc", "neg fd");
|
||||
}
|
||||
Ok(SmbDirectory { smbc: &self, fd })
|
||||
}
|
||||
|
||||
/// READ DIR
|
||||
///
|
||||
/// See [OpenOptions](struct.OpenOptions.html).
|
||||
pub fn read_dirents<'b, P: AsRef<str>>(&'b self,path: P) -> Result<SmbDirectory<'a, 'b>>{
|
||||
|
||||
let read_dir_fn = self.get_fn(smbc_getFunctionReaddir)?;
|
||||
let open_dir_fn = self.get_fn(smbc_getFunctionOpendir)?;
|
||||
let get_dents_fn = self.get_fn(smbc_getFunctionGetdents)?;
|
||||
|
||||
let path = cstring(path)?;
|
||||
trace!(target: "smbc", "opening {:?} with {:?}", path, read_dir_fn);
|
||||
|
||||
let dir = result_from_ptr_mut(open_dir_fn(self.ctx, path.as_ptr()))?;
|
||||
let fd = result_from_ptr_mut(read_dir_fn(self.ctx, dir)).expect("Can't read file");
|
||||
let _fd = result_from_ptr_mut(read_dir_fn(self.ctx, dir)).expect("Can't read file");
|
||||
let _fd = result_from_ptr_mut(read_dir_fn(self.ctx, dir)).expect("Can't read file");
|
||||
let _fd = result_from_ptr_mut(read_dir_fn(self.ctx, dir)).expect("Can't read file");
|
||||
let _fd = result_from_ptr_mut(read_dir_fn(self.ctx, dir)).expect("Can't read file");
|
||||
let _fd = result_from_ptr_mut(read_dir_fn(self.ctx, dir)).expect("Can't read file");
|
||||
let _fd = result_from_ptr_mut(read_dir_fn(self.ctx, dir)).is_err();
|
||||
println!("{}", _fd);
|
||||
|
||||
|
||||
//Returns number of read bytes
|
||||
//let out_test = get_dents_fn(self.ctx, dir, fd, 200);
|
||||
if (fd as i64) < 0 {
|
||||
trace!(target: "smbc", "neg fd");
|
||||
}
|
||||
// let out_test = get_dents_fn(self.ctx, dir, fd, 2);
|
||||
// let out_test = get_dents_fn(self.ctx, dir, fd, 2);
|
||||
//println!("{}", out_test);
|
||||
|
||||
Ok(SmbDirectory { smbc: &self, fd })
|
||||
}
|
||||
|
||||
/// Open read-only [`SmbFile`](struct.SmbFile.html) defined by SMB `path`.
|
||||
///
|
||||
/// Alias for [`open_ro(..)`](struct.SmbClient.html#method.open_ro).
|
||||
|
||||
Reference in New Issue
Block a user