Index: head/sys/geom/label/g_label.h =================================================================== --- head/sys/geom/label/g_label.h +++ head/sys/geom/label/g_label.h @@ -86,6 +86,8 @@ extern struct g_label_desc g_label_gpt; extern struct g_label_desc g_label_gpt_uuid; extern struct g_label_desc g_label_disk_ident; + +extern void g_label_rtrim(char *label, size_t size); #endif /* _KERNEL */ struct g_label_metadata { Index: head/sys/geom/label/g_label.c =================================================================== --- head/sys/geom/label/g_label.c +++ head/sys/geom/label/g_label.c @@ -40,6 +40,7 @@ #include #include #include +#include #include #include #include @@ -96,6 +97,20 @@ NULL }; +void +g_label_rtrim(char *label, size_t size) +{ + ptrdiff_t i; + + for (i = size - 1; i >= 0; i--) { + if (label[i] == '\0') + continue; + else if (label[i] == ' ') + label[i] = '\0'; + else + break; + } +} static int g_label_destroy_geom(struct gctl_req *req __unused, struct g_class *mp, Index: head/sys/geom/label/g_label_iso9660.c =================================================================== --- head/sys/geom/label/g_label_iso9660.c +++ head/sys/geom/label/g_label_iso9660.c @@ -47,7 +47,6 @@ { struct g_provider *pp; char *sector, *volume; - int i; g_topology_assert_not(); pp = cp->provider; @@ -68,14 +67,7 @@ bzero(label, size); strlcpy(label, volume, MIN(size, VOLUME_LEN)); g_free(sector); - for (i = size - 1; i > 0; i--) { - if (label[i] == '\0') - continue; - else if (label[i] == ' ') - label[i] = '\0'; - else - break; - } + g_label_rtrim(label, size); } struct g_label_desc g_label_iso9660 = { Index: head/sys/geom/label/g_label_msdosfs.c =================================================================== --- head/sys/geom/label/g_label_msdosfs.c +++ head/sys/geom/label/g_label_msdosfs.c @@ -48,7 +48,6 @@ FAT32_BSBPB *pfat32_bsbpb; FAT_DES *pfat_entry; uint8_t *sector0, *sector; - uint32_t i; g_topology_assert_not(); pp = cp->provider; @@ -200,14 +199,7 @@ } endofchecks: - for (i = size - 1; i > 0; i--) { - if (label[i] == '\0') - continue; - else if (label[i] == ' ') - label[i] = '\0'; - else - break; - } + g_label_rtrim(label, size); error: if (sector0 != NULL) Index: head/usr.sbin/fstyp/cd9660.c =================================================================== --- head/usr.sbin/fstyp/cd9660.c +++ head/usr.sbin/fstyp/cd9660.c @@ -45,7 +45,6 @@ fstyp_cd9660(FILE *fp, char *label, size_t size) { char *sector, *volume; - int i; sector = read_buf(fp, ISO9660_OFFSET, 512); if (sector == NULL) @@ -58,13 +57,6 @@ bzero(label, size); strlcpy(label, volume, MIN(size, VOLUME_LEN)); free(sector); - for (i = size - 1; i > 0; i--) { - if (label[i] == '\0') - continue; - else if (label[i] == ' ') - label[i] = '\0'; - else - break; - } + rtrim(label, size); return (0); } Index: head/usr.sbin/fstyp/fstyp.h =================================================================== --- head/usr.sbin/fstyp/fstyp.h +++ head/usr.sbin/fstyp/fstyp.h @@ -36,6 +36,7 @@ void *read_buf(FILE *fp, off_t off, size_t len); char *checked_strdup(const char *s); +void rtrim(char *label, size_t size); int fstyp_cd9660(FILE *fp, char *label, size_t size); int fstyp_ext2fs(FILE *fp, char *label, size_t size); Index: head/usr.sbin/fstyp/fstyp.c =================================================================== --- head/usr.sbin/fstyp/fstyp.c +++ head/usr.sbin/fstyp/fstyp.c @@ -38,6 +38,7 @@ #include #include #include +#include #include #include #include @@ -104,6 +105,21 @@ return (c); } +void +rtrim(char *label, size_t size) +{ + ptrdiff_t i; + + for (i = size - 1; i >= 0; i--) { + if (label[i] == '\0') + continue; + else if (label[i] == ' ') + label[i] = '\0'; + else + break; + } +} + static void usage(void) { Index: head/usr.sbin/fstyp/msdosfs.c =================================================================== --- head/usr.sbin/fstyp/msdosfs.c +++ head/usr.sbin/fstyp/msdosfs.c @@ -48,7 +48,6 @@ FAT32_BSBPB *pfat32_bsbpb; FAT_DES *pfat_entry; uint8_t *sector0, *sector; - uint32_t i; sector0 = NULL; sector = NULL; @@ -161,14 +160,7 @@ } endofchecks: - for (i = size - 1; i > 0; i--) { - if (label[i] == '\0') - continue; - else if (label[i] == ' ') - label[i] = '\0'; - else - break; - } + rtrim(label, size); free(sector0); free(sector);