commit - 43f16cfa921aabdddf07bc996d8690dd66c1f364
commit + 9752950804975918aa299b8cd525961c1c2bae45
blob - e092b0cfbf42d899927d88d3693e311b4e2de230
blob + 60c9b10c48c1af3c51fc2af24e317bcef2763901
--- src/lib9/_p9dir.c
+++ src/lib9/_p9dir.c
#include <pwd.h>
#include <grp.h>
-#if defined(__FreeBSD__) || defined(__OpenBSD__)
+#if defined(__FreeBSD__)
+#include <sys/disk.h>
#include <sys/disklabel.h>
#include <sys/ioctl.h>
-#define _HAVEDISKLABEL
#endif
#if defined(__OpenBSD__)
+#include <sys/disklabel.h>
+#include <sys/ioctl.h>
+#define _HAVEDISKLABEL
static int diskdev[] = {
151, /* aacd */
116, /* ad */
close(fd);
}
#endif
-#ifdef _HAVEDISKLABEL
+#if defined(__FreeBSD__)
+ if(isdisk(st)){
+ int fd;
+ off_t mediasize;
+
+ if((fd = open(name, O_RDONLY)) >= 0){
+ if(ioctl(fd, DIOCGMEDIASIZE, &mediasize) >= 0)
+ d->length = mediasize;
+ close(fd);
+ }
+ }
+#elif defined(_HAVEDISKLABEL)
if(isdisk(st)){
int fd, n;
struct disklabel lab;