diff options
author | Justus Winter <justus@sequoia-pgp.org> | 2019-05-07 16:35:20 +0200 |
---|---|---|
committer | Justus Winter <justus@sequoia-pgp.org> | 2019-05-07 18:24:24 +0200 |
commit | c0308304ad20cd702231572eba3dedb293bdc103 (patch) | |
tree | 0b1344e7adf4004c61008b3fe485b42b765db3c6 | |
parent | 83a109af5039cb764aa9b7ffddc14bafd3d42dca (diff) |
openpgp-ffi, ffi: Fix calling convention on Windows.
- Use `extern "C"` instead of `extern "system"`. The latter selects
stdcall, which is only appropriate for talking to the Windows API.
-rw-r--r-- | ffi-macros/src/lib.rs | 22 | ||||
-rw-r--r-- | ffi/src/core.rs | 77 | ||||
-rw-r--r-- | ffi/src/net.rs | 44 | ||||
-rw-r--r-- | ffi/src/store.rs | 253 | ||||
-rw-r--r-- | ffi/tests/c-tests.rs | 2 | ||||
-rw-r--r-- | openpgp-ffi/src/armor.rs | 12 | ||||
-rw-r--r-- | openpgp-ffi/src/crypto.rs | 14 | ||||
-rw-r--r-- | openpgp-ffi/src/error.rs | 4 | ||||
-rw-r--r-- | openpgp-ffi/src/fingerprint.rs | 10 | ||||
-rw-r--r-- | openpgp-ffi/src/io.rs | 22 | ||||
-rw-r--r-- | openpgp-ffi/src/keyid.rs | 6 | ||||
-rw-r--r-- | openpgp-ffi/src/packet/key.rs | 12 | ||||
-rw-r--r-- | openpgp-ffi/src/packet/mod.rs | 8 | ||||
-rw-r--r-- | openpgp-ffi/src/packet/pkesk.rs | 4 | ||||
-rw-r--r-- | openpgp-ffi/src/packet/signature.rs | 36 | ||||
-rw-r--r-- | openpgp-ffi/src/packet/skesk.rs | 2 | ||||
-rw-r--r-- | openpgp-ffi/src/packet/user_attribute.rs | 2 | ||||
-rw-r--r-- | openpgp-ffi/src/packet/userid.rs | 10 | ||||
-rw-r--r-- | openpgp-ffi/src/parse/mod.rs | 34 | ||||
-rw-r--r-- | openpgp-ffi/src/parse/stream.rs | 22 | ||||
-rw-r--r-- | openpgp-ffi/src/serialize.rs | 20 | ||||
-rw-r--r-- | openpgp-ffi/src/tpk.rs | 86 | ||||
-rw-r--r-- | openpgp-ffi/tests/c-tests.rs | 2 |
23 files changed, 342 insertions, 362 deletions
diff --git a/ffi-macros/src/lib.rs b/ffi-macros/src/lib.rs index 685c448e..bd2997a4 100644 --- a/ffi-macros/src/lib.rs +++ b/ffi-macros/src/lib.rs @@ -46,7 +46,7 @@ pub fn extern_fn(attr: TokenStream, item: TokenStream) -> TokenStream { /// ```rust,ignore /// #[ffi_catch_abort] /// #[no_mangle] -/// pub extern "system" fn sahnetorte() { +/// pub extern "C" fn sahnetorte() { /// assert_eq!(2 * 3, 4); // See what happens... /// } /// ``` @@ -632,7 +632,7 @@ fn derive_free(span: proc_macro2::Span, prefix: &str, name: &str, span); quote! { /// Frees this object. - #[::sequoia_ffi_macros::extern_fn] #[no_mangle] pub extern "system" + #[::sequoia_ffi_macros::extern_fn] #[no_mangle] pub extern "C" fn #ident #generics (this: *mut #wrapper #generics) { if this.is_null() { return; @@ -667,7 +667,7 @@ fn derive_clone(span: proc_macro2::Span, prefix: &str, name: &str, span); quote! { /// Clones this object. - #[::sequoia_ffi_macros::extern_fn] #[no_mangle] pub extern "system" + #[::sequoia_ffi_macros::extern_fn] #[no_mangle] pub extern "C" fn #ident #generics (this: *const #wrapper #generics) -> *mut #wrapper #generics { use ::RefRaw; @@ -688,7 +688,7 @@ fn derive_equal(span: proc_macro2::Span, prefix: &str, name: &str, span); quote! { /// Compares objects. - #[::sequoia_ffi_macros::extern_fn] #[no_mangle] pub extern "system" + #[::sequoia_ffi_macros::extern_fn] #[no_mangle] pub extern "C" fn #ident #generics (a: *const #wrapper #generics, b: *const #wrapper #generics) -> bool { @@ -711,7 +711,7 @@ fn derive_to_string(span: proc_macro2::Span, prefix: &str, name: &str, quote! { /// Returns a human readable description of this object /// intended for communication with end users. - #[::sequoia_ffi_macros::extern_fn] #[no_mangle] pub extern "system" + #[::sequoia_ffi_macros::extern_fn] #[no_mangle] pub extern "C" fn #ident #generics (this: *const #wrapper #generics) -> *mut ::libc::c_char { use ::RefRaw; @@ -732,7 +732,7 @@ fn derive_debug(span: proc_macro2::Span, prefix: &str, name: &str, quote! { /// Returns a human readable description of this object /// suitable for debugging. - #[::sequoia_ffi_macros::extern_fn] #[no_mangle] pub extern "system" + #[::sequoia_ffi_macros::extern_fn] #[no_mangle] pub extern "C" fn #ident #generics (this: *const #wrapper #generics) -> *mut ::libc::c_char { use ::RefRaw; @@ -752,7 +752,7 @@ fn derive_hash(span: proc_macro2::Span, prefix: &str, name: &str, span); quote! { /// Hashes this object. - #[::sequoia_ffi_macros::extern_fn] #[no_mangle] pub extern "system" + #[::sequoia_ffi_macros::extern_fn] #[no_mangle] pub extern "C" fn #ident #generics (this: *const #wrapper #generics) -> ::libc::uint64_t { use ::std::hash::{Hash, Hasher}; @@ -783,7 +783,7 @@ fn derive_parse(span: proc_macro2::Span, prefix: &str, name: &str, span); quote! { /// Parses an object from the given reader. - #[::sequoia_ffi_macros::extern_fn] #[no_mangle] pub extern "system" + #[::sequoia_ffi_macros::extern_fn] #[no_mangle] pub extern "C" fn #from_reader #generics(errp: Option<&mut *mut ::error::Error>, reader: *mut ::io::Reader) -> ::Maybe<#wrapper #generics> { @@ -794,7 +794,7 @@ fn derive_parse(span: proc_macro2::Span, prefix: &str, name: &str, } /// Parses an object from the given file. - #[::sequoia_ffi_macros::extern_fn] #[no_mangle] pub extern "system" + #[::sequoia_ffi_macros::extern_fn] #[no_mangle] pub extern "C" fn #from_file #generics(errp: Option<&mut *mut ::error::Error>, filename: *const ::libc::c_char) -> ::Maybe<#wrapper #generics> { @@ -806,7 +806,7 @@ fn derive_parse(span: proc_macro2::Span, prefix: &str, name: &str, } /// Parses an object from the given buffer. - #[::sequoia_ffi_macros::extern_fn] #[no_mangle] pub extern "system" + #[::sequoia_ffi_macros::extern_fn] #[no_mangle] pub extern "C" fn #from_bytes #generics(errp: Option<&mut *mut ::error::Error>, b: *const ::libc::uint8_t, len: ::libc::size_t) -> ::Maybe<#wrapper #generics> { @@ -833,7 +833,7 @@ fn derive_serialize(span: proc_macro2::Span, prefix: &str, name: &str, span); quote! { /// Serializes this object. - #[::sequoia_ffi_macros::extern_fn] #[no_mangle] pub extern "system" + #[::sequoia_ffi_macros::extern_fn] #[no_mangle] pub extern "C" fn #ident #generics (errp: Option<&mut *mut ::error::Error>, this: *const #wrapper #generics, writer: *mut ::io::Writer) diff --git a/ffi/src/core.rs b/ffi/src/core.rs index 8ad3a655..5b139fb4 100644 --- a/ffi/src/core.rs +++ b/ffi/src/core.rs @@ -64,9 +64,8 @@ impl Context { /// Returns the last error. /// /// Returns and removes the last error from the context. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_context_last_error(ctx: *mut Context) - -> *mut ::error::Error { +#[::ffi_catch_abort] #[no_mangle] pub extern "C" +fn sq_context_last_error(ctx: *mut Context) -> *mut ::error::Error { let ctx = ffi_param_ref_mut!(ctx); ::std::mem::replace(&mut ctx.e, ptr::null_mut()) } @@ -79,10 +78,10 @@ pub extern "system" fn sq_context_last_error(ctx: *mut Context) /// /// Returns `NULL` on errors. If `errp` is not `NULL`, the error is /// stored there. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_context_new(domain: *const c_char, - errp: Option<&mut *mut ::error::Error>) - -> *mut Context { +#[::ffi_catch_abort] #[no_mangle] pub extern "C" +fn sq_context_new(domain: *const c_char, + errp: Option<&mut *mut ::error::Error>) + -> *mut Context { ffi_make_fry_from_errp!(errp); let domain = ffi_param_cstr!(domain).to_string_lossy(); @@ -90,8 +89,8 @@ pub extern "system" fn sq_context_new(domain: *const c_char, } /// Frees a context. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_context_free(context: Option<&mut Context>) { +#[::ffi_catch_abort] #[no_mangle] pub extern "C" +fn sq_context_free(context: Option<&mut Context>) { ffi_free!(context) } @@ -104,52 +103,51 @@ pub extern "system" fn sq_context_free(context: Option<&mut Context>) { /// The configuration is seeded like in `sq_context_new`, but can be /// modified. A configuration has to be finalized using /// `sq_config_build()` in order to turn it into a Context. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_context_configure(domain: *const c_char) - -> *mut Config { +#[::ffi_catch_abort] #[no_mangle] pub extern "C" +fn sq_context_configure(domain: *const c_char) -> *mut Config { let domain = ffi_param_cstr!(domain).to_string_lossy(); Box::into_raw(Box::new(core::Context::configure(&domain))) } /// Returns the domain of the context. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_context_domain(ctx: *const Context) -> *const c_char { +#[::ffi_catch_abort] #[no_mangle] pub extern "C" +fn sq_context_domain(ctx: *const Context) -> *const c_char { let ctx = ffi_param_ref!(ctx); ctx.c.domain().as_bytes().as_ptr() as *const c_char } /// Returns the directory containing shared state. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_context_home(ctx: *const Context) -> *const c_char { +#[::ffi_catch_abort] #[no_mangle] pub extern "C" +fn sq_context_home(ctx: *const Context) -> *const c_char { let ctx = ffi_param_ref!(ctx); ctx.c.home().to_string_lossy().as_ptr() as *const c_char } /// Returns the directory containing backend servers. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_context_lib(ctx: *const Context) -> *const c_char { +#[::ffi_catch_abort] #[no_mangle] pub extern "C" +fn sq_context_lib(ctx: *const Context) -> *const c_char { let ctx = ffi_param_ref!(ctx); ctx.c.lib().to_string_lossy().as_bytes().as_ptr() as *const c_char } /// Returns the network policy. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_context_network_policy(ctx: *const Context) -> c_int { +#[::ffi_catch_abort] #[no_mangle] pub extern "C" +fn sq_context_network_policy(ctx: *const Context) -> c_int { let ctx = ffi_param_ref!(ctx); u8::from(ctx.c.network_policy()) as c_int } /// Returns the IPC policy. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_context_ipc_policy(ctx: *const Context) -> c_int { +#[::ffi_catch_abort] #[no_mangle] pub extern "C" +fn sq_context_ipc_policy(ctx: *const Context) -> c_int { let ctx = ffi_param_ref!(ctx); u8::from(ctx.c.ipc_policy()) as c_int } /// Returns whether or not this is an ephemeral context. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_context_ephemeral(ctx: *const Context) -> uint8_t { +#[::ffi_catch_abort] #[no_mangle] pub extern "C" +fn sq_context_ephemeral(ctx: *const Context) -> uint8_t { let ctx = ffi_param_ref!(ctx); if ctx.c.ephemeral() { 1 } else { 0 } } @@ -161,10 +159,9 @@ pub extern "system" fn sq_context_ephemeral(ctx: *const Context) -> uint8_t { /// /// Consumes `cfg`. Returns `NULL` on errors. Returns `NULL` on /// errors. If `errp` is not `NULL`, the error is stored there. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_config_build(cfg: *mut Config, - errp: Option<&mut *mut ::error::Error>) - -> *mut Context { +#[::ffi_catch_abort] #[no_mangle] pub extern "C" +fn sq_config_build(cfg: *mut Config, errp: Option<&mut *mut ::error::Error>) + -> *mut Context { ffi_make_fry_from_errp!(errp); let cfg = ffi_param_move!(cfg); @@ -172,27 +169,24 @@ pub extern "system" fn sq_config_build(cfg: *mut Config, } /// Sets the directory containing shared state. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_config_home(cfg: *mut Config, - home: *const c_char) { +#[::ffi_catch_abort] #[no_mangle] pub extern "C" +fn sq_config_home(cfg: *mut Config, home: *const c_char) { let cfg = ffi_param_ref_mut!(cfg); let home = ffi_param_cstr!(home).to_string_lossy(); cfg.set_home(home.as_ref()); } /// Set the directory containing backend servers. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_config_lib(cfg: *mut Config, - lib: *const c_char) { +#[::ffi_catch_abort] #[no_mangle] pub extern "C" +fn sq_config_lib(cfg: *mut Config, lib: *const c_char) { let cfg = ffi_param_ref_mut!(cfg); let lib = ffi_param_cstr!(lib).to_string_lossy(); cfg.set_lib(&lib.as_ref()); } /// Sets the network policy. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_config_network_policy(cfg: *mut Config, - policy: c_int) { +#[::ffi_catch_abort] #[no_mangle] pub extern "C" +fn sq_config_network_policy(cfg: *mut Config, policy: c_int) { let cfg = ffi_param_ref_mut!(cfg); if policy < 0 || policy > 3 { panic!("Bad network policy: {}", policy); @@ -201,9 +195,8 @@ pub extern "system" fn sq_config_network_policy(cfg: *mut Config, } /// Sets the IPC policy. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_config_ipc_policy(cfg: *mut Config, - policy: c_int) { +#[::ffi_catch_abort] #[no_mangle] pub extern "C" +fn sq_config_ipc_policy(cfg: *mut Config, policy: c_int) { let cfg = ffi_param_ref_mut!(cfg); if policy < 0 || policy > 2 { panic!("Bad ipc policy: {}", policy); @@ -212,8 +205,8 @@ pub extern "system" fn sq_config_ipc_policy(cfg: *mut Config, } /// Makes this context ephemeral. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_config_ephemeral(cfg: *mut Config) { +#[::ffi_catch_abort] #[no_mangle] pub extern "C" +fn sq_config_ephemeral(cfg: *mut Config) { let cfg = ffi_param_ref_mut!(cfg); cfg.set_ephemeral(); } diff --git a/ffi/src/net.rs b/ffi/src/net.rs index 1a2712b4..06942739 100644 --- a/ffi/src/net.rs +++ b/ffi/src/net.rs @@ -50,9 +50,8 @@ use Maybe; /// e.g. `hkps://examle.org`. /// /// Returns `NULL` on errors. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_keyserver_new(ctx: *mut Context, - uri: *const c_char) -> *mut KeyServer { +#[::ffi_catch_abort] #[no_mangle] pub extern "C" +fn sq_keyserver_new(ctx: *mut Context, uri: *const c_char) -> *mut KeyServer { let ctx = ffi_param_ref_mut!(ctx); ffi_make_fry_from_ctx!(ctx); let uri = ffi_param_cstr!(uri).to_string_lossy(); @@ -67,11 +66,11 @@ pub extern "system" fn sq_keyserver_new(ctx: *mut Context, /// size `len` used to authenticate the server. /// /// Returns `NULL` on errors. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_keyserver_with_cert(ctx: *mut Context, - uri: *const c_char, - cert: *const uint8_t, - len: size_t) -> *mut KeyServer { +#[::ffi_catch_abort] #[no_mangle] pub extern "C" +fn sq_keyserver_with_cert(ctx: *mut Context, + uri: *const c_char, + cert: *const uint8_t, + len: size_t) -> *mut KeyServer { let ctx = ffi_param_ref_mut!(ctx); ffi_make_fry_from_ctx!(ctx); let uri = ffi_param_cstr!(uri).to_string_lossy(); @@ -96,28 +95,27 @@ pub extern "system" fn sq_keyserver_with_cert(ctx: *mut Context, /// included in this library. It is a good default choice. /// /// Returns `NULL` on errors. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_keyserver_sks_pool(ctx: *mut Context) - -> *mut KeyServer { +#[::ffi_catch_abort] #[no_mangle] pub extern "C" +fn sq_keyserver_sks_pool(ctx: *mut Context) -> *mut KeyServer { let ctx = ffi_param_ref_mut!(ctx); ffi_make_fry_from_ctx!(ctx); ffi_try_box!(KeyServer::sks_pool(&ctx.c)) } /// Frees a keyserver object. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_keyserver_free(ks: Option<&mut KeyServer>) { +#[::ffi_catch_abort] #[no_mangle] pub extern "C" +fn sq_keyserver_free(ks: Option<&mut KeyServer>) { ffi_free!(ks) } /// Retrieves the key with the given `keyid`. /// /// Returns `NULL` on errors. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_keyserver_get(ctx: *mut Context, - ks: *mut KeyServer, - id: *const KeyID) - -> Maybe<TPK> { +#[::ffi_catch_abort] #[no_mangle] pub extern "C" +fn sq_keyserver_get(ctx: *mut Context, + ks: *mut KeyServer, + id: *const KeyID) + -> Maybe<TPK> { let ctx = ffi_param_ref_mut!(ctx); ffi_make_fry_from_ctx!(ctx); let ks = ffi_param_ref_mut!(ks); @@ -129,11 +127,11 @@ pub extern "system" fn sq_keyserver_get(ctx: *mut Context, /// Sends the given key to the server. /// /// Returns != 0 on errors. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_keyserver_send(ctx: *mut Context, - ks: *mut KeyServer, - tpk: *const TPK) - -> Status { +#[::ffi_catch_abort] #[no_mangle] pub extern "C" +fn sq_keyserver_send(ctx: *mut Context, + ks: *mut KeyServer, + tpk: *const TPK) + -> Status { let ctx = ffi_param_ref_mut!(ctx); ffi_make_fry_from_ctx!(ctx); let ks = ffi_param_ref_mut!(ks); diff --git a/ffi/src/store.rs b/ffi/src/store.rs index 3b4baa50..2a2c18cf 100644 --- a/ffi/src/store.rs +++ b/ffi/src/store.rs @@ -44,10 +44,10 @@ use MoveResultIntoRaw; use Maybe; /// Lists all stores with the given prefix. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_store_list_stores(ctx: *mut Context, - domain_prefix: *const c_char) - -> *mut StoreIter { +#[::ffi_catch_abort] #[no_mangle] pub extern "C" +fn sq_store_list_stores(ctx: *mut Context, + domain_prefix: *const c_char) + -> *mut StoreIter { let ctx = ffi_param_ref_mut!(ctx); ffi_make_fry_from_ctx!(ctx); let domain_prefix = ffi_param_cstr!(domain_prefix).to_string_lossy(); @@ -61,12 +61,12 @@ pub extern "system" fn sq_store_list_stores(ctx: *mut Context, /// stores domain is stored there. If `namep` is not `NULL`, the /// stores name is stored there. If `policyp` is not `NULL`, the /// stores network policy is stored there. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_store_iter_next(iter: *mut StoreIter, - domainp: Option<&mut *mut c_char>, - namep: Option<&mut *mut c_char>, - policyp: Option<&mut uint8_t>) - -> *mut Store { +#[::ffi_catch_abort] #[no_mangle] pub extern "C" +fn sq_store_iter_next(iter: *mut StoreIter, + domainp: Option<&mut *mut c_char>, + namep: Option<&mut *mut c_char>, + policyp: Option<&mut uint8_t>) + -> *mut Store { let iter = ffi_param_ref_mut!(iter); match iter.next() { Some((domain, name, policy, store)) => { @@ -89,15 +89,14 @@ pub extern "system" fn sq_store_iter_next(iter: *mut StoreIter, } /// Frees a sq_store_iter_t. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_store_iter_free(iter: Option<&mut StoreIter>) { +#[::ffi_catch_abort] #[no_mangle] pub extern "C" +fn sq_store_iter_free(iter: Option<&mut StoreIter>) { ffi_free!(iter) } /// Lists all keys in the common key pool. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_store_list_keys(ctx: *mut Context) - -> *mut KeyIter { +#[::ffi_catch_abort] #[no_mangle] pub extern "C" +fn sq_store_list_keys(ctx: *mut Context) -> *mut KeyIter { let ctx = ffi_param_ref_mut!(ctx); ffi_make_fry_from_ctx!(ctx); @@ -105,9 +104,8 @@ pub extern "system" fn sq_store_list_keys(ctx: *mut Context) } /// Lists all log entries. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_store_server_log(ctx: *mut Context) - -> *mut LogIter { +#[::ffi_catch_abort] #[no_mangle] pub extern "C" +fn sq_store_server_log(ctx: *mut Context) -> *mut LogIter { let ctx = ffi_param_ref_mut!(ctx); ffi_make_fry_from_ctx!(ctx); @@ -118,10 +116,10 @@ pub extern "system" fn sq_store_server_log(ctx: *mut Context) /// /// Returns `NULL` on exhaustion. If `fpp` is not `NULL`, the key's /// fingerprint is stored there. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_key_iter_next(iter: *mut KeyIter, - fpp: Option<&mut Maybe<Fingerprint>>) - -> *mut Key { +#[::ffi_catch_abort] #[no_mangle] pub extern "C" +fn sq_key_iter_next(iter: *mut KeyIter, + fpp: Option<&mut Maybe<Fingerprint>>) + -> *mut Key { let iter = ffi_param_ref_mut!(iter); match iter.next() { Some((fingerprint, key)) => { @@ -141,8 +139,8 @@ pub extern "system" fn sq_key_iter_next(iter: *mut KeyIter, } /// Frees a sq_key_iter_t. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_key_iter_free(iter: Option<&mut KeyIter>) { +#[::ffi_catch_abort] #[no_mangle] pub extern "C" +fn sq_key_iter_free(iter: Option<&mut KeyIter>) { ffi_free!(iter) } @@ -150,9 +148,8 @@ pub extern "system" fn sq_key_iter_free(iter: Option<&mut KeyIter>) { /// Returns the next log entry. /// /// Returns `NULL` on exhaustion. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_log_iter_next(iter: *mut LogIter) - -> *mut Log { +#[::ffi_catch_abort] #[no_mangle] pub extern "C" +fn sq_log_iter_next(iter: *mut LogIter) -> *mut Log { let iter = ffi_param_ref_mut!(iter); match iter.next() { Some(e) => { @@ -176,8 +173,8 @@ pub extern "system" fn sq_log_iter_next(iter: *mut LogIter) } /// Frees a sq_log_iter_t. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_log_iter_free(iter: Option<&mut LogIter>) { +#[::ffi_catch_abort] #[no_mangle] pub extern "C" +fn sq_log_iter_free(iter: Option<&mut LogIter>) { ffi_free!(iter) } @@ -192,10 +189,10 @@ pub extern "system" fn sq_log_iter_free(iter: Option<&mut LogIter>) { /// of the context that created the store in the first place. /// Opening the store with a different network policy is /// forbidden. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_store_open(ctx: *mut Context, - name: *const c_char) - -> *mut Store { +#[::ffi_catch_abort] #[no_mangle] pub extern "C" +fn sq_store_open(ctx: *mut Context, + name: *const c_char) + -> *mut Store { let ctx = ffi_param_ref_mut!(ctx); ffi_make_fry_from_ctx!(ctx); let name = ffi_param_cstr!(name).to_string_lossy(); @@ -204,18 +201,18 @@ pub extern "system" fn sq_store_open(ctx: *mut Context, } /// Frees a sq_store_t. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_store_free(store: Option<&mut Store>) { +#[::ffi_catch_abort] #[no_mangle] pub extern "C" +fn sq_store_free(store: Option<&mut Store>) { ffi_free!(store) } /// Adds a key identified by fingerprint to the store. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_store_add(ctx: *mut Context, - |