Module Name: src Committed By: martin Date: Tue Aug 30 15:27:37 UTC 2022
Modified Files: src/usr.sbin/sysinst: disks.c Log Message: Simplify name trimming following a suggestion from rillig. To generate a diff of this commit: cvs rdiff -u -r1.89 -r1.90 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.89 src/usr.sbin/sysinst/disks.c:1.90 --- src/usr.sbin/sysinst/disks.c:1.89 Tue Aug 30 11:45:28 2022 +++ src/usr.sbin/sysinst/disks.c Tue Aug 30 15:27:37 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: disks.c,v 1.89 2022/08/30 11:45:28 martin Exp $ */ +/* $NetBSD: disks.c,v 1.90 2022/08/30 15:27:37 martin Exp $ */ /* * Copyright 1997 Piermont Information Systems Inc. @@ -143,26 +143,16 @@ tmpfs_on_var_shm(void) } /* - * like strncpy, but drop trailing whitespace + * Find length of string but ignore trailing whitespace */ -static void -trim_name(char *name, size_t len, const char *src) +static int +trimmed_len(const char *s) { - size_t i, last = ~0; + size_t len = strlen(s); - for (i = 0; i < len && src[i]; i++) { - if (isspace((unsigned char)src[i])) - last = i; - else - last = ~0; - name[i] = src[i]; - } - if (i >= len) - i = len-1; - if (last < i) - name[last] = 0; - else - name[i] = 0; + while (len > 0 && isspace((unsigned char)s[len - 1])) + len--; + return len; } /* from src/sbin/atactl/atactl.c @@ -358,7 +348,7 @@ get_descr_drvctl(struct disk_desc *dd) int8_t perr; int error, fd; bool rv; - char size[5], name[sizeof(dd->dd_descr)]; + char size[5]; const char *model; fd = open("/dev/drvctl", O_RDONLY); @@ -400,14 +390,13 @@ 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, name); + snprintf(dd->dd_descr, sizeof(dd->dd_descr), "%s (%s, %.*s)", + dd->dd_name, size, trimmed_len(model), model); prop_object_release(results_dict);