From 6f08d95bf0f49a3430ba6d3ac06c3f8b51b4d8d2 Mon Sep 17 00:00:00 2001 From: Douglas Gilbert Date: Mon, 12 May 2014 18:11:45 +0000 Subject: change SG_PERSIST_O_RDONLY to SG_PERSIST_IN_RDONLY; more --readonly options; windows work git-svn-id: https://svn.bingwo.ca/repos/sg3_utils/trunk@574 6180dd3e-e324-4e3e-922d-17de1ae2f315 --- src/sg_referrals.c | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) (limited to 'src/sg_referrals.c') diff --git a/src/sg_referrals.c b/src/sg_referrals.c index 14f1dda4..af7ca14a 100644 --- a/src/sg_referrals.c +++ b/src/sg_referrals.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2013 Hannes Reinecke. + * Copyright (c) 2010-2014 Hannes Reinecke. * All rights reserved. * Use of this source code is governed by a BSD-style * license that can be found in the BSD_LICENSE file. @@ -29,7 +29,7 @@ * SCSI device. */ -static const char * version_str = "1.03 20130507"; /* sbc3r24 */ +static const char * version_str = "1.04 20150511"; /* sbc4r01 */ #define MAX_REFER_BUFF_LEN (1024 * 1024) #define DEF_REFER_BUFF_LEN 256 @@ -82,6 +82,7 @@ static struct option long_options[] = { {"maxlen", required_argument, 0, 'm'}, {"one-segment", no_argument, 0, 's'}, {"raw", no_argument, 0, 'r'}, + {"readonly", no_argument, 0, 'R'}, {"verbose", no_argument, 0, 'v'}, {"version", no_argument, 0, 'V'}, {0, 0, 0, 0}, @@ -92,9 +93,9 @@ usage() { fprintf(stderr, "Usage: " "sg_referrals [--help] [--hex] [--lba=LBA] [--maxlen=LEN]\n" - " [--one-segment] [--raw] [--verbose] " - "[--version]\n" - " DEVICE\n" + " [--one-segment] [--raw] [--readonly] " + "[--verbose]\n" + " [--version] DEVICE\n" " where:\n" " --help|-h print out usage message\n" " --hex|-H output in hexadecimal\n" @@ -172,6 +173,7 @@ main(int argc, char * argv[]) int sg_fd, k, res, c, rlen; int do_hex = 0; int do_one_segment = 0; + int o_readonly = 0; int64_t ll; uint64_t lba = 0; int maxlen = DEF_REFER_BUFF_LEN; @@ -185,7 +187,7 @@ main(int argc, char * argv[]) while (1) { int option_index = 0; - c = getopt_long(argc, argv, "hHl:m:rsvV", long_options, + c = getopt_long(argc, argv, "hHl:m:rRsvV", long_options, &option_index); if (c == -1) break; @@ -220,6 +222,9 @@ main(int argc, char * argv[]) case 'r': ++do_raw; break; + case 'R': + ++o_readonly; + break; case 'v': ++verbose; break; @@ -266,7 +271,7 @@ main(int argc, char * argv[]) } } - sg_fd = sg_cmds_open_device(device_name, 0 /* rw */, verbose); + sg_fd = sg_cmds_open_device(device_name, o_readonly, verbose); if (sg_fd < 0) { fprintf(stderr, "open error: %s: %s\n", device_name, safe_strerror(-sg_fd)); -- cgit v1.2.3