examples/blob: skip '\0' when dump xattr's value

In show_blob(), value_len of xattr contains terminator '\0',
which is printed as '.' when calling spdk_log_dump().
For example, we set key/value pair as <key1,xattr value>, we get
"xattr value." but not "xattr value" when showing blob info.
Skip '\0' will fix this.

And "data[BUFSIZE]" seems redundant here, remove it.

Signed-off-by: Richael Zhuang <richael.zhuang@arm.com>
Change-Id: I4e7c3276e51f14badf43b660b80b24ae85bb0900
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1745
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
This commit is contained in:
Richael Zhuang 2020-04-08 09:56:10 +08:00 committed by Tomasz Zawadzki
parent 97e345002b
commit 13d6d00347
2 changed files with 4 additions and 7 deletions

View File

@ -433,7 +433,6 @@ show_blob(struct cli_context_t *cli_context)
struct spdk_xattr_names *names;
const void *value;
size_t value_len;
char data[BUFSIZE];
unsigned int i;
printf("Blob Public Info:\n");
@ -457,16 +456,14 @@ show_blob(struct cli_context_t *cli_context)
spdk_blob_get_xattr_value(cli_context->blob,
spdk_xattr_names_get_name(names, i),
&value, &value_len);
if ((value_len + 1) > sizeof(data)) {
if (value_len > BUFSIZE) {
printf("FYI: adjusting size of xattr due to CLI limits.\n");
value_len = sizeof(data) - 1;
value_len = BUFSIZE + 1;
}
memcpy(&data, value, value_len);
data[value_len] = '\0';
printf("\n(%d) Name:%s\n", i,
spdk_xattr_names_get_name(names, i));
printf("(%d) Value:\n", i);
spdk_log_dump(stdout, "", value, value_len);
spdk_log_dump(stdout, "", value, value_len - 1);
}
/*

View File

@ -62,7 +62,7 @@ xattrs:
(0) Name:key
(0) Value:
00000000 76 61 6c 00 val.
00000000 76 61 6c val
Blob Private Info:
state: CLEAN