From: Enrico Scholz Date: Fri, 18 Mar 2005 00:22:06 +0000 (+0000) Subject: Unify_isIUnlinkable(): changed return-type X-Git-Tag: IPSENTINEL_VERSION_0_12~77 X-Git-Url: http://git.linux-vserver.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d1cce71d997f0bfce8f476e23ec10372625ea7a0;p=util-vserver.git Unify_isIUnlinkable(): changed return-type git-svn-id: http://svn.linux-vserver.org/svn/util-vserver/trunk@1917 94cd875c-1c1d-0410-91d2-eb244daf1a30 --- diff --git a/util-vserver/lib_internal/unify-isiunlinkable.c b/util-vserver/lib_internal/unify-isiunlinkable.c index eb76e15..2ad550a 100644 --- a/util-vserver/lib_internal/unify-isiunlinkable.c +++ b/util-vserver/lib_internal/unify-isiunlinkable.c @@ -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; } diff --git a/util-vserver/lib_internal/unify.h b/util-vserver/lib_internal/unify.h index 30d8e3b..346a058 100644 --- a/util-vserver/lib_internal/unify.h +++ b/util-vserver/lib_internal/unify.h @@ -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) \