aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org>2018-09-24 09:02:19 +0300
committerSergey Poznyakoff <gray@gnu.org>2018-09-24 09:02:19 +0300
commit546f4105fb1bdbbfdceff389264b3f344912bea5 (patch)
tree1442ff532da25db1666044d9cbf1a837d64d74ca
parent6fa835523e3fbef75ab18dc8cdf93c6200c783c4 (diff)
downloaddico-546f4105fb1bdbbfdceff389264b3f344912bea5.tar.gz
dico-546f4105fb1bdbbfdceff389264b3f344912bea5.tar.bz2
dicod: report markup types on startup only if the "markup" capability is requested
-rw-r--r--dicod/capa.c7
-rw-r--r--dicod/dicod.h1
-rw-r--r--dicod/markup.c24
3 files changed, 21 insertions, 11 deletions
diff --git a/dicod/capa.c b/dicod/capa.c
index f878115..af36a4a 100644
--- a/dicod/capa.c
+++ b/dicod/capa.c
@@ -62,6 +62,13 @@ dicod_capa_add(const char *name)
}
int
+dicod_capa_is_enabled(const char *name)
+{
+ struct dicod_capa *cp = dico_list_locate(capa_list, (void*)name);
+ return cp ? cp->enabled : 0;
+}
+
+int
dicod_capa_flush(void)
{
dico_iterator_t itr;
diff --git a/dicod/dicod.h b/dicod/dicod.h
index 6fa8f99..d554e25 100644
--- a/dicod/dicod.h
+++ b/dicod/dicod.h
@@ -243,6 +243,7 @@ void dicod_capa_register(const char *name, struct dicod_command *cmd,
int dicod_capa_add(const char *name);
void dicod_capa_iterate(int (*fun)(const char*, int, void *), void *closure);
int dicod_capa_flush(void);
+int dicod_capa_is_enabled(const char *name);
/* lang.c */
void register_lang(void);
diff --git a/dicod/markup.c b/dicod/markup.c
index 0839ffe..c2cc189 100644
--- a/dicod/markup.c
+++ b/dicod/markup.c
@@ -49,16 +49,18 @@ register_markup(void)
void
markup_flush_capa(void)
{
- dico_iterator_t itr;
- const char *p;
-
- itr = xdico_list_iterator(dico_markup_list);
- for (p = dico_iterator_first(itr); p; p = dico_iterator_next(itr)) {
- size_t len = sizeof(MARKUP_CAPA_PREFIX) + strlen(p);
- char *str = xmalloc(len);
- strcat(strcpy(str, MARKUP_CAPA_PREFIX), p);
- dicod_capa_register(str, NULL, NULL, NULL);
- dicod_capa_add(str);
+ if (dicod_capa_is_enabled("markup")) {
+ dico_iterator_t itr;
+ const char *p;
+
+ itr = xdico_list_iterator(dico_markup_list);
+ for (p = dico_iterator_first(itr); p; p = dico_iterator_next(itr)) {
+ size_t len = sizeof(MARKUP_CAPA_PREFIX) + strlen(p);
+ char *str = xmalloc(len);
+ strcat(strcpy(str, MARKUP_CAPA_PREFIX), p);
+ dicod_capa_register(str, NULL, NULL, NULL);
+ dicod_capa_add(str);
+ }
+ dico_iterator_destroy(&itr);
}
- dico_iterator_destroy(&itr);
}

Return to:

Send suggestions and report system problems to the System administrator.