- Added method Pathname::extension: Return all of the characters in name
authorMichael Andres <ma@suse.de>
Wed, 30 Aug 2006 20:54:27 +0000 (20:54 +0000)
committerMichael Andres <ma@suse.de>
Wed, 30 Aug 2006 20:54:27 +0000 (20:54 +0000)
  after and including the last dot in the last element of name.

zypp/Pathname.cc
zypp/Pathname.h

index 0b4c1ed63b637597b675ee0928b0cb1034b15287..ab7b639f829cff9600331f4621dd24b6311ce654 100644 (file)
@@ -213,7 +213,7 @@ namespace zypp
     string Pathname::basename( const Pathname & name_tv )
     {
       if ( name_tv.empty() )
-        return "";
+        return string();
 
       string ret_t( name_tv.asString() );
       ret_t.erase( 0, name_tv.prfx_i );
@@ -225,6 +225,23 @@ namespace zypp
       return ret_t;
     }
 
+    ///////////////////////////////////////////////////////////////////
+    //
+    // METHOD NAME : Pathname::extension
+    // METHOD TYPE : string
+    //
+    string Pathname::extension( const Pathname & name_tv )
+    {
+      if ( name_tv.empty() )
+        return string();
+
+      string base( basename( name_tv ) );
+      string::size_type pos = base.rfind( '.' );
+      if ( pos == string::npos )
+        return string();
+      return base.substr( pos );
+    }
+
     ///////////////////////////////////////////////////////////////////
     //
     // METHOD NAME : Pathname::cat
index af00683ce1db101dfae4fd911b66a9169444c5b9..b431fd6b318bd19eb93feebb5d028aa06ba59ff0 100644 (file)
@@ -92,6 +92,13 @@ namespace zypp
       std::string basename() const { return basename( *this ); }
       static std::string basename( const Pathname & name_tv );
 
+      /** Return all of the characters in name after and including
+       * the last dot in the last element of name.  If there is no dot
+       * in the last element of name then returns the empty string.
+      */
+      std::string extension() const { return extension( *this ); }
+      static std::string extension( const Pathname & name_tv );
+
       /** Return this path, adding a leading '/' if relative. */
       Pathname absolutename() const { return absolutename( *this ); }
       static Pathname absolutename( const Pathname & name_tv )