Date: Thu, 23 Sep 2010 12:04:12 +0000 (UTC) From: Pawel Jakub Dawidek <pjd@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r213074 - head/sbin/geom/misc Message-ID: <201009231204.o8NC4ChR068742@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
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@FreeBSD.org> + * Copyright (c) 2004-2010 Pawel Jakub Dawidek <pjd@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, §orsize) < 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@FreeBSD.org> + * Copyright (c) 2004-2010 Pawel Jakub Dawidek <pjd@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);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201009231204.o8NC4ChR068742>