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 <p...@freebsd.org>
+ * Copyright (c) 2004-2010 Pawel Jakub Dawidek <p...@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 <p...@freebsd.org>
+ * Copyright (c) 2004-2010 Pawel Jakub Dawidek <p...@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);
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to