diff options
author | Douglas Gilbert <dgilbert@interlog.com> | 2021-10-28 23:35:11 +0000 |
---|---|---|
committer | Douglas Gilbert <dgilbert@interlog.com> | 2021-10-28 23:35:11 +0000 |
commit | f0195003bb0c66ba55084b2f7e0fe982f08c5675 (patch) | |
tree | ac27a2f679ce91e865fa0a578c9cfa2d97110b07 /src/sg_dd.c | |
parent | c1ce6d6c5f3f64038e17dfd65380aa728c5d994d (diff) | |
download | sg3_utils-f0195003bb0c66ba55084b2f7e0fe982f08c5675.tar.gz |
sg_dd: 'iflag=00,ff' places the 32 bit block address (big endian) into each block; sgp_dd: major rework, new: --chkaddr which checks for block address in each block
git-svn-id: https://svn.bingwo.ca/repos/sg3_utils/trunk@916 6180dd3e-e324-4e3e-922d-17de1ae2f315
Diffstat (limited to 'src/sg_dd.c')
-rw-r--r-- | src/sg_dd.c | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/src/sg_dd.c b/src/sg_dd.c index 7c7823b7..9d05c93b 100644 --- a/src/sg_dd.c +++ b/src/sg_dd.c @@ -70,7 +70,7 @@ #include "sg_unaligned.h" #include "sg_pr2serr.h" -static const char * version_str = "6.29 20210906"; +static const char * version_str = "6.30 20211027"; #define ME "sg_dd: " @@ -2105,11 +2105,13 @@ main(int argc, char * argv[]) outfd = STDOUT_FILENO; iflag.pdt = -1; oflag.pdt = -1; - if (iflag.ff) { + if (iflag.zero && iflag.ff) { + ccp = "<addr_as_data>"; + cc2p = "addr_as_data"; + } else if (iflag.ff) { ccp = "<0xff bytes>"; cc2p = "ff"; } else if (iflag.random) { - ccp = "<random>"; cc2p = "random"; #ifdef HAVE_GETRANDOM @@ -2392,8 +2394,18 @@ main(int argc, char * argv[]) dio_incomplete_count++; } } else if (FT_RANDOM_0_FF == in_type) { + int j; + res = blocks * blk_sz; - if (iflag.zero) + if (iflag.zero && iflag.ff && (blk_sz >= 4)) { + uint32_t pos = (uint32_t)skip; + uint off; + + for (k = 0, off = 0; k < blocks; ++k, off += blk_sz, ++pos) { + for (j = 0; j < (blk_sz - 3); j += 4) + sg_put_unaligned_be32(pos, wrkPos + off + j); + } + } else if (iflag.zero) memset(wrkPos, 0, res); else if (iflag.ff) memset(wrkPos, 0xff, res); |