On Thu, Feb 07, 2013 at 02:24:10PM +0000, Matthew Booth wrote:
---
daemon/devsparts.c | 27 +++++++++++++++++++++++++++
generator/actions.ml | 17 +++++++++++++++++
src/MAX_PROC_NR | 2 +-
3 files changed, 45 insertions(+), 1 deletion(-)
diff --git a/daemon/devsparts.c b/daemon/devsparts.c
index 9a2ce9a..1939f2a 100644
--- a/daemon/devsparts.c
+++ b/daemon/devsparts.c
@@ -245,6 +245,33 @@ do_part_to_partnum (const char *part)
}
int
+do_is_whole_device (const char *device)
+{
+ #define PREFIX "/dev/"
+
+ /* Shouldn't be possible because we already sanity checked our input */
+ if (!STRPREFIX (device, PREFIX)) return 0;
There's no need for this test.
+ CLEANUP_FREE char *devpath = NULL;
+ if (asprintf (&devpath, "/sys/block/%s/device",
+ device + strlen (PREFIX)) == -1)
+ {
+ reply_with_perror ("asprintf");
+ return -1;
+ }
+
+ struct stat statbuf;
+ if (stat (devpath, &statbuf) == -1) {
+ if (errno == ENOENT || errno == ENOTDIR) return 0;
+
+ reply_with_perror ("stat");
+ return -1;
+ }
+
+ return 1;
+}
This test seems fine. Is it worth adding S_ISDIR (statbuf.st_mode)?
Rich.
--
Richard Jones, Virtualization Group, Red Hat
http://people.redhat.com/~rjones
Fedora Windows cross-compiler. Compile Windows programs, test, and
build Windows installers. Over 100 libraries supported.
http://fedoraproject.org/wiki/MinGW