diff options
author | jmallett <jmallett@FreeBSD.org> | 2009-06-11 18:04:57 +0000 |
---|---|---|
committer | jmallett <jmallett@FreeBSD.org> | 2009-06-11 18:04:57 +0000 |
commit | a546579eb7ccb06af0c08ac5334753e0613895e4 (patch) | |
tree | 8ecb5eb23603f1b6c1ced0476a36ae485af85109 /lib/libufs | |
parent | 55714a998bb93ddc2d3cd2f3559f3ae4d2f93eb0 (diff) | |
download | FreeBSD-src-a546579eb7ccb06af0c08ac5334753e0613895e4.zip FreeBSD-src-a546579eb7ccb06af0c08ac5334753e0613895e4.tar.gz |
Allow libufs(3) functions to operate on a regular file. This makes it possible to
use almost anything that uses libufs(3) against a file as an unprivileged user, e.g.
tunefs(8) and dumpfs(8) against a makefs(8)-created image.
Prodded by: kensmith
Diffstat (limited to 'lib/libufs')
-rw-r--r-- | lib/libufs/type.c | 5 | ||||
-rw-r--r-- | lib/libufs/ufs_disk_close.3 | 2 |
2 files changed, 5 insertions, 2 deletions
diff --git a/lib/libufs/type.c b/lib/libufs/type.c index 9b7470a..8a553be 100644 --- a/lib/libufs/type.c +++ b/lib/libufs/type.c @@ -108,7 +108,10 @@ again: if ((ret = stat(name, &st)) < 0) { */ name = oname; } - if (ret >= 0 && S_ISCHR(st.st_mode)) { + if (ret >= 0 && S_ISREG(st.st_mode)) { + /* Possibly a disk image, give it a try. */ + ; + } else if (ret >= 0 && S_ISCHR(st.st_mode)) { /* This is what we need, do nothing. */ ; } else if ((fs = getfsfile(name)) != NULL) { diff --git a/lib/libufs/ufs_disk_close.3 b/lib/libufs/ufs_disk_close.3 index a659116..25a059e 100644 --- a/lib/libufs/ufs_disk_close.3 +++ b/lib/libufs/ufs_disk_close.3 @@ -53,7 +53,7 @@ and populate the structure pointed to by The disk is opened read-only. The specified .Fa name -may be either a mountpoint, or a device name. +may be either a mountpoint, a device name or a filesystem image. The .Fn ufs_disk_fillout function assumes there is a valid superblock and will fail if not, |