summaryrefslogtreecommitdiff
path: root/lib/e2p/fgetversion.c
diff options
context:
space:
mode:
authorTheodore Ts'o <tytso@mit.edu>2002-07-14 15:58:38 -0400
committerTheodore Ts'o <tytso@mit.edu>2002-07-14 15:58:38 -0400
commit593c6ead7e3bca412eff2d17edad790de81cb0eb (patch)
treea08e113be6ce5f40f9656cd2263e41293ec5f9ec /lib/e2p/fgetversion.c
parentf154d2f687e922f8444ef3050dc83f5d8e0e2178 (diff)
downloade2fsprogs-593c6ead7e3bca412eff2d17edad790de81cb0eb.tar.gz
Various portability fixes which should help out HURD.
The iterate_on_dir function in libe2p has been changed to be more general, so it relies less on the layout of struct dirent. We also make sure the errno returned by the ioctl is returned by fgetversion() and fsetversion().
Diffstat (limited to 'lib/e2p/fgetversion.c')
-rw-r--r--lib/e2p/fgetversion.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/lib/e2p/fgetversion.c b/lib/e2p/fgetversion.c
index b934c93e..404258a8 100644
--- a/lib/e2p/fgetversion.c
+++ b/lib/e2p/fgetversion.c
@@ -37,14 +37,18 @@
int fgetversion (const char * name, unsigned long * version)
{
#if HAVE_EXT2_IOCTLS
- int fd, r, ver;
+ int fd, r, ver, save_errno = 0;
fd = open (name, OPEN_FLAGS);
if (fd == -1)
- return - 1;
+ return -1;
r = ioctl (fd, EXT2_IOC_GETVERSION, &ver);
+ if (r == -1)
+ save_errno = errno;
*version = ver;
close (fd);
+ if (save_errno)
+ errno = save_errno;
return r;
#else /* ! HAVE_EXT2_IOCTLS */
extern int errno;