renamed *-v11 to *-fscompat
[util-vserver.git] / util-vserver / lib / fscompat_getiattr.c
1 // $Id$    --*- c -*--
2
3 // Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
4 //  
5 // This program is free software; you can redistribute it and/or modify
6 // it under the terms of the GNU General Public License as published by
7 // the Free Software Foundation; version 2 of the License.
8 //  
9 // This program is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 // GNU General Public License for more details.
13 //  
14 // You should have received a copy of the GNU General Public License
15 // along with this program; if not, write to the Free Software
16 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
17
18
19 #ifdef HAVE_CONFIG_H
20 #  include <config.h>
21 #endif
22
23 #include "vserver.h"
24 #include "vserver-internal.h"
25 #include <fcntl.h>
26
27 #ifdef VC_ENABLE_API_FSCOMPAT
28 #  include "fscompat_getiattr-v11.hc"
29 #endif
30
31 int
32 vc_get_iattr_compat(char const *filename,
33                     dev_t dev, ino_t ino,
34                     xid_t    * /*@null@*/ xid,
35                     uint32_t * /*@null@*/ flags,
36                     uint32_t * mask)
37 {
38 #ifdef VC_ENABLE_API_FSCOMPAT
39   int           ver = utilvserver_checkCompatVersion();
40   if (ver==-1) return -1;
41 #endif
42
43   if ( (mask==0) ||
44        ((*mask&VC_IATTR_XID)  && xid==0) ||
45        ((*mask&~VC_IATTR_XID) && flags==0) ) {
46     errno = EINVAL;
47     return -1;
48   }
49   if ( flags ) *flags &= ~*mask;
50   
51 #ifdef VC_ENABLE_API_FSCOMPAT
52   if ((ver&0xffff)<=4)
53     return vc_get_iattr_compat_v11(filename, dev, ino, xid, flags, mask);
54 #endif
55
56 #ifdef VC_ENABLE_API_V13
57   return vc_get_iattr(dev, ino, xid, flags, mask);
58 #endif
59
60   errno = ENOSYS;
61   return -1;
62 }