aboutsummaryrefslogtreecommitdiff
path: root/src/sg_dd.c
diff options
context:
space:
mode:
authorDouglas Gilbert <dgilbert@interlog.com>2021-10-28 23:35:11 +0000
committerDouglas Gilbert <dgilbert@interlog.com>2021-10-28 23:35:11 +0000
commitf0195003bb0c66ba55084b2f7e0fe982f08c5675 (patch)
treeac27a2f679ce91e865fa0a578c9cfa2d97110b07 /src/sg_dd.c
parentc1ce6d6c5f3f64038e17dfd65380aa728c5d994d (diff)
downloadsg3_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.c20
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);