diff options
author | Sergey Poznyakoff <gray@gnu.org> | 2018-09-24 09:02:19 +0300 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org> | 2018-09-24 09:02:19 +0300 |
commit | 546f4105fb1bdbbfdceff389264b3f344912bea5 (patch) | |
tree | 1442ff532da25db1666044d9cbf1a837d64d74ca | |
parent | 6fa835523e3fbef75ab18dc8cdf93c6200c783c4 (diff) | |
download | dico-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.c | 7 | ||||
-rw-r--r-- | dicod/dicod.h | 1 | ||||
-rw-r--r-- | dicod/markup.c | 24 |
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); } |