Add filesystem::addmode/delmode to add/delete specific permissson bits.
authorMichael Andres <ma@suse.de>
Fri, 27 Nov 2009 09:55:23 +0000 (10:55 +0100)
committerMichael Andres <ma@suse.de>
Fri, 27 Nov 2009 09:55:23 +0000 (10:55 +0100)
zypp/PathInfo.cc
zypp/PathInfo.h

index 25bec31..a8aa743 100644 (file)
@@ -1017,7 +1017,25 @@ namespace zypp
       return _Log_Result( 0 );
     }
 
-    ///////////////////////////////////////////////////////////////////
+    int addmod( const Pathname & path, mode_t mode )
+    {
+      mode_t omode( PathInfo( path ).st_mode() );
+      mode_t tmode( omode | mode );
+      if ( omode != mode )
+        return chmod( path, tmode );
+      return 0;
+    }
+
+    int delmod( const Pathname & path, mode_t mode )
+    {
+      mode_t omode( PathInfo( path ).st_mode() );
+      mode_t tmode( omode & ~mode );
+      if ( omode != mode )
+        return chmod( path, tmode );
+      return 0;
+    }
+
+   //////////////////////////////////////////////////////////////////
     //
     // METHOD NAME : zipType
     // METHOD TYPE : ZIP_TYPE
index 43376f8..e5ddf2d 100644 (file)
@@ -693,6 +693,20 @@ namespace zypp
      * @return 0 on success, errno on failure
      **/
     int chmod( const Pathname & path, mode_t mode );
+
+    /**
+     * Add the \c mode bits to the file given by path.
+     *
+     * @return 0 on success, errno on failure
+     */
+    int addmod( const Pathname & path, mode_t mode );
+
+    /**
+     * Remove the \c mode bits from the file given by path.
+     *
+     * @return 0 on success, errno on failure
+     */
+    int delmod( const Pathname & path, mode_t mode );
     //@}
 
     ///////////////////////////////////////////////////////////////////