From b15dc3d385fa5f94350c0b4f721c026560891d28 Mon Sep 17 00:00:00 2001 From: Douglas Gilbert Date: Thu, 2 Apr 2009 16:49:49 +0000 Subject: Allow various comma separated list arguments to take space separator git-svn-id: https://svn.bingwo.ca/repos/sg3_utils/trunk@242 6180dd3e-e324-4e3e-922d-17de1ae2f315 --- src/sg_persist.c | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) (limited to 'src/sg_persist.c') diff --git a/src/sg_persist.c b/src/sg_persist.c index 05539918..96531cad 100644 --- a/src/sg_persist.c +++ b/src/sg_persist.c @@ -16,7 +16,7 @@ #include "sg_cmds_basic.h" #include "sg_cmds_extra.h" -/* A utility program for the Linux OS SCSI subsystem. +/* A utility program originally written for the Linux OS SCSI subsystem. * Copyright (C) 2004-2009 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 @@ -27,7 +27,7 @@ */ -static char * version_str = "0.34 20090313"; +static char * version_str = "0.36 20090402"; #define PRIN_RKEY_SA 0x0 @@ -581,11 +581,11 @@ prout_rmove_work(int sg_fd, const struct opts_t * optsp) return 0; } -/* Build transportid byte array from ASCII hexadecimal number which are - * comma separated. Direct form can only contain one transport ID. In - * the indirect form (when '-'==*inp) there can be multiple transport IDs, - * all assumed to contain the same number of bytes each. Fuller description - * in manpage of sg_persist(8). Returns 0 if successful, else 1 . +/* Build transportid byte array from ASCII hexadecimal number which are comma + * (or (single) space) separated. Direct form can only contain one transport + * ID. In the indirect form (when '-'==*inp) there can be multiple transport + * IDs, all assumed to contain the same number of bytes each. Fuller + * description in manpage of sg_persist(8). Returns 0 if successful, else 1 . * N.B. Contains transport ID related special handling (e.g. rounds up to * 24 bytes) */ @@ -597,6 +597,7 @@ build_transportid(const char * inp, struct opts_t * optsp) const char * lcp; unsigned char * tid_arr; char * cp; + char * c2p; tid_arr = optsp->transportid_arr; lcp = inp; @@ -677,7 +678,7 @@ build_transportid(const char * inp, struct opts_t * optsp) optsp->transportid_arr_len = off; optsp->num_transportids = num; } else { /* hex string on command line */ - k = strspn(inp, "0123456789aAbBcCdDeEfF,"); + k = strspn(inp, "0123456789aAbBcCdDeEfF, "); if (in_len != k) { fprintf(stderr, "build_transportid: error at pos %d\n", k + 1); @@ -692,8 +693,13 @@ build_transportid(const char * inp, struct opts_t * optsp) } tid_arr[k] = h; cp = strchr(lcp, ','); + c2p = strchr(lcp, ' '); + if (NULL == cp) + cp = c2p; if (NULL == cp) break; + if (c2p && (c2p < cp)) + cp = c2p; lcp = cp + 1; } else { fprintf(stderr, "build_transportid: error at pos %d\n", -- cgit v1.2.3