svn commit: r233977 - in projects/nand: sbin/newfs_nandfs
usr.sbin/nandsim usr.sbin/nandtool
Grzegorz Bernacki
gber at FreeBSD.org
Sat Apr 7 04:53:33 UTC 2012
Author: gber
Date: Sat Apr 7 04:53:32 2012
New Revision: 233977
URL: http://svn.freebsd.org/changeset/base/233977
Log:
nandtool newfs: Follow-up to latest changes in geom & cleanup
Obtained from: Semihalf
Supported by: FreeBSD Foundation, Juniper Networks
Modified:
projects/nand/sbin/newfs_nandfs/newfs_nandfs.c
projects/nand/usr.sbin/nandsim/nandsim.c
projects/nand/usr.sbin/nandtool/Makefile
projects/nand/usr.sbin/nandtool/nand_erase.c
projects/nand/usr.sbin/nandtool/nand_info.c
projects/nand/usr.sbin/nandtool/nand_read.c
projects/nand/usr.sbin/nandtool/nand_readoob.c
projects/nand/usr.sbin/nandtool/nand_write.c
projects/nand/usr.sbin/nandtool/nand_writeoob.c
projects/nand/usr.sbin/nandtool/nandtool.c
Modified: projects/nand/sbin/newfs_nandfs/newfs_nandfs.c
==============================================================================
--- projects/nand/sbin/newfs_nandfs/newfs_nandfs.c Sat Apr 7 04:39:14 2012 (r233976)
+++ projects/nand/sbin/newfs_nandfs/newfs_nandfs.c Sat Apr 7 04:53:32 2012 (r233977)
@@ -54,6 +54,7 @@ __FBSDID("$FreeBSD$");
#include <unistd.h>
#include <fs/nandfs/nandfs_fs.h>
+#include <dev/nand/nand_dev.h>
#define DEBUG
#undef DEBUG
@@ -165,7 +166,7 @@ nandfs_log2(unsigned n)
* N.B. this function will return 0 if supplied 0.
*/
for (count = 0; n/2; count++)
- n /= 2;
+ n /= 2;
return count;
}
@@ -750,7 +751,7 @@ save_cpfile(void)
/* mark rest of cp as invalid */
cno = NANDFS_FIRST_CNO + 1;
i = NANDFS_CPFILE_FIRST_CHECKPOINT_OFFSET + 1;
- for (;i < entries; i++) {
+ for (; i < entries; i++) {
cp[i].cp_cno = cno++;
cp[i].cp_flags = NANDFS_CHECKPOINT_INVALID;
}
@@ -909,10 +910,10 @@ check_parameters(void)
i = 0;
if (volumelabel) {
while (isalnum(volumelabel[++i]));
- if (volumelabel[i] != '\0') {
- errx(1, "bad volume label. "
- "Valid characters are alphanumerics.");
- }
+ if (volumelabel[i] != '\0') {
+ errx(1, "bad volume label. "
+ "Valid characters are alphanumerics.");
+ }
if (strlen(volumelabel) >= 16)
errx(1, "Bad volume label. Length is longer than %d.",
@@ -969,6 +970,7 @@ check_mounted(const char *fname, mode_t
static void
calculate_geometry(int fd)
{
+ struct chip_param_io chip_params;
char ident[DISK_IDENT_SIZE];
char medianame[MAXPATHLEN];
@@ -988,8 +990,13 @@ calculate_geometry(int fd)
debug("mediasize: %#jx", mediasize);
/* Get storage erase unit size */
- if (ioctl(fd, DIOCNBLKSIZE, &erasesize))
+ if (!is_nand)
erasesize = NANDFS_DEF_ERASESIZE;
+ else if (ioctl(fd, NAND_IO_GET_CHIP_PARAM, &chip_params) == -1)
+ errx(1, "Cannot ioctl(NAND_IO_GET_CHIP_PARAM)");
+ else
+ erasesize = chip_params.page_size * chip_params.pages_per_block;
+
debug("erasesize: %#jx", (uintmax_t)erasesize);
if (blocks_per_segment == 0) {
@@ -1134,8 +1141,8 @@ main(int argc, char *argv[])
fname = *argv++;
if (!strchr(fname, '/')) {
snprintf(buf, sizeof(buf), "%s%s", _PATH_DEV, fname);
- if (!(fname = strdup(buf)))
- err(1, NULL);
+ if (!(fname = strdup(buf)))
+ err(1, NULL);
}
fd = g_open(fname, 1);
Modified: projects/nand/usr.sbin/nandsim/nandsim.c
==============================================================================
--- projects/nand/usr.sbin/nandsim/nandsim.c Sat Apr 7 04:39:14 2012 (r233976)
+++ projects/nand/usr.sbin/nandsim/nandsim.c Sat Apr 7 04:53:32 2012 (r233977)
@@ -38,7 +38,7 @@ __FBSDID("$FreeBSD$");
#include <sys/types.h>
#include <dev/nand/nandsim.h>
-#include <dev/nand/nand_cdev.h>
+#include <dev/nand/nand_dev.h>
#include <ctype.h>
#include <fcntl.h>
Modified: projects/nand/usr.sbin/nandtool/Makefile
==============================================================================
--- projects/nand/usr.sbin/nandtool/Makefile Sat Apr 7 04:39:14 2012 (r233976)
+++ projects/nand/usr.sbin/nandtool/Makefile Sat Apr 7 04:53:32 2012 (r233977)
@@ -1,3 +1,5 @@
+# $FreeBSD$
+
PROG= nandtool
SRCS= nandtool.c nand_read.c nand_write.c nand_erase.c nand_info.c
SRCS+= nand_readoob.c nand_writeoob.c
@@ -6,6 +8,4 @@ DPADD= ${LIBGEOM}
LDADD= -lgeom
MAN= nandtool.8
-WARNS?= 7
-
.include <bsd.prog.mk>
Modified: projects/nand/usr.sbin/nandtool/nand_erase.c
==============================================================================
--- projects/nand/usr.sbin/nandtool/nand_erase.c Sat Apr 7 04:39:14 2012 (r233976)
+++ projects/nand/usr.sbin/nandtool/nand_erase.c Sat Apr 7 04:53:32 2012 (r233977)
@@ -34,16 +34,17 @@ __FBSDID("$FreeBSD$");
#include <sys/types.h>
#include <sys/disk.h>
#include <libgeom.h>
-#include <dev/nand/nand_cdev.h>
+#include <dev/nand/nand_dev.h>
#include "nandtool.h"
int nand_erase(struct cmd_param *params)
{
+ struct chip_param_io chip_params;
char *dev;
int fd = -1;
off_t pos, count, err = 0;
off_t start, nblocks, i;
- int page_size, block_size, mult;
+ int block_size, mult;
if (!(dev = param_get_string(params, "dev"))) {
fprintf(stderr, "Please supply valid 'dev' parameter.\n");
@@ -58,21 +59,17 @@ int nand_erase(struct cmd_param *params)
if ((count = param_get_int(params, "count")) < 0)
count = 1;
- if (ioctl(fd, DIOCGSECTORSIZE, &page_size)) {
- perrorf("Cannot get page size for %s", dev);
+ if (ioctl(fd, NAND_IO_GET_CHIP_PARAM, &chip_params) == -1) {
+ perrorf("Cannot ioctl(NAND_IO_GET_CHIP_PARAM)");
err = errno;
goto out;
}
- if (ioctl(fd, DIOCNBLKSIZE, &block_size)) {
- perrorf("Cannot get block size for %s", dev);
- err = errno;
- goto out;
- }
+ block_size = chip_params.page_size * chip_params.pages_per_block;
if (param_has_value(params, "page")) {
- pos = page_size * param_get_int(params, "page");
- mult = page_size;
+ pos = chip_params.page_size * param_get_int(params, "page");
+ mult = chip_params.page_size;
} else if (param_has_value(params, "block")) {
pos = block_size * param_get_int(params, "block");
mult = block_size;
@@ -82,7 +79,7 @@ int nand_erase(struct cmd_param *params)
} else {
/* Erase all chip */
- if (ioctl(fd, DIOCGMEDIASIZE, &count) < 0) {
+ if (ioctl(fd, DIOCGMEDIASIZE, &count) == -1) {
err = errno;
goto out;
}
Modified: projects/nand/usr.sbin/nandtool/nand_info.c
==============================================================================
--- projects/nand/usr.sbin/nandtool/nand_info.c Sat Apr 7 04:39:14 2012 (r233976)
+++ projects/nand/usr.sbin/nandtool/nand_info.c Sat Apr 7 04:53:32 2012 (r233977)
@@ -34,17 +34,19 @@ __FBSDID("$FreeBSD$");
#include <errno.h>
#include <libgeom.h>
#include <sys/disk.h>
-#include <dev/nand/nand_cdev.h>
+#include <dev/nand/nand_dev.h>
#include "nandtool.h"
int nand_info(struct cmd_param *params)
{
- int fd = -1, page_size, block_size, oob_size, err = 0;
- off_t media_size;
+ struct chip_param_io chip_params;
+ int fd = -1, err = 0, block_size;
+ off_t chip_size, media_size;
const char *dev;
if ((dev = param_get_string(params, "dev")) == NULL) {
- fprintf(stderr, "Please supply 'dev' parameter, eg. 'dev=/dev/gnand0'\n");
+ fprintf(stderr, "Please supply 'dev' parameter, eg. "
+ "'dev=/dev/gnand0'\n");
return (EINVAL);
}
@@ -53,35 +55,29 @@ int nand_info(struct cmd_param *params)
return (errno);
}
- if (ioctl(fd, DIOCGSECTORSIZE, &page_size) < 0) {
- perrorf("Cannot ioctl(DIOCGSECTORSIZE)");
+ if (ioctl(fd, NAND_IO_GET_CHIP_PARAM, &chip_params) == -1) {
+ perrorf("Cannot ioctl(NAND_IO_GET_CHIP_PARAM)");
err = errno;
goto out;
}
- if (ioctl(fd, DIOCNBLKSIZE, &block_size) < 0) {
- perrorf("Cannot ioctl(DIOCGSECTORSIZE)");
- err = errno;
- goto out;
- }
-
- if (ioctl(fd, DIOCNOOBSIZE, &oob_size) < 0) {
- perrorf("Cannot ioctl(DIOCGSECTORSIZE)");
- err = errno;
- goto out;
- }
-
- if (ioctl(fd, DIOCGMEDIASIZE, &media_size) < 0) {
+ if (ioctl(fd, DIOCGMEDIASIZE, &media_size) == -1) {
perrorf("Cannot ioctl(DIOCGMEDIASIZE)");
err = errno;
goto out;
}
+ block_size = chip_params.page_size * chip_params.pages_per_block;
+ chip_size = block_size * chip_params.blocks;
+
printf("Device:\t\t\t%s\n", dev);
- printf("Page size:\t\t%d bytes\n", page_size);
- printf("Block size:\t\t%d bytes (%d KB)\n", block_size, block_size / 1024);
- printf("OOB size per page:\t%d bytes\n", oob_size);
- printf("Chip size:\t\t%jd MB\n", (uintmax_t)(media_size / 1024 / 1024));
+ printf("Page size:\t\t%d bytes\n", chip_params.page_size);
+ printf("Block size:\t\t%d bytes (%d KB)\n", block_size,
+ block_size / 1024);
+ printf("OOB size per page:\t%d bytes\n", chip_params.oob_size);
+ printf("Chip size:\t\t%jd MB\n", (uintmax_t)(chip_size / 1024 / 1024));
+ printf("Slice size:\t\t%jd MB\n",
+ (uintmax_t)(media_size / 1024 / 1024));
out:
if (fd != -1)
@@ -89,4 +85,3 @@ out:
return (err);
}
-
Modified: projects/nand/usr.sbin/nandtool/nand_read.c
==============================================================================
--- projects/nand/usr.sbin/nandtool/nand_read.c Sat Apr 7 04:39:14 2012 (r233976)
+++ projects/nand/usr.sbin/nandtool/nand_read.c Sat Apr 7 04:53:32 2012 (r233977)
@@ -34,15 +34,16 @@ __FBSDID("$FreeBSD$");
#include <fcntl.h>
#include <libgeom.h>
#include <sys/disk.h>
-#include <dev/nand/nand_cdev.h>
+#include <dev/nand/nand_dev.h>
#include "nandtool.h"
int nand_read(struct cmd_param *params)
{
+ struct chip_param_io chip_params;
int fd = -1, out_fd = -1, ret;
char *dev, *out;
uint8_t *buf = NULL;
- int pos, done = 0, count, mult, page_size, block_size;
+ int pos, done = 0, count, mult, block_size;
int err = 0;
if (!(dev = param_get_string(params, "dev"))) {
@@ -64,28 +65,24 @@ int nand_read(struct cmd_param *params)
goto out;
}
- if (ioctl(fd, DIOCNBLKSIZE, &block_size) < 0) {
- perrorf("ioctl(DIOCNBLKSIZE) failed");
+ if (ioctl(fd, NAND_IO_GET_CHIP_PARAM, &chip_params) == -1) {
+ perrorf("Cannot ioctl(NAND_IO_GET_CHIP_PARAM)");
err = errno;
goto out;
}
- if (ioctl(fd, DIOCGSECTORSIZE, &page_size) < 0) {
- perrorf("ioctl(DIOCGSECTORSIZE) failed");
- err = errno;
- goto out;
- }
+ block_size = chip_params.page_size * chip_params.pages_per_block;
if (param_has_value(params, "page")) {
- pos = page_size * param_get_int(params, "page");
- mult = page_size;
+ pos = chip_params.page_size * param_get_int(params, "page");
+ mult = chip_params.page_size;
} else if (param_has_value(params, "block")) {
pos = block_size * param_get_int(params, "block");
mult = block_size;
} else if (param_has_value(params, "pos")) {
pos = param_get_int(params, "pos");
mult = 1;
- if (pos % page_size) {
+ if (pos % chip_params.page_size) {
fprintf(stderr, "Position must be page-size aligned!\n");
err = errno;
goto out;
@@ -102,8 +99,9 @@ int nand_read(struct cmd_param *params)
else
count = param_get_int(params, "count") * mult;
- if (!(buf = malloc(page_size))) {
- perrorf("Cannot allocate buffer [size %x]", page_size);
+ if (!(buf = malloc(chip_params.page_size))) {
+ perrorf("Cannot allocate buffer [size %x]",
+ chip_params.page_size);
err = errno;
goto out;
}
@@ -111,7 +109,8 @@ int nand_read(struct cmd_param *params)
lseek(fd, pos, SEEK_SET);
while (done < count) {
- if ((ret = read(fd, buf, page_size)) != page_size) {
+ if ((ret = read(fd, buf, chip_params.page_size)) !=
+ (int32_t)chip_params.page_size) {
perrorf("read error (read %d bytes)", ret);
goto out;
}
@@ -119,13 +118,14 @@ int nand_read(struct cmd_param *params)
done += ret;
if (out_fd != -1) {
- if ((ret = write(out_fd, buf, page_size)) != page_size) {
+ if ((ret = write(out_fd, buf, chip_params.page_size)) !=
+ (int32_t)chip_params.page_size) {
perrorf("write error (written %d bytes)", ret);
err = errno;
goto out;
}
} else
- hexdump(buf, page_size);
+ hexdump(buf, chip_params.page_size);
}
out:
Modified: projects/nand/usr.sbin/nandtool/nand_readoob.c
==============================================================================
--- projects/nand/usr.sbin/nandtool/nand_readoob.c Sat Apr 7 04:39:14 2012 (r233976)
+++ projects/nand/usr.sbin/nandtool/nand_readoob.c Sat Apr 7 04:53:32 2012 (r233977)
@@ -35,24 +35,24 @@ __FBSDID("$FreeBSD$");
#include <libgeom.h>
#include <sys/types.h>
#include <sys/disk.h>
-#include <dev/nand/nand_cdev.h>
+#include <dev/nand/nand_dev.h>
#include "nandtool.h"
int nand_read_oob(struct cmd_param *params)
{
+ struct chip_param_io chip_params;
+ struct nand_oob_rw req;
char *dev, *out;
int fd = -1, fd_out = -1;
- int err = 0;
+ int page, err = 0;
uint8_t *buf = NULL;
- int oobsize, page, pagesize;
- struct nand_oob_request req;
if ((page = param_get_int(params, "page")) < 0) {
fprintf(stderr, "You must supply valid 'page' argument.\n");
return (EINVAL);
}
- if (!(dev = param_get_string(params, "dev"))){
+ if (!(dev = param_get_string(params, "dev"))) {
fprintf(stderr, "You must supply 'dev' argument.\n");
return (EINVAL);
}
@@ -71,39 +71,33 @@ int nand_read_oob(struct cmd_param *para
goto out;
}
- if (ioctl(fd, DIOCGSECTORSIZE, &pagesize)) {
- perrorf("Cannot get page size for %s", dev);
+ if (ioctl(fd, NAND_IO_GET_CHIP_PARAM, &chip_params) == -1) {
+ perrorf("Cannot ioctl(NAND_IO_GET_CHIP_PARAM)");
err = errno;
goto out;
}
- if (ioctl(fd, DIOCNOOBSIZE, &oobsize)) {
- perrorf("Cannot get OOB size for %s", dev);
- err = errno;
- goto out;
- }
-
- buf = malloc(oobsize);
+ buf = malloc(chip_params.oob_size);
if (buf == NULL) {
- perrorf("Cannot allocate %d bytes\n", oobsize);
+ perrorf("Cannot allocate %d bytes\n", chip_params.oob_size);
err = errno;
goto out;
}
- req.length = oobsize;
- req.offset = page * pagesize;
- req.ubuf = buf;
+ req.page = page;
+ req.len = chip_params.oob_size;
+ req.data = buf;
- if (ioctl(fd, DIOCNREADOOB, &req)) {
+ if (ioctl(fd, NAND_IO_OOB_READ, &req) == -1) {
perrorf("Cannot read OOB from %s", dev);
err = errno;
goto out;
}
if (fd_out != -1)
- write(fd_out, buf, oobsize);
+ write(fd_out, buf, chip_params.oob_size);
else
- hexdump(buf, oobsize);
+ hexdump(buf, chip_params.oob_size);
out:
if (fd != -1)
Modified: projects/nand/usr.sbin/nandtool/nand_write.c
==============================================================================
--- projects/nand/usr.sbin/nandtool/nand_write.c Sat Apr 7 04:39:14 2012 (r233976)
+++ projects/nand/usr.sbin/nandtool/nand_write.c Sat Apr 7 04:53:32 2012 (r233977)
@@ -34,15 +34,16 @@ __FBSDID("$FreeBSD$");
#include <fcntl.h>
#include <libgeom.h>
#include <sys/disk.h>
-#include <dev/nand/nand_cdev.h>
+#include <dev/nand/nand_dev.h>
#include "nandtool.h"
int nand_write(struct cmd_param *params)
{
+ struct chip_param_io chip_params;
char *dev, *file;
int fd = -1, in_fd = -1, ret, err = 0;
uint8_t *buf = NULL;
- int page_size, block_size, mult, pos, done = 0, count, raw;
+ int block_size, mult, pos, done = 0, count, raw;
raw = param_get_boolean(params, "raw");
@@ -67,29 +68,26 @@ int nand_write(struct cmd_param *params)
goto out;
}
- if (ioctl(fd, DIOCGSECTORSIZE, &page_size) < 0) {
- perrorf("ioctl(DIOCGSECTORSIZE) failed");
+ if (ioctl(fd, NAND_IO_GET_CHIP_PARAM, &chip_params) == -1) {
+ perrorf("Cannot ioctl(NAND_IO_GET_CHIP_PARAM)");
err = errno;
goto out;
}
- if (ioctl(fd, DIOCNBLKSIZE, &block_size) < 0) {
- perrorf("ioctl(DIOCNBLKSIZE) failed");
- err = errno;
- goto out;
- }
+ block_size = chip_params.page_size * chip_params.pages_per_block;
if (param_has_value(params, "page")) {
- pos = page_size * param_get_int(params, "page");
- mult = page_size;
+ pos = chip_params.page_size * param_get_int(params, "page");
+ mult = chip_params.page_size;
} else if (param_has_value(params, "block")) {
pos = block_size * param_get_int(params, "block");
mult = block_size;
} else if (param_has_value(params, "pos")) {
pos = param_get_int(params, "pos");
mult = 1;
- if (pos % page_size) {
- fprintf(stderr, "Position must be page-size aligned!\n");
+ if (pos % chip_params.page_size) {
+ fprintf(stderr, "Position must be page-size "
+ "aligned!\n");
errno = EINVAL;
goto out;
}
@@ -105,17 +103,18 @@ int nand_write(struct cmd_param *params)
else
count = param_get_int(params, "count") * mult;
- if (!(buf = malloc(page_size))) {
- perrorf("Cannot allocate buffer [size %x]", page_size);
+ if (!(buf = malloc(chip_params.page_size))) {
+ perrorf("Cannot allocate buffer [size %x]",
+ chip_params.page_size);
err = errno;
goto out;
}
lseek(fd, pos, SEEK_SET);
- while (done < count)
- {
- if ((ret = read(in_fd, buf, page_size)) != page_size) {
+ while (done < count) {
+ if ((ret = read(in_fd, buf, chip_params.page_size)) !=
+ (int32_t)chip_params.page_size) {
if (ret > 0) {
/* End of file ahead, truncate here */
break;
@@ -126,7 +125,8 @@ int nand_write(struct cmd_param *params)
}
}
- if ((ret = write(fd, buf, page_size)) != page_size) {
+ if ((ret = write(fd, buf, chip_params.page_size)) !=
+ (int32_t)chip_params.page_size) {
err = errno;
goto out;
}
Modified: projects/nand/usr.sbin/nandtool/nand_writeoob.c
==============================================================================
--- projects/nand/usr.sbin/nandtool/nand_writeoob.c Sat Apr 7 04:39:14 2012 (r233976)
+++ projects/nand/usr.sbin/nandtool/nand_writeoob.c Sat Apr 7 04:53:32 2012 (r233977)
@@ -34,16 +34,17 @@ __FBSDID("$FreeBSD$");
#include <fcntl.h>
#include <libgeom.h>
#include <sys/disk.h>
-#include <dev/nand/nand_cdev.h>
+#include <dev/nand/nand_dev.h>
#include "nandtool.h"
int nand_write_oob(struct cmd_param *params)
{
+ struct chip_param_io chip_params;
+ struct nand_oob_rw req;
char *dev, *in;
int fd = -1, fd_in = -1;
uint8_t *buf = NULL;
- int pagesize, oobsize, page, err = 0;
- struct nand_oob_request req;
+ int page, err = 0;
if (!(dev = param_get_string(params, "dev"))) {
fprintf(stderr, "Please supply valid 'dev' parameter.\n");
@@ -71,38 +72,30 @@ int nand_write_oob(struct cmd_param *par
goto out;
}
- if (ioctl(fd, DIOCGSECTORSIZE, &pagesize)) {
- perrorf("Cannot get page size for %s", dev);
+ if (ioctl(fd, NAND_IO_GET_CHIP_PARAM, &chip_params) == -1) {
+ perrorf("Cannot ioctl(NAND_IO_GET_CHIP_PARAM)");
err = errno;
goto out;
}
-
- if (ioctl(fd, DIOCNOOBSIZE, &oobsize)) {
- perrorf("Cannot get OOB size for %s", dev);
- err = errno;
- goto out;
- }
-
- buf = xmalloc(oobsize);
+ buf = xmalloc(chip_params.oob_size);
if (buf == NULL) {
- perrorf("Cannot allocate %d bytes\n", oobsize);
+ perrorf("Cannot allocate %d bytes\n", chip_params.oob_size);
err = errno;
goto out;
}
- if (read(fd_in, buf, oobsize) < 0) {
+ if (read(fd_in, buf, chip_params.oob_size) < 0) {
perrorf("Cannot read from %s", in);
err = errno;
goto out;
}
+ req.page = page;
+ req.len = chip_params.oob_size;
+ req.data = buf;
- req.offset = page * pagesize;
- req.length = oobsize;
- req.ubuf = buf;
-
- if (ioctl(fd, DIOCNWRITEOOB, &req)) {
+ if (ioctl(fd, NAND_IO_OOB_PROG, &req) == -1) {
perrorf("Cannot write OOB to %s", dev);
err = errno;
goto out;
Modified: projects/nand/usr.sbin/nandtool/nandtool.c
==============================================================================
--- projects/nand/usr.sbin/nandtool/nandtool.c Sat Apr 7 04:39:14 2012 (r233976)
+++ projects/nand/usr.sbin/nandtool/nandtool.c Sat Apr 7 04:53:32 2012 (r233977)
@@ -55,7 +55,8 @@ static const struct {
{ NULL, NULL, NULL },
};
-char *param_get_string(struct cmd_param *params, const char *name)
+char *
+param_get_string(struct cmd_param *params, const char *name)
{
int i;
@@ -67,7 +68,8 @@ char *param_get_string(struct cmd_param
return (NULL);
}
-int param_get_int(struct cmd_param *params, const char *name)
+int
+param_get_int(struct cmd_param *params, const char *name)
{
unsigned long ret;
char *str = param_get_string(params, name);
@@ -85,7 +87,8 @@ int param_get_int(struct cmd_param *para
return (ret);
}
-int param_get_boolean(struct cmd_param *params, const char *name)
+int
+param_get_boolean(struct cmd_param *params, const char *name)
{
char *str = param_get_string(params, name);
@@ -98,7 +101,8 @@ int param_get_boolean(struct cmd_param *
return (0);
}
-int param_has_value(struct cmd_param *params, const char *name)
+int
+param_has_value(struct cmd_param *params, const char *name)
{
int i;
@@ -110,16 +114,18 @@ int param_has_value(struct cmd_param *pa
return (0);
}
-int param_get_count(struct cmd_param *params)
+int
+param_get_count(struct cmd_param *params)
{
int i;
for (i = 0; params[i].name[0] != '\0'; i++);
- return i;
+ return (i);
}
-void hexdump(uint8_t *buf, int length)
+void
+hexdump(uint8_t *buf, int length)
{
int i, j;
for (i = 0; i < length; i += 16) {
@@ -140,28 +146,33 @@ void hexdump(uint8_t *buf, int length)
}
}
-void *xmalloc(size_t len)
+void *
+xmalloc(size_t len)
{
void *ret = malloc(len);
if (!ret) {
- fprintf(stderr, "Cannot allocate buffer of %zd bytes. Exiting.\n", len);
+ fprintf(stderr, "Cannot allocate buffer of %zd bytes. "
+ "Exiting.\n", len);
exit(EX_OSERR);
}
- return ret;
+ return (ret);
}
-void perrorf(const char *format, ...)
+void
+perrorf(const char *format, ...)
{
va_list args;
+
va_start(args, format);
vfprintf(stderr, format, args);
va_end(args);
fprintf(stderr, ": %s\n", strerror(errno));
}
-int usage(struct cmd_param *params)
+int
+usage(struct cmd_param *params)
{
int i;
@@ -174,7 +185,8 @@ int usage(struct cmd_param *params)
fprintf(stderr, "\t%s\n", commands[i].name);
fprintf(stderr, "\n");
- fprintf(stderr, "For information about particular command, type:\n");
+ fprintf(stderr, "For information about particular command, "
+ "type:\n");
fprintf(stderr, "'nandtool help topic=<command>'\n");
} else if (param_has_value(params, "topic")) {
for (i = 0; commands[i].name != NULL; i++) {
@@ -194,7 +206,8 @@ int usage(struct cmd_param *params)
return (EX_USAGE);
}
-int main(int argc, const char *argv[])
+int
+main(int argc, const char *argv[])
{
struct cmd_param *params;
int i, ret, idx;
@@ -210,13 +223,14 @@ int main(int argc, const char *argv[])
if (sscanf(argv[i], "%63[^=]=%63s", params[idx].name,
params[idx].value) < 2) {
fprintf(stderr, "Syntax error in argument %d. "
- "Argument should be in form 'name=value'.\n", i);
+ "Argument should be in form 'name=value'.\n", i);
+ free(params);
return (-1);
}
}
- params[idx+1].name[0] = '\0';
- params[idx+1].value[0] = '\0';
+ params[idx].name[0] = '\0';
+ params[idx].value[0] = '\0';
for (i = 0; commands[i].name != NULL; i++) {
if (!strcmp(commands[i].name, argv[1])) {
More information about the svn-src-projects
mailing list