aboutsummaryrefslogtreecommitdiff
path: root/src/sg_referrals.c
diff options
context:
space:
mode:
authorDouglas Gilbert <dgilbert@interlog.com>2014-05-12 18:11:45 +0000
committerDouglas Gilbert <dgilbert@interlog.com>2014-05-12 18:11:45 +0000
commit6f08d95bf0f49a3430ba6d3ac06c3f8b51b4d8d2 (patch)
treea51b893d2571fe82df396dacd82cb575d105cfd4 /src/sg_referrals.c
parent7c5eb1f951e4349bef24fe9056fdc6c190217d95 (diff)
downloadsg3_utils-6f08d95bf0f49a3430ba6d3ac06c3f8b51b4d8d2.tar.gz
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
Diffstat (limited to 'src/sg_referrals.c')
-rw-r--r--src/sg_referrals.c19
1 files changed, 12 insertions, 7 deletions
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));