mirror of
https://github.com/chatmail/core.git
synced 2026-05-09 01:46:30 +03:00
Filbytes fix (#85)
* test(sqlite): add some tests for houskeeping methods * fix(tools): handle faile metadata call
This commit is contained in:
committed by
Lars-Magnus Skog
parent
41cecb32c7
commit
e383752b67
@@ -1614,3 +1614,61 @@ unsafe fn maybe_add_from_param(
|
|||||||
sqlite3_finalize(stmt);
|
sqlite3_finalize(stmt);
|
||||||
dc_param_unref(param);
|
dc_param_unref(param);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod test {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_maybe_add_file() {
|
||||||
|
let mut files = Default::default();
|
||||||
|
unsafe { maybe_add_file(&mut files, b"$BLOBDIR/hello\x00" as *const u8 as *const _) };
|
||||||
|
unsafe {
|
||||||
|
maybe_add_file(
|
||||||
|
&mut files,
|
||||||
|
b"$BLOBDIR/world.txt\x00" as *const u8 as *const _,
|
||||||
|
)
|
||||||
|
};
|
||||||
|
unsafe { maybe_add_file(&mut files, b"world2.txt\x00" as *const u8 as *const _) };
|
||||||
|
|
||||||
|
assert!(files.contains("hello"));
|
||||||
|
assert!(files.contains("world.txt"));
|
||||||
|
assert!(!files.contains("world2.txt"));
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_is_file_in_use() {
|
||||||
|
let mut files = Default::default();
|
||||||
|
unsafe { maybe_add_file(&mut files, b"$BLOBDIR/hello\x00" as *const u8 as *const _) };
|
||||||
|
unsafe {
|
||||||
|
maybe_add_file(
|
||||||
|
&mut files,
|
||||||
|
b"$BLOBDIR/world.txt\x00" as *const u8 as *const _,
|
||||||
|
)
|
||||||
|
};
|
||||||
|
unsafe { maybe_add_file(&mut files, b"world2.txt\x00" as *const u8 as *const _) };
|
||||||
|
|
||||||
|
println!("{:?}", files);
|
||||||
|
assert!(unsafe {
|
||||||
|
is_file_in_use(
|
||||||
|
&mut files,
|
||||||
|
std::ptr::null(),
|
||||||
|
b"hello\x00" as *const u8 as *const _,
|
||||||
|
)
|
||||||
|
});
|
||||||
|
assert!(!unsafe {
|
||||||
|
is_file_in_use(
|
||||||
|
&mut files,
|
||||||
|
b".txt\x00" as *const u8 as *const _,
|
||||||
|
b"hello\x00" as *const u8 as *const _,
|
||||||
|
)
|
||||||
|
});
|
||||||
|
assert!(unsafe {
|
||||||
|
is_file_in_use(
|
||||||
|
&mut files,
|
||||||
|
b"-suffix\x00" as *const u8 as *const _,
|
||||||
|
b"world.txt-suffix\x00" as *const u8 as *const _,
|
||||||
|
)
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -1323,11 +1323,14 @@ pub unsafe fn dc_get_filebytes(
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
let filebytes = {
|
let p = std::ffi::CStr::from_ptr(pathNfilename_abs)
|
||||||
let p = std::ffi::CStr::from_ptr(pathNfilename_abs)
|
.to_str()
|
||||||
.to_str()
|
.unwrap();
|
||||||
.unwrap();
|
let filebytes = match fs::metadata(p) {
|
||||||
fs::metadata(p).unwrap().len()
|
Ok(meta) => meta.len(),
|
||||||
|
Err(_err) => {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
free(pathNfilename_abs as *mut libc::c_void);
|
free(pathNfilename_abs as *mut libc::c_void);
|
||||||
|
|||||||
Reference in New Issue
Block a user