git-svn-id: http://svn.linux-vserver.org/svn/util-vserver/trunk@1917
94cd875c-1c1d-0410-91d2-
eb244daf1a30
#include "vserver.h"
-bool
+UnifyStatus
Unify_isIUnlinkable(char const *filename)
{
uint_least32_t const V = VC_IATTR_IUNLINK|VC_IATTR_IMMUTABLE;
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;
}
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) \