when ioctl() returns a value <-1, assign errno manually and return -1
authorEnrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
Thu, 22 Jan 2004 13:36:30 +0000 (13:36 +0000)
committerEnrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
Thu, 22 Jan 2004 13:36:30 +0000 (13:36 +0000)
git-svn-id: http://svn.linux-vserver.org/svn/util-vserver/trunk@685 94cd875c-1c1d-0410-91d2-eb244daf1a30

util-vserver/lib/ioctl-getext2flags.hc
util-vserver/lib/ioctl-getfilecontext.hc
util-vserver/lib/ioctl-getxflg.hc
util-vserver/lib/ioctl-setext2flags.hc
util-vserver/lib/ioctl-setfilecontext.hc
util-vserver/lib/ioctl-setxflg.hc

index 4d56f90..adb4346 100644 (file)
@@ -41,5 +41,10 @@ vc_X_get_ext2flags(int fd, long *flags)
   rc = ioctl(fd, EXT2_IOC_GETFLAGS, flags);
   *flags = EXT2FLAGS_KERNEL2USER(*flags);
 
+  if (rc<-1) {
+    errno = -rc;
+    rc    = -1;
+  }
+
   return rc;
 }
index 6426466..d7970f9 100644 (file)
@@ -31,6 +31,11 @@ vc_X_get_filecontext(int fd)
   int          c;
   int          rc = ioctl(fd, EXT2_IOC_GETCONTEXT, &c);
 
+  if (rc<-1) {
+    errno = -rc;
+    rc    = -1;
+  }
+  
   if (rc==-1) return VC_NOCTX;
   else        return c;
 }
index 3ea109a..6006f97 100644 (file)
@@ -34,5 +34,10 @@ vc_X_get_xflg(int fd, long *flags)
   *flags = 0;
   rc = ioctl(fd, FIOC_GETXFLG, flags);
 
+  if (rc<-1) {
+    errno = -rc;
+    rc    = -1;
+  }
+  
   return rc;
 }
index d5d7323..e07d711 100644 (file)
@@ -37,6 +37,7 @@ static inline ALWAYSINLINE int
 vc_X_set_ext2flags(int fd, long set_flags, long del_flags)
 {
   long         old_flags = 0;
+  int          rc;
 
   set_flags = EXT2FLAGS_USER2KERNEL(set_flags);
   del_flags = EXT2FLAGS_USER2KERNEL(del_flags);
@@ -47,5 +48,12 @@ vc_X_set_ext2flags(int fd, long set_flags, long del_flags)
   }
 
   old_flags |= set_flags;
-  return ioctl(fd, EXT2_IOC_SETFLAGS, &old_flags);
+  rc = ioctl(fd, EXT2_IOC_SETFLAGS, &old_flags);
+
+  if (rc<-1) {
+    errno = -rc;
+    rc    = -1;
+  }
+
+  return rc;
 }
index e846c12..c07f1ba 100644 (file)
@@ -31,5 +31,10 @@ vc_X_set_filecontext(int fd, xid_t ctx)
   int  c  = ctx;
   int  rc = ioctl(fd, EXT2_IOC_SETCONTEXT, &c);
 
+  if (rc<-1) {
+    errno = -rc;
+    rc    = -1;
+  }
+  
   return rc;
 }
index 7224d11..24cee02 100644 (file)
@@ -33,5 +33,10 @@ vc_X_set_xflg(int fd, long flags)
   int          rc;
   rc = ioctl(fd, FIOC_SETXFLG, &flags);
 
+  if (rc<-1) {
+    errno = -rc;
+    rc    = -1;
+  }
+
   return rc;
 }