Module Name: src Committed By: christos Date: Sun Feb 18 16:59:16 UTC 2024
Modified Files: src/usr.sbin/makefs: makefs.c makefs.h Log Message: Add an options pretty-printer, pass some lint. To generate a diff of this commit: cvs rdiff -u -r1.56 -r1.57 src/usr.sbin/makefs/makefs.c cvs rdiff -u -r1.40 -r1.41 src/usr.sbin/makefs/makefs.h 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/makefs/makefs.c diff -u src/usr.sbin/makefs/makefs.c:1.56 src/usr.sbin/makefs/makefs.c:1.57 --- src/usr.sbin/makefs/makefs.c:1.56 Thu Dec 28 07:13:55 2023 +++ src/usr.sbin/makefs/makefs.c Sun Feb 18 11:59:16 2024 @@ -1,4 +1,4 @@ -/* $NetBSD: makefs.c,v 1.56 2023/12/28 12:13:55 tsutsui Exp $ */ +/* $NetBSD: makefs.c,v 1.57 2024/02/18 16:59:16 christos Exp $ */ /* * Copyright (c) 2001-2003 Wasabi Systems, Inc. @@ -41,7 +41,7 @@ #include <sys/cdefs.h> #if defined(__RCSID) && !defined(__lint) -__RCSID("$NetBSD: makefs.c,v 1.56 2023/12/28 12:13:55 tsutsui Exp $"); +__RCSID("$NetBSD: makefs.c,v 1.57 2024/02/18 16:59:16 christos Exp $"); #endif /* !__lint */ #include <assert.h> @@ -100,7 +100,8 @@ main(int argc, char *argv[]) fstype_t *fstype; fsinfo_t fsoptions; fsnode *root; - int ch, i, len; + int ch, i; + size_t len; char *specfile; setprogname(argv[0]); @@ -156,7 +157,7 @@ main(int argc, char *argv[]) len = strlen(optarg) - 1; if (optarg[len] == '%') { optarg[len] = '\0'; - fsoptions.freeblockpc = + fsoptions.freeblockpc = (int) strsuftoll("free block percentage", optarg, 0, 99); } else { @@ -167,14 +168,14 @@ main(int argc, char *argv[]) break; case 'd': - debug = strtoll(optarg, NULL, 0); + debug = (int)strtoll(optarg, NULL, 0); break; case 'f': len = strlen(optarg) - 1; if (optarg[len] == '%') { optarg[len] = '\0'; - fsoptions.freefilepc = + fsoptions.freefilepc = (int) strsuftoll("free file percentage", optarg, 0, 99); } else { @@ -351,6 +352,45 @@ set_option(const option_t *options, cons return retval; } +void +print_options(FILE *fp, const option_t *options) +{ + for (size_t i = 0; options[i].name != NULL; i++) { + fprintf(fp, "%s=", options[i].name); + switch (options[i].type) { + case OPT_BOOL: + fputs(*(bool *)options[i].value ? "true\n" : "false\n", + fp); + break; + case OPT_STRARRAY: + case OPT_STRPTR: + case OPT_STRBUF: + fprintf(fp, "%s\n", *(const char **)options[i].value); + break; + case OPT_INT64: + fprintf(fp, "%" PRIu64 "\n", + *(uint64_t *)options[i].value); + break; + case OPT_INT32: + fprintf(fp, "%" PRIu32 "\n", + *(uint32_t *)options[i].value); + break; + case OPT_INT16: + fprintf(fp, "%" PRIu16 "\n", + *(uint16_t *)options[i].value); + break; + case OPT_INT8: + fprintf(fp, "%" PRIu8 "\n", + *(uint8_t *)options[i].value); + break; + default: + warnx("Unknown type %d in option %s", options[i].type, + options[i].name); + return; + } + } +} + int set_option_var(const option_t *options, const char *var, const char *val, char *buf, size_t len) @@ -402,7 +442,7 @@ set_option_var(const option_t *options, val); return 0; } - return i; + return (int)i; } warnx("Unknown option `%s'", var); return -1; Index: src/usr.sbin/makefs/makefs.h diff -u src/usr.sbin/makefs/makefs.h:1.40 src/usr.sbin/makefs/makefs.h:1.41 --- src/usr.sbin/makefs/makefs.h:1.40 Sun May 8 17:29:20 2022 +++ src/usr.sbin/makefs/makefs.h Sun Feb 18 11:59:16 2024 @@ -49,6 +49,7 @@ #define HAVE_FSTATVFS 1 #endif +#include <stdio.h> #include <sys/stat.h> #include <err.h> @@ -179,6 +180,7 @@ void apply_specfile(const char *, const void dump_fsnodes(fsnode *); const char * inode_type(mode_t); int set_option(const option_t *, const char *, char *, size_t); +void print_options(FILE *, const option_t *); int set_option_var(const option_t *, const char *, const char *, char *, size_t); fsnode * walk_dir(const char *, const char *, fsnode *, fsnode *, int,