]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Deduplicate string formating
authorMark Andrews <marka@isc.org>
Wed, 14 Sep 2022 07:35:47 +0000 (17:35 +1000)
committerPetr Špaček <pspacek@isc.org>
Tue, 27 Sep 2022 14:54:39 +0000 (16:54 +0200)
bin/named/main.c

index db310881b279ca316f2ecbf45e6100d364ae9d31..541564b98f706556fb4b12161b10d399c33cf09a 100644 (file)
@@ -503,6 +503,55 @@ list_hmac_algorithms(isc_buffer_t *b) {
        }
 }
 
+static void
+logit(isc_buffer_t *b) {
+       isc_log_write(named_g_lctx, NAMED_LOGCATEGORY_GENERAL,
+                     NAMED_LOGMODULE_MAIN, ISC_LOG_WARNING, "%.*s",
+                     (int)isc_buffer_usedlength(b),
+                     (char *)isc_buffer_base(b));
+}
+
+static void
+printit(isc_buffer_t *b) {
+       printf("%.*s\n", (int)isc_buffer_usedlength(b),
+              (char *)isc_buffer_base(b));
+}
+
+static void
+format_supported_algorithms(void (*emit)(isc_buffer_t *b)) {
+       isc_buffer_t b;
+       char buf[512];
+
+       isc_buffer_init(&b, buf, sizeof(buf));
+       isc_buffer_putstr(&b, "DNSSEC algorithms:");
+       list_dnssec_algorithms(&b);
+       (*emit)(&b);
+
+       isc_buffer_init(&b, buf, sizeof(buf));
+       isc_buffer_putstr(&b, "DS algorithms:");
+       list_ds_algorithms(&b);
+       (*emit)(&b);
+
+       isc_buffer_init(&b, buf, sizeof(buf));
+       isc_buffer_putstr(&b, "HMAC algorithms:");
+       list_hmac_algorithms(&b);
+       (*emit)(&b);
+
+       isc_buffer_init(&b, buf, sizeof(buf));
+       isc_buffer_printf(&b, "TKEY mode 2 support (Diffie-Hellman): %s",
+                         (dst_algorithm_supported(DST_ALG_DH) &&
+                          dst_algorithm_supported(DST_ALG_HMACMD5))
+                                 ? "yes"
+                                 : "non");
+       (*emit)(&b);
+
+       isc_buffer_init(&b, buf, sizeof(buf));
+       isc_buffer_printf(&b, "TKEY mode 3 support (GSS-API): %s",
+                         dst_algorithm_supported(DST_ALG_GSSAPI) ? "yes"
+                                                                 : "no");
+       (*emit)(&b);
+}
+
 static void
 printversion(bool verbose) {
        char rndcconf[PATH_MAX], *dot = NULL;
@@ -586,41 +635,14 @@ printversion(bool verbose) {
 
        isc_mem_create(&mctx);
        result = dst_lib_init(mctx, named_g_engine);
-
-       isc_buffer_init(&b, buf, sizeof(buf));
-       isc_buffer_putstr(&b, "DNSSEC algorithms:");
-       if (result == ISC_R_SUCCESS) {
-               list_dnssec_algorithms(&b);
-       }
-       printf("%.*s\n", (int)isc_buffer_usedlength(&b), buf);
-
-       isc_buffer_init(&b, buf, sizeof(buf));
-       isc_buffer_putstr(&b, "DS algorithms:");
-       if (result == ISC_R_SUCCESS) {
-               list_ds_algorithms(&b);
-       }
-       printf("%.*s\n", (int)isc_buffer_usedlength(&b), buf);
-
-       isc_buffer_init(&b, buf, sizeof(buf));
-       isc_buffer_putstr(&b, "HMAC algorithms:");
        if (result == ISC_R_SUCCESS) {
-               list_hmac_algorithms(&b);
+               isc_buffer_init(&b, buf, sizeof(buf));
+               format_supported_algorithms(printit);
+               printf("\n");
+       } else {
+               printf("DST initialization failure: %s\n",
+                      isc_result_totext(result));
        }
-       printf("%.*s\n", (int)isc_buffer_usedlength(&b), buf);
-
-       printf("TKEY mode 2 support (Diffie-Hellman): %s\n",
-              (result == ISC_R_SUCCESS &&
-               dst_algorithm_supported(DST_ALG_DH) &&
-               dst_algorithm_supported(DST_ALG_HMACMD5))
-                      ? "yes"
-                      : "no");
-
-       printf("TKEY mode 3 support (GSS-API): %s\n",
-              (result == ISC_R_SUCCESS &&
-               dst_algorithm_supported(DST_ALG_GSSAPI))
-                      ? "yes"
-                      : "no");
-       printf("\n");
 
        /*
         * The default rndc.conf and rndc.key paths are in the same
@@ -1020,8 +1042,6 @@ setup(void) {
 #ifdef HAVE_LIBSCF
        char *instance = NULL;
 #endif /* ifdef HAVE_LIBSCF */
-       isc_buffer_t b;
-       char buf[512];
 
        /*
         * Get the user and group information before changing the root
@@ -1280,44 +1300,7 @@ setup(void) {
         * Report supported algorithms now that dst_lib_init() has
         * been called via named_server_create().
         */
-       isc_buffer_init(&b, buf, sizeof(buf));
-       isc_buffer_putstr(&b, "DNSSEC algorithms:");
-       list_dnssec_algorithms(&b);
-       isc_log_write(named_g_lctx, NAMED_LOGCATEGORY_GENERAL,
-                     NAMED_LOGMODULE_MAIN, ISC_LOG_NOTICE, "%.*s",
-                     (int)isc_buffer_usedlength(&b), buf);
-
-       isc_buffer_init(&b, buf, sizeof(buf));
-       isc_buffer_putstr(&b, "DS algorithms:");
-       list_ds_algorithms(&b);
-       isc_log_write(named_g_lctx, NAMED_LOGCATEGORY_GENERAL,
-                     NAMED_LOGMODULE_MAIN, ISC_LOG_NOTICE, "%.*s",
-                     (int)isc_buffer_usedlength(&b), buf);
-
-       isc_buffer_init(&b, buf, sizeof(buf));
-       isc_buffer_putstr(&b, "HMAC algorithms:");
-       list_hmac_algorithms(&b);
-       isc_log_write(named_g_lctx, NAMED_LOGCATEGORY_GENERAL,
-                     NAMED_LOGMODULE_MAIN, ISC_LOG_NOTICE, "%.*s",
-                     (int)isc_buffer_usedlength(&b), buf);
-
-       isc_buffer_init(&b, buf, sizeof(buf));
-       isc_buffer_printf(&b, "TKEY mode 2 support (Diffie-Hellman): %s\n",
-                         (dst_algorithm_supported(DST_ALG_DH) &&
-                          dst_algorithm_supported(DST_ALG_HMACMD5))
-                                 ? "yes"
-                                 : "no");
-       isc_log_write(named_g_lctx, NAMED_LOGCATEGORY_GENERAL,
-                     NAMED_LOGMODULE_MAIN, ISC_LOG_NOTICE, "%.*s",
-                     (int)isc_buffer_usedlength(&b), buf);
-
-       isc_buffer_init(&b, buf, sizeof(buf));
-       isc_buffer_printf(&b, "TKEY mode 3 support (GSS-API): %s\n",
-                         dst_algorithm_supported(DST_ALG_GSSAPI) ? "yes"
-                                                                 : "no");
-       isc_log_write(named_g_lctx, NAMED_LOGCATEGORY_GENERAL,
-                     NAMED_LOGMODULE_MAIN, ISC_LOG_NOTICE, "%.*s",
-                     (int)isc_buffer_usedlength(&b), buf);
+       format_supported_algorithms(logit);
 
        /*
         * Modify server context according to command line options