aboutsummaryrefslogtreecommitdiffstats
path: root/scd
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2006-09-06 16:35:52 +0000
committerWerner Koch <[email protected]>2006-09-06 16:35:52 +0000
commiteef036df235b7fb16b57bb78daf6f7e590d8e6d6 (patch)
tree9350e6fa2ffde2219b3b13dabb450c96064ca1ad /scd
parentMinor changes and typo fixes. (diff)
downloadgnupg-eef036df235b7fb16b57bb78daf6f7e590d8e6d6.tar.gz
gnupg-eef036df235b7fb16b57bb78daf6f7e590d8e6d6.zip
The big Assuan error code removal.
Diffstat (limited to 'scd')
-rw-r--r--scd/ChangeLog16
-rw-r--r--scd/apdu.c3
-rw-r--r--scd/app-dinsig.c2
-rw-r--r--scd/app-nks.c4
-rw-r--r--scd/app.c8
-rw-r--r--scd/command.c106
-rw-r--r--scd/pcsc-wrapper.c3
-rw-r--r--scd/scdaemon.c2
-rw-r--r--scd/scdaemon.h11
9 files changed, 83 insertions, 72 deletions
diff --git a/scd/ChangeLog b/scd/ChangeLog
index a32671b34..ee0e2ca93 100644
--- a/scd/ChangeLog
+++ b/scd/ChangeLog
@@ -1,3 +1,19 @@
+2006-09-06 Werner Koch <[email protected]>
+
+ * apdu.c (pcsc_end_transaction):
+ * pcsc-wrapper.c (pcsc_end_transaction: Fixed dclaration.
+ Reported by Bob Dunlop.
+
+ * scdaemon.h (CTRL,APP): Removed and changed everywhere to
+ ctrl_t/app_t.
+
+ Replaced all Assuan error codes by libgpg-error codes. Removed
+ all map_to_assuan_status and map_assuan_err.
+
+ * scdaemon.c (main): Call assuan_set_assuan_err_source to have Assuan
+ switch to gpg-error codes.
+ * command.c (set_error): Adjusted.
+
2006-09-02 Marcus Brinkmann <[email protected]>
* command.c (get_reader_slot): Return the slot_table index, not
diff --git a/scd/apdu.c b/scd/apdu.c
index d6bbdefd5..01c48cdf0 100644
--- a/scd/apdu.c
+++ b/scd/apdu.c
@@ -274,7 +274,8 @@ long (* DLSTDCALL pcsc_status) (unsigned long card,
unsigned long *r_protocol,
unsigned char *atr, unsigned long *atrlen);
long (* DLSTDCALL pcsc_begin_transaction) (unsigned long card);
-long (* DLSTDCALL pcsc_end_transaction) (unsigned long card);
+long (* DLSTDCALL pcsc_end_transaction) (unsigned long card,
+ unsigned long disposition);
long (* DLSTDCALL pcsc_transmit) (unsigned long card,
const pcsc_io_request_t send_pci,
const unsigned char *send_buffer,
diff --git a/scd/app-dinsig.c b/scd/app-dinsig.c
index 752e8a346..5cab42805 100644
--- a/scd/app-dinsig.c
+++ b/scd/app-dinsig.c
@@ -430,7 +430,7 @@ do_sign (app_t app, const char *keyidstr, int hashalgo,
/* Select the DINSIG application on the card in SLOT. This function
must be used before any other DINSIG application functions. */
gpg_error_t
-app_select_dinsig (APP app)
+app_select_dinsig (app_t app)
{
static char const aid[] = { 0xD2, 0x76, 0x00, 0x00, 0x66, 0x01 };
int slot = app->slot;
diff --git a/scd/app-nks.c b/scd/app-nks.c
index 1ca8d4187..1213083e9 100644
--- a/scd/app-nks.c
+++ b/scd/app-nks.c
@@ -119,7 +119,7 @@ keygripstr_from_pk_file (int slot, int fid, char *r_gripstr)
static gpg_error_t
-do_learn_status (APP app, CTRL ctrl)
+do_learn_status (app_t app, ctrl_t ctrl)
{
gpg_error_t err;
char ct_buf[100], id_buf[100];
@@ -490,7 +490,7 @@ do_decipher (app_t app, const char *keyidstr,
/* Select the NKS 2.0 application on the card in SLOT. */
gpg_error_t
-app_select_nks (APP app)
+app_select_nks (app_t app)
{
static char const aid[] = { 0xD2, 0x76, 0x00, 0x00, 0x03, 0x01, 0x02 };
int slot = app->slot;
diff --git a/scd/app.c b/scd/app.c
index e3d42054b..ed00d232d 100644
--- a/scd/app.c
+++ b/scd/app.c
@@ -492,7 +492,7 @@ app_get_serial_and_stamp (app_t app, char **serial, time_t *stamp)
/* Write out the application specifig status lines for the LEARN
command. */
gpg_error_t
-app_write_learn_status (app_t app, CTRL ctrl)
+app_write_learn_status (app_t app, ctrl_t ctrl)
{
gpg_error_t err;
@@ -574,7 +574,7 @@ app_readkey (app_t app, const char *keyid, unsigned char **pk, size_t *pklen)
/* Perform a GETATTR operation. */
gpg_error_t
-app_getattr (app_t app, CTRL ctrl, const char *name)
+app_getattr (app_t app, ctrl_t ctrl, const char *name)
{
gpg_error_t err;
@@ -763,7 +763,7 @@ app_writekey (app_t app, ctrl_t ctrl,
/* Perform a SETATTR operation. */
gpg_error_t
-app_genkey (app_t app, CTRL ctrl, const char *keynostr, unsigned int flags,
+app_genkey (app_t app, ctrl_t ctrl, const char *keynostr, unsigned int flags,
gpg_error_t (*pincb)(void*, const char *, char **),
void *pincb_arg)
{
@@ -810,7 +810,7 @@ app_get_challenge (app_t app, size_t nbytes, unsigned char *buffer)
/* Perform a CHANGE REFERENCE DATA or RESET RETRY COUNTER operation. */
gpg_error_t
-app_change_pin (app_t app, CTRL ctrl, const char *chvnostr, int reset_mode,
+app_change_pin (app_t app, ctrl_t ctrl, const char *chvnostr, int reset_mode,
gpg_error_t (*pincb)(void*, const char *, char **),
void *pincb_arg)
{
diff --git a/scd/command.c b/scd/command.c
index 1fdab5e1d..2d32c0853 100644
--- a/scd/command.c
+++ b/scd/command.c
@@ -45,7 +45,7 @@
#define MAXLEN_KEYDATA 4096
-#define set_error(e,t) assuan_set_error (ctx, ASSUAN_ ## e, (t))
+#define set_error(e,t) assuan_set_error (ctx, gpg_error (e), (t))
/* Macro to flag a removed card. */
@@ -262,7 +262,7 @@ option_handler (assuan_context_t ctx, const char *key, const char *value)
/* A value of 0 is allowed to reset the event signal. */
int i = *value? atoi (value) : -1;
if (i < 0)
- return ASSUAN_Parameter_Error;
+ return gpg_error (GPG_ERR_ASS_PARAMETER);
ctrl->server_local->event_signal = i;
}
@@ -309,7 +309,7 @@ open_card (ctrl_t ctrl, const char *apptype)
the SERIALNO command and a reset are able to clear from that
state. */
if (ctrl->server_local->card_removed)
- return map_to_assuan_status (gpg_error (GPG_ERR_CARD_REMOVED));
+ return gpg_error (GPG_ERR_CARD_REMOVED);
if ( IS_LOCKED (ctrl) )
return gpg_error (GPG_ERR_LOCKED);
@@ -333,7 +333,7 @@ open_card (ctrl_t ctrl, const char *apptype)
err = select_application (ctrl, slot, apptype, &ctrl->app_ctx);
TEST_CARD_REMOVAL (ctrl, err);
- return map_to_assuan_status (err);
+ return err;
}
@@ -413,12 +413,12 @@ cmd_serialno (assuan_context_t ctx, char *line)
rc = app_get_serial_and_stamp (ctrl->app_ctx, &serial, &stamp);
if (rc)
- return map_to_assuan_status (rc);
+ return rc;
rc = asprintf (&serial_and_stamp, "%s %lu", serial, (unsigned long)stamp);
xfree (serial);
if (rc < 0)
- return ASSUAN_Out_Of_Core;
+ return out_of_core ();
rc = 0;
assuan_write_status (ctx, "SERIALNO", serial_and_stamp);
free (serial_and_stamp);
@@ -510,11 +510,11 @@ cmd_learn (assuan_context_t ctx, char *line)
rc = app_get_serial_and_stamp (ctrl->app_ctx, &serial, &stamp);
if (rc)
- return map_to_assuan_status (rc);
+ return rc;
rc = asprintf (&serial_and_stamp, "%s %lu", serial, (unsigned long)stamp);
xfree (serial);
if (rc < 0)
- return ASSUAN_Out_Of_Core;
+ return out_of_core ();
rc = 0;
assuan_write_status (ctx, "SERIALNO", serial_and_stamp);
@@ -526,16 +526,16 @@ cmd_learn (assuan_context_t ctx, char *line)
if (rc < 0)
{
free (serial_and_stamp);
- return ASSUAN_Out_Of_Core;
+ return out_of_core ();
}
rc = 0;
rc = assuan_inquire (ctx, command, NULL, NULL, 0);
free (command); /* (must use standard free here) */
if (rc)
{
- if (rc != ASSUAN_Canceled)
+ if (gpg_err_code (rc) != GPG_ERR_ASS_CANCELED)
log_error ("inquire KNOWNCARDP failed: %s\n",
- assuan_strerror (rc));
+ gpg_strerror (rc));
free (serial_and_stamp);
return rc;
}
@@ -550,7 +550,7 @@ cmd_learn (assuan_context_t ctx, char *line)
rc = app_write_learn_status (ctrl->app_ctx, ctrl);
TEST_CARD_REMOVAL (ctrl, rc);
- return map_to_assuan_status (rc);
+ return rc;
}
@@ -585,7 +585,7 @@ cmd_readcert (assuan_context_t ctx, char *line)
}
TEST_CARD_REMOVAL (ctrl, rc);
- return map_to_assuan_status (rc);
+ return rc;
}
@@ -620,7 +620,6 @@ cmd_readkey (assuan_context_t ctx, char *line)
{ /* Yeah, got that key - send it back. */
rc = assuan_send_data (ctx, pk, pklen);
xfree (pk);
- rc = map_assuan_err (rc);
xfree (line);
line = NULL;
goto leave;
@@ -661,7 +660,6 @@ cmd_readkey (assuan_context_t ctx, char *line)
n = gcry_sexp_canon_len (p, 0, NULL, NULL);
rc = assuan_send_data (ctx, p, n);
- rc = map_assuan_err (rc);
xfree (p);
@@ -669,7 +667,7 @@ cmd_readkey (assuan_context_t ctx, char *line)
ksba_cert_release (kc);
xfree (cert);
TEST_CARD_REMOVAL (ctrl, rc);
- return map_to_assuan_status (rc);
+ return rc;
}
@@ -694,15 +692,15 @@ cmd_setdata (assuan_context_t ctx, char *line)
for (p=line,n=0; hexdigitp (p); p++, n++)
;
if (*p)
- return set_error (Parameter_Error, "invalid hexstring");
+ return set_error (GPG_ERR_ASS_PARAMETER, "invalid hexstring");
if (!n)
- return set_error (Parameter_Error, "no data given");
+ return set_error (GPG_ERR_ASS_PARAMETER, "no data given");
if ((n&1))
- return set_error (Parameter_Error, "odd number of digits");
+ return set_error (GPG_ERR_ASS_PARAMETER, "odd number of digits");
n /= 2;
buf = xtrymalloc (n);
if (!buf)
- return ASSUAN_Out_Of_Core;
+ return out_of_core ();
ctrl->in_data.value = buf;
ctrl->in_data.valuelen = n;
@@ -734,7 +732,7 @@ pin_cb (void *opaque, const char *info, char **retstr)
rc = assuan_inquire (ctx, command, &value, &valuelen, MAXLEN_PIN);
free (command);
if (rc)
- return map_assuan_err (rc);
+ return rc;
if (!valuelen || value[valuelen-1])
{
@@ -771,7 +769,7 @@ cmd_pksign (assuan_context_t ctx, char *line)
else if (!strstr (line, "--"))
hash_algo = GCRY_MD_SHA1;
else
- return set_error (Parameter_Error, "invalid hash algorithm");
+ return set_error (GPG_ERR_ASS_PARAMETER, "invalid hash algorithm");
/* Skip over options. */
while ( *line == '-' && line[1] == '-' )
{
@@ -792,7 +790,7 @@ cmd_pksign (assuan_context_t ctx, char *line)
overwriting the original line with the keyid */
keyidstr = xtrystrdup (line);
if (!keyidstr)
- return ASSUAN_Out_Of_Core;
+ return out_of_core ();
rc = app_sign (ctrl->app_ctx,
keyidstr, hash_algo,
@@ -814,7 +812,7 @@ cmd_pksign (assuan_context_t ctx, char *line)
}
TEST_CARD_REMOVAL (ctrl, rc);
- return map_to_assuan_status (rc);
+ return rc;
}
/* PKAUTH <hexified_id>
@@ -843,7 +841,7 @@ cmd_pkauth (assuan_context_t ctx, char *line)
overwriting the original line with the keyid */
keyidstr = xtrystrdup (line);
if (!keyidstr)
- return ASSUAN_Out_Of_Core;
+ return out_of_core ();
rc = app_auth (ctrl->app_ctx,
keyidstr,
@@ -864,7 +862,7 @@ cmd_pkauth (assuan_context_t ctx, char *line)
}
TEST_CARD_REMOVAL (ctrl, rc);
- return map_to_assuan_status (rc);
+ return rc;
}
/* PKDECRYPT <hexified_id>
@@ -887,7 +885,7 @@ cmd_pkdecrypt (assuan_context_t ctx, char *line)
keyidstr = xtrystrdup (line);
if (!keyidstr)
- return ASSUAN_Out_Of_Core;
+ return out_of_core ();
rc = app_decipher (ctrl->app_ctx,
keyidstr,
pin_cb, ctx,
@@ -908,7 +906,7 @@ cmd_pkdecrypt (assuan_context_t ctx, char *line)
}
TEST_CARD_REMOVAL (ctrl, rc);
- return map_to_assuan_status (rc);
+ return rc;
}
@@ -947,7 +945,7 @@ cmd_getattr (assuan_context_t ctx, char *line)
rc = app_getattr (ctrl->app_ctx, ctrl, keyword);
TEST_CARD_REMOVAL (ctrl, rc);
- return map_to_assuan_status (rc);
+ return rc;
}
@@ -983,7 +981,7 @@ cmd_setattr (assuan_context_t ctx, char *orig_line)
context and thus reuses the Assuan provided LINE. */
line = linebuf = xtrystrdup (orig_line);
if (!line)
- return ASSUAN_Out_Of_Core;
+ return out_of_core ();
keyword = line;
for (keywordlen=0; *line && !spacep (line); line++, keywordlen++)
@@ -999,7 +997,7 @@ cmd_setattr (assuan_context_t ctx, char *orig_line)
xfree (linebuf);
TEST_CARD_REMOVAL (ctrl, rc);
- return map_to_assuan_status (rc);
+ return rc;
}
@@ -1039,7 +1037,7 @@ cmd_writekey (assuan_context_t ctx, char *line)
line++;
}
if (!*line)
- return set_error (Parameter_Error, "no keyid given");
+ return set_error (GPG_ERR_ASS_PARAMETER, "no keyid given");
keyid = line;
while (*line && !spacep (line))
line++;
@@ -1053,7 +1051,7 @@ cmd_writekey (assuan_context_t ctx, char *line)
keyid = xtrystrdup (keyid);
if (!keyid)
- return ASSUAN_Out_Of_Core;
+ return out_of_core ();
/* Now get the actual keydata. */
rc = assuan_inquire (ctx, "KEYDATA", &keydata, &keydatalen, MAXLEN_KEYDATA);
@@ -1070,7 +1068,7 @@ cmd_writekey (assuan_context_t ctx, char *line)
xfree (keydata);
TEST_CARD_REMOVAL (ctrl, rc);
- return map_to_assuan_status (rc);
+ return rc;
}
@@ -1114,7 +1112,7 @@ cmd_genkey (assuan_context_t ctx, char *line)
line++;
}
if (!*line)
- return set_error (Parameter_Error, "no key number given");
+ return set_error (GPG_ERR_ASS_PARAMETER, "no key number given");
keyno = line;
while (*line && !spacep (line))
line++;
@@ -1128,12 +1126,12 @@ cmd_genkey (assuan_context_t ctx, char *line)
keyno = xtrystrdup (keyno);
if (!keyno)
- return ASSUAN_Out_Of_Core;
+ return out_of_core ();
rc = app_genkey (ctrl->app_ctx, ctrl, keyno, force? 1:0, pin_cb, ctx);
xfree (keyno);
TEST_CARD_REMOVAL (ctrl, rc);
- return map_to_assuan_status (rc);
+ return rc;
}
@@ -1152,7 +1150,7 @@ cmd_random (assuan_context_t ctx, char *line)
unsigned char *buffer;
if (!*line)
- return set_error (Parameter_Error, "number of requested bytes missing");
+ return set_error (GPG_ERR_ASS_PARAMETER, "number of requested bytes missing");
nbytes = strtoul (line, NULL, 0);
if ((rc = open_card (ctrl, NULL)))
@@ -1163,7 +1161,7 @@ cmd_random (assuan_context_t ctx, char *line)
buffer = xtrymalloc (nbytes);
if (!buffer)
- return ASSUAN_Out_Of_Core;
+ return out_of_core ();
rc = app_get_challenge (ctrl->app_ctx, nbytes, buffer);
if (!rc)
@@ -1175,7 +1173,7 @@ cmd_random (assuan_context_t ctx, char *line)
xfree (buffer);
TEST_CARD_REMOVAL (ctrl, rc);
- return map_to_assuan_status (rc);
+ return rc;
}
@@ -1203,7 +1201,7 @@ cmd_passwd (assuan_context_t ctx, char *line)
line++;
}
if (!*line)
- return set_error (Parameter_Error, "no CHV number given");
+ return set_error (GPG_ERR_ASS_PARAMETER, "no CHV number given");
chvnostr = line;
while (*line && !spacep (line))
line++;
@@ -1217,14 +1215,14 @@ cmd_passwd (assuan_context_t ctx, char *line)
chvnostr = xtrystrdup (chvnostr);
if (!chvnostr)
- return ASSUAN_Out_Of_Core;
+ return out_of_core ();
rc = app_change_pin (ctrl->app_ctx, ctrl, chvnostr, reset_mode, pin_cb, ctx);
if (rc)
log_error ("command passwd failed: %s\n", gpg_strerror (rc));
xfree (chvnostr);
TEST_CARD_REMOVAL (ctrl, rc);
- return map_to_assuan_status (rc);
+ return rc;
}
@@ -1268,7 +1266,7 @@ cmd_checkpin (assuan_context_t ctx, char *line)
overwriting the original line with the keyid. */
keyidstr = xtrystrdup (line);
if (!keyidstr)
- return ASSUAN_Out_Of_Core;
+ return out_of_core ();
rc = app_check_pin (ctrl->app_ctx,
keyidstr,
@@ -1278,7 +1276,7 @@ cmd_checkpin (assuan_context_t ctx, char *line)
log_error ("app_check_pin failed: %s\n", gpg_strerror (rc));
TEST_CARD_REMOVAL (ctrl, rc);
- return map_to_assuan_status (rc);
+ return rc;
}
@@ -1322,7 +1320,7 @@ cmd_lock (assuan_context_t ctx, char *line)
if (rc)
log_error ("cmd_lock failed: %s\n", gpg_strerror (rc));
- return map_to_assuan_status (rc);
+ return rc;
}
@@ -1348,7 +1346,7 @@ cmd_unlock (assuan_context_t ctx, char *line)
if (rc)
log_error ("cmd_unlock failed: %s\n", gpg_strerror (rc));
- return map_to_assuan_status (rc);
+ return rc;
}
@@ -1404,7 +1402,7 @@ cmd_getinfo (assuan_context_t ctx, char *line)
rc = assuan_send_data (ctx, &flag, 1);
}
else
- rc = set_error (Parameter_Error, "unknown value for WHAT");
+ rc = set_error (GPG_ERR_ASS_PARAMETER, "unknown value for WHAT");
return rc;
}
@@ -1460,7 +1458,6 @@ cmd_apdu (assuan_context_t ctx, char *line)
{
ctrl_t ctrl = assuan_get_pointer (ctx);
int rc;
- int rc_is_assuan = 0;
unsigned char *apdu;
size_t apdulen;
int with_atr;
@@ -1520,7 +1517,6 @@ cmd_apdu (assuan_context_t ctx, char *line)
log_error ("apdu_send_direct failed: %s\n", gpg_strerror (rc));
else
{
- rc_is_assuan = 1;
rc = assuan_send_data (ctx, result, resultlen);
xfree (result);
}
@@ -1529,7 +1525,7 @@ cmd_apdu (assuan_context_t ctx, char *line)
leave:
TEST_CARD_REMOVAL (ctrl, rc);
- return rc_is_assuan? rc : map_to_assuan_status (rc);
+ return rc;
}
@@ -1611,14 +1607,14 @@ scd_command_handler (int fd)
if (rc)
{
log_error ("failed to initialize the server: %s\n",
- assuan_strerror(rc));
+ gpg_strerror(rc));
scd_exit (2);
}
rc = register_commands (ctx);
if (rc)
{
log_error ("failed to register commands with Assuan: %s\n",
- assuan_strerror(rc));
+ gpg_strerror(rc));
scd_exit (2);
}
assuan_set_pointer (ctx, &ctrl);
@@ -1651,14 +1647,14 @@ scd_command_handler (int fd)
}
else if (rc)
{
- log_info ("Assuan accept problem: %s\n", assuan_strerror (rc));
+ log_info ("Assuan accept problem: %s\n", gpg_strerror (rc));
break;
}
rc = assuan_process (ctx);
if (rc)
{
- log_info ("Assuan processing failed: %s\n", assuan_strerror (rc));
+ log_info ("Assuan processing failed: %s\n", gpg_strerror (rc));
continue;
}
}
diff --git a/scd/pcsc-wrapper.c b/scd/pcsc-wrapper.c
index 655d2a1fe..0e362a16a 100644
--- a/scd/pcsc-wrapper.c
+++ b/scd/pcsc-wrapper.c
@@ -169,7 +169,8 @@ long (* pcsc_status) (unsigned long card,
unsigned long *r_protocol,
unsigned char *atr, unsigned long *atrlen);
long (* pcsc_begin_transaction) (unsigned long card);
-long (* pcsc_end_transaction) (unsigned long card);
+long (* pcsc_end_transaction) (unsigned long card,
+ unsigned long disposition);
long (* pcsc_transmit) (unsigned long card,
const pcsc_io_request_t send_pci,
const unsigned char *send_buffer,
diff --git a/scd/scdaemon.c b/scd/scdaemon.c
index b11cc7a91..c962f3f77 100644
--- a/scd/scdaemon.c
+++ b/scd/scdaemon.c
@@ -360,6 +360,8 @@ main (int argc, char **argv )
assuan_set_malloc_hooks (gcry_malloc, gcry_realloc, gcry_free);
assuan_set_assuan_log_stream (log_get_stream ());
assuan_set_assuan_log_prefix (log_get_prefix (NULL));
+ assuan_set_assuan_err_source (GPG_ERR_SOURCE_DEFAULT);
+
gcry_set_log_handler (my_gcry_logger, NULL);
gcry_control (GCRYCTL_USE_SECURE_RNDPOOL);
diff --git a/scd/scdaemon.h b/scd/scdaemon.h
index f9689ee09..6e81c0d20 100644
--- a/scd/scdaemon.h
+++ b/scd/scdaemon.h
@@ -27,10 +27,6 @@
#endif
#define GPG_ERR_SOURCE_DEFAULT GPG_ERR_SOURCE_SCD
#include <gpg-error.h>
-#define map_assuan_err(a) \
- map_assuan_err_with_source (GPG_ERR_SOURCE_DEFAULT, (a))
-
-#include <errno.h>
#include <time.h>
#include <gcrypt.h>
@@ -41,7 +37,8 @@
#define MAX_DIGEST_LEN 24
/* A large struct name "opt" to keep global flags. */
-struct {
+struct
+{
unsigned int debug; /* Debug flags (DBG_foo_VALUE). */
int verbose; /* Verbosity level. */
int quiet; /* Be as quiet as possible. */
@@ -103,9 +100,7 @@ struct server_control_s
} in_data;
};
-typedef struct server_control_s *CTRL;
typedef struct server_control_s *ctrl_t;
-typedef struct app_ctx_s *APP;
typedef struct app_ctx_s *app_t;
/*-- scdaemon.c --*/
@@ -115,7 +110,7 @@ const char *scd_get_socket_name (void);
/*-- command.c --*/
void scd_command_handler (int);
-void send_status_info (CTRL ctrl, const char *keyword, ...);
+void send_status_info (ctrl_t ctrl, const char *keyword, ...);
void scd_update_reader_status_file (void);