summaryrefslogtreecommitdiffstats
path: root/lib/libufs
diff options
context:
space:
mode:
authorjmallett <jmallett@FreeBSD.org>2009-06-11 18:04:57 +0000
committerjmallett <jmallett@FreeBSD.org>2009-06-11 18:04:57 +0000
commita546579eb7ccb06af0c08ac5334753e0613895e4 (patch)
tree8ecb5eb23603f1b6c1ced0476a36ae485af85109 /lib/libufs
parent55714a998bb93ddc2d3cd2f3559f3ae4d2f93eb0 (diff)
downloadFreeBSD-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.c5
-rw-r--r--lib/libufs/ufs_disk_close.32
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,
OpenPOWER on IntegriCloud