summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorConrad Meyer <cem@FreeBSD.org>2020-01-18 03:33:44 +0000
committerConrad Meyer <cem@FreeBSD.org>2020-01-18 03:33:44 +0000
commit151e04b3fe5d64f0fe0601f4cc8afae01e42b04c (patch)
tree10a2f6f2b9a69963b359eea84e3cf01c8c11d5e8
parentde8dd262c43bd9d687060fa7d50b6b6de73249c9 (diff)
Notes
-rw-r--r--sys/geom/label/g_label.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/sys/geom/label/g_label.c b/sys/geom/label/g_label.c
index c37ca3511890..13639aedf7b2 100644
--- a/sys/geom/label/g_label.c
+++ b/sys/geom/label/g_label.c
@@ -179,9 +179,25 @@ g_label_mangle_name(char *label, size_t size)
{
struct sbuf *sb;
const u_char *c;
+ size_t len, i;
+
+ /* Trim trailing whitespace. */
+ len = strlen(label);
+ for (i = len; i > 0; i--) {
+ if (isspace(label[i - 1]))
+ label[i - 1] = '\0';
+ else
+ break;
+ }
+ if (*label == '\0')
+ return;
+
sb = sbuf_new(NULL, NULL, size, SBUF_FIXEDLEN);
for (c = label; *c != '\0'; c++) {
+ /* Trim leading whitespace. */
+ if (isspace(*c) && sbuf_len(sb) == 0)
+ continue;
if (!isprint(*c) || isspace(*c) || *c =='"' || *c == '%')
sbuf_printf(sb, "%%%02X", *c);
else