svn commit: r213074 - head/sbin/geom/misc

Pawel Jakub Dawidek pjd at FreeBSD.org
Thu Sep 23 12:04:13 UTC 2010


Author: pjd
Date: Thu Sep 23 12:04:12 2010
New Revision: 213074
URL: http://svn.freebsd.org/changeset/base/213074

Log:
  - Simplify code by using g_*() API.
  - Don't use u_char and u_int in userland.
  - Change 'unsigned' to 'unsigned int'.
  - Update copyright years.
  
  MFC after:	1 week

Modified:
  head/sbin/geom/misc/subr.c
  head/sbin/geom/misc/subr.h

Modified: head/sbin/geom/misc/subr.c
==============================================================================
--- head/sbin/geom/misc/subr.c	Thu Sep 23 12:02:42 2010	(r213073)
+++ head/sbin/geom/misc/subr.c	Thu Sep 23 12:04:12 2010	(r213074)
@@ -1,5 +1,5 @@
 /*-
- * Copyright (c) 2004 Pawel Jakub Dawidek <pjd at FreeBSD.org>
+ * Copyright (c) 2004-2010 Pawel Jakub Dawidek <pjd at FreeBSD.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -54,30 +54,20 @@ struct std_metadata {
 };
 
 static void
-std_metadata_decode(const u_char *data, struct std_metadata *md)
+std_metadata_decode(const unsigned char *data, struct std_metadata *md)
 {
 
         bcopy(data, md->md_magic, sizeof(md->md_magic));
         md->md_version = le32dec(data + 16);
 }
 
-static void
-pathgen(const char *name, char *path, size_t size)
-{
-
-	if (strncmp(name, _PATH_DEV, strlen(_PATH_DEV)) != 0)
-		snprintf(path, size, "%s%s", _PATH_DEV, name);
-	else
-		strlcpy(path, name, size);
-}
-
 /*
  * Greatest Common Divisor.
  */
-static unsigned
-gcd(unsigned a, unsigned b)
+static unsigned int
+gcd(unsigned int a, unsigned int b)
 {
-	u_int c;
+	unsigned int c;
 
 	while (b != 0) {
 		c = a;
@@ -90,8 +80,8 @@ gcd(unsigned a, unsigned b)
 /*
  * Least Common Multiple.
  */
-unsigned
-g_lcm(unsigned a, unsigned b)
+unsigned int
+g_lcm(unsigned int a, unsigned int b)
 {
 
 	return ((a * b) / gcd(a, b));
@@ -129,7 +119,7 @@ bitcount32(uint32_t x)
  *
  */
 int
-g_parse_lba(const char *lbastr, unsigned sectorsize, off_t *sectors)
+g_parse_lba(const char *lbastr, unsigned int sectorsize, off_t *sectors)
 {
 	off_t number, mult, unit;
 	char *s;
@@ -200,76 +190,69 @@ done:
 off_t
 g_get_mediasize(const char *name)
 {
-	char path[MAXPATHLEN];
 	off_t mediasize;
 	int fd;
 
-	pathgen(name, path, sizeof(path));
-	fd = open(path, O_RDONLY);
+	fd = g_open(name, 0);
 	if (fd == -1)
 		return (0);
-	if (ioctl(fd, DIOCGMEDIASIZE, &mediasize) < 0) {
-		close(fd);
-		return (0);
-	}
-	close(fd);
+	mediasize = g_mediasize(fd);
+	if (mediasize == -1)
+		mediasize = 0;
+	(void)g_close(fd);
 	return (mediasize);
 }
 
-unsigned
+unsigned int
 g_get_sectorsize(const char *name)
 {
-	char path[MAXPATHLEN];
-	unsigned sectorsize;
+	ssize_t sectorsize;
 	int fd;
 
-	pathgen(name, path, sizeof(path));
-	fd = open(path, O_RDONLY);
+	fd = g_open(name, 0);
 	if (fd == -1)
 		return (0);
-	if (ioctl(fd, DIOCGSECTORSIZE, &sectorsize) < 0) {
-		close(fd);
-		return (0);
-	}
-	close(fd);
-	return (sectorsize);
+	sectorsize = g_sectorsize(fd);
+	if (sectorsize == -1)
+		sectorsize = 0;
+	(void)g_close(fd);
+	return ((unsigned int)sectorsize);
 }
 
 int
-g_metadata_read(const char *name, u_char *md, size_t size, const char *magic)
+g_metadata_read(const char *name, unsigned char *md, size_t size,
+    const char *magic)
 {
 	struct std_metadata stdmd;
-	char path[MAXPATHLEN];
-	unsigned sectorsize;
+	unsigned char *sector;
+	ssize_t sectorsize;
 	off_t mediasize;
-	u_char *sector;
 	int error, fd;
 
-	pathgen(name, path, sizeof(path));
 	sector = NULL;
 	error = 0;
 
-	fd = open(path, O_RDONLY);
+	fd = g_open(name, 0);
 	if (fd == -1)
 		return (errno);
-	mediasize = g_get_mediasize(name);
-	if (mediasize == 0) {
+	mediasize = g_mediasize(fd);
+	if (mediasize == -1) {
 		error = errno;
 		goto out;
 	}
-	sectorsize = g_get_sectorsize(name);
-	if (sectorsize == 0) {
+	sectorsize = g_sectorsize(fd);
+	if (sectorsize == -1) {
 		error = errno;
 		goto out;
 	}
-	assert(sectorsize >= size);
+	assert(sectorsize >= (ssize_t)size);
 	sector = malloc(sectorsize);
 	if (sector == NULL) {
 		error = ENOMEM;
 		goto out;
 	}
 	if (pread(fd, sector, sectorsize, mediasize - sectorsize) !=
-	    (ssize_t)sectorsize) {
+	    sectorsize) {
 		error = errno;
 		goto out;
 	}
@@ -284,37 +267,35 @@ g_metadata_read(const char *name, u_char
 out:
 	if (sector != NULL)
 		free(sector);
-	close(fd);
+	g_close(fd);
 	return (error);
 }
 
 int
-g_metadata_store(const char *name, u_char *md, size_t size)
+g_metadata_store(const char *name, const unsigned char *md, size_t size)
 {
-	char path[MAXPATHLEN];
-	unsigned sectorsize;
+	unsigned char *sector;
+	ssize_t sectorsize;
 	off_t mediasize;
-	u_char *sector;
 	int error, fd;
 
-	pathgen(name, path, sizeof(path));
 	sector = NULL;
 	error = 0;
 
-	fd = open(path, O_WRONLY);
+	fd = g_open(name, 1);
 	if (fd == -1)
 		return (errno);
-	mediasize = g_get_mediasize(name);
-	if (mediasize == 0) {
+	mediasize = g_mediasize(fd);
+	if (mediasize == -1) {
 		error = errno;
 		goto out;
 	}
-	sectorsize = g_get_sectorsize(name);
-	if (sectorsize == 0) {
+	sectorsize = g_sectorsize(fd);
+	if (sectorsize == -1) {
 		error = errno;
 		goto out;
 	}
-	assert(sectorsize >= size);
+	assert(sectorsize >= (ssize_t)size);
 	sector = malloc(sectorsize);
 	if (sector == NULL) {
 		error = ENOMEM;
@@ -322,15 +303,15 @@ g_metadata_store(const char *name, u_cha
 	}
 	bcopy(md, sector, size);
 	if (pwrite(fd, sector, sectorsize, mediasize - sectorsize) !=
-	    (ssize_t)sectorsize) {
+	    sectorsize) {
 		error = errno;
 		goto out;
 	}
-	(void)ioctl(fd, DIOCGFLUSH, NULL);
+	(void)g_flush(fd);
 out:
 	if (sector != NULL)
 		free(sector);
-	close(fd);
+	(void)g_close(fd);
 	return (error);
 }
 
@@ -338,25 +319,23 @@ int
 g_metadata_clear(const char *name, const char *magic)
 {
 	struct std_metadata md;
-	char path[MAXPATHLEN];
-	unsigned sectorsize;
+	unsigned char *sector;
+	ssize_t sectorsize;
 	off_t mediasize;
-	u_char *sector;
 	int error, fd;
 
-	pathgen(name, path, sizeof(path));
 	sector = NULL;
 	error = 0;
 
-	fd = open(path, O_RDWR);
+	fd = g_open(name, 1);
 	if (fd == -1)
 		return (errno);
-	mediasize = g_get_mediasize(name);
+	mediasize = g_mediasize(fd);
 	if (mediasize == 0) {
 		error = errno;
 		goto out;
 	}
-	sectorsize = g_get_sectorsize(name);
+	sectorsize = g_sectorsize(fd);
 	if (sectorsize == 0) {
 		error = errno;
 		goto out;
@@ -368,7 +347,7 @@ g_metadata_clear(const char *name, const
 	}
 	if (magic != NULL) {
 		if (pread(fd, sector, sectorsize, mediasize - sectorsize) !=
-		    (ssize_t)sectorsize) {
+		    sectorsize) {
 			error = errno;
 			goto out;
 		}
@@ -380,15 +359,15 @@ g_metadata_clear(const char *name, const
 	}
 	bzero(sector, sectorsize);
 	if (pwrite(fd, sector, sectorsize, mediasize - sectorsize) !=
-	    (ssize_t)sectorsize) {
+	    sectorsize) {
 		error = errno;
 		goto out;
 	}
-	(void)ioctl(fd, DIOCGFLUSH, NULL);
+	(void)g_flush(fd);
 out:
 	if (sector != NULL)
 		free(sector);
-	close(fd);
+	g_close(fd);
 	return (error);
 }
 
@@ -412,8 +391,8 @@ gctl_get_param(struct gctl_req *req, siz
 {
 	struct gctl_req_arg *argp;
 	char param[256];
+	unsigned int i;
 	void *p;
-	unsigned i;
 
 	vsnprintf(param, sizeof(param), pfmt, ap);
 	for (i = 0; i < req->narg; i++) {
@@ -486,7 +465,7 @@ gctl_change_param(struct gctl_req *req, 
     const void *value)
 {
 	struct gctl_req_arg *ap;
-	unsigned i;
+	unsigned int i;
 
 	if (req == NULL || req->error != NULL)
 		return (EDOOFUS);

Modified: head/sbin/geom/misc/subr.h
==============================================================================
--- head/sbin/geom/misc/subr.h	Thu Sep 23 12:02:42 2010	(r213073)
+++ head/sbin/geom/misc/subr.h	Thu Sep 23 12:04:12 2010	(r213074)
@@ -1,5 +1,5 @@
 /*-
- * Copyright (c) 2004 Pawel Jakub Dawidek <pjd at FreeBSD.org>
+ * Copyright (c) 2004-2010 Pawel Jakub Dawidek <pjd at FreeBSD.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -30,16 +30,16 @@
 #define	_SUBR_H_
 #include <stdint.h>
 
-unsigned g_lcm(unsigned a, unsigned b);
+unsigned int g_lcm(unsigned int a, unsigned int b);
 uint32_t bitcount32(uint32_t x);
-int g_parse_lba(const char *lbastr, unsigned sectorsize, off_t *sectors);
+int g_parse_lba(const char *lbastr, unsigned int sectorsize, off_t *sectors);
 
 off_t g_get_mediasize(const char *name);
-unsigned g_get_sectorsize(const char *name);
+unsigned int g_get_sectorsize(const char *name);
 
-int g_metadata_read(const char *name, u_char *md, size_t size,
+int g_metadata_read(const char *name, unsigned char *md, size_t size,
     const char *magic);
-int g_metadata_store(const char *name, u_char *md, size_t size);
+int g_metadata_store(const char *name, const unsigned char *md, size_t size);
 int g_metadata_clear(const char *name, const char *magic);
 
 void gctl_error(struct gctl_req *req, const char *error, ...) __printflike(2, 3);


More information about the svn-src-head mailing list