Hi, scsiinfo: >>> Eric Youngdale ** - 11/1/93. Version 1.0. Version 1.81 was ported to sginfo in 1998 and placed in the sg_utils package. For more than 10 years I have been trying to discourage people from using it. It contains next to no modern VPD or mode pages and many of the standard INQUIRY response fields it lists are now obsolete. Curious about what sginfo and sysfs have in common. Oh well, looks like I have my first patch for sg3_utils version 1.39 . Doug Gilbert ** Did Eric wear bow ties? On 14-04-03 01:07 PM, shirishpargaonkar@xxxxxxxxx wrote:
From: Shirish Pargaonkar <spargaonkar@xxxxxxxx> sginfo <device> prints out various fields such as Vendor and Product in INQUIRY response with spaces (0x20) characters. This can confuse scripts some users have. A change to sysfs attributes such that it now includes spaces caused this problem. Strip out those trailing spaces (if any). Signed-off-by: Shirish Pargaonkar <spargaonkar@xxxxxxxx> --- Index: src/sginfo.c =================================================================== --- src.orig/sginfo.c 2014-04-02 22:36:13.779692431 -0500 +++ src/sginfo.c 2014-04-02 22:51:36.028265615 -0500 @@ -155,6 +155,7 @@ #define MAX_BUFFER_SIZE MAX_RESP10_SIZE #define INQUIRY_RESP_INITIAL_LEN 36 +#define MAX_INQFIELD_LEN 17 #define MAX_HEADS 127 #define HEAD_SORT_TOKEN 0x55 @@ -3139,11 +3140,23 @@ return status; } +static void +inqfieldname(unsigned char *deststr, const unsigned char *srcbuf, int maxlen) +{ + int i; + + memset(deststr, '\0', MAX_INQFIELD_LEN); + for (i = maxlen - 1; i >= 0 && isspace(srcbuf[i]); --i) + ; + memcpy(deststr, srcbuf, i + 1); +} + static int do_inquiry(int * peri_type, int * resp_byte6, int inquiry_verbosity) { int status; unsigned char cmd[6]; + unsigned char fieldname[MAX_INQFIELD_LEN]; unsigned char *pagestart; struct scsi_cmnd_io sci; @@ -3214,14 +3227,18 @@ } if (x_interface) printf("\n"); - printf("%s%.8s\n", (!x_interface ? "Vendor: " : ""), - pagestart + 8); - - printf("%s%.16s\n", (!x_interface ? "Product: " : ""), - pagestart + 16); - printf("%s%.4s\n", (!x_interface ? "Revision level: " : ""), - pagestart + 32); + inqfieldname(fieldname, pagestart + 8, 8); + printf("%s%s\n", (!x_interface ? "Vendor: " : ""), + fieldname); + + inqfieldname(fieldname, pagestart + 16, 16); + printf("%s%s\n", (!x_interface ? "Product: " : ""), + fieldname); + + inqfieldname(fieldname, pagestart + 32, 4); + printf("%s%s\n", (!x_interface ? "Revision level: " : ""), + fieldname); printf("\n"); return status; -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html
-- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html