Unify_isIUnlinkable(): changed return-type
authorEnrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
Fri, 18 Mar 2005 00:22:06 +0000 (00:22 +0000)
committerEnrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
Fri, 18 Mar 2005 00:22:06 +0000 (00:22 +0000)
git-svn-id: http://svn.linux-vserver.org/svn/util-vserver/trunk@1917 94cd875c-1c1d-0410-91d2-eb244daf1a30

util-vserver/lib_internal/unify-isiunlinkable.c
util-vserver/lib_internal/unify.h

index eb76e15..2ad550a 100644 (file)
@@ -24,7 +24,7 @@
 #include "vserver.h"
 
 
-bool
+UnifyStatus
 Unify_isIUnlinkable(char const *filename)
 {
   uint_least32_t const         V = VC_IATTR_IUNLINK|VC_IATTR_IMMUTABLE;
@@ -32,7 +32,8 @@ Unify_isIUnlinkable(char const *filename)
   uint_least32_t               flags;
   uint_least32_t               mask = V;
 
-  return (vc_get_iattr(filename, 0, &flags, &mask)!=-1 &&
-         (mask  & V)==V &&
-         (flags & V)!=V);
+  if (vc_get_iattr(filename, 0, &flags, &mask)==-1 || (mask & V) != V)
+    return unifyUNSUPPORTED;
+
+  return (flags & V)==V  ? unifyBUSY : unifyUINLINKABLE;
 }
index 30d8e3b..346a058 100644 (file)
@@ -37,7 +37,10 @@ Unify_deUnify(char const *dst) NONNULL((1));
 bool
 Unify_setTime(char const *dst, struct stat const *stat) NONNULL((1,2));
 
-bool
+
+typedef enum { unifyUNSUPPORTED, unifyUINLINKABLE, unifyBUSY } UnifyStatus;
+
+UnifyStatus
 Unify_isIUnlinkable(char const *filename) NONNULL((1));
 
 #define        Unify_isUnified(LHS, RHS)               \