From: Rob Landley Date: Sun, 24 Aug 2014 04:08:04 +0000 (-0500) Subject: Cleanup blockdev. X-Git-Tag: 0.5.0~73 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=62d796a75dd2e0f0c63615e937cfd3d7ccb0a27d;p=platform%2Fupstream%2Ftoybox.git Cleanup blockdev. --- diff --git a/toys/pending/blockdev.c b/toys/pending/blockdev.c index 9f0176f..58318f5 100644 --- a/toys/pending/blockdev.c +++ b/toys/pending/blockdev.c @@ -3,7 +3,6 @@ * Copyright 2014 Sameer Prakash Pradhan * * No Standard. - * USE_BLOCKDEV(NEWTOY(blockdev, "<1>1(setro)(setrw)(getro)(getss)(getbsz)(setbsz)#<0(getsz)(getsize)(getsize64)(flushbufs)(rereadpt)",TOYFLAG_USR|TOYFLAG_BIN)) @@ -11,20 +10,22 @@ config BLOCKDEV bool "blockdev" default n help - usage:blockdev OPTION BLOCKDEV - - - setro Set ro - setrw Set rw - getro Get ro - getss Get sector size - getbsz Get block size - setbsz BYTES Set block size - getsz Get device size in 512-byte sectors - getsize Get device size in sectors (deprecated) - getsize64 Get device size in bytes - flushbufs Flush buffers - rereadpt Reread partition table + usage: blockdev --OPTION... BLOCKDEV... + + Call ioctl(s) on each listed block device + + OPTIONs: + --setro Set read only + --setrw Set read write + --getro Get read only + --getss Get sector size + --getbsz Get block size + --setbsz BYTES Set block size + --getsz Get device size in 512-byte sectors + --getsize Get device size in sectors (deprecated) + --getsize64 Get device size in bytes + --flushbufs Flush buffers + --rereadpt Reread partition table */ #define FOR_blockdev @@ -37,56 +38,33 @@ GLOBALS( void blockdev_main(void) { + int cmds[] = {BLKRRPART, BLKFLSBUF, BLKGETSIZE64, BLKGETSIZE, BLKGETSIZE64, + BLKBSZSET, BLKBSZGET, BLKSSZGET, BLKROGET, BLKROSET, BLKROSET}; + char **ss; long long val = 0; - int cmd, fd, set = 0; - switch (toys.optflags) { - case FLAG_setro: - cmd = BLKROSET; - val = set = 1; - break; - case FLAG_setrw: - cmd = BLKROSET; - set = 1; - break; - case FLAG_getro: - cmd = BLKROGET; - break; - case FLAG_getss: - cmd = BLKSSZGET; - break; - case FLAG_getbsz: - cmd = BLKBSZGET; - break; - case FLAG_setbsz: - cmd = BLKBSZSET; - set = 1; - val = TT.bsz; - break; - case FLAG_getsz: - cmd = BLKGETSIZE64; - break; - case FLAG_getsize: - cmd = BLKGETSIZE; - break; - case FLAG_getsize64: - cmd = BLKGETSIZE64; - break; - case FLAG_flushbufs: - cmd = BLKFLSBUF; - set = 1; - break; - case FLAG_rereadpt: - cmd = BLKRRPART; - set = 1; - break; - default: - toys.exithelp = 1; - error_exit(NULL); + if (!toys.optflags) { + toys.exithelp = 1; + error_exit("need --option"); + } + + for (ss = toys.optargs; *ss; ss++) { + int fd = xopen(*ss, O_RDONLY), i; + + // Command line order discarded so perform multiple operations in flag order + for (i = 0; i < 32; i++) { + long flag = toys.optflags & (1<> 9: val); + } + xclose(fd); } - fd = xopen(*toys.optargs, O_RDONLY); - xioctl(fd, cmd, &val); - if (!set) - printf("%lld\n", ((toys.optflags & FLAG_getsz)?val >> 9: val)); - if (CFG_TOYBOX_FREE) xclose(fd); }