[evolution-data-server] [IMAPx] Add a code for completeness check of camel-imapx-tokens.txt
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution-data-server] [IMAPx] Add a code for completeness check of camel-imapx-tokens.txt
- Date: Thu, 29 Mar 2018 09:12:34 +0000 (UTC)
commit f3445c91502c212fb4a13dc9b7fbe2b1eada248e
Author: Milan Crha <mcrha redhat com>
Date: Thu Mar 29 11:11:56 2018 +0200
[IMAPx] Add a code for completeness check of camel-imapx-tokens.txt
It's executed and compiled only with the maintainer mode on, thus
it doesn't cause any harm in the production code.
.../providers/imapx/camel-imapx-list-response.c | 2 +
src/camel/providers/imapx/camel-imapx-logger.c | 2 +
src/camel/providers/imapx/camel-imapx-mailbox.c | 2 +
.../imapx/camel-imapx-namespace-response.c | 2 +
src/camel/providers/imapx/camel-imapx-namespace.c | 2 +
src/camel/providers/imapx/camel-imapx-settings.c | 2 +
.../providers/imapx/camel-imapx-status-response.c | 2 +
src/camel/providers/imapx/camel-imapx-utils.c | 98 ++++++++++++++++++++
src/camel/providers/imapx/camel-imapx-utils.h | 5 +-
9 files changed, 116 insertions(+), 1 deletions(-)
---
diff --git a/src/camel/providers/imapx/camel-imapx-list-response.c
b/src/camel/providers/imapx/camel-imapx-list-response.c
index 4ff31dc..a11753e 100644
--- a/src/camel/providers/imapx/camel-imapx-list-response.c
+++ b/src/camel/providers/imapx/camel-imapx-list-response.c
@@ -31,6 +31,8 @@
* camel_store_get_folder_info().
**/
+#include "evolution-data-server-config.h"
+
#include "camel-imapx-list-response.h"
#include "camel-imapx-utils.h"
diff --git a/src/camel/providers/imapx/camel-imapx-logger.c b/src/camel/providers/imapx/camel-imapx-logger.c
index 50819e5..6d15cd5 100644
--- a/src/camel/providers/imapx/camel-imapx-logger.c
+++ b/src/camel/providers/imapx/camel-imapx-logger.c
@@ -25,6 +25,8 @@
* Attaches to the #GInputStream and #GOutputStream.
**/
+#include "evolution-data-server-config.h"
+
#include "camel-imapx-logger.h"
#include <string.h>
diff --git a/src/camel/providers/imapx/camel-imapx-mailbox.c b/src/camel/providers/imapx/camel-imapx-mailbox.c
index d0a8d36..f4cbc70 100644
--- a/src/camel/providers/imapx/camel-imapx-mailbox.c
+++ b/src/camel/providers/imapx/camel-imapx-mailbox.c
@@ -28,6 +28,8 @@
* This is why instantiation requires a #CamelIMAPXListResponse.
**/
+#include "evolution-data-server-config.h"
+
#include "camel-imapx-mailbox.h"
#include "camel-imapx-utils.h"
diff --git a/src/camel/providers/imapx/camel-imapx-namespace-response.c
b/src/camel/providers/imapx/camel-imapx-namespace-response.c
index 219440f..545c3bd 100644
--- a/src/camel/providers/imapx/camel-imapx-namespace-response.c
+++ b/src/camel/providers/imapx/camel-imapx-namespace-response.c
@@ -25,6 +25,8 @@
* #CamelIMAPXNamespaceCategory.
**/
+#include "evolution-data-server-config.h"
+
#include "camel-imapx-namespace-response.h"
#include <string.h>
diff --git a/src/camel/providers/imapx/camel-imapx-namespace.c
b/src/camel/providers/imapx/camel-imapx-namespace.c
index 96cd98f..02b8ee8 100644
--- a/src/camel/providers/imapx/camel-imapx-namespace.c
+++ b/src/camel/providers/imapx/camel-imapx-namespace.c
@@ -25,6 +25,8 @@
* and a mailbox separator character.
**/
+#include "evolution-data-server-config.h"
+
#include "camel-imapx-namespace.h"
#define CAMEL_IMAPX_NAMESPACE_GET_PRIVATE(obj) \
diff --git a/src/camel/providers/imapx/camel-imapx-settings.c
b/src/camel/providers/imapx/camel-imapx-settings.c
index f8535b0..1dca933 100644
--- a/src/camel/providers/imapx/camel-imapx-settings.c
+++ b/src/camel/providers/imapx/camel-imapx-settings.c
@@ -15,6 +15,8 @@
*
*/
+#include "evolution-data-server-config.h"
+
#include "camel-imapx-settings.h"
#define MIN_CONCURRENT_CONNECTIONS 1
diff --git a/src/camel/providers/imapx/camel-imapx-status-response.c
b/src/camel/providers/imapx/camel-imapx-status-response.c
index 3e1168b..6fa1d93 100644
--- a/src/camel/providers/imapx/camel-imapx-status-response.c
+++ b/src/camel/providers/imapx/camel-imapx-status-response.c
@@ -25,6 +25,8 @@
* counts and change tracking indicators.
**/
+#include "evolution-data-server-config.h"
+
#include "camel-imapx-status-response.h"
#include "camel-imapx-utils.h"
diff --git a/src/camel/providers/imapx/camel-imapx-utils.c b/src/camel/providers/imapx/camel-imapx-utils.c
index cc861d5..3c8b1a5 100644
--- a/src/camel/providers/imapx/camel-imapx-utils.c
+++ b/src/camel/providers/imapx/camel-imapx-utils.c
@@ -3166,6 +3166,100 @@ fail:
/* ********************************************************************** */
+#ifdef ENABLE_MAINTAINER_MODE
+
+static void
+imapx_verify_tokens_tab (void)
+{
+ #define item(x) { x, #x }
+ struct _values {
+ camel_imapx_id_t id;
+ const gchar *str;
+ } values[] = {
+ item (IMAPX_ALERT),
+ item (IMAPX_APPENDUID),
+ item (IMAPX_BAD),
+ item (IMAPX_BODY),
+ item (IMAPX_BODYSTRUCTURE),
+ item (IMAPX_BYE),
+ item (IMAPX_CAPABILITY),
+ item (IMAPX_CLOSED),
+ item (IMAPX_COPYUID),
+ item (IMAPX_ENVELOPE),
+ item (IMAPX_EXISTS),
+ item (IMAPX_EXPUNGE),
+ item (IMAPX_FETCH),
+ item (IMAPX_FLAGS),
+ item (IMAPX_HIGHESTMODSEQ),
+ item (IMAPX_INTERNALDATE),
+ item (IMAPX_LIST),
+ item (IMAPX_LSUB),
+ item (IMAPX_MESSAGES),
+ item (IMAPX_MODSEQ),
+ item (IMAPX_NAMESPACE),
+ item (IMAPX_NEWNAME),
+ item (IMAPX_NO),
+ item (IMAPX_NOMODSEQ),
+ item (IMAPX_OK),
+ item (IMAPX_PARSE),
+ item (IMAPX_PERMANENTFLAGS),
+ item (IMAPX_PREAUTH),
+ { IMAPX_READ_ONLY, "READ-ONLY" },
+ { IMAPX_READ_WRITE, "READ-WRITE" },
+ item (IMAPX_RECENT),
+ { IMAPX_RFC822_HEADER, "RFC822.HEADER" },
+ { IMAPX_RFC822_SIZE, "RFC822.SIZE" },
+ { IMAPX_RFC822_TEXT, "RFC822.TEXT" },
+ item (IMAPX_STATUS),
+ item (IMAPX_TRYCREATE),
+ item (IMAPX_UID),
+ item (IMAPX_UIDVALIDITY),
+ item (IMAPX_UNSEEN),
+ item (IMAPX_UIDNEXT),
+ item (IMAPX_VANISHED),
+ item (IMAPX_ALREADYEXISTS),
+ item (IMAPX_AUTHENTICATIONFAILED),
+ item (IMAPX_AUTHORIZATIONFAILED),
+ item (IMAPX_CANNOT),
+ item (IMAPX_CLIENTBUG),
+ item (IMAPX_CONTACTADMIN),
+ item (IMAPX_CORRUPTION),
+ item (IMAPX_EXPIRED),
+ item (IMAPX_EXPUNGEISSUED),
+ item (IMAPX_INUSE),
+ item (IMAPX_LIMIT),
+ item (IMAPX_NONEXISTENT),
+ item (IMAPX_NOPERM),
+ item (IMAPX_OVERQUOTA),
+ item (IMAPX_PRIVACYREQUIRED),
+ item (IMAPX_SERVERBUG),
+ item (IMAPX_UNAVAILABLE)
+ };
+ #undef item
+ gint ii;
+
+ g_warn_if_fail (G_N_ELEMENTS (values) == IMAPX_LAST_ID_VALUE - 1);
+
+ for (ii = 0; ii < G_N_ELEMENTS (values); ii++) {
+ const gchar *token;
+ camel_imapx_id_t found_id;
+
+ token = strchr (values[ii].str, '_');
+ if (token)
+ token++;
+ else
+ token = values[ii].str;
+
+ found_id = imapx_tokenise (token, strlen (token));
+ if (found_id == IMAPX_UNKNOWN)
+ g_warning ("%s: Unknown token %d (%s) in enum, add it to camel-imapx-tokens.txt",
G_STRFUNC, values[ii].id, values[ii].str);
+ else if (found_id != values[ii].id)
+ g_warning ("%s: Token '%s' expected id %d, but got %d", G_STRFUNC, values[ii].str,
values[ii].id, found_id);
+ }
+}
+
+#endif
+
/*
* From rfc2060
*
@@ -3266,6 +3360,10 @@ imapx_utils_init (void)
create_initial_capabilities_table ();
camel_imapx_set_debug_flags ();
+ #ifdef ENABLE_MAINTAINER_MODE
+ imapx_verify_tokens_tab ();
+ #endif
+
g_once_init_leave (&imapx_utils_initialized, 1);
}
}
diff --git a/src/camel/providers/imapx/camel-imapx-utils.h b/src/camel/providers/imapx/camel-imapx-utils.h
index 04c73cb..9f1eaa7 100644
--- a/src/camel/providers/imapx/camel-imapx-utils.h
+++ b/src/camel/providers/imapx/camel-imapx-utils.h
@@ -95,7 +95,10 @@ typedef enum _camel_imapx_id_t {
IMAPX_OVERQUOTA,
IMAPX_PRIVACYREQUIRED,
IMAPX_SERVERBUG,
- IMAPX_UNAVAILABLE
+ IMAPX_UNAVAILABLE,
+
+ /* Sentinel for completeness check */
+ IMAPX_LAST_ID_VALUE
} camel_imapx_id_t;
#define CAMEL_IMAPX_UNTAGGED_BAD "BAD"
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]