sg_senddiag: add --timeout=SEC option

git-svn-id: https://svn.bingwo.ca/repos/sg3_utils/trunk@666 6180dd3e-e324-4e3e-922d-17de1ae2f315
diff --git a/ChangeLog b/ChangeLog
index 3ac8dd5..591f78a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,8 +2,8 @@
 some description at the top of its ".c" file. All utilities in the main
 directory have their own "man" pages. There is also a sg3_utils man page.
 
-Changelog for sg3_utils-1.43 [20160218] [svn: r664]
-  - bump version
+Changelog for sg3_utils-1.43 [20160218] [svn: r666]
+  - sg_senddiag: add --timeout=SEC option
 
 Changelog for sg3_utils-1.42 [20160217] [svn: r663]
   - sg_timestamp: new, to report or set timestamp
diff --git a/README.win32 b/README.win32
index 264a845..f391c7e 100644
--- a/README.win32
+++ b/README.win32
@@ -43,8 +43,8 @@
     sg_logs
     sg_luns
     sg_modes
-    sg_persist
     sg_opcodes
+    sg_persist
     sg_prevent
     sg_raw
     sg_rdac
@@ -56,8 +56,8 @@
     sg_reassign
     sg_referrals
     sg_rep_zones
-    sg_reset_wp
     sg_requests
+    sg_reset_wp
     sg_rmsn
     sg_rtpg
     sg_safte
@@ -83,7 +83,7 @@
     sg_write_long
     sg_write_same
     sg_write_verify
-    sg_zones
+    sg_zone
 
 Most utility names are indicative of the main SCSI command that they execute.
 Some utilities are slightly higher level, for example sg_ses fetches SCSI
@@ -238,4 +238,4 @@
 
 
 Douglas Gilbert
-17th February 2016
+18th February 2016
diff --git a/doc/sg3_utils.8 b/doc/sg3_utils.8
index 233a9e9..914075a 100644
--- a/doc/sg3_utils.8
+++ b/doc/sg3_utils.8
@@ -1,4 +1,4 @@
-.TH SG3_UTILS "8" "February 2016" "sg3_utils\-1.42" SG3_UTILS
+.TH SG3_UTILS "8" "February 2016" "sg3_utils\-1.43" SG3_UTILS
 .SH NAME
 sg3_utils \- a package of utilities for sending SCSI commands
 .SH SYNOPSIS
diff --git a/src/sg_rbuf.c b/src/sg_rbuf.c
index 2d201b6..b4d8835 100644
--- a/src/sg_rbuf.c
+++ b/src/sg_rbuf.c
@@ -11,7 +11,7 @@
  */
 
 
-#define _XOPEN_SOURCE 500
+#define _XOPEN_SOURCE 600
 #ifndef _GNU_SOURCE
 #define _GNU_SOURCE 1
 #endif
@@ -55,7 +55,7 @@
 #endif
 
 
-static const char * version_str = "4.95 20160121";
+static const char * version_str = "4.96 20160218";
 
 static struct option long_options[] = {
         {"buffer", required_argument, 0, 'b'},
diff --git a/src/sg_read.c b/src/sg_read.c
index 7b0b989..83a72b9 100644
--- a/src/sg_read.c
+++ b/src/sg_read.c
@@ -18,7 +18,7 @@
 
 */
 
-#define _XOPEN_SOURCE 500
+#define _XOPEN_SOURCE 600
 #ifndef _GNU_SOURCE
 #define _GNU_SOURCE 1
 #endif
@@ -50,7 +50,7 @@
 #include "sg_pr2serr.h"
 
 
-static const char * version_str = "1.25 20160121";
+static const char * version_str = "1.26 20160218";
 
 #define DEF_BLOCK_SIZE 512
 #define DEF_BLOCKS_PER_TRANSFER 128
diff --git a/src/sg_sanitize.c b/src/sg_sanitize.c
index bb9e866..2f301ca 100644
--- a/src/sg_sanitize.c
+++ b/src/sg_sanitize.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011-2015 Douglas Gilbert.
+ * Copyright (c) 2011-2016 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.
@@ -28,7 +28,7 @@
 #include "sg_unaligned.h"
 #include "sg_pr2serr.h"
 
-static const char * version_str = "1.00 20151219";
+static const char * version_str = "1.01 20160218";
 
 /* Not all environments support the Unix sleep() */
 #if defined(MSC_VER) || defined(__MINGW32__)
@@ -422,7 +422,7 @@
     const char * device_name = NULL;
     char ebuff[EBUFF_SZ];
     char b[80];
-    unsigned char requestSenseBuff[DEF_REQS_RESP_LEN];
+    unsigned char rsBuff[DEF_REQS_RESP_LEN];
     unsigned char * wBuff = NULL;
     int ret = -1;
     struct opts_t opts;
@@ -671,9 +671,9 @@
     if ((0 == ret) && (0 == op->early) && (0 == op->wait)) {
         for (k = 0 ;; ++k) {
             sleep_for(POLL_DURATION_SECS);
-            memset(requestSenseBuff, 0x0, sizeof(requestSenseBuff));
-            res = sg_ll_request_sense(sg_fd, op->desc, requestSenseBuff,
-                                      sizeof(requestSenseBuff), 1, vb);
+            memset(rsBuff, 0x0, sizeof(rsBuff));
+            res = sg_ll_request_sense(sg_fd, op->desc, rsBuff, sizeof(rsBuff),
+				      1, vb);
             if (res) {
                 ret = res;
                 if (SG_LIB_CAT_INVALID_OP == res)
@@ -696,14 +696,13 @@
                 break;
             }
             /* "Additional sense length" same in descriptor and fixed */
-            resp_len = requestSenseBuff[7] + 8;
+            resp_len = rsBuff[7] + 8;
             if (vb > 2) {
                 pr2serr("Parameter data in hex\n");
-                dStrHexErr((const char *)requestSenseBuff, resp_len, 1);
+                dStrHexErr((const char *)rsBuff, resp_len, 1);
             }
             progress = -1;
-            sg_get_sense_progress_fld(requestSenseBuff, resp_len,
-                                      &progress);
+            sg_get_sense_progress_fld(rsBuff, resp_len, &progress);
             if (progress < 0) {
                 ret = res;
                 if (vb > 1)
diff --git a/src/sg_stpg.c b/src/sg_stpg.c
index d19b0ae..ceaf72b 100644
--- a/src/sg_stpg.c
+++ b/src/sg_stpg.c
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2004-2015 Hannes Reinecke, Christophe Varoqui, Douglas Gilbert
+* Copyright (c) 2004-2016 Hannes Reinecke, Christophe Varoqui, 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.
@@ -12,7 +12,11 @@
 #include <string.h>
 #include <ctype.h>
 #include <getopt.h>
+#define __STDC_FORMAT_MACROS 1
 
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
 #include "sg_lib.h"
 #include "sg_cmds_basic.h"
 #include "sg_cmds_extra.h"
@@ -26,7 +30,7 @@
  * to the given SCSI device.
  */
 
-static const char * version_str = "1.10 20151219";
+static const char * version_str = "1.11 20160218";
 
 #define TGT_GRP_BUFF_LEN 1024
 #define MX_ALLOC_LEN (0xc000 + 0x80)
@@ -39,7 +43,15 @@
 #define TPGS_STATE_TRANSITIONING 0xf
 
 /* See also table 306 - Target port group descriptor format in SPC-4 rev 36e */
-#ifndef __cplusplus
+#ifdef __cplusplus
+
+// C++ does not support designated initializers
+static const unsigned char state_sup_mask[] = {
+    0x1, 0x2, 0x4, 0x8, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40, 0x80,
+};
+
+#else
 
 static const unsigned char state_sup_mask[] = {
         [TPGS_STATE_OPTIMIZED]     = 0x01,
@@ -50,14 +62,6 @@
         [TPGS_STATE_TRANSITIONING] = 0x80,
 };
 
-#else
-
-// C++ does not support designated initializers
-static const unsigned char state_sup_mask[] = {
-    0x1, 0x2, 0x4, 0x8, 0x0, 0x0, 0x0, 0x0,
-    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40, 0x80,
-};
-
 #endif  /* C or C++ ? */
 
 #define VPD_DEVICE_ID  0x83
@@ -345,7 +349,7 @@
         *state_arr_len = 0;
     k = strspn(inp, "0123456789aAbBcCdDeEfFhHnNoOsSuUxX,");
     if (in_len != k) {
-        pr2serr("build_state_arr: error at pos %d\n", k + 1);
+        pr2serr("%s: error at pos %d\n", __func__, k + 1);
         return 1;
     }
     for (k = 0; k < max_arr_len; ++k) {
@@ -371,8 +375,8 @@
                 state_arr[k] = 3;
                 break;
             default:
-                pr2serr("build_state_arr: expected 'ao', 'an', 'o', 's' or "
-                        "'u' at pos %d\n", (int)(lcp - inp + 1));
+                pr2serr("%s: expected 'ao', 'an', 'o', 's' or 'u' at pos "
+			"%d\n", __func__, (int)(lcp - inp + 1));
                 return 1;
             }
         }
@@ -381,11 +385,11 @@
             if (((v >= 0) && (v <= 3)) || (14 ==v))
                 state_arr[k] = v;
             else if (-1 == v) {
-                pr2serr("build_state_arr: error at pos %d\n",
+                pr2serr("%s: error at pos %d\n", __func__,
                         (int)(lcp - inp + 1));
                 return 1;
             } else {
-                pr2serr("build_state_arr: expect 0,1,2,3 or 14\n");
+                pr2serr("%s: expect 0,1,2,3 or 14\n", __func__);
                 return 1;
             }
         }
@@ -396,7 +400,7 @@
     }
     *state_arr_len = k + 1;
     if (k == max_arr_len) {
-        pr2serr("build_state_arr: array length exceeded\n");
+        pr2serr("%s: array length exceeded\n", __func__);
         return 1;
     }
     return 0;
diff --git a/src/sgm_dd.c b/src/sgm_dd.c
index 90f2938..88d32e3 100644
--- a/src/sgm_dd.c
+++ b/src/sgm_dd.c
@@ -29,7 +29,7 @@
    This version is designed for the linux kernel 2.4, 2.6 and 3 series.
 */
 
-#define _XOPEN_SOURCE 500
+#define _XOPEN_SOURCE 600
 #ifndef _GNU_SOURCE
 #define _GNU_SOURCE 1
 #endif
@@ -64,7 +64,7 @@
 #include "sg_pr2serr.h"
 
 
-static const char * version_str = "1.44 20151219";
+static const char * version_str = "1.45 20160218";
 
 #define DEF_BLOCK_SIZE 512
 #define DEF_BLOCKS_PER_TRANSFER 128
diff --git a/src/sgp_dd.c b/src/sgp_dd.c
index 661925d..5be338b 100644
--- a/src/sgp_dd.c
+++ b/src/sgp_dd.c
@@ -23,7 +23,7 @@
  * This version is designed for the linux kernel 2.4, 2.6 and 3 series.
  */
 
-#define _XOPEN_SOURCE 500
+#define _XOPEN_SOURCE 600
 #ifndef _GNU_SOURCE
 #define _GNU_SOURCE 1
 #endif