]> git.ipfire.org Git - thirdparty/e2fsprogs.git/commitdiff
fsetflags.c (fsetflags), fgetflags.c (fgetflags): Save
authorTheodore Ts'o <tytso@mit.edu>
Sun, 14 Jul 2002 20:13:55 +0000 (16:13 -0400)
committerTheodore Ts'o <tytso@mit.edu>
Sun, 14 Jul 2002 20:13:55 +0000 (16:13 -0400)
errno if the ioctl fails, and restore it just before we
return.

lib/e2p/ChangeLog
lib/e2p/fgetflags.c
lib/e2p/fsetflags.c

index 3a81898c37d78f68a2d73e933906c409314f6433..5dfc86d14fc5e0fbc3f8744cad6bbab444351633 100644 (file)
@@ -1,8 +1,9 @@
 2002-07-14  Theodore Ts'o  <tytso@mit.edu>
 
-       * fsetversion.c (fsetversion), fgetversion.c, fgetversion.c: Save
-               errno if the ioctl fails, and restore it just before we
-               return.
+       * fsetflags.c (fsetflags), fgetflags.c (fgetflags,
+               fsetversion.c (fsetversion), fgetversion.c,
+               fgetversion.c: Save errno if the ioctl fails, and
+               restore it just before we return.
 
        * iod.c (iterate_on_dir): Rewrite function to make it more
                portable.  We now make much fewer assumptions about nature
index c9b4d1eb3ae3fdef6a09a8c6d49d725a2d693d44..ed4ade9ddcd13b6ea9c8fc03c742e928446ecadb 100644 (file)
@@ -63,15 +63,18 @@ int fgetflags (const char * name, unsigned long * flags)
        return 0;
 #else
 #if HAVE_EXT2_IOCTLS
-       int fd, r, f;
+       int fd, r, f, save_errno = 0;
 
        fd = open (name, OPEN_FLAGS);
        if (fd == -1)
                return -1;
        r = ioctl (fd, EXT2_IOC_GETFLAGS, &f);
+       if (r == -1)
+               save_errno = errno;
        *flags = f;
-
        close (fd);
+       if (save_errno)
+               errno = save_errno;
        return r;
 #else /* ! HAVE_EXT2_IOCTLS */
        extern int errno;
index 35266dcd9c049941edd10b49eb126f29f6950d6f..6942c045adbd3e55b07663764c14ca56449bc3d3 100644 (file)
@@ -59,14 +59,18 @@ int fsetflags (const char * name, unsigned long flags)
        return chflags (name, bsd_flags);
 #else
 #if HAVE_EXT2_IOCTLS
-       int fd, r, f;
+       int fd, r, f, save_errno = 0;
 
        fd = open (name, OPEN_FLAGS);
        if (fd == -1)
                return -1;
        f = (int) flags;
        r = ioctl (fd, EXT2_IOC_SETFLAGS, &f);
+       if (r == -1)
+               save_errno = errno;
        close (fd);
+       if (save_errno)
+               errno = save_errno;
        return r;
 #else /* ! HAVE_EXT2_IOCTLS */
        extern int errno;