From f2f7b6ffec7bf657966353c850d25c6ab218ff7c Mon Sep 17 00:00:00 2001 From: Vika Date: Tue, 22 Oct 2024 21:52:10 +0300 Subject: vendor libsecret The libsecret-rs crate is unmaintained, so I'm vendoring it for now. Bumping the glib version turned out to be enough. The exact process I used was: 1. Cloning the repository 2. Making changes 3. `cargo build` to ensure it works 4. `cargo package --no-verify` (b/c it tries to build all crates separately instead of the entire workspace as a whole) 5. `mkdir libsecret/sys -p` 6. `tar --strip-components 1 -C libsecret -xvf ../libsecret-rs/target/package/libsecret-0.6.0.crate` 7. `tar --strip-components 1 -C libsecret/sys -xvf ../libsecret-rs/target/package/libsecret-sys-0.6.0.crate` Then `Cargo.toml` is modified to ensure the libsecret and its `-sys` crate build out of my vendored sources. In the future, if I gain maintainership of the `libsecret` crate, I could just revert this commit to make it point back to the upstream. --- libsecret/src/enums.rs | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 libsecret/src/enums.rs (limited to 'libsecret/src/enums.rs') diff --git a/libsecret/src/enums.rs b/libsecret/src/enums.rs new file mode 100644 index 0000000..59de400 --- /dev/null +++ b/libsecret/src/enums.rs @@ -0,0 +1,25 @@ +use glib::error::ErrorDomain; +use glib::translate::*; + +use crate::Error; + +impl ErrorDomain for Error { + fn domain() -> glib::Quark { + unsafe { from_glib(ffi::secret_error_get_quark()) } + } + + fn code(self) -> i32 { + self.into_glib() + } + + fn from(code: i32) -> Option { + match code { + ffi::SECRET_ERROR_PROTOCOL => Some(Self::Protocol), + ffi::SECRET_ERROR_IS_LOCKED => Some(Self::IsLocked), + ffi::SECRET_ERROR_NO_SUCH_OBJECT => Some(Self::NoSuchObject), + ffi::SECRET_ERROR_ALREADY_EXISTS => Some(Self::AlreadyExists), + ffi::SECRET_ERROR_INVALID_FILE_FORMAT => Some(Self::InvalidFileFormat), + value => Some(Self::__Unknown(value)), + } + } +} -- cgit 1.4.1