From 990b6d05ab30a8dd6d5ba69490bd0d8d07a6f67d Mon Sep 17 00:00:00 2001 From: Juli Mallett Date: Thu, 11 Jun 2009 18:04:57 +0000 Subject: 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 --- lib/libufs/type.c | 5 ++++- 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 9b7470a33a84..8a553bedbc97 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 a659116a4f54..25a059e87d69 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, -- cgit v1.2.3