diff --git a/libarchive/src/archive.rs b/libarchive/src/archive.rs index 3369a44..932013b 100644 --- a/libarchive/src/archive.rs +++ b/libarchive/src/archive.rs @@ -386,6 +386,7 @@ pub enum ExtractOption { ClearNoChangeFFlags, } +#[derive(Default)] pub struct ExtractOptions { pub flags: i32, } @@ -420,9 +421,3 @@ impl ExtractOptions { self } } - -impl Default for ExtractOptions { - fn default() -> ExtractOptions { - ExtractOptions { flags: 0 } - } -} diff --git a/libarchive/src/read/builder.rs b/libarchive/src/read/builder.rs index e827130..4af0401 100644 --- a/libarchive/src/read/builder.rs +++ b/libarchive/src/read/builder.rs @@ -78,7 +78,7 @@ impl Builder { ffi::archive_read_support_filter_program_signature( self.handle_mut(), c_prog.as_ptr(), - mem::transmute(cb), + mem::transmute::, *const std::ffi::c_void>(cb), size, ) } diff --git a/libarchive/src/write/file.rs b/libarchive/src/write/file.rs index fa39a13..ef4877d 100644 --- a/libarchive/src/write/file.rs +++ b/libarchive/src/write/file.rs @@ -41,7 +41,7 @@ impl FileWriter { unsafe { match ffi::archive_write_header(self.handle_mut(), entry.entry_mut()) { ffi::ARCHIVE_OK => Ok(()), - _ => Err(ArchiveError::from(self as &dyn Handle).into()), + _ => Err(ArchiveError::from(self as &dyn Handle)), } } } @@ -50,7 +50,7 @@ impl FileWriter { unsafe { match ffi::archive_write_header(self.handle_mut(), entry.entry_mut()) { ffi::ARCHIVE_OK => (), - _ => return Err(ArchiveError::from(self as &dyn Handle).into()), + _ => return Err(ArchiveError::from(self as &dyn Handle)), } } @@ -74,7 +74,7 @@ impl FileWriter { // Negative values signal errors if res < 0 { - return Err(ArchiveError::from(self as &dyn Handle).into()); + return Err(ArchiveError::from(self as &dyn Handle)); } written += usize::try_from(res).unwrap(); diff --git a/libarchive/src/write/mod.rs b/libarchive/src/write/mod.rs index 5f583e0..b64aadf 100644 --- a/libarchive/src/write/mod.rs +++ b/libarchive/src/write/mod.rs @@ -30,6 +30,12 @@ impl Entry for WriteEntry { } } +impl Default for WriteEntry { + fn default() -> Self { + Self::new() + } +} + impl Drop for WriteEntry { fn drop(&mut self) { unsafe { ffi::archive_entry_free(self.entry_mut()) } diff --git a/libarchive3-sys/README.md b/libarchive3-sys/README.md index bd605ef..a1467c0 100644 --- a/libarchive3-sys/README.md +++ b/libarchive3-sys/README.md @@ -4,3 +4,7 @@ DYLD_LIBRARY_PATH=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib xcode-select --install + +# 64-bit timestamps + +`time_t` has been replaced with `i64` as Musl no longer supports 32-bit `time_t` values. diff --git a/libarchive3-sys/build.rs b/libarchive3-sys/build.rs index b82eb31..afe10d9 100644 --- a/libarchive3-sys/build.rs +++ b/libarchive3-sys/build.rs @@ -1,3 +1,6 @@ fn main() { - pkg_config::Config::new().atleast_version("3").probe("libarchive").unwrap(); + pkg_config::Config::new() + .atleast_version("3") + .probe("libarchive") + .unwrap(); } diff --git a/libarchive3-sys/src/ffi.rs b/libarchive3-sys/src/ffi.rs index 92cd267..f5ad4cf 100644 --- a/libarchive3-sys/src/ffi.rs +++ b/libarchive3-sys/src/ffi.rs @@ -294,14 +294,10 @@ extern "C" { ) -> c_int; pub fn archive_read_extract_set_progress_callback( arg1: *mut Struct_archive, - _progress_func: ::std::option::Option ()>, + _progress_func: ::std::option::Option, _user_data: *mut c_void, - ) -> (); - pub fn archive_read_extract_set_skip_file( - arg1: *mut Struct_archive, - arg2: i64, - arg3: i64, - ) -> (); + ); + pub fn archive_read_extract_set_skip_file(arg1: *mut Struct_archive, arg2: i64, arg3: i64); pub fn archive_read_close(arg1: *mut Struct_archive) -> c_int; pub fn archive_read_free(arg1: *mut Struct_archive) -> c_int; pub fn archive_read_finish(arg1: *mut Struct_archive) -> c_int; @@ -443,7 +439,7 @@ extern "C" { arg3: ::std::option::Option< unsafe extern "C" fn(arg1: *mut c_void, arg2: *const c_char, arg3: i64) -> i64, >, - arg4: ::std::option::Option ()>, + arg4: ::std::option::Option, ) -> c_int; pub fn archive_write_disk_set_user_lookup( arg1: *mut Struct_archive, @@ -451,7 +447,7 @@ extern "C" { arg3: ::std::option::Option< unsafe extern "C" fn(arg1: *mut c_void, arg2: *const c_char, arg3: i64) -> i64, >, - arg4: ::std::option::Option ()>, + arg4: ::std::option::Option, ) -> c_int; pub fn archive_write_disk_gid(arg1: *mut Struct_archive, arg2: *const c_char, arg3: i64) -> i64; @@ -475,7 +471,7 @@ extern "C" { arg3: ::std::option::Option< unsafe extern "C" fn(arg1: *mut c_void, arg2: i64) -> *const c_char, >, - arg4: ::std::option::Option ()>, + arg4: ::std::option::Option, ) -> c_int; pub fn archive_read_disk_set_uname_lookup( arg1: *mut Struct_archive, @@ -483,7 +479,7 @@ extern "C" { arg3: ::std::option::Option< unsafe extern "C" fn(arg1: *mut c_void, arg2: i64) -> *const c_char, >, - arg4: ::std::option::Option ()>, + arg4: ::std::option::Option, ) -> c_int; pub fn archive_read_disk_open(arg1: *mut Struct_archive, arg2: *const c_char) -> c_int; pub fn archive_read_disk_open_w(arg1: *mut Struct_archive, arg2: *const wchar_t) -> c_int; @@ -502,7 +498,7 @@ extern "C" { arg1: *mut Struct_archive, arg2: *mut c_void, arg3: *mut Struct_archive_entry, - ) -> (), + ), >, _client_data: *mut c_void, ) -> c_int; @@ -529,10 +525,9 @@ extern "C" { pub fn archive_error_string(arg1: *mut Struct_archive) -> *const c_char; pub fn archive_format_name(arg1: *mut Struct_archive) -> *const c_char; pub fn archive_format(arg1: *mut Struct_archive) -> c_int; - pub fn archive_clear_error(arg1: *mut Struct_archive) -> (); - pub fn archive_set_error(arg1: *mut Struct_archive, _err: c_int, fmt: *const c_char, ...) - -> (); - pub fn archive_copy_error(dest: *mut Struct_archive, src: *mut Struct_archive) -> (); + pub fn archive_clear_error(arg1: *mut Struct_archive); + pub fn archive_set_error(arg1: *mut Struct_archive, _err: c_int, fmt: *const c_char, ...); + pub fn archive_copy_error(dest: *mut Struct_archive, src: *mut Struct_archive); pub fn archive_file_count(arg1: *mut Struct_archive) -> c_int; pub fn archive_match_new() -> *mut Struct_archive; pub fn archive_match_free(arg1: *mut Struct_archive) -> c_int; @@ -590,7 +585,7 @@ extern "C" { pub fn archive_match_include_time( arg1: *mut Struct_archive, _flag: c_int, - _sec: time_t, + _sec: i64, _nsec: c_long, ) -> c_int; pub fn archive_match_include_date( @@ -630,16 +625,16 @@ extern "C" { pub fn archive_match_include_gname_w(arg1: *mut Struct_archive, arg2: *const wchar_t) -> c_int; pub fn archive_entry_clear(arg1: *mut Struct_archive_entry) -> *mut Struct_archive_entry; pub fn archive_entry_clone(arg1: *mut Struct_archive_entry) -> *mut Struct_archive_entry; - pub fn archive_entry_free(arg1: *mut Struct_archive_entry) -> (); + pub fn archive_entry_free(arg1: *mut Struct_archive_entry); pub fn archive_entry_new() -> *mut Struct_archive_entry; pub fn archive_entry_new2(arg1: *mut Struct_archive) -> *mut Struct_archive_entry; - pub fn archive_entry_atime(arg1: *mut Struct_archive_entry) -> time_t; + pub fn archive_entry_atime(arg1: *mut Struct_archive_entry) -> i64; pub fn archive_entry_atime_nsec(arg1: *mut Struct_archive_entry) -> c_long; pub fn archive_entry_atime_is_set(arg1: *mut Struct_archive_entry) -> c_int; - pub fn archive_entry_birthtime(arg1: *mut Struct_archive_entry) -> time_t; + pub fn archive_entry_birthtime(arg1: *mut Struct_archive_entry) -> i64; pub fn archive_entry_birthtime_nsec(arg1: *mut Struct_archive_entry) -> c_long; pub fn archive_entry_birthtime_is_set(arg1: *mut Struct_archive_entry) -> c_int; - pub fn archive_entry_ctime(arg1: *mut Struct_archive_entry) -> time_t; + pub fn archive_entry_ctime(arg1: *mut Struct_archive_entry) -> i64; pub fn archive_entry_ctime_nsec(arg1: *mut Struct_archive_entry) -> c_long; pub fn archive_entry_ctime_is_set(arg1: *mut Struct_archive_entry) -> c_int; pub fn archive_entry_dev(arg1: *mut Struct_archive_entry) -> dev_t; @@ -651,7 +646,7 @@ extern "C" { arg1: *mut Struct_archive_entry, arg2: *mut c_ulong, arg3: *mut c_ulong, - ) -> (); + ); pub fn archive_entry_fflags_text(arg1: *mut Struct_archive_entry) -> *const c_char; pub fn archive_entry_gid(arg1: *mut Struct_archive_entry) -> i64; pub fn archive_entry_gname(arg1: *mut Struct_archive_entry) -> *const c_char; @@ -662,7 +657,7 @@ extern "C" { pub fn archive_entry_ino64(arg1: *mut Struct_archive_entry) -> i64; pub fn archive_entry_ino_is_set(arg1: *mut Struct_archive_entry) -> c_int; pub fn archive_entry_mode(arg1: *mut Struct_archive_entry) -> mode_t; - pub fn archive_entry_mtime(arg1: *mut Struct_archive_entry) -> time_t; + pub fn archive_entry_mtime(arg1: *mut Struct_archive_entry) -> i64; pub fn archive_entry_mtime_nsec(arg1: *mut Struct_archive_entry) -> c_long; pub fn archive_entry_mtime_is_set(arg1: *mut Struct_archive_entry) -> c_int; pub fn archive_entry_nlink(arg1: *mut Struct_archive_entry) -> c_uint; @@ -682,33 +677,17 @@ extern "C" { pub fn archive_entry_uid(arg1: *mut Struct_archive_entry) -> i64; pub fn archive_entry_uname(arg1: *mut Struct_archive_entry) -> *const c_char; pub fn archive_entry_uname_w(arg1: *mut Struct_archive_entry) -> *const wchar_t; - pub fn archive_entry_set_atime( - arg1: *mut Struct_archive_entry, - arg2: time_t, - arg3: c_long, - ) -> (); - pub fn archive_entry_unset_atime(arg1: *mut Struct_archive_entry) -> (); - pub fn archive_entry_set_birthtime( - arg1: *mut Struct_archive_entry, - arg2: time_t, - arg3: c_long, - ) -> (); - pub fn archive_entry_unset_birthtime(arg1: *mut Struct_archive_entry) -> (); - pub fn archive_entry_set_ctime( - arg1: *mut Struct_archive_entry, - arg2: time_t, - arg3: c_long, - ) -> (); - pub fn archive_entry_unset_ctime(arg1: *mut Struct_archive_entry) -> (); - pub fn archive_entry_set_dev(arg1: *mut Struct_archive_entry, arg2: dev_t) -> (); - pub fn archive_entry_set_devmajor(arg1: *mut Struct_archive_entry, arg2: dev_t) -> (); - pub fn archive_entry_set_devminor(arg1: *mut Struct_archive_entry, arg2: dev_t) -> (); - pub fn archive_entry_set_filetype(arg1: *mut Struct_archive_entry, arg2: c_uint) -> (); - pub fn archive_entry_set_fflags( - arg1: *mut Struct_archive_entry, - arg2: c_ulong, - arg3: c_ulong, - ) -> (); + pub fn archive_entry_set_atime(arg1: *mut Struct_archive_entry, arg2: i64, arg3: c_long); + pub fn archive_entry_unset_atime(arg1: *mut Struct_archive_entry); + pub fn archive_entry_set_birthtime(arg1: *mut Struct_archive_entry, arg2: i64, arg3: c_long); + pub fn archive_entry_unset_birthtime(arg1: *mut Struct_archive_entry); + pub fn archive_entry_set_ctime(arg1: *mut Struct_archive_entry, arg2: i64, arg3: c_long); + pub fn archive_entry_unset_ctime(arg1: *mut Struct_archive_entry); + pub fn archive_entry_set_dev(arg1: *mut Struct_archive_entry, arg2: dev_t); + pub fn archive_entry_set_devmajor(arg1: *mut Struct_archive_entry, arg2: dev_t); + pub fn archive_entry_set_devminor(arg1: *mut Struct_archive_entry, arg2: dev_t); + pub fn archive_entry_set_filetype(arg1: *mut Struct_archive_entry, arg2: c_uint); + pub fn archive_entry_set_fflags(arg1: *mut Struct_archive_entry, arg2: c_ulong, arg3: c_ulong); pub fn archive_entry_copy_fflags_text( arg1: *mut Struct_archive_entry, arg2: *const c_char, @@ -717,79 +696,60 @@ extern "C" { arg1: *mut Struct_archive_entry, arg2: *const wchar_t, ) -> *const wchar_t; - pub fn archive_entry_set_gid(arg1: *mut Struct_archive_entry, arg2: i64) -> (); - pub fn archive_entry_set_gname(arg1: *mut Struct_archive_entry, arg2: *const c_char) -> (); - pub fn archive_entry_copy_gname(arg1: *mut Struct_archive_entry, arg2: *const c_char) -> (); - pub fn archive_entry_copy_gname_w(arg1: *mut Struct_archive_entry, arg2: *const wchar_t) -> (); + pub fn archive_entry_set_gid(arg1: *mut Struct_archive_entry, arg2: i64); + pub fn archive_entry_set_gname(arg1: *mut Struct_archive_entry, arg2: *const c_char); + pub fn archive_entry_copy_gname(arg1: *mut Struct_archive_entry, arg2: *const c_char); + pub fn archive_entry_copy_gname_w(arg1: *mut Struct_archive_entry, arg2: *const wchar_t); pub fn archive_entry_update_gname_utf8( arg1: *mut Struct_archive_entry, arg2: *const c_char, ) -> c_int; - pub fn archive_entry_set_hardlink(arg1: *mut Struct_archive_entry, arg2: *const c_char) -> (); - pub fn archive_entry_copy_hardlink(arg1: *mut Struct_archive_entry, arg2: *const c_char) -> (); - pub fn archive_entry_copy_hardlink_w( - arg1: *mut Struct_archive_entry, - arg2: *const wchar_t, - ) -> (); + pub fn archive_entry_set_hardlink(arg1: *mut Struct_archive_entry, arg2: *const c_char); + pub fn archive_entry_copy_hardlink(arg1: *mut Struct_archive_entry, arg2: *const c_char); + pub fn archive_entry_copy_hardlink_w(arg1: *mut Struct_archive_entry, arg2: *const wchar_t); pub fn archive_entry_update_hardlink_utf8( arg1: *mut Struct_archive_entry, arg2: *const c_char, ) -> c_int; - pub fn archive_entry_set_ino(arg1: *mut Struct_archive_entry, arg2: i64) -> (); - pub fn archive_entry_set_ino64(arg1: *mut Struct_archive_entry, arg2: i64) -> (); - pub fn archive_entry_set_link(arg1: *mut Struct_archive_entry, arg2: *const c_char) -> (); - pub fn archive_entry_copy_link(arg1: *mut Struct_archive_entry, arg2: *const c_char) -> (); - pub fn archive_entry_copy_link_w(arg1: *mut Struct_archive_entry, arg2: *const wchar_t) -> (); + pub fn archive_entry_set_ino(arg1: *mut Struct_archive_entry, arg2: i64); + pub fn archive_entry_set_ino64(arg1: *mut Struct_archive_entry, arg2: i64); + pub fn archive_entry_set_link(arg1: *mut Struct_archive_entry, arg2: *const c_char); + pub fn archive_entry_copy_link(arg1: *mut Struct_archive_entry, arg2: *const c_char); + pub fn archive_entry_copy_link_w(arg1: *mut Struct_archive_entry, arg2: *const wchar_t); pub fn archive_entry_update_link_utf8( arg1: *mut Struct_archive_entry, arg2: *const c_char, ) -> c_int; - pub fn archive_entry_set_mode(arg1: *mut Struct_archive_entry, arg2: mode_t) -> (); - pub fn archive_entry_set_mtime( - arg1: *mut Struct_archive_entry, - arg2: time_t, - arg3: c_long, - ) -> (); - pub fn archive_entry_unset_mtime(arg1: *mut Struct_archive_entry) -> (); - pub fn archive_entry_set_nlink(arg1: *mut Struct_archive_entry, arg2: c_uint) -> (); - pub fn archive_entry_set_pathname(arg1: *mut Struct_archive_entry, arg2: *const c_char) -> (); - pub fn archive_entry_copy_pathname(arg1: *mut Struct_archive_entry, arg2: *const c_char) -> (); - pub fn archive_entry_copy_pathname_w( - arg1: *mut Struct_archive_entry, - arg2: *const wchar_t, - ) -> (); + pub fn archive_entry_set_mode(arg1: *mut Struct_archive_entry, arg2: mode_t); + pub fn archive_entry_set_mtime(arg1: *mut Struct_archive_entry, arg2: i64, arg3: c_long); + pub fn archive_entry_unset_mtime(arg1: *mut Struct_archive_entry); + pub fn archive_entry_set_nlink(arg1: *mut Struct_archive_entry, arg2: c_uint); + pub fn archive_entry_set_pathname(arg1: *mut Struct_archive_entry, arg2: *const c_char); + pub fn archive_entry_copy_pathname(arg1: *mut Struct_archive_entry, arg2: *const c_char); + pub fn archive_entry_copy_pathname_w(arg1: *mut Struct_archive_entry, arg2: *const wchar_t); pub fn archive_entry_update_pathname_utf8( arg1: *mut Struct_archive_entry, arg2: *const c_char, ) -> c_int; - pub fn archive_entry_set_perm(arg1: *mut Struct_archive_entry, arg2: mode_t) -> (); - pub fn archive_entry_set_rdev(arg1: *mut Struct_archive_entry, arg2: dev_t) -> (); - pub fn archive_entry_set_rdevmajor(arg1: *mut Struct_archive_entry, arg2: dev_t) -> (); - pub fn archive_entry_set_rdevminor(arg1: *mut Struct_archive_entry, arg2: dev_t) -> (); - pub fn archive_entry_set_size(arg1: *mut Struct_archive_entry, arg2: i64) -> (); - pub fn archive_entry_unset_size(arg1: *mut Struct_archive_entry) -> (); - pub fn archive_entry_copy_sourcepath( - arg1: *mut Struct_archive_entry, - arg2: *const c_char, - ) -> (); - pub fn archive_entry_copy_sourcepath_w( - arg1: *mut Struct_archive_entry, - arg2: *const wchar_t, - ) -> (); - pub fn archive_entry_set_symlink(arg1: *mut Struct_archive_entry, arg2: *const c_char) -> (); - pub fn archive_entry_copy_symlink(arg1: *mut Struct_archive_entry, arg2: *const c_char) -> (); - pub fn archive_entry_copy_symlink_w( - arg1: *mut Struct_archive_entry, - arg2: *const wchar_t, - ) -> (); + pub fn archive_entry_set_perm(arg1: *mut Struct_archive_entry, arg2: mode_t); + pub fn archive_entry_set_rdev(arg1: *mut Struct_archive_entry, arg2: dev_t); + pub fn archive_entry_set_rdevmajor(arg1: *mut Struct_archive_entry, arg2: dev_t); + pub fn archive_entry_set_rdevminor(arg1: *mut Struct_archive_entry, arg2: dev_t); + pub fn archive_entry_set_size(arg1: *mut Struct_archive_entry, arg2: i64); + pub fn archive_entry_unset_size(arg1: *mut Struct_archive_entry); + pub fn archive_entry_copy_sourcepath(arg1: *mut Struct_archive_entry, arg2: *const c_char); + pub fn archive_entry_copy_sourcepath_w(arg1: *mut Struct_archive_entry, arg2: *const wchar_t); + pub fn archive_entry_set_symlink(arg1: *mut Struct_archive_entry, arg2: *const c_char); + pub fn archive_entry_copy_symlink(arg1: *mut Struct_archive_entry, arg2: *const c_char); + pub fn archive_entry_copy_symlink_w(arg1: *mut Struct_archive_entry, arg2: *const wchar_t); pub fn archive_entry_update_symlink_utf8( arg1: *mut Struct_archive_entry, arg2: *const c_char, ) -> c_int; - pub fn archive_entry_set_uid(arg1: *mut Struct_archive_entry, arg2: i64) -> (); - pub fn archive_entry_set_uname(arg1: *mut Struct_archive_entry, arg2: *const c_char) -> (); - pub fn archive_entry_copy_uname(arg1: *mut Struct_archive_entry, arg2: *const c_char) -> (); - pub fn archive_entry_copy_uname_w(arg1: *mut Struct_archive_entry, arg2: *const wchar_t) -> (); + pub fn archive_entry_set_uid(arg1: *mut Struct_archive_entry, arg2: i64); + pub fn archive_entry_set_uname(arg1: *mut Struct_archive_entry, arg2: *const c_char); + pub fn archive_entry_copy_uname(arg1: *mut Struct_archive_entry, arg2: *const c_char); + pub fn archive_entry_copy_uname_w(arg1: *mut Struct_archive_entry, arg2: *const wchar_t); pub fn archive_entry_update_uname_utf8( arg1: *mut Struct_archive_entry, arg2: *const c_char, @@ -797,7 +757,7 @@ extern "C" { // pub fn archive_entry_stat(arg1: *mut Struct_archive_entry) -> *const Struct_stat; // pub fn archive_entry_copy_stat(arg1: *mut Struct_archive_entry, // arg2: *const Struct_stat) - // -> (); + // ; pub fn archive_entry_mac_metadata( arg1: *mut Struct_archive_entry, arg2: *mut size_t, @@ -806,8 +766,8 @@ extern "C" { arg1: *mut Struct_archive_entry, arg2: *const c_void, arg3: size_t, - ) -> (); - pub fn archive_entry_acl_clear(arg1: *mut Struct_archive_entry) -> (); + ); + pub fn archive_entry_acl_clear(arg1: *mut Struct_archive_entry); pub fn archive_entry_acl_add_entry( arg1: *mut Struct_archive_entry, arg2: c_int, @@ -848,13 +808,13 @@ extern "C" { pub fn archive_entry_acl_text(arg1: *mut Struct_archive_entry, arg2: c_int) -> *const c_char; pub fn archive_entry_acl_count(arg1: *mut Struct_archive_entry, arg2: c_int) -> c_int; pub fn archive_entry_acl(arg1: *mut Struct_archive_entry) -> *mut Struct_archive_acl; - pub fn archive_entry_xattr_clear(arg1: *mut Struct_archive_entry) -> (); + pub fn archive_entry_xattr_clear(arg1: *mut Struct_archive_entry); pub fn archive_entry_xattr_add_entry( arg1: *mut Struct_archive_entry, arg2: *const c_char, arg3: *const c_void, arg4: size_t, - ) -> (); + ); pub fn archive_entry_xattr_count(arg1: *mut Struct_archive_entry) -> c_int; pub fn archive_entry_xattr_reset(arg1: *mut Struct_archive_entry) -> c_int; pub fn archive_entry_xattr_next( @@ -863,12 +823,8 @@ extern "C" { arg3: *mut *const c_void, arg4: *mut size_t, ) -> c_int; - pub fn archive_entry_sparse_clear(arg1: *mut Struct_archive_entry) -> (); - pub fn archive_entry_sparse_add_entry( - arg1: *mut Struct_archive_entry, - arg2: i64, - arg3: i64, - ) -> (); + pub fn archive_entry_sparse_clear(arg1: *mut Struct_archive_entry); + pub fn archive_entry_sparse_add_entry(arg1: *mut Struct_archive_entry, arg2: i64, arg3: i64); pub fn archive_entry_sparse_count(arg1: *mut Struct_archive_entry) -> c_int; pub fn archive_entry_sparse_reset(arg1: *mut Struct_archive_entry) -> c_int; pub fn archive_entry_sparse_next( @@ -880,13 +836,13 @@ extern "C" { pub fn archive_entry_linkresolver_set_strategy( arg1: *mut Struct_archive_entry_linkresolver, arg2: c_int, - ) -> (); - pub fn archive_entry_linkresolver_free(arg1: *mut Struct_archive_entry_linkresolver) -> (); + ); + pub fn archive_entry_linkresolver_free(arg1: *mut Struct_archive_entry_linkresolver); pub fn archive_entry_linkify( arg1: *mut Struct_archive_entry_linkresolver, arg2: *mut *mut Struct_archive_entry, arg3: *mut *mut Struct_archive_entry, - ) -> (); + ); pub fn archive_entry_partial_links( res: *mut Struct_archive_entry_linkresolver, links: *mut c_uint, diff --git a/server/src/db/mod.rs b/server/src/db/mod.rs index a1b7476..2b03fb1 100644 --- a/server/src/db/mod.rs +++ b/server/src/db/mod.rs @@ -88,7 +88,7 @@ pub async fn connect(conn: &DbConfig) -> crate::Result { } => { let mut url = format!("postgres://{}:{}@{}:{}/{}", user, password, host, port, db); - if schema != "" { + if !schema.is_empty() { url = format!("{url}?currentSchema={schema}"); } diff --git a/server/src/main.rs b/server/src/main.rs index c641666..7118da5 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -16,8 +16,8 @@ use sea_orm_migration::MigratorTrait; use tokio::runtime; use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt}; -pub const ANY_ARCH: &'static str = "any"; -pub const PKG_FILENAME_REGEX: &'static str = "^([a-z0-9@._+-]+)-((?:[0-9]+:)?[a-zA-Z0-9@._+]+-[0-9]+)-([a-zA-z0-9_]+).pkg.tar.([a-zA-Z0-9]+)$"; +pub const ANY_ARCH: &str = "any"; +pub const PKG_FILENAME_REGEX: &str = "^([a-z0-9@._+-]+)-((?:[0-9]+:)?[a-zA-Z0-9@._+]+-[0-9]+)-([a-zA-z0-9_]+).pkg.tar.([a-zA-Z0-9]+)$"; #[derive(Clone)] pub struct Global { diff --git a/server/src/repo/archive.rs b/server/src/repo/archive.rs index 2844b90..18e0801 100644 --- a/server/src/repo/archive.rs +++ b/server/src/repo/archive.rs @@ -216,8 +216,8 @@ impl RepoArchivesWriter { self.ar_db.close()?; self.ar_files.close()?; - let _ = std::fs::remove_file(&self.tmp_paths[0])?; - let _ = std::fs::remove_file(&self.tmp_paths[1])?; + let _ = std::fs::remove_file(&self.tmp_paths[0]); + let _ = std::fs::remove_file(&self.tmp_paths[1]); Ok(()) } diff --git a/server/src/repo/mod.rs b/server/src/repo/mod.rs index 9920326..25325c6 100644 --- a/server/src/repo/mod.rs +++ b/server/src/repo/mod.rs @@ -29,12 +29,14 @@ pub enum Command { Clean, } +type RepoState = (AtomicU32, Arc>); + pub struct SharedState { pub repos_dir: PathBuf, pub conn: DbConn, pub rx: Mutex>, pub tx: UnboundedSender, - pub repos: RwLock>)>>, + pub repos: RwLock>, } impl SharedState { diff --git a/server/src/repo/package.rs b/server/src/repo/package.rs index e8bb076..103a521 100644 --- a/server/src/repo/package.rs +++ b/server/src/repo/package.rs @@ -48,18 +48,18 @@ pub struct PkgInfo { } #[derive(Debug, PartialEq, Eq)] -pub enum ParsePkgInfoError { - InvalidSize, - InvalidBuildDate, - InvalidPgpSigSize, +pub enum InvalidPkgInfoError { + Size, + BuildDate, + PgpSigSize, } -impl fmt::Display for ParsePkgInfoError { +impl fmt::Display for InvalidPkgInfoError { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { let s = match self { - Self::InvalidSize => "invalid size", - Self::InvalidBuildDate => "invalid build date", - Self::InvalidPgpSigSize => "invalid pgp sig size", + Self::Size => "invalid size", + Self::BuildDate => "invalid build date", + Self::PgpSigSize => "invalid pgp sig size", }; write!(f, "{}", s) @@ -67,7 +67,7 @@ impl fmt::Display for ParsePkgInfoError { } impl PkgInfo { - pub fn extend>(&mut self, line: S) -> Result<(), ParsePkgInfoError> { + pub fn extend>(&mut self, line: S) -> Result<(), InvalidPkgInfoError> { let line = line.as_ref(); if !line.starts_with('#') { @@ -77,26 +77,21 @@ impl PkgInfo { "pkgbase" => self.base = value.to_string(), "pkgver" => self.version = value.to_string(), "pkgdesc" => self.description = Some(value.to_string()), - "size" => { - self.size = value.parse().map_err(|_| ParsePkgInfoError::InvalidSize)? - } + "size" => self.size = value.parse().map_err(|_| InvalidPkgInfoError::Size)?, "url" => self.url = Some(value.to_string()), "arch" => self.arch = value.to_string(), "builddate" => { - let seconds: i64 = value - .parse() - .map_err(|_| ParsePkgInfoError::InvalidBuildDate)?; - self.build_date = NaiveDateTime::from_timestamp_millis(seconds * 1000) - .ok_or(ParsePkgInfoError::InvalidBuildDate)? + let seconds: i64 = + value.parse().map_err(|_| InvalidPkgInfoError::BuildDate)?; + self.build_date = chrono::DateTime::from_timestamp_millis(seconds * 1000) + .ok_or(InvalidPkgInfoError::BuildDate)? + .naive_utc(); } "packager" => self.packager = Some(value.to_string()), "pgpsig" => self.pgpsig = Some(value.to_string()), "pgpsigsize" => { - self.pgpsigsize = Some( - value - .parse() - .map_err(|_| ParsePkgInfoError::InvalidPgpSigSize)?, - ) + self.pgpsigsize = + Some(value.parse().map_err(|_| InvalidPkgInfoError::PgpSigSize)?) } "group" => self.groups.push(value.to_string()), "license" => self.licenses.push(value.to_string()), diff --git a/server/src/web/repo.rs b/server/src/web/repo.rs index c3bfe6b..e1bc61a 100644 --- a/server/src/web/repo.rs +++ b/server/src/web/repo.rs @@ -131,8 +131,8 @@ async fn delete_arch_repo( } async fn delete_package( - State(global): State, - Path((distro, repo, arch, pkg_name)): Path<(String, String, String, String)>, + State(_global): State, + Path((_distro, _repo, _arch, _pkg_name)): Path<(String, String, String, String)>, ) -> crate::Result { Ok(StatusCode::NOT_FOUND) //if let Some(mgr) = global.mgr.get_mgr(&distro).await {