]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
Make addS() more versatile and use modern C++ (enable_if_t). 10856/head
authorOtto <otto.moerbeek@open-xchange.com>
Mon, 18 Oct 2021 07:24:25 +0000 (09:24 +0200)
committerOtto <otto.moerbeek@open-xchange.com>
Mon, 18 Oct 2021 07:24:25 +0000 (09:24 +0200)
Use new args pdnsutil to get primary vs primaries correct.

pdns/misc.hh
pdns/pdnsutil.cc

index 193074d8df26b857c6e356ac544970c9e0a33034..aad2340fb943be580dea071017f83594190f6053 100644 (file)
@@ -591,18 +591,21 @@ T valueOrEmpty(const P val) {
 
 
 // I'm not very OCD, but I appreciate loglines like "processing 1 delta", "processing 2 deltas" :-)
-template <typename Integer>
-const char* addS(Integer siz, typename std::enable_if<std::is_integral<Integer>::value>::type*P=0)
+template <typename Integer,
+typename std::enable_if_t<std::is_integral<Integer>::value, bool> = true>
+const char* addS(Integer siz, const char* singular = "", const char *plural = "s")
 {
-  if(!siz || siz > 1)
-    return "s";
-  else return "";
+  if (siz == 1) {
+    return singular;
+  }
+  return plural;
 }
 
-template<typename C>
-const char* addS(const C& c, typename std::enable_if<std::is_class<C>::value>::type*P=0)
+template <typename C,
+typename std::enable_if_t<std::is_class<C>::value, bool> = true>
+const char* addS(const C& c, const char* singular = "", const char *plural = "s")
 {
-  return addS(c.size());
+  return addS(c.size(), singular, plural);
 }
 
 template<typename C>
index a92b19e86186a48e174339b9027e063e9bb749cf..8da10873ca82bcde3d323eac350088aeda0d5c54 100644 (file)
@@ -1844,7 +1844,7 @@ static bool showZone(DNSSECKeeper& dk, const DNSName& zone, bool exportDS = fals
       }
     }
     else if(di.kind == DomainInfo::Slave) {
-      cout << "Primary" << addS(di.masters) << ": ";
+      cout << "Primar" << addS(di.masters, "y", "ies") << ": ";
       for(const auto& m : di.masters)
         cout<<m.toStringWithPort()<<" ";
       cout<<endl;