diff --git a/src/dc_sqlite3.rs b/src/dc_sqlite3.rs index 26208ec3f..240403cc6 100644 --- a/src/dc_sqlite3.rs +++ b/src/dc_sqlite3.rs @@ -1299,23 +1299,19 @@ pub unsafe fn dc_sqlite3_set_config_int64( ret } -pub unsafe fn dc_sqlite3_get_config_int64( +pub fn dc_sqlite3_get_config_int64( context: &Context, sql: &dc_sqlite3_t, key: *const libc::c_char, - def: int64_t, -) -> int64_t { - let str = dc_sqlite3_get_config(context, sql, key, 0 as *const libc::c_char); - if str.is_null() { + def: i64, +) -> i64 { + let s = unsafe { dc_sqlite3_get_config(context, sql, key, 0 as *const libc::c_char) }; + if s.is_null() { return def; } - let mut ret = 0 as int64_t; - sscanf( - str, - b"%lld\x00" as *const u8 as *const libc::c_char, - &mut ret as *mut int64_t, - ); - free(str as *mut libc::c_void); + + let ret: i64 = to_str(s).parse().unwrap_or_default(); + unsafe { free(s as *mut libc::c_void) }; ret } diff --git a/src/oauth2.rs b/src/oauth2.rs index f4bbd7e95..0a1c2bb1b 100644 --- a/src/oauth2.rs +++ b/src/oauth2.rs @@ -334,14 +334,12 @@ fn set_config_int64(context: &Context, key: &str, value: i64) { } fn is_expired(context: &Context) -> bool { - let expire_timestamp = unsafe { - dc_sqlite3_get_config_int64( - context, - &context.sql.clone().read().unwrap(), - b"oauth2_timestamp_expires\x00" as *const u8 as *const libc::c_char, - 0i32 as int64_t, - ) - } as i64; + let expire_timestamp = dc_sqlite3_get_config_int64( + context, + &context.sql.clone().read().unwrap(), + b"oauth2_timestamp_expires\x00" as *const u8 as *const libc::c_char, + 0i32 as int64_t, + ); if expire_timestamp <= 0 { return false; diff --git a/src/x.rs b/src/x.rs index 5e1000da5..ebaa91913 100644 --- a/src/x.rs +++ b/src/x.rs @@ -4,8 +4,8 @@ use crate::types::*; pub use libc::{ atoi, calloc, close, closedir, exit, fclose, fgets, fopen, fread, free, fseek, ftell, fwrite, malloc, memcmp, memcpy, memmove, memset, mkdir, open, opendir, printf, read, readdir, realloc, - remove, sprintf, sscanf, strcat, strchr, strcmp, strcpy, strcspn, strlen, strncmp, strncpy, - strrchr, strspn, strstr, strtol, system, tolower, write, + remove, sprintf, strcat, strchr, strcmp, strcpy, strcspn, strlen, strncmp, strncpy, strrchr, + strspn, strstr, strtol, system, tolower, write, }; pub unsafe fn strdup(s: *const libc::c_char) -> *mut libc::c_char {