diff options
-rw-r--r-- | docs/libcacard.txt | 5 | ||||
-rw-r--r-- | src/libcacard.map | 1 | ||||
-rw-r--r-- | src/vcard_emul.h | 1 | ||||
-rw-r--r-- | src/vcard_emul_nss.c | 14 |
4 files changed, 21 insertions, 0 deletions
diff --git a/docs/libcacard.txt b/docs/libcacard.txt index efaad17..1da8790 100644 --- a/docs/libcacard.txt +++ b/docs/libcacard.txt @@ -495,6 +495,11 @@ functions: Set the state of 'card' to the current power level and reset its internal state (logout, etc). + VCardEmulError vcard_emul_finalize(void); + + This function should be called as a last one in the program, making sure all + resources allocated are released. + ------------------------------------------------------- List of files and their function: docs/libcacard.txt - This file diff --git a/src/libcacard.map b/src/libcacard.map index 10230f9..939f098 100644 --- a/src/libcacard.map +++ b/src/libcacard.map @@ -22,6 +22,7 @@ vcard_emul_type_from_string; vcard_emul_type_select; vcard_emul_usage; + vcard_emul_finalize; vcard_find_applet; vcard_free; vcard_get_atr; diff --git a/src/vcard_emul.h b/src/vcard_emul.h index 55bf720..8853f54 100644 --- a/src/vcard_emul.h +++ b/src/vcard_emul.h @@ -63,6 +63,7 @@ VCardEmulError vcard_emul_force_card_remove(VReader *vreader); VCardEmulOptions *vcard_emul_options(const char *args); VCardEmulError vcard_emul_init(const VCardEmulOptions *options); +VCardEmulError vcard_emul_finalize(void); void vcard_emul_replay_insertion_events(void); void vcard_emul_usage(void); diff --git a/src/vcard_emul_nss.c b/src/vcard_emul_nss.c index f5783c3..f2bc8cf 100644 --- a/src/vcard_emul_nss.c +++ b/src/vcard_emul_nss.c @@ -1167,6 +1167,20 @@ vcard_emul_replay_insertion_events(void) vreader_list_delete(list); } +VCardEmulError +vcard_emul_finalize(void) +{ + SECStatus rv; + + rv = NSS_Shutdown(); + if (rv != SECSuccess) { + g_debug("%s: NSS_Shutdown failed.", __func__); + return VCARD_EMUL_FAIL; + } + + return VCARD_EMUL_OK; +} + /* * Silly little functions to help parsing our argument string */ |