diff options
author | Douglas Gilbert <dgilbert@interlog.com> | 2013-06-04 20:33:26 +0000 |
---|---|---|
committer | Douglas Gilbert <dgilbert@interlog.com> | 2013-06-04 20:33:26 +0000 |
commit | 5667f0c5f1da0038ea9afe75b098fe632c857bc0 (patch) | |
tree | 33aee328ac9213c59893213c9c5bdbe3248e29c9 /src | |
parent | dac0bec87054e0a862033d9304c45c9ecbe248c6 (diff) | |
download | sg3_utils-5667f0c5f1da0038ea9afe75b098fe632c857bc0.tar.gz |
sg_compare_and_write: fix wrprotect bug
git-svn-id: https://svn.bingwo.ca/repos/sg3_utils/trunk@498 6180dd3e-e324-4e3e-922d-17de1ae2f315
Diffstat (limited to 'src')
-rw-r--r-- | src/Makefile.am | 6 | ||||
-rw-r--r-- | src/Makefile.in | 4 | ||||
-rw-r--r-- | src/sg_compare_and_write.c | 50 | ||||
-rw-r--r-- | src/sg_dd.c | 96 | ||||
-rw-r--r-- | src/sg_ident.c | 11 | ||||
-rw-r--r-- | src/sg_modes.c | 4 | ||||
-rw-r--r-- | src/sg_persist.c | 24 | ||||
-rw-r--r-- | src/sg_rbuf.c | 6 | ||||
-rw-r--r-- | src/sg_read.c | 18 | ||||
-rw-r--r-- | src/sg_sanitize.c | 4 | ||||
-rw-r--r-- | src/sg_write_same.c | 4 | ||||
-rw-r--r-- | src/sg_xcopy.c | 32 | ||||
-rw-r--r-- | src/sginfo.c | 12 | ||||
-rw-r--r-- | src/sgm_dd.c | 32 | ||||
-rw-r--r-- | src/sgp_dd.c | 28 |
15 files changed, 176 insertions, 155 deletions
diff --git a/src/Makefile.am b/src/Makefile.am index c33f46b0..da68e118 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -119,12 +119,14 @@ bin_PROGRAMS = \ endif -# For C++ testing +# For C++/clang testing +## CC = g++ -std=c++11 ## CC = g++ +## CC = clang # -std=<s> can be c99, c11, gnu11, etc. Default is gnu89 (gnu90 is the same) AM_CFLAGS = -I ../include -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Wall -W -# AM_CFLAGS = -I ../include -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Wall -W -pedantic -std=c99 +# AM_CFLAGS = -I ../include -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Wall -W -pedantic -std=c11 sg_dd_SOURCES = sg_dd.c sg_dd_LDADD = ../lib/libsgutils2.la @os_libs@ diff --git a/src/Makefile.in b/src/Makefile.in index c7865e48..a158c3cd 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -666,11 +666,11 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -# For C++ testing +# For C++/clang testing # -std=<s> can be c99, c11, gnu11, etc. Default is gnu89 (gnu90 is the same) AM_CFLAGS = -I ../include -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Wall -W -# AM_CFLAGS = -I ../include -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Wall -W -pedantic -std=c99 +# AM_CFLAGS = -I ../include -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Wall -W -pedantic -std=c11 sg_dd_SOURCES = sg_dd.c sg_dd_LDADD = ../lib/libsgutils2.la @os_libs@ sg_decode_sense_SOURCES = sg_decode_sense.c diff --git a/src/sg_compare_and_write.c b/src/sg_compare_and_write.c index fddcba64..627031c9 100644 --- a/src/sg_compare_and_write.c +++ b/src/sg_compare_and_write.c @@ -1,23 +1,3 @@ -#define _XOPEN_SOURCE 500 -#ifndef _GNU_SOURCE -#define _GNU_SOURCE -#endif - -#include <unistd.h> -#include <fcntl.h> -#include <stdlib.h> -#include <string.h> -#define __STDC_FORMAT_MACROS 1 -#include <inttypes.h> -#include <getopt.h> - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif -#include "sg_lib.h" -#include "sg_cmds_basic.h" -#include "sg_pt.h" - /* A utility program for the Linux OS SCSI generic ("sg") device driver. * * Copyright (c) 2012-2013, Kaminario Technologies LTD @@ -48,7 +28,27 @@ * */ -static const char * version_str = "1.04 20130516"; +#define _XOPEN_SOURCE 500 +#ifndef _GNU_SOURCE +#define _GNU_SOURCE +#endif + +#include <unistd.h> +#include <fcntl.h> +#include <stdlib.h> +#include <string.h> +#define __STDC_FORMAT_MACROS 1 +#include <inttypes.h> +#include <getopt.h> + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif +#include "sg_lib.h" +#include "sg_cmds_basic.h" +#include "sg_pt.h" + +static const char * version_str = "1.06 20130604"; #define DEF_BLOCK_SIZE 512 #define DEF_NUM_BLOCKS (1) @@ -288,7 +288,7 @@ sg_build_scsi_cdb(unsigned char * cdbp, unsigned int blocks, { memset(cdbp, 0, COMPARE_AND_WRITE_CDB_SIZE); cdbp[0] = COMPARE_AND_WRITE_OPCODE; - cdbp[1] = (flags.wrprotect && WRPROTECT_MASK) << WRPROTECT_SHIFT; + cdbp[1] = (flags.wrprotect & WRPROTECT_MASK) << WRPROTECT_SHIFT; if (flags.dpo) cdbp[1] |= FLAG_DPO; if (flags.fua) @@ -321,7 +321,7 @@ sg_compare_and_write(int sg_fd, unsigned char * buff, int blocks, int res, ret; if (sg_build_scsi_cdb(cawCmd, blocks, lba, flags)) { - fprintf(stderr, ME "bad cdb build, lba=0x%"PRIx64", " + fprintf(stderr, ME "bad cdb build, lba=0x%" PRIx64 ", " "blocks=%d\n", lba, blocks); return -1; } @@ -375,8 +375,8 @@ sg_compare_and_write(int sg_fd, unsigned char * buff, int blocks, if (valid) fprintf(stderr, "Medium or hardware " "error starting at lba=%" - PRIu64" [0x%"PRIx64"]\n", ull, - ull); + PRIu64 " [0x%" PRIx64 "]\n", + ull, ull); } ret = sense_cat; break; diff --git a/src/sg_dd.c b/src/sg_dd.c index 5f8af5fd..1fd87d2e 100644 --- a/src/sg_dd.c +++ b/src/sg_dd.c @@ -58,7 +58,7 @@ #include "sg_cmds_extra.h" #include "sg_io_linux.h" -static const char * version_str = "5.77 20130507"; +static const char * version_str = "5.78 20130603"; #define ME "sg_dd: " @@ -189,13 +189,14 @@ static void print_stats(const char * str) { if (0 != dd_count) - fprintf(stderr, " remaining block count=%"PRId64"\n", dd_count); - fprintf(stderr, "%s%"PRId64"+%d records in\n", str, in_full - in_partial, - in_partial); - fprintf(stderr, "%s%"PRId64"+%d records out\n", str, + fprintf(stderr, " remaining block count=%" PRId64 "\n", dd_count); + fprintf(stderr, "%s%" PRId64 "+%d records in\n", str, + in_full - in_partial, in_partial); + fprintf(stderr, "%s%" PRId64 "+%d records out\n", str, out_full - out_partial, out_partial); if (oflag.sparse) - fprintf(stderr, "%s%"PRId64" bypassed records out\n", str, out_sparse); + fprintf(stderr, "%s%" PRId64 " bypassed records out\n", str, + out_sparse); if (recovered_errs > 0) fprintf(stderr, "%s%d recovered errors\n", str, recovered_errs); if (num_retries > 0) @@ -448,8 +449,8 @@ scsi_read_capacity(int sg_fd, int64_t * num_sect, int * sect_sz) (rcBuff[6] << 8) | rcBuff[7]; } if (verbose) - fprintf(stderr, " number of blocks=%"PRId64" [0x%"PRIx64"], " - "block size=%d\n", *num_sect, *num_sect, *sect_sz); + fprintf(stderr, " number of blocks=%" PRId64 " [0x%" PRIx64 + "], " "block size=%d\n", *num_sect, *num_sect, *sect_sz); return 0; } @@ -475,7 +476,7 @@ read_blkdev_capacity(int sg_fd, int64_t * num_sect, int * sect_sz) *num_sect = ((int64_t)ull / (int64_t)*sect_sz); if (verbose) fprintf(stderr, " [bgs64] number of blocks=%" PRId64 " [0x%" - PRIx64"], block size=%d\n", *num_sect, *num_sect, + PRIx64 "], block size=%d\n", *num_sect, *num_sect, *sect_sz); #else unsigned long ul; @@ -486,7 +487,7 @@ read_blkdev_capacity(int sg_fd, int64_t * num_sect, int * sect_sz) } *num_sect = (int64_t)ul; if (verbose) - fprintf(stderr, " [bgs] number of blocks=%"PRId64" [0x%" + fprintf(stderr, " [bgs] number of blocks=%" PRId64 " [0x%" PRIx64 "], block size=%d\n", *num_sect, *num_sect, *sect_sz); #endif @@ -661,12 +662,12 @@ sg_read_low(int sg_fd, unsigned char * buff, int blocks, int64_t from_block, info_valid = sg_get_sense_info_fld(sbp, slen, io_addrp); if (info_valid) { fprintf(stderr, " lba of last recovered error in this " - "READ=0x%"PRIx64"\n", *io_addrp); + "READ=0x%" PRIx64 "\n", *io_addrp); if (verbose > 1) sg_chk_n_print3("reading", &io_hdr, 1); } else { fprintf(stderr, "Recovered error: [no info] reading from " - "block=0x%"PRIx64", num=%d\n", from_block, blocks); + "block=0x%" PRIx64 ", num=%d\n", from_block, blocks); sg_chk_n_print3("reading", &io_hdr, verbose > 1); } break; @@ -786,8 +787,8 @@ sg_read(int sg_fd, unsigned char * buff, int blocks, int64_t from_block, break; case SG_LIB_CAT_MEDIUM_HARD_WITH_INFO: if (retries_tmp > 0) { - fprintf(stderr, ">>> retrying a sgio read, lba=0x%"PRIx64"\n", - (uint64_t)lba); + fprintf(stderr, ">>> retrying a sgio read, lba=0x%" PRIx64 + "\n", (uint64_t)lba); --retries_tmp; ++num_retries; if (unrecovered_errs > 0) @@ -807,8 +808,8 @@ sg_read(int sg_fd, unsigned char * buff, int blocks, int64_t from_block, may_coe = 1; default: if (retries_tmp > 0) { - fprintf(stderr, ">>> retrying a sgio read, lba=0x%"PRIx64"\n", - (uint64_t)lba); + fprintf(stderr, ">>> retrying a sgio read, lba=0x%" PRIx64 + "\n", (uint64_t)lba); --retries_tmp; ++num_retries; if (unrecovered_errs > 0) @@ -823,10 +824,10 @@ sg_read(int sg_fd, unsigned char * buff, int blocks, int64_t from_block, continue; if ((io_addr < (uint64_t)lba) || (io_addr >= (uint64_t)(lba + blks))) { - fprintf(stderr, " Unrecovered error lba 0x%"PRIx64" not in " - "correct range:\n\t[0x%"PRIx64",0x%"PRIx64"]\n", io_addr, - (uint64_t)lba, - (uint64_t)(lba + blks - 1)); + fprintf(stderr, " Unrecovered error lba 0x%" PRIx64 " not " + "in correct range:\n\t[0x%" PRIx64 ",0x%" PRIx64 + "]\n", io_addr, (uint64_t)lba, + (uint64_t)(lba + blks - 1)); may_coe = 1; goto err_out; } @@ -881,7 +882,7 @@ sg_read(int sg_fd, unsigned char * buff, int blocks, int64_t from_block, bp += (blks * bs); lba += blks; if ((0 != ifp->pdt) || (ifp->coe < 2)) { - fprintf(stderr, ">> unrecovered read error at blk=%"PRId64", " + fprintf(stderr, ">> unrecovered read error at blk=%" PRId64 ", " "pdt=%d, use zeros\n", lba, ifp->pdt); memset(bp, 0, bs); } else if (io_addr < UINT_MAX) { @@ -950,8 +951,8 @@ sg_read(int sg_fd, unsigned char * buff, int blocks, int64_t from_block, memset(bp, 0, bs); free(buffp); } else { - fprintf(stderr, ">> read_long(10) cannot handle blk=%"PRId64", " - "use zeros\n", lba); + fprintf(stderr, ">> read_long(10) cannot handle blk=%" PRId64 + ", use zeros\n", lba); memset(bp, 0, bs); } ++xferred; @@ -971,7 +972,7 @@ sg_read(int sg_fd, unsigned char * buff, int blocks, int64_t from_block, err_out: if (ifp->coe) { memset(bp, 0, bs * blks); - fprintf(stderr, ">> unable to read at blk=%"PRId64" for " + fprintf(stderr, ">> unable to read at blk=%" PRId64 " for " "%d bytes, use zeros\n", lba, bs * blks); if (blks > 1) fprintf(stderr, ">> try reducing bpt to limit number " @@ -1005,8 +1006,8 @@ sg_write(int sg_fd, unsigned char * buff, int blocks, int64_t to_block, if (sg_build_scsi_cdb(wrCmd, ofp->cdbsz, blocks, to_block, 1, ofp->fua, ofp->dpo)) { - fprintf(stderr, ME "bad wr cdb build, to_block=%"PRId64", blocks=%d\n", - to_block, blocks); + fprintf(stderr, ME "bad wr cdb build, to_block=%" PRId64 + ", blocks=%d\n", to_block, blocks); return SG_LIB_SYNTAX_ERROR; } @@ -1051,12 +1052,12 @@ sg_write(int sg_fd, unsigned char * buff, int blocks, int64_t to_block, &io_addr); if (info_valid) { fprintf(stderr, " lba of last recovered error in this " - "WRITE=0x%"PRIx64"\n", io_addr); + "WRITE=0x%" PRIx64 "\n", io_addr); if (verbose > 1) sg_chk_n_print3("writing", &io_hdr, 1); } else { fprintf(stderr, "Recovered error: [no info] writing to " - "block=0x%"PRIx64", num=%d\n", to_block, blocks); + "block=0x%" PRIx64 ", num=%d\n", to_block, blocks); sg_chk_n_print3("writing", &io_hdr, verbose > 1); } break; @@ -1073,7 +1074,7 @@ sg_write(int sg_fd, unsigned char * buff, int blocks, int64_t to_block, sg_chk_n_print3("writing", &io_hdr, verbose > 1); ++unrecovered_errs; if (ofp->coe) { - fprintf(stderr, ">> ignored errors for out blk=%"PRId64" for " + fprintf(stderr, ">> ignored errors for out blk=%" PRId64 " for " "%d bytes\n", to_block, bs * blocks); return 0; /* fudge success */ } else @@ -1323,7 +1324,7 @@ open_if(const char * inf, int64_t skip, int bpt, struct flags_t * ifp, } if (verbose) fprintf(stderr, " >> skip: lseek64 SEEK_SET, " - "byte offset=0x%"PRIx64"\n", + "byte offset=0x%" PRIx64 "\n", (uint64_t)offset); } #ifdef HAVE_POSIX_FADVISE @@ -1465,7 +1466,7 @@ open_of(const char * outf, int64_t seek, int bpt, struct flags_t * ofp, } if (verbose) fprintf(stderr, " >> seek: lseek64 SEEK_SET, " - "byte offset=0x%"PRIx64"\n", + "byte offset=0x%" PRIx64 "\n", (uint64_t)offset); } } @@ -1832,7 +1833,7 @@ main(int argc, char * argv[]) out_num_sect -= seek; #ifdef SG_DEBUG fprintf(stderr, "Start of loop, count=%" PRId64 ", in_num_sect=%" - PRId64 ", out_num_sect=%"PRId64"\n", dd_count, in_num_sect, + PRId64 ", out_num_sect=%" PRId64 "\n", dd_count, in_num_sect, out_num_sect); #endif if (dd_count < 0) { @@ -1888,7 +1889,7 @@ main(int argc, char * argv[]) blocks_per = bpt; #ifdef SG_DEBUG - fprintf(stderr, "Start of loop, count=%"PRId64", blocks_per=%d\n", + fprintf(stderr, "Start of loop, count=%" PRId64 ", blocks_per=%d\n", dd_count, blocks_per); #endif if (do_time) { @@ -1930,8 +1931,8 @@ main(int argc, char * argv[]) } } if (res) { - fprintf(stderr, "sg_read failed,%s at or after lba=%"PRId64" " - "[0x%"PRIx64"]\n", + fprintf(stderr, "sg_read failed,%s at or after lba=%" PRId64 + " [0x%" PRIx64 "]\n", ((-2 == res) ? " try reducing bpt," : ""), skip, skip); ret = res; break; @@ -1952,7 +1953,8 @@ main(int argc, char * argv[]) fprintf(stderr, "read(unix): count=%d, res=%d\n", blocks * blk_sz, res); if (res < 0) { - snprintf(ebuff, EBUFF_SZ, ME "reading, skip=%"PRId64" ", skip); + snprintf(ebuff, EBUFF_SZ, ME "reading, skip=%" PRId64 " ", + skip); perror(ebuff); ret = -1; break; @@ -1979,8 +1981,8 @@ main(int argc, char * argv[]) fprintf(stderr, "write to of2: count=%d, res=%d\n", blocks * blk_sz, res); if (res < 0) { - snprintf(ebuff, EBUFF_SZ, ME "writing to of2, seek=%"PRId64" ", - seek); + snprintf(ebuff, EBUFF_SZ, ME "writing to of2, seek=%" PRId64 + " ", seek); perror(ebuff); ret = -1; break; @@ -2008,7 +2010,8 @@ main(int argc, char * argv[]) out_sparse += blocks; if (verbose > 2) fprintf(stderr, "sparse bypassing sg_write: seek " - "blk=%"PRId64", offset blks=%d\n", seek, blocks); + "blk=%" PRId64 ", offset blks=%d\n", seek, + blocks); } else if (FT_DEV_NULL & out_type) ; else { @@ -2077,7 +2080,7 @@ main(int argc, char * argv[]) break; else if (retries_tmp > 0) { fprintf(stderr, ">>> retrying a sgio write, " - "lba=0x%"PRIx64"\n", (uint64_t)seek); + "lba=0x%" PRIx64 "\n", (uint64_t)seek); --retries_tmp; ++num_retries; if (unrecovered_errs > 0) @@ -2087,7 +2090,7 @@ main(int argc, char * argv[]) first = 0; } if (0 != ret) { - fprintf(stderr, "sg_write failed,%s seek=%"PRId64"\n", + fprintf(stderr, "sg_write failed,%s seek=%" PRId64 "\n", ((-2 == ret) ? " try reducing bpt," : ""), seek); break; } else { @@ -2105,7 +2108,8 @@ main(int argc, char * argv[]) fprintf(stderr, "write(unix): count=%d, res=%d\n", blocks * blk_sz, res); if (res < 0) { - snprintf(ebuff, EBUFF_SZ, ME "writing, seek=%"PRId64" ", seek); + snprintf(ebuff, EBUFF_SZ, ME "writing, seek=%" PRId64 " ", + seek); perror(ebuff); ret = -1; break; @@ -2138,19 +2142,19 @@ main(int argc, char * argv[]) // rt = posix_fadvise(infd, 0, 0, POSIX_FADV_DONTNEED); if (rt) /* returns error as result */ fprintf(stderr, "posix_fadvise on read, skip=" - "%"PRId64" ,err=%d\n", skip, rt); + "%" PRId64 " ,err=%d\n", skip, rt); } if ((oflag.nocache & 2) && (bytes_of2 > 0) && out2_valid) { rt = posix_fadvise(out2fd, 0, 0, POSIX_FADV_DONTNEED); if (rt) fprintf(stderr, "posix_fadvise on of2, seek=" - "%"PRId64" ,err=%d\n", seek, rt); + "%" PRId64 " ,err=%d\n", seek, rt); } if ((oflag.nocache & 1) && (bytes_of > 0) && out_valid) { rt = posix_fadvise(outfd, 0, 0, POSIX_FADV_DONTNEED); if (rt) fprintf(stderr, "posix_fadvise on output, seek=" - "%"PRId64" ,err=%d\n", seek, rt); + "%" PRId64 " ,err=%d\n", seek, rt); } } #endif @@ -2173,7 +2177,7 @@ main(int argc, char * argv[]) "res=%d\n", penult_blocks * blk_sz, res); if (res < 0) { snprintf(ebuff, EBUFF_SZ, ME "writing(sparse after error), " - "seek=%"PRId64" ", seek); + "seek=%" PRId64 " ", seek); perror(ebuff); } } diff --git a/src/sg_ident.c b/src/sg_ident.c index 67ef96d4..36c45b20 100644 --- a/src/sg_ident.c +++ b/src/sg_ident.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005-2011 Douglas Gilbert. + * Copyright (c) 2005-2013 Douglas Gilbert. * All rights reserved. * Use of this source code is governed by a BSD-style * license that can be found in the BSD_LICENSE file. @@ -27,7 +27,7 @@ * DEVICE IDENTIFIER and SET DEVICE IDENTIFIER prior to spc4r07. */ -static const char * version_str = "1.10 20130507"; +static const char * version_str = "1.11 20130603"; #define ME "sg_ident: " @@ -49,10 +49,12 @@ static struct option long_options[] = { static void decode_ii(const unsigned char * iip, int ii_len, int itype, int ascii, int raw, int verbose) { - int k, n; + int k; if (raw) { if (ii_len > 0) { + int n; + if (sg_set_binary_mode(STDOUT_FILENO) < 0) perror("sg_set_binary_mode"); #if 0 @@ -60,8 +62,9 @@ static void decode_ii(const unsigned char * iip, int ii_len, int itype, #else n = write(STDOUT_FILENO, iip, ii_len); #endif + if (verbose && (n < 1)) + fprintf(stderr, "unable to write to stdout\n"); } - n = n; /* suppress warning */ return; } if (0x7f == itype) { /* list of available information types */ diff --git a/src/sg_modes.c b/src/sg_modes.c index 7e0e0357..5392a565 100644 --- a/src/sg_modes.c +++ b/src/sg_modes.c @@ -25,7 +25,7 @@ #include "sg_lib.h" #include "sg_cmds_basic.h" -static const char * version_str = "1.41 20130507"; +static const char * version_str = "1.42 20130604"; #define DEF_ALLOC_LEN (1024 * 4) #define DEF_6_ALLOC_LEN 252 @@ -1072,7 +1072,7 @@ main(int argc, char * argv[]) } } - memset(rsp_buff, 0, sizeof(rsp_buff)); + memset(rsp_buff, 0, rsp_buff_size); if (opts.do_six) { res = sg_ll_mode_sense6(sg_fd, opts.do_dbd, opts.page_control, opts.pg_code, opts.subpg_code, rsp_buff, diff --git a/src/sg_persist.c b/src/sg_persist.c index 977618f4..bfc345fd 100644 --- a/src/sg_persist.c +++ b/src/sg_persist.c @@ -26,7 +26,7 @@ #include "sg_cmds_basic.h" #include "sg_cmds_extra.h" -static const char * version_str = "0.38 20130507"; +static const char * version_str = "0.39 20130604"; #define PRIN_RKEY_SA 0x0 @@ -330,17 +330,24 @@ prin_work(int sg_fd, const struct opts_t * optsp) res = sg_ll_persistent_reserve_in(sg_fd, optsp->prin_sa, pr_buff, optsp->alloc_len, 1, optsp->verbose); if (res) { + char b[64]; + + if (optsp->prin_sa < num_prin_sa_strs) + snprintf(b, sizeof(b), "%s", prin_sa_strs[optsp->prin_sa]); + else + snprintf(b, sizeof(b), "service action=0x%x", optsp->prin_sa); + if (SG_LIB_CAT_INVALID_OP == res) - fprintf(stderr, "PR in: command not supported\n"); + fprintf(stderr, "PR in (%s): command not supported\n", b); else if (SG_LIB_CAT_ILLEGAL_REQ == res) - fprintf(stderr, "PR in: bad field in cdb including " - "unsupported service action\n"); + fprintf(stderr, "PR in (%s): bad field in cdb including " + "unsupported service action\n", b); else if (SG_LIB_CAT_UNIT_ATTENTION == res) - fprintf(stderr, "PR in: unit attention\n"); + fprintf(stderr, "PR in (%s): unit attention\n", b); else if (SG_LIB_CAT_ABORTED_COMMAND == res) - fprintf(stderr, "PR in: aborted command\n"); + fprintf(stderr, "PR in (%s): aborted command\n", b); else - fprintf(stderr, "PR in: command failed\n"); + fprintf(stderr, "PR in (%s): command failed\n", b); return res; } if (PRIN_RCAP_SA == optsp->prin_sa) { @@ -569,7 +576,8 @@ prout_work(int sg_fd, struct opts_t * optsp) char buff[64]; if (optsp->prout_sa < num_prout_sa_strs) - strncpy(buff, prout_sa_strs[optsp->prout_sa], sizeof(buff)); + snprintf(buff, sizeof(buff), "%s", + prout_sa_strs[optsp->prout_sa]); else snprintf(buff, sizeof(buff), "service action=0x%x", optsp->prout_sa); diff --git a/src/sg_rbuf.c b/src/sg_rbuf.c index f5c1b56b..f7bb9c26 100644 --- a/src/sg_rbuf.c +++ b/src/sg_rbuf.c @@ -51,7 +51,7 @@ #endif -static const char * version_str = "4.89 20130507"; +static const char * version_str = "4.90 20130603"; static struct option long_options[] = { {"buffer", 1, 0, 'b'}, @@ -608,8 +608,8 @@ main(int argc, char * argv[]) } if (dio_incomplete) printf(">> direct IO requested but not done\n"); - printf("Read %"PRId64" MiB (actual: %"PRId64" bytes), buffer size=%d KiB " - "(%d bytes)\n", (total_size / (1024 * 1024)), + printf("Read %" PRId64 " MiB (actual: %" PRId64 " bytes), buffer " + "size=%d KiB (%d bytes)\n", (total_size / (1024 * 1024)), (int64_t)num * buf_size, buf_size / 1024, buf_size); if (rawp) free(rawp); diff --git a/src/sg_read.c b/src/sg_read.c index 9c7dbffb..43100f37 100644 --- a/src/sg_read.c +++ b/src/sg_read.c @@ -1,5 +1,5 @@ /* A utility program for the Linux OS SCSI generic ("sg") device driver. -* Copyright (C) 2001 - 2012 D. Gilbert +* Copyright (C) 2001 - 2013 D. Gilbert * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) @@ -48,7 +48,7 @@ #include "sg_io_linux.h" -static const char * version_str = "1.19 20121211"; +static const char * version_str = "1.20 20130603"; #define DEF_BLOCK_SIZE 512 #define DEF_BLOCKS_PER_TRANSFER 128 @@ -105,8 +105,9 @@ static void print_stats(int iters, const char * str) { if (orig_count > 0) { if (0 != dd_count) - fprintf(stderr, " remaining block count=%"PRId64"\n", dd_count); - fprintf(stderr, "%"PRId64"+%d records in", in_full - in_partial, + fprintf(stderr, " remaining block count=%" PRId64 "\n", + dd_count); + fprintf(stderr, "%" PRId64 "+%d records in", in_full - in_partial, in_partial); if (iters > 0) fprintf(stderr, ", %s commands issued: %d\n", (str ? str : ""), @@ -307,8 +308,8 @@ static int sg_bread(int sg_fd, unsigned char * buff, int blocks, struct sg_io_hdr io_hdr; if (sg_build_scsi_cdb(rdCmd, cdbsz, blocks, from_block, 0, fua, dpo)) { - fprintf(stderr, ME "bad cdb build, from_block=%"PRId64", blocks=%d\n", - from_block, blocks); + fprintf(stderr, ME "bad cdb build, from_block=%" PRId64 + ", blocks=%d\n", from_block, blocks); return -1; } memset(&io_hdr, 0, sizeof(struct sg_io_hdr)); @@ -677,7 +678,7 @@ int main(int argc, char * argv[]) start_tm.tv_usec = 0; if (verbose && (dd_count < 0)) - fprintf(stderr, "About to issue %"PRId64" zero block SCSI READs\n", + fprintf(stderr, "About to issue %" PRId64 " zero block SCSI READs\n", 0 - dd_count); /* main loop */ @@ -754,7 +755,8 @@ int main(int argc, char * argv[]) (EINTR == errno)) ; if (res < 0) { - snprintf(ebuff, EBUFF_SZ, ME "reading, skip=%"PRId64" ", skip); + snprintf(ebuff, EBUFF_SZ, ME "reading, skip=%" PRId64 " ", + skip); perror(ebuff); break; } else if (res < blocks * bs) { diff --git a/src/sg_sanitize.c b/src/sg_sanitize.c index 10b0ac85..68f03aa5 100644 --- a/src/sg_sanitize.c +++ b/src/sg_sanitize.c @@ -26,7 +26,7 @@ #include "sg_cmds_basic.h" #include "sg_cmds_extra.h" -static const char * version_str = "0.91 20130507"; +static const char * version_str = "0.92 20130603"; /* Not all environments support the Unix sleep() */ #if defined(MSC_VER) || defined(__MINGW32__) @@ -222,7 +222,7 @@ do_sanitize(int sg_fd, const struct opts_t * op, const void * param_lstp, valid = sg_get_sense_info_fld(sense_b, slen, &ull); if (valid) fprintf(stderr, "Medium or hardware error starting at " - "lba=%"PRIu64" [0x%"PRIx64"]\n", ull, ull); + "lba=%" PRIu64 " [0x%" PRIx64 "]\n", ull, ull); } ret = sense_cat; break; diff --git a/src/sg_write_same.c b/src/sg_write_same.c index 7f10217b..09e2f5d4 100644 --- a/src/sg_write_same.c +++ b/src/sg_write_same.c @@ -26,7 +26,7 @@ #include "sg_cmds_basic.h" #include "sg_cmds_extra.h" -static const char * version_str = "1.02 20130516"; +static const char * version_str = "1.03 20130603"; #define ME "sg_write_same: " @@ -293,7 +293,7 @@ do_write_same(int sg_fd, const struct opts_t * optsp, const void * dataoutp, valid = sg_get_sense_info_fld(sense_b, slen, &ull); if (valid) fprintf(stderr, "Medium or hardware error starting at " - "lba=%"PRIu64" [0x%"PRIx64"]\n", ull, ull); + "lba=%" PRIu64 " [0x%" PRIx64 "]\n", ull, ull); } ret = sense_cat; break; diff --git a/src/sg_xcopy.c b/src/sg_xcopy.c index b2f3a015..13f986e8 100644 --- a/src/sg_xcopy.c +++ b/src/sg_xcopy.c @@ -61,7 +61,7 @@ #include "sg_cmds_extra.h" #include "sg_io_linux.h" -static const char * version_str = "0.34 20130507"; +static const char * version_str = "0.35 20130603"; #define ME "sg_xcopy: " @@ -189,10 +189,10 @@ static void print_stats(const char * str) { if (0 != dd_count) - fprintf(stderr, " remaining block count=%"PRId64"\n", dd_count); - fprintf(stderr, "%s%"PRId64"+%d records in\n", str, in_full - in_partial, - in_partial); - fprintf(stderr, "%s%"PRId64"+%d records out\n", str, + fprintf(stderr, " remaining block count=%" PRId64 "\n", dd_count); + fprintf(stderr, "%s%" PRId64 "+%d records in\n", str, + in_full - in_partial, in_partial); + fprintf(stderr, "%s%" PRId64 "+%d records out\n", str, out_full - out_partial, out_partial); #if 0 if (recovered_errs > 0) @@ -623,9 +623,9 @@ scsi_read_capacity(struct xcopy_fp_t *xfp) (rcBuff[6] << 8) | rcBuff[7]; } if (verbose) - fprintf(stderr, " %s: number of blocks=%"PRId64" [0x%"PRIx64"], " - "block size=%d\n", xfp->fname, xfp->num_sect, xfp->num_sect, - xfp->sect_sz); + fprintf(stderr, " %s: number of blocks=%" PRId64 " [0x%" PRIx64 + "], block size=%d\n", xfp->fname, xfp->num_sect, + xfp->num_sect, xfp->sect_sz); return 0; } @@ -1655,7 +1655,7 @@ main(int argc, char * argv[]) } if (skip && ifp.num_sect < skip) { fprintf(stderr, "argument to 'skip=' exceeds device size " - "(max %"PRId64")\n", ifp.num_sect); + "(max %" PRId64 ")\n", ifp.num_sect); return SG_LIB_SYNTAX_ERROR; } @@ -1681,7 +1681,7 @@ main(int argc, char * argv[]) } if (seek && ofp.num_sect < seek) { fprintf(stderr, "argument to 'seek=' exceeds device size " - "(max %"PRId64")\n", ofp.num_sect); + "(max %" PRId64 ")\n", ofp.num_sect); return SG_LIB_SYNTAX_ERROR; } if ((dd_count < 0) || ((verbose > 0) && (0 == dd_count))) { @@ -1704,12 +1704,12 @@ main(int argc, char * argv[]) if (dd_bytes > ifp.num_sect * ifp.sect_sz) { fprintf(stderr, "access beyond end of source device " - "(max %"PRId64")\n", ifp.num_sect); + "(max %" PRId64 ")\n", ifp.num_sect); return SG_LIB_SYNTAX_ERROR; } if (dd_bytes > ofp.num_sect * ofp.sect_sz) { fprintf(stderr, "access beyond end of target device " - "(max %"PRId64")\n", ofp.num_sect); + "(max %" PRId64 ")\n", ofp.num_sect); return SG_LIB_SYNTAX_ERROR; } } @@ -1838,8 +1838,8 @@ main(int argc, char * argv[]) #ifdef SG_DEBUG fprintf(stderr, - "Start of loop, count=%"PRId64", bpt=%d, " - "lba_in=%"PRId64", lba_out=%"PRId64"\n", + "Start of loop, count=%" PRId64 ", bpt=%d, " + "lba_in=%" PRId64 ", lba_out=%" PRId64 "\n", dd_count, bpt, skip, seek); #endif xcopy_fd = (on_src) ? infd : outfd; @@ -1862,10 +1862,10 @@ main(int argc, char * argv[]) if (do_time) calc_duration_throughput(0); if (res) - fprintf(stderr, "sg_xcopy: failed with error %d (%"PRId64 + fprintf(stderr, "sg_xcopy: failed with error %d (%" PRId64 " blocks left)\n", res, dd_count); else - fprintf(stderr, "sg_xcopy: %"PRId64" blocks, %d command%s\n", + fprintf(stderr, "sg_xcopy: %" PRId64 " blocks, %d command%s\n", in_full, num_xcopy, ((num_xcopy > 1) ? "s" : "")); return res; diff --git a/src/sginfo.c b/src/sginfo.c index 6a8f0b93..b27f117c 100644 --- a/src/sginfo.c +++ b/src/sginfo.c @@ -122,7 +122,7 @@ #define _GNU_SOURCE #endif -static const char * version_str = "2.33 [20130507]"; +static const char * version_str = "2.34 [20130603]"; #include <stdio.h> #include <string.h> @@ -639,14 +639,14 @@ check_parm_type(int i) if (i == 1 && is_hex[next_parameter] != 1) { snprintf(reason, REASON_SZ, - "simple number (pos %i) instead of @ hexdatafield: %"PRIu64, - next_parameter, replacement_values[next_parameter]); + "simple number (pos %i) instead of @ hexdatafield: %" + PRIu64 , next_parameter, replacement_values[next_parameter]); usage(reason); } if (i != 1 && is_hex[next_parameter]) { snprintf(reason, REASON_SZ, - "@ hexdatafield (pos %i) instead of a simple number: %"PRIu64, - next_parameter, replacement_values[next_parameter]); + "@ hexdatafield (pos %i) instead of a simple number: %" + PRIu64 , next_parameter, replacement_values[next_parameter]); usage(reason); } } @@ -1783,7 +1783,7 @@ trytenbyte: } case 3: /* lba (64 bit) */ while (len > 0) { - printf("%15"PRId64, getnbyte_ll(df, 8)); + printf("%15" PRId64 , getnbyte_ll(df, 8)); len -= 8; df += 8; i++; diff --git a/src/sgm_dd.c b/src/sgm_dd.c index f6d8e3e4..f327ae6f 100644 --- a/src/sgm_dd.c +++ b/src/sgm_dd.c @@ -65,9 +65,9 @@ /* #define SG_WANT_SHARED_MMAP_IO 1 */ #ifdef SG_WANT_SHARED_MMAP_IO -static const char * version_str = "1.37 20130507 shared_mmap"; +static const char * version_str = "1.38 20130603 shared_mmap"; #else -static const char * version_str = "1.37 20130507"; +static const char * version_str = "1.38 20130603"; #endif #define DEF_BLOCK_SIZE 512 @@ -176,10 +176,10 @@ static void print_stats() { if (0 != dd_count) - fprintf(stderr, " remaining block count=%"PRId64"\n", dd_count); - fprintf(stderr, "%"PRId64"+%d records in\n", in_full - in_partial, + fprintf(stderr, " remaining block count=%" PRId64 "\n", dd_count); + fprintf(stderr, "%" PRId64 "+%d records in\n", in_full - in_partial, in_partial); - fprintf(stderr, "%"PRId64"+%d records out\n", out_full - out_partial, + fprintf(stderr, "%" PRId64 "+%d records out\n", out_full - out_partial, out_partial); } @@ -627,8 +627,8 @@ sg_write(int sg_fd, unsigned char * buff, int blocks, int64_t to_block, int k, res; if (sg_build_scsi_cdb(wrCmd, cdbsz, blocks, to_block, 1, fua, dpo)) { - fprintf(stderr, ME "bad wr cdb build, to_block=%"PRId64", blocks=%d\n", - to_block, blocks); + fprintf(stderr, ME "bad wr cdb build, to_block=%" PRId64 + ", blocks=%d\n", to_block, blocks); return SG_LIB_SYNTAX_ERROR; } @@ -1056,7 +1056,7 @@ main(int argc, char * argv[]) } if (verbose) fprintf(stderr, " >> skip: lseek64 SEEK_SET, " - "byte offset=0x%"PRIx64"\n", + "byte offset=0x%" PRIx64 "\n", (uint64_t)offset); } } @@ -1155,7 +1155,7 @@ main(int argc, char * argv[]) } if (verbose) fprintf(stderr, " >> seek: lseek64 SEEK_SET, " - "byte offset=0x%"PRIx64"\n", + "byte offset=0x%" PRIx64 "\n", (uint64_t)offset); } } @@ -1240,7 +1240,7 @@ main(int argc, char * argv[]) out_num_sect -= seek; #ifdef SG_DEBUG fprintf(stderr, "Start of loop, count=%" PRId64 ", in_num_sect=%" - PRId64 ", out_num_sect=%"PRId64"\n", dd_count, in_num_sect, + PRId64 ", out_num_sect=%" PRId64 "\n", dd_count, in_num_sect, out_num_sect); #endif if (in_num_sect > 0) { @@ -1320,7 +1320,7 @@ main(int argc, char * argv[]) blocks_per = bpt; #ifdef SG_DEBUG - fprintf(stderr, "Start of loop, count=%"PRId64", blocks_per=%d\n", + fprintf(stderr, "Start of loop, count=%" PRId64 ", blocks_per=%d\n", dd_count, blocks_per); #endif if (do_time) { @@ -1354,7 +1354,7 @@ main(int argc, char * argv[]) scsi_cdbsz_in, in_flags.fua, in_flags.dpo, 1); } if (0 != ret) { - fprintf(stderr, "sg_read failed, skip=%"PRId64"\n", skip); + fprintf(stderr, "sg_read failed, skip=%" PRId64 "\n", skip); break; } else @@ -1368,7 +1368,8 @@ main(int argc, char * argv[]) fprintf(stderr, "read(unix): count=%d, res=%d\n", blocks * blk_sz, res); if (ret < 0) { - snprintf(ebuff, EBUFF_SZ, ME "reading, skip=%"PRId64" ", skip); + snprintf(ebuff, EBUFF_SZ, ME "reading, skip=%" PRId64 " ", + skip); perror(ebuff); ret = -1; break; @@ -1411,7 +1412,7 @@ main(int argc, char * argv[]) &dio_res); } if (0 != ret) { - fprintf(stderr, "sg_write failed, seek=%"PRId64"\n", seek); + fprintf(stderr, "sg_write failed, seek=%" PRId64 "\n", seek); break; } else { @@ -1430,7 +1431,8 @@ main(int argc, char * argv[]) fprintf(stderr, "write(unix): count=%d, res=%d\n", blocks * blk_sz, res); if (res < 0) { - snprintf(ebuff, EBUFF_SZ, ME "writing, seek=%"PRId64" ", seek); + snprintf(ebuff, EBUFF_SZ, ME "writing, seek=%" PRId64 " ", + seek); perror(ebuff); break; } diff --git a/src/sgp_dd.c b/src/sgp_dd.c index 06a0fa38..50822eba 100644 --- a/src/sgp_dd.c +++ b/src/sgp_dd.c @@ -57,7 +57,7 @@ #include "sg_io_linux.h" -static const char * version_str = "5.43 20130507"; +static const char * version_str = "5.44 20130603"; #define DEF_BLOCK_SIZE 512 #define DEF_BLOCKS_PER_TRANSFER 128 @@ -225,14 +225,14 @@ print_stats(const char * str) int64_t infull, outfull; if (0 != rcoll.out_rem_count) - fprintf(stderr, " remaining block count=%"PRId64"\n", + fprintf(stderr, " remaining block count=%" PRId64 "\n", rcoll.out_rem_count); infull = dd_count - rcoll.in_rem_count; - fprintf(stderr, "%s%"PRId64"+%d records in\n", str, + fprintf(stderr, "%s%" PRId64 "+%d records in\n", str, infull - rcoll.in_partial, rcoll.in_partial); outfull = dd_count - rcoll.out_rem_count; - fprintf(stderr, "%s%"PRId64"+%d records out\n", str, + fprintf(stderr, "%s%" PRId64 "+%d records out\n", str, outfull - rcoll.out_partial, rcoll.out_partial); } @@ -655,7 +655,7 @@ normal_in_operation(Rq_coll * clp, Rq_elem * rep, int blocks) if (res < 0) { if (clp->in_flags.coe) { memset(rep->buffp, 0, rep->num_blks * rep->bs); - fprintf(stderr, ">> substituted zeros for in blk=%"PRId64" for " + fprintf(stderr, ">> substituted zeros for in blk=%" PRId64 " for " "%d bytes, %s\n", rep->blk, rep->num_blks * rep->bs, tsafe_strerror(errno, strerr_buff)); @@ -700,7 +700,7 @@ normal_out_operation(Rq_coll * clp, Rq_elem * rep, int blocks) ; if (res < 0) { if (clp->out_flags.coe) { - fprintf(stderr, ">> ignored error for out blk=%"PRId64" for " + fprintf(stderr, ">> ignored error for out blk=%" PRId64 " for " "%d bytes, %s\n", rep->blk, rep->num_blks * rep->bs, tsafe_strerror(errno, strerr_buff)); @@ -829,7 +829,7 @@ sg_in_operation(Rq_coll * clp, Rq_elem * rep) if (1 == res) err_exit(ENOMEM, "sg starting in command"); else if (res < 0) { - fprintf(stderr, ME "inputting to sg failed, blk=%"PRId64"\n", + fprintf(stderr, ME "inputting to sg failed, blk=%" PRId64 "\n", rep->blk); status = pthread_mutex_unlock(&clp->in_mutex); if (0 != status) err_exit(status, "unlock in_mutex"); @@ -900,7 +900,7 @@ sg_out_operation(Rq_coll * clp, Rq_elem * rep) if (1 == res) err_exit(ENOMEM, "sg starting out command"); else if (res < 0) { - fprintf(stderr, ME "outputting from sg failed, blk=%"PRId64"\n", + fprintf(stderr, ME "outputting from sg failed, blk=%" PRId64 "\n", rep->blk); status = pthread_mutex_unlock(&clp->out_mutex); if (0 != status) err_exit(status, "unlock out_mutex"); @@ -929,8 +929,8 @@ sg_out_operation(Rq_coll * clp, Rq_elem * rep) guarded_stop_both(clp); return; } else - fprintf(stderr, ">> ignored error for out blk=%"PRId64" for " - "%d bytes\n", rep->blk, rep->num_blks * rep->bs); + fprintf(stderr, ">> ignored error for out blk=%" PRId64 + " for %d bytes\n", rep->blk, rep->num_blks * rep->bs); /* fall through */ case 0: if (rep->dio_incomplete || rep->resid) { @@ -969,8 +969,8 @@ sg_start_io(Rq_elem * rep) if (sg_build_scsi_cdb(rep->cmd, cdbsz, rep->num_blks, rep->blk, rep->wr, fua, dpo)) { - fprintf(stderr, ME "bad cdb build, start_blk=%"PRId64", blocks=%d\n", - rep->blk, rep->num_blks); + fprintf(stderr, ME "bad cdb build, start_blk=%" PRId64 + ", blocks=%d\n", rep->blk, rep->num_blks); return -1; } memset(hp, 0, sizeof(struct sg_io_hdr)); @@ -988,7 +988,7 @@ sg_start_io(Rq_elem * rep) if (dio) hp->flags |= SG_FLAG_DIRECT_IO; if (rep->debug > 8) { - fprintf(stderr, "sg_start_io: SCSI %s, blk=%"PRId64" num_blks=%d\n", + fprintf(stderr, "sg_start_io: SCSI %s, blk=%" PRId64 " num_blks=%d\n", rep->wr ? "WRITE" : "READ", rep->blk, rep->num_blks); sg_print_command(hp->cmdp); } @@ -1054,7 +1054,7 @@ sg_finish_io(int wr, Rq_elem * rep, pthread_mutex_t * a_mutp) { char ebuff[EBUFF_SZ]; - snprintf(ebuff, EBUFF_SZ, "%s blk=%"PRId64, + snprintf(ebuff, EBUFF_SZ, "%s blk=%" PRId64, wr ? "writing": "reading", rep->blk); status = pthread_mutex_lock(a_mutp); if (0 != status) err_exit(status, "lock aux_mutex"); |