Module Name: src Committed By: rillig Date: Fri Feb 16 17:42:50 UTC 2024
Modified Files: src/common/lib/libutil: snprintb.c Log Message: snprintb: rename local variables The single-letter variables 't', 's', 'l' and 'c' were too hard to decipher. The variable 'f_len' was used for two independent purposes. Use a narrow scope for some variables, to avoid having to keep track of 22 individual variables at the same time. No binary change. To generate a diff of this commit: cvs rdiff -u -r1.26 -r1.27 src/common/lib/libutil/snprintb.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/common/lib/libutil/snprintb.c diff -u src/common/lib/libutil/snprintb.c:1.26 src/common/lib/libutil/snprintb.c:1.27 --- src/common/lib/libutil/snprintb.c:1.26 Fri Feb 16 01:57:50 2024 +++ src/common/lib/libutil/snprintb.c Fri Feb 16 17:42:49 2024 @@ -1,4 +1,4 @@ -/* $NetBSD: snprintb.c,v 1.26 2024/02/16 01:57:50 rillig Exp $ */ +/* $NetBSD: snprintb.c,v 1.27 2024/02/16 17:42:49 rillig Exp $ */ /*- * Copyright (c) 2002 The NetBSD Foundation, Inc. @@ -41,7 +41,7 @@ # include <sys/cdefs.h> # if defined(LIBC_SCCS) && !defined(lint) -__RCSID("$NetBSD: snprintb.c,v 1.26 2024/02/16 01:57:50 rillig Exp $"); +__RCSID("$NetBSD: snprintb.c,v 1.27 2024/02/16 17:42:49 rillig Exp $"); # endif # include <sys/types.h> @@ -51,7 +51,7 @@ __RCSID("$NetBSD: snprintb.c,v 1.26 2024 # include <errno.h> # else /* ! _KERNEL */ # include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: snprintb.c,v 1.26 2024/02/16 01:57:50 rillig Exp $"); +__KERNEL_RCSID(0, "$NetBSD: snprintb.c,v 1.27 2024/02/16 17:42:49 rillig Exp $"); # include <sys/param.h> # include <sys/inttypes.h> # include <sys/systm.h> @@ -61,14 +61,13 @@ __KERNEL_RCSID(0, "$NetBSD: snprintb.c,v # ifndef HAVE_SNPRINTB_M int snprintb_m(char *buf, size_t bufsize, const char *bitfmt, uint64_t val, - size_t l_max) + size_t line_max) { - char *bp = buf, *s_bp = NULL; - const char *c_fmt, *s_fmt = NULL, *cur_fmt; - const char *sbase; - int bit, ch, t_len, s_len = 0, l_len, f_len, v_len, sep; - int restart = 0, matched = 1; - uint64_t field; + char *bp = buf, *sep_bp = NULL; + const char *c_fmt, *sep_fmt = NULL, *cur_fmt; + const char *num_fmt; + int ch, total_len, sep_line_len = 0, line_len, val_len, sep; + int restart = 0; #ifdef _KERNEL /* @@ -81,73 +80,70 @@ snprintb_m(char *buf, size_t bufsize, co ch = *bitfmt++; switch (ch != '\177' ? ch : *bitfmt++) { case 8: - sbase = "%#jo"; + num_fmt = "%#jo"; break; case 10: - sbase = "%ju"; + num_fmt = "%ju"; break; case 16: - sbase = "%#jx"; + num_fmt = "%#jx"; break; default: goto internal; } /* Reserve space for trailing blank line if needed */ - if (l_max > 0) + if (line_max > 0) bufsize--; - t_len = snprintf(bp, bufsize, sbase, (uintmax_t)val); - if (t_len < 0) + total_len = snprintf(bp, bufsize, num_fmt, (uintmax_t)val); + if (total_len < 0) goto internal; - v_len = l_len = t_len; + val_len = line_len = total_len; - if ((size_t)t_len < bufsize) - bp += t_len; + if ((size_t)total_len < bufsize) + bp += total_len; else bp += bufsize - 1; - /* - * If the value we printed was 0 and we're using the old-style format, - * we're done. - */ if (val == 0 && ch != '\177') - goto terminate; + goto done; #define STORE(c) do { \ - l_len++; \ - if ((size_t)(++t_len) < bufsize) \ + line_len++; \ + if ((size_t)(++total_len) < bufsize) \ *bp++ = (c); \ } while (0) #define BACKUP() do { \ - if (s_bp != NULL) { \ - bp = s_bp; \ - s_bp = NULL; \ - t_len -= l_len - s_len; \ + if (sep_bp != NULL) { \ + bp = sep_bp; \ + sep_bp = NULL; \ + total_len -= line_len - sep_line_len; \ restart = 1; \ - bitfmt = s_fmt; \ + bitfmt = sep_fmt; \ } \ STORE('>'); \ STORE('\0'); \ - if ((size_t)t_len < bufsize) \ - snprintf(bp, bufsize - t_len, sbase, (uintmax_t)val);\ - t_len += v_len; \ - l_len = v_len; \ - bp += v_len; \ + if ((size_t)total_len < bufsize) \ + snprintf(bp, bufsize - total_len, num_fmt, \ + (uintmax_t)val); \ + total_len += val_len; \ + line_len = val_len; \ + bp += val_len; \ } while (0) #define PUTSEP() do { \ - if (l_max > 0 && (size_t)l_len >= l_max) { \ + if (line_max > 0 && (size_t)line_len >= line_max) { \ BACKUP(); \ STORE('<'); \ } else { \ /* Remember separator location */ \ - if (l_max > 0 && sep != '<') { \ - s_len = l_len; \ - s_bp = bp; \ - s_fmt = cur_fmt; \ + if (line_max > 0 && sep != '<') { \ + sep_line_len = line_len; \ + sep_bp = bp; \ + sep_fmt = cur_fmt; \ } \ STORE(sep); \ restart = 0; \ @@ -155,7 +151,7 @@ snprintb_m(char *buf, size_t bufsize, co } while (0) #define PUTCHR(c) do { \ - if (l_max > 0 && (size_t)l_len >= l_max - 1) { \ + if (line_max > 0 && (size_t)line_len >= line_max - 1) { \ BACKUP(); \ if (restart == 0) \ STORE(c); \ @@ -176,22 +172,20 @@ snprintb_m(char *buf, size_t bufsize, co } while (0) #define FMTSTR(sb, f) do { \ - f_len = snprintf(bp, bufsize - t_len, sb, (uintmax_t)f); \ - if (f_len < 0) \ + int fmt_len = snprintf(bp, bufsize - total_len, sb, \ + (uintmax_t)f); \ + if (fmt_len < 0) \ goto internal; \ - t_len += f_len; \ - l_len += f_len; \ - if ((size_t)t_len < bufsize) \ - bp += f_len; \ + total_len += fmt_len; \ + line_len += fmt_len; \ + if ((size_t)total_len < bufsize) \ + bp += fmt_len; \ } while (0) - /* - * Chris Torek's new bitmask format is identified by a leading \177 - */ sep = '<'; if (ch != '\177') { - /* old (standard) format. */ - while ((bit = *bitfmt) != 0) { + /* old-style format, 32-bit, 1-origin. */ + for (int bit; (bit = *bitfmt) != 0;) { cur_fmt = bitfmt++; if (val & (1U << (bit - 1))) { PUTSEP(); @@ -199,7 +193,7 @@ snprintb_m(char *buf, size_t bufsize, co continue; sep = ','; for (; (ch = *bitfmt) > ' '; ++bitfmt) { - PUTCHR(ch); + PUTCHR(ch); if (restart) break; } @@ -208,10 +202,11 @@ snprintb_m(char *buf, size_t bufsize, co continue; } } else { - /* new quad-capable format; also does fields. */ - field = val; + /* new-style format, 64-bit, 0-origin; also does fields. */ + uint64_t field = val; + int matched = 1; while (c_fmt = bitfmt, (ch = *bitfmt++) != '\0') { - bit = *bitfmt++; /* now 0-origin */ + int bit = *bitfmt++; switch (ch) { case 'b': if (((val >> bit) & 1) == 0) @@ -228,9 +223,9 @@ snprintb_m(char *buf, size_t bufsize, co case 'F': matched = 0; cur_fmt = c_fmt; - f_len = *bitfmt++; /* field length */ + int field_width = *bitfmt++; field = (val >> bit) & - (((uint64_t)1 << f_len) - 1); + (((uint64_t)1 << field_width) - 1); PUTSEP(); if (restart == 0) sep = ','; @@ -245,8 +240,9 @@ snprintb_m(char *buf, size_t bufsize, co if (restart == 0) PUTCHR('='); if (restart == 0) { - FMTSTR(sbase, field); - if (l_max > 0 && (size_t)l_len > l_max) + FMTSTR(num_fmt, field); + if (line_max > 0 + && (size_t)line_len > line_max) PUTCHR('#'); } break; @@ -282,17 +278,17 @@ snprintb_m(char *buf, size_t bufsize, co } if (sep != '<') STORE('>'); -terminate: - if (l_max > 0) { +done: + if (line_max > 0) { bufsize++; STORE('\0'); - if ((size_t)t_len >= bufsize && bufsize > 1) + if ((size_t)total_len >= bufsize && bufsize > 1) buf[bufsize - 2] = '\0'; } STORE('\0'); - if ((size_t)t_len >= bufsize && bufsize > 0) + if ((size_t)total_len >= bufsize && bufsize > 0) buf[bufsize - 1] = '\0'; - return t_len - 1; + return total_len - 1; internal: #ifndef _KERNEL errno = EINVAL;