]> granicus.if.org Git - pdns/commitdiff
DNSName: add getLastLabel() function
authorPieter Lexis <pieter.lexis@powerdns.com>
Fri, 31 Mar 2017 12:55:20 +0000 (14:55 +0200)
committerPieter Lexis <pieter.lexis@powerdns.com>
Fri, 7 Apr 2017 09:07:49 +0000 (11:07 +0200)
pdns/dnsname.cc
pdns/dnsname.hh

index 3f98d84877a9f284096a7a3b80ba0f49cc2e3ecc..ac93e2d51b6b34ff8e4a895dbff2da274174a187 100644 (file)
@@ -340,6 +340,13 @@ std::string DNSName::getRawLabel(unsigned int pos) const
   throw std::out_of_range("trying to get label at position "+std::to_string(pos)+" of a DNSName that only has "+std::to_string(currentPos)+" labels");
 }
 
+DNSName DNSName::getLastLabel() const
+{
+  DNSName ret(*this);
+  ret.trimToLabels(1);
+  return ret;
+}
+
 bool DNSName::chopOff()
 {
   if(d_storage.empty() || d_storage[0]==0)
index eba45665cab76660b73a54a9d02f838dbef228e7..4caf7438f1f5af5285f0a335cd8a640bddcc9a86 100644 (file)
@@ -83,6 +83,7 @@ public:
   void prependRawLabel(const std::string& str); //!< Prepend this unescaped label
   std::vector<std::string> getRawLabels() const; //!< Individual raw unescaped labels
   std::string getRawLabel(unsigned int pos) const; //!< Get the specified raw unescaped label
+  DNSName getLastLabel() const; //!< Get the DNSName of the last label
   bool chopOff();                               //!< Turn www.powerdns.com. into powerdns.com., returns false for .
   DNSName makeRelative(const DNSName& zone) const;
   DNSName makeLowerCase() const