diff options
author | Marcus Brinkmann <[email protected]> | 2012-02-14 12:03:46 +0000 |
---|---|---|
committer | Marcus Brinkmann <[email protected]> | 2012-02-14 12:34:44 +0000 |
commit | 885243e05467e79e2375b3febe7904053ab45dfc (patch) | |
tree | 2eb90674c28bf54126beb7c4e1e1d11f016066c9 /src/engine-gpg.c | |
parent | Use gpgme interface for error handling to avoid linking with gpg-error. (diff) | |
download | gpgme-885243e05467e79e2375b3febe7904053ab45dfc.tar.gz gpgme-885243e05467e79e2375b3febe7904053ab45dfc.zip |
Rework status table to be less dynamically generated.
* src/Makefile.am (EXTRA_DIST): Remove mkstatus.
(BUILT_SOURCE, MOSTLYCLEANFILES): Remove.
(main_sources): Remove status-table.h, extra-stati.h.
Add status-table.c.
(status-table.h): Remove rules for built source.
* src/decrypt.c: Don't include extra-stati.h.
* src/engine-gpg.c: Don't include status-table.h.
(status_cmp): Remove function.
(read_status): Use _gpgme_parse_status.
* src/engine-gpgsm.c: Don't include status-table.h.
(status_cmp, parse_status): Remove function.
(gpgsm_assuan_simple_command, status_handler): Use _gpgme_parse_status.
* src/engine-uiserver.c: Don't include status-table.h.
(status_cmp, parse_status): Remove function.
(uiserver_assuan_simple_command, status_handler): Use
_gpgme_parse_status.
* src/gpgme.h.in (gpgme_status_code_t): Add
GPGME_STATUS_DECRYPTION_INFO.
* src/util.h (_gpgme_status_init,_gpgme_parse_status): New declaration.
* src/status-table.c: New file.
* src/extra-stati.h, src/mkstatus: Files removed.
* version.c (do_subsystem_inits): Call _gpgme_status_init.
Diffstat (limited to 'src/engine-gpg.c')
-rw-r--r-- | src/engine-gpg.c | 34 |
1 files changed, 10 insertions, 24 deletions
diff --git a/src/engine-gpg.c b/src/engine-gpg.c index f163f0fd..cbb456ec 100644 --- a/src/engine-gpg.c +++ b/src/engine-gpg.c @@ -1,7 +1,7 @@ /* engine-gpg.c - Gpg Engine. Copyright (C) 2000 Werner Koch (dd9jn) Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, - 2009, 2010 g10 Code GmbH + 2009, 2010, 2012 g10 Code GmbH This file is part of GPGME. @@ -43,7 +43,6 @@ #include "sema.h" #include "debug.h" -#include "status-table.h" #include "engine-backend.h" @@ -965,16 +964,6 @@ add_io_cb (engine_gpg_t gpg, int fd, int dir, gpgme_io_cb_t handler, void *data, } -static int -status_cmp (const void *ap, const void *bp) -{ - const struct status_table_s *a = ap; - const struct status_table_s *b = bp; - - return strcmp (a->name, b->name); -} - - /* Handle the status output of GnuPG. This function does read entire lines and passes them as C strings to the callback function (we can use C Strings because the status output is always UTF-8 encoded). @@ -1032,8 +1021,8 @@ read_status (engine_gpg_t gpg) if (!strncmp (buffer, "[GNUPG:] ", 9) && buffer[9] >= 'A' && buffer[9] <= 'Z') { - struct status_table_s t, *r; char *rest; + gpgme_status_code_t r; rest = strchr (buffer + 9, ' '); if (!rest) @@ -1041,18 +1030,15 @@ read_status (engine_gpg_t gpg) else *rest++ = 0; - t.name = buffer+9; - /* (the status table has one extra element) */ - r = bsearch (&t, status_table, DIM(status_table) - 1, - sizeof t, status_cmp); - if (r) + r = _gpgme_parse_status (buffer + 9); + if (r >= 0) { if (gpg->cmd.used - && (r->code == GPGME_STATUS_GET_BOOL - || r->code == GPGME_STATUS_GET_LINE - || r->code == GPGME_STATUS_GET_HIDDEN)) + && (r == GPGME_STATUS_GET_BOOL + || r == GPGME_STATUS_GET_LINE + || r == GPGME_STATUS_GET_HIDDEN)) { - gpg->cmd.code = r->code; + gpg->cmd.code = r; if (gpg->cmd.keyword) free (gpg->cmd.keyword); gpg->cmd.keyword = strdup (rest); @@ -1075,12 +1061,12 @@ read_status (engine_gpg_t gpg) { gpgme_error_t err; err = gpg->status.fnc (gpg->status.fnc_value, - r->code, rest); + r, rest); if (err) return err; } - if (r->code == GPGME_STATUS_END_STREAM) + if (r == GPGME_STATUS_END_STREAM) { if (gpg->cmd.used) { |