Module Name: src Committed By: msaitoh Date: Mon May 25 09:10:48 UTC 2015
Modified Files: src/sbin/fsck [netbsd-7]: partutil.c partutil.h Log Message: Pull up following revision(s) (requested by jnemeth in ticket #793): sbin/fsck/partutil.c: revision 1.13 sbin/fsck/partutil.h: revision 1.3 Provide a simple getdisksize() api for gpt(8). To generate a diff of this commit: cvs rdiff -u -r1.12 -r1.12.6.1 src/sbin/fsck/partutil.c cvs rdiff -u -r1.2 -r1.2.40.1 src/sbin/fsck/partutil.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sbin/fsck/partutil.c diff -u src/sbin/fsck/partutil.c:1.12 src/sbin/fsck/partutil.c:1.12.6.1 --- src/sbin/fsck/partutil.c:1.12 Sat Apr 13 22:08:57 2013 +++ src/sbin/fsck/partutil.c Mon May 25 09:10:48 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: partutil.c,v 1.12 2013/04/13 22:08:57 jakllsch Exp $ */ +/* $NetBSD: partutil.c,v 1.12.6.1 2015/05/25 09:10:48 msaitoh Exp $ */ /*- * Copyright (c) 2006 The NetBSD Foundation, Inc. @@ -30,9 +30,10 @@ */ #include <sys/cdefs.h> -__RCSID("$NetBSD: partutil.c,v 1.12 2013/04/13 22:08:57 jakllsch Exp $"); +__RCSID("$NetBSD: partutil.c,v 1.12.6.1 2015/05/25 09:10:48 msaitoh Exp $"); #include <sys/types.h> +#include <sys/param.h> #include <sys/disklabel.h> #include <sys/disk.h> #include <sys/ioctl.h> @@ -135,8 +136,10 @@ getdiskinfo(const char *s, int fd, const "DIOCGDINFO for disk device %s", s); } - /* DIOCGDINFO didn't fail */ + if (dkw == NULL) + return 0; + /* DIOCGDINFO didn't fail */ (void)memset(dkw, 0, sizeof(*dkw)); if (stat(s, &sb) == -1) @@ -161,3 +164,23 @@ getdiskinfo(const char *s, int fd, const return 0; } + +int +getdisksize(const char *name, u_int *secsize, off_t *mediasize) +{ + char buf[MAXPATHLEN]; + struct disk_geom geo; + int fd, error; + + if ((fd = opendisk(name, O_RDONLY, buf, sizeof(buf), 0)) == -1) + return -1; + + error = getdiskinfo(name, fd, NULL, &geo, NULL); + close(fd); + if (error) + return error; + + *secsize = geo.dg_secsize; + *mediasize = geo.dg_secsize * geo.dg_secperunit; + return 0; +} Index: src/sbin/fsck/partutil.h diff -u src/sbin/fsck/partutil.h:1.2 src/sbin/fsck/partutil.h:1.2.40.1 --- src/sbin/fsck/partutil.h:1.2 Mon Apr 28 20:23:08 2008 +++ src/sbin/fsck/partutil.h Mon May 25 09:10:48 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: partutil.h,v 1.2 2008/04/28 20:23:08 martin Exp $ */ +/* $NetBSD: partutil.h,v 1.2.40.1 2015/05/25 09:10:48 msaitoh Exp $ */ /*- * Copyright (c) 2006 The NetBSD Foundation, Inc. @@ -32,8 +32,11 @@ #define _PARTUTIL_H_ __BEGIN_DECLS +struct dkwedge_info; +struct disk_geom; int getdiskinfo(const char *, int, const char *, struct disk_geom *, struct dkwedge_info *); +int getdisksize(const char *, u_int *, off_t *); __END_DECLS #endif /* _PARTUTIL_H_ */