Module Name: src
Committed By: martin
Date: Mon Aug 29 17:35:15 UTC 2022
Modified Files:
src/usr.sbin/sysinst: disks.c
Log Message:
Trim trailing whitespace from disk names we got via drvctl.
To generate a diff of this commit:
cvs rdiff -u -r1.86 -r1.87 src/usr.sbin/sysinst/disks.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/usr.sbin/sysinst/disks.c
diff -u src/usr.sbin/sysinst/disks.c:1.86 src/usr.sbin/sysinst/disks.c:1.87
--- src/usr.sbin/sysinst/disks.c:1.86 Fri Jun 24 22:05:24 2022
+++ src/usr.sbin/sysinst/disks.c Mon Aug 29 17:35:15 2022
@@ -1,4 +1,4 @@
-/* $NetBSD: disks.c,v 1.86 2022/06/24 22:05:24 tsutsui Exp $ */
+/* $NetBSD: disks.c,v 1.87 2022/08/29 17:35:15 martin Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@@ -142,6 +142,29 @@ tmpfs_on_var_shm(void)
return ram > 16 * MEG;
}
+/*
+ * like strncpy, but drop trailing whitespace
+ */
+static void
+trim_name(char *name, size_t len, const char *src)
+{
+ size_t i, last = ~0U;
+
+ for (i = 0; i < len && src[i]; i++) {
+ if (isspace((unsigned int)src[i]))
+ last = i;
+ else
+ last = ~0U;
+ name[i] = src[i];
+ }
+ if (i >= len)
+ i = len-1;
+ if (last < i)
+ name[last] = 0;
+ else
+ name[i] = 0;
+}
+
/* from src/sbin/atactl/atactl.c
* extract_string: copy a block of bytes out of ataparams and make
* a proper string out of it, truncating trailing spaces and preserving
@@ -335,7 +358,7 @@ get_descr_drvctl(struct disk_desc *dd)
int8_t perr;
int error, fd;
bool rv;
- char size[5];
+ char size[5], name[sizeof(dd->dd_descr)];
const char *model;
fd = open("/dev/drvctl", O_RDONLY);
@@ -377,13 +400,14 @@ get_descr_drvctl(struct disk_desc *dd)
prop_object_release(results_dict);
return 0;
}
+ trim_name(name, sizeof name, model);
humanize_number(size, sizeof(size),
(uint64_t)dd->dd_secsize * (uint64_t)dd->dd_totsec,
"", HN_AUTOSCALE, HN_B | HN_NOSPACE | HN_DECIMAL);
snprintf(dd->dd_descr, sizeof(dd->dd_descr), "%s (%s, %s)",
- dd->dd_name, size, model);
+ dd->dd_name, size, name);
prop_object_release(results_dict);