Module Name:    src
Committed By:   christos
Date:           Tue Jan 29 15:52:26 UTC 2013

Modified Files:
        src/usr.sbin/makefs: cd9660.c cd9660.h chfs.c ffs.c makefs.c makefs.h
            v7fs.c

Log Message:
make everything use the generic options parser.


To generate a diff of this commit:
cvs rdiff -u -r1.40 -r1.41 src/usr.sbin/makefs/cd9660.c
cvs rdiff -u -r1.19 -r1.20 src/usr.sbin/makefs/cd9660.h
cvs rdiff -u -r1.7 -r1.8 src/usr.sbin/makefs/chfs.c \
    src/usr.sbin/makefs/v7fs.c
cvs rdiff -u -r1.56 -r1.57 src/usr.sbin/makefs/ffs.c
cvs rdiff -u -r1.43 -r1.44 src/usr.sbin/makefs/makefs.c
cvs rdiff -u -r1.30 -r1.31 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/cd9660.c
diff -u src/usr.sbin/makefs/cd9660.c:1.40 src/usr.sbin/makefs/cd9660.c:1.41
--- src/usr.sbin/makefs/cd9660.c:1.40	Mon Jan 28 20:05:57 2013
+++ src/usr.sbin/makefs/cd9660.c	Tue Jan 29 10:52:25 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: cd9660.c,v 1.40 2013/01/29 01:05:57 christos Exp $	*/
+/*	$NetBSD: cd9660.c,v 1.41 2013/01/29 15:52:25 christos Exp $	*/
 
 /*
  * Copyright (c) 2005 Daniel Watt, Walter Deignan, Ryan Gabrys, Alan
@@ -103,7 +103,7 @@
 
 #include <sys/cdefs.h>
 #if defined(__RCSID) && !defined(__lint)
-__RCSID("$NetBSD: cd9660.c,v 1.40 2013/01/29 01:05:57 christos Exp $");
+__RCSID("$NetBSD: cd9660.c,v 1.41 2013/01/29 15:52:25 christos Exp $");
 #endif  /* !__lint */
 
 #include <string.h>
@@ -264,36 +264,65 @@ cd9660_prep_opts(fsinfo_t *fsopts)
 	iso9660_disk *diskStructure = ecalloc(1, sizeof(*diskStructure));
 
 	const option_t cd9660_options[] = {
+		{ 'h', "help", &diskStructure->displayHelp,
+		  OPT_INT32, 0, 1, "Show help message" },
 		{ 'l', "isolevel", &diskStructure->isoLevel,
 		  OPT_INT32, 1, 3, "ISO Level" },
+		{ 'S', "follow-symlinks", &diskStructure->follow_sym_links,
+		  OPT_INT32, 0, 1, "Resolve symlinks in pathnames" },
 		{ 'v', "verbose",  &diskStructure->verbose_level,
 		  OPT_INT32, 0, 2, "Turns on verbose output" },
-		{ 'L', "Label", diskStructure->primaryDescriptor.volume_id, 
-		  OPT_STRARRAY, 1,
-		  sizeof(diskStructure->primaryDescriptor.volume_id),
-		  "Disk Label" },
 	        { 'R', "rockridge", &diskStructure->rock_ridge_enabled,
 		  OPT_INT32, 0, 1, "Enable Rock-Ridge extensions" },
-	        { 'A', "archimedes", &diskStructure->archimedes_enabled,
-		  OPT_INT32, 0, 1, "Enable Archimedes structure" },
-	        { '\0', "chrp-boot", &diskStructure->chrp_boot,
+	        { 'C', "chrp-boot", &diskStructure->chrp_boot,
 		  OPT_INT32, 0, 1, "Enable CHRP boot" },
 	        { 'K', "keep-bad-images", &diskStructure->keep_bad_images,
 		  OPT_INT32, 0, 1, "Keep bad images" },
-	        { '\0', "allow-deep-trees", &diskStructure->allow_deep_trees,
+	        { 'D', "allow-deep-trees", &diskStructure->allow_deep_trees,
 		  OPT_INT32, 0, 1, "Allow trees more than 8 levels" },
-	        { '\0', "allow-max-name", &diskStructure->allow_max_name,
+	        { 'a', "allow-max-name", &diskStructure->allow_max_name,
 		  OPT_INT32, 0, 1, "Allow 37 char filenames (unimplemented)" },
-	        { '\0', "allow-illegal-chars", 
+	        { 'i', "allow-illegal-chars", 
 		  &diskStructure->allow_illegal_chars,
 		  OPT_INT32, 0, 1, "Allow illegal characters in filenames" },
-	        { '\0', "allow-lowercase", &diskStructure->allow_lowercase,
-		  OPT_INT32, 0, 1, "Allow lowercase characters in filenames" },
-	        { '\0', "allow-multidot", &diskStructure->allow_multidot,
+	        { 'D', "allow-multidot", &diskStructure->allow_multidot,
 		  OPT_INT32, 0, 1, "Allow multiple periods in filenames" },
-	        { '\0', "omit-trailing-period",
+	        { 'o', "omit-trailing-period",
 		  &diskStructure->omit_trailing_period,
 		  OPT_INT32, 0, 1, "Omit trailing periods in filenames" },
+	        { '\0', "allow-lowercase", &diskStructure->allow_lowercase,
+		  OPT_INT32, 0, 1, "Allow lowercase characters in filenames" },
+	        { '\0', "archimedes", &diskStructure->archimedes_enabled,
+		  OPT_INT32, 0, 1, "Enable Archimedes structure" },
+		{ '\0', "no-trailing-padding",
+		  &diskStructure->include_padding_areas,
+		  OPT_INT32, 0, 1, "Include padding areas" },
+
+
+		{ 'A', "applicationid", NULL, OPT_STRBUF, 0, 0,
+		  "Application Identifier" },
+		{ 'P', "publisher", NULL, OPT_STRBUF, 0, 0, 
+		  "Publisher Identifier" },
+		{ 'p', "preparer", NULL, OPT_STRBUF, 0, 0,
+		  "Preparer Identifier" },
+		{ 'L', "label", NULL, OPT_STRBUF, 0, 0,
+		  "Disk Label" },
+		{ 'V', "volumeid", NULL, OPT_STRBUF, 0, 0,
+		  "Volume Set Identifier" },
+		{ 'B', "bootimage", NULL, OPT_STRBUF, 0, 0,
+		  "Boot image parameter" },
+		{ 'G', "generic-bootimage", NULL, OPT_STRBUF, 0, 0,
+		  "Generic boot image parameter" },
+		{ '\0', "bootimagedir", NULL, OPT_STRBUF, 0, 0,
+		  "Boot image directory" },
+		{ '\0', "no-emul-boot", NULL, OPT_STRBUF, 0, 0,
+		  "No boot emulation" },
+		{ '\0', "no-boot", NULL, OPT_STRBUF, 0, 0,
+		  "No boot support" },
+		{ '\0', "hard-disk-boot", NULL, OPT_STRBUF, 0, 0,
+		  "Boot from hard disk" },
+		{ '\0', "boot-load-segment", NULL, OPT_STRBUF, 0, 0,
+		  "Boot load segment" },
 		{ .name = NULL }
 	};
 
@@ -344,101 +373,105 @@ cd9660_arguments_set_string(const char *
 int
 cd9660_parse_opts(const char *option, fsinfo_t *fsopts)
 {
-	char *var, *val;
-	int	rv;
+	int	rv, i;
 	iso9660_disk *diskStructure = fsopts->fs_specific;
-
-	if (cd9660_defaults_set == 0)
-		cd9660_set_defaults(diskStructure);
+	option_t *cd9660_options = fsopts->fs_options;
+	char buf[1024];
+	const char *name, *desc;
 
 	assert(option != NULL);
 
 	if (debug & DEBUG_FS_PARSE_OPTS)
 		printf("cd9660_parse_opts: got `%s'\n", option);
 
-	var = estrdup(option);
-	rv = 1;
+	i = set_option(cd9660_options, option, buf, sizeof(buf));
+	if (i == -1)
+		return 0;
 
-	val = strchr(var, '=');
-	if (val != NULL)
-		*val++ = '\0';
-
-	/* First handle options with no parameters */
-	if (strcmp(var, "h") == 0) {
-		diskStructure->displayHelp = 1;
-		rv = 1;
-	} else if (CD9660_IS_COMMAND_ARG_DUAL(var, "S", "follow-symlinks")) {
-		/* this is not handled yet */
-		diskStructure->follow_sym_links = 1;
-		rv = 1;
-	} else if (CD9660_IS_COMMAND_ARG_DUAL(var, "L", "label")) {
-		rv = cd9660_arguments_set_string(val, "Disk Label", 32, 'd',
-			diskStructure->primaryDescriptor.volume_id);
-	} else if (CD9660_IS_COMMAND_ARG_DUAL(var, "A", "applicationid")) {
-		rv = cd9660_arguments_set_string(val, "Application Identifier", 128, 'a',
-			diskStructure->primaryDescriptor.application_id);
-	} else if(CD9660_IS_COMMAND_ARG_DUAL(var, "P", "publisher")) {
-		rv = cd9660_arguments_set_string(val, "Publisher Identifier",
-			128, 'a', diskStructure->primaryDescriptor.publisher_id);
-	} else if (CD9660_IS_COMMAND_ARG_DUAL(var, "p", "preparer")) {
-		rv = cd9660_arguments_set_string(val, "Preparer Identifier",
-		    128, 'a', diskStructure->primaryDescriptor.preparer_id);
-	} else if (CD9660_IS_COMMAND_ARG_DUAL(var, "V", "volumeid")) {
-		rv = cd9660_arguments_set_string(val, "Volume Set Identifier",
-		    128, 'a', diskStructure->primaryDescriptor.volume_set_id);
+	if (cd9660_options[i].name == NULL)
+		abort();
+
+
+	name = cd9660_options[i].name;
+	desc = cd9660_options[i].desc;
+	switch (cd9660_options[i].letter) {
+	case 'h':
+	case 'S':
+		rv = 0;	/* this is not handled yet */
+		break;
+	case 'L':
+		rv = cd9660_arguments_set_string(buf, desc, 32, 'd',
+		    diskStructure->primaryDescriptor.volume_id);
+		break;
+	case 'A':
+		rv = cd9660_arguments_set_string(buf, desc, 128, 'a',
+		    diskStructure->primaryDescriptor.application_id);
+		break;
+	case 'P':
+		rv = cd9660_arguments_set_string(buf, desc, 128, 'a',
+		    diskStructure->primaryDescriptor.publisher_id);
+		break;
+	case 'p':
+		rv = cd9660_arguments_set_string(buf, desc, 128, 'a',
+		    diskStructure->primaryDescriptor.preparer_id);
+		break;
+	case 'V':
+		rv = cd9660_arguments_set_string(buf, desc, 128, 'a',
+		    diskStructure->primaryDescriptor.volume_set_id);
+		break;
 	/* Boot options */
-	} else if (CD9660_IS_COMMAND_ARG_DUAL(var, "B", "bootimage")) {
-		if (val == NULL)
-			warnx("error: The Boot Image parameter requires a valid boot information string");
-		else
-			rv = cd9660_add_boot_disk(diskStructure, val);
-	} else if (CD9660_IS_COMMAND_ARG(var, "bootimagedir")) {
-		/*
-		 * XXXfvdl this is unused.
-		 */
-		if (val == NULL)
-			errx(1, "error: The Boot Image Directory parameter"
-			     " requires a directory name\n");
-		else {
-			diskStructure->boot_image_directory =
-			     emalloc(strlen(val) + 1);
-			/* BIG TODO: Add the max length function here */
-			cd9660_arguments_set_string(val, "Boot Image Directory",
-			    12 , 'd', diskStructure->boot_image_directory);
-		}
-	} else if (CD9660_IS_COMMAND_ARG_DUAL(var, "G", "generic-bootimage")) {
-		if (val == NULL)
-			warnx("error: The Boot Image parameter requires a valid boot information string");
-		else
-			rv = cd9660_add_generic_bootimage(diskStructure, val);
-	} else if (CD9660_IS_COMMAND_ARG(var, "no-trailing-padding"))
-		diskStructure->include_padding_areas = 0;
-	/* RRIP */
-	else if (CD9660_IS_COMMAND_ARG(var, "no-emul-boot") ||
-		 CD9660_IS_COMMAND_ARG(var, "no-boot") ||
-		 CD9660_IS_COMMAND_ARG(var, "hard-disk-boot")) {
-		cd9660_eltorito_add_boot_option(diskStructure, var, 0);
-		
-		/* End of flag variables */
-        } else if (CD9660_IS_COMMAND_ARG(var, "boot-load-segment")) {
-		if (val == NULL) {
-			warnx("Option `%s' doesn't contain a value", var);
+	case 'B':
+		if (buf[0] == '\0') {
+			warnx("The Boot Image parameter requires a valid boot"
+			" information string");
 			rv = 0;
-		} else {
-			cd9660_eltorito_add_boot_option(diskStructure, var,
-			    val);
-		}
-	} else {
-		if (val == NULL) {
-			warnx("Option `%s' doesn't contain a value", var);
+		} else
+			rv = cd9660_add_boot_disk(diskStructure, buf);
+		break;
+	case 'G':
+		if (buf[0] == '\0') {
+			warnx("The Generic Boot Image parameter requires a"
+			    " valid boot information string");
 			rv = 0;
 		} else
-			rv = set_option_var(fsopts->fs_options, var, val) != -1;
+			rv = cd9660_add_generic_bootimage(diskStructure, buf);
+		break;
+	default:
+		if (strcmp(name, "bootimagedir") == 0) {
+			/*
+			 * XXXfvdl this is unused.
+			 */
+			if (buf[0] == '\0') {
+				warnx("The Boot Image Directory parameter"
+				 " requires a directory name\n");
+				rv = 0;
+			} else {
+				diskStructure->boot_image_directory =
+				     emalloc(strlen(buf) + 1);
+				/* BIG TODO: Add the max length function here */
+				rv = cd9660_arguments_set_string(buf, desc, 12,
+				    'd', diskStructure->boot_image_directory);
+			}
+		} else if (strcmp(name, "no-emul-boot") == 0 ||
+		    strcmp(name, "no-boot") == 0 ||
+		    strcmp(name, "hard-disk-boot") == 0) {
+			/* RRIP */
+			cd9660_eltorito_add_boot_option(diskStructure, name, 0);
+			rv = 1;
+		} else if (strcmp(name, "boot-load-segment") == 0) {
+			if (buf[0] == '\0') {
+				warnx("Option `%s' doesn't contain a value",
+				    name);
+				rv = 0;
+			} else {
+				cd9660_eltorito_add_boot_option(diskStructure,
+				    name, buf);
+				rv = 1;
+			}
+		} else
+			rv = 1;
 	}
-
-	if (var)
-		free(var);
-	return (rv);
+	return rv;
 }
 
 /*

Index: src/usr.sbin/makefs/cd9660.h
diff -u src/usr.sbin/makefs/cd9660.h:1.19 src/usr.sbin/makefs/cd9660.h:1.20
--- src/usr.sbin/makefs/cd9660.h:1.19	Mon Jan 28 16:03:27 2013
+++ src/usr.sbin/makefs/cd9660.h	Tue Jan 29 10:52:25 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: cd9660.h,v 1.19 2013/01/28 21:03:27 christos Exp $	*/
+/*	$NetBSD: cd9660.h,v 1.20 2013/01/29 15:52:25 christos Exp $	*/
 
 /*
  * Copyright (c) 2005 Daniel Watt, Walter Deignan, Ryan Gabrys, Alan
@@ -121,12 +121,6 @@ typedef struct {
 #define CD9660_MEM_ALLOC_ERROR(_F)	\
     err(EXIT_FAILURE, "%s, %s l. %d", _F, __FILE__, __LINE__)
 
-#define CD9660_IS_COMMAND_ARG_DUAL(var,short,long)\
-		(strcmp((var),(short)) == 0) || (strcmp((var),(long))==0)
-
-#define CD9660_IS_COMMAND_ARG(var,arg)\
-		(strcmp((var),(arg)) == 0)
-
 #define CD9660_TYPE_FILE	0x01
 #define CD9660_TYPE_DIR		0x02
 #define CD9660_TYPE_DOT		0x04

Index: src/usr.sbin/makefs/chfs.c
diff -u src/usr.sbin/makefs/chfs.c:1.7 src/usr.sbin/makefs/chfs.c:1.8
--- src/usr.sbin/makefs/chfs.c:1.7	Mon Jan 28 16:03:27 2013
+++ src/usr.sbin/makefs/chfs.c	Tue Jan 29 10:52:25 2013
@@ -91,7 +91,7 @@ chfs_parse_opts(const char *option, fsin
 	assert(option != NULL);
 	assert(fsopts != NULL);
 
-	return set_option(fsopts->fs_options, option) != -1;
+	return set_option(fsopts->fs_options, option, NULL, 0) != -1;
 }
 
 void
Index: src/usr.sbin/makefs/v7fs.c
diff -u src/usr.sbin/makefs/v7fs.c:1.7 src/usr.sbin/makefs/v7fs.c:1.8
--- src/usr.sbin/makefs/v7fs.c:1.7	Mon Jan 28 16:03:27 2013
+++ src/usr.sbin/makefs/v7fs.c	Tue Jan 29 10:52:25 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: v7fs.c,v 1.7 2013/01/28 21:03:27 christos Exp $	*/
+/*	$NetBSD: v7fs.c,v 1.8 2013/01/29 15:52:25 christos Exp $	*/
 
 /*-
  * Copyright (c) 2011 The NetBSD Foundation, Inc.
@@ -35,7 +35,7 @@
 
 #include <sys/cdefs.h>
 #if defined(__RCSID) && !defined(__lint)
-__RCSID("$NetBSD: v7fs.c,v 1.7 2013/01/28 21:03:27 christos Exp $");
+__RCSID("$NetBSD: v7fs.c,v 1.8 2013/01/29 15:52:25 christos Exp $");
 #endif	/* !__lint */
 
 #include <stdio.h>
@@ -85,7 +85,7 @@ int
 v7fs_parse_opts(const char *option, fsinfo_t *fsopts)
 {
 
-	return set_option_var(fsopts->fs_options, option, "1") != -1;
+	return set_option_var(fsopts->fs_options, option, "1", NULL, 0) != -1;
 }
 
 void

Index: src/usr.sbin/makefs/ffs.c
diff -u src/usr.sbin/makefs/ffs.c:1.56 src/usr.sbin/makefs/ffs.c:1.57
--- src/usr.sbin/makefs/ffs.c:1.56	Mon Jan 28 16:03:27 2013
+++ src/usr.sbin/makefs/ffs.c	Tue Jan 29 10:52:25 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: ffs.c,v 1.56 2013/01/28 21:03:27 christos Exp $	*/
+/*	$NetBSD: ffs.c,v 1.57 2013/01/29 15:52:25 christos Exp $	*/
 
 /*
  * Copyright (c) 2001 Wasabi Systems, Inc.
@@ -71,7 +71,7 @@
 
 #include <sys/cdefs.h>
 #if defined(__RCSID) && !defined(__lint)
-__RCSID("$NetBSD: ffs.c,v 1.56 2013/01/28 21:03:27 christos Exp $");
+__RCSID("$NetBSD: ffs.c,v 1.57 2013/01/29 15:52:25 christos Exp $");
 #endif	/* !__lint */
 
 #include <sys/param.h>
@@ -152,8 +152,6 @@ static  void	*ffs_build_dinode2(struct u
 int	sectorsize;		/* XXX: for buf.c::getblk() */
 
 
-static char optimization[24];	/* XXX: allocate */
-
 	/* publically visible functions */
 void
 ffs_prep_opts(fsinfo_t *fsopts)
@@ -181,8 +179,8 @@ ffs_prep_opts(fsinfo_t *fsopts)
 	      1, INT_MAX, "max # of blocks per group" },
 	    { 'v', "version", &ffs_opts->version, OPT_INT32,
 	      1, 2, "UFS version" },
-	    { 'o', "optimization", optimization, OPT_STRARRAY,
-	      1, sizeof(optimization), "Optimization (time|space)" },
+	    { 'o', "optimization", NULL, OPT_STRBUF,
+	      0, 0, "Optimization (time|space)" },
 	    { 'l', "label", ffs_opts->label, OPT_STRARRAY,
 	      1, sizeof(ffs_opts->label), "UFS label" },
 	    { .name = NULL }
@@ -216,6 +214,7 @@ ffs_parse_opts(const char *option, fsinf
 {
 	ffs_opt_t	*ffs_opts = fsopts->fs_specific;
 	option_t *ffs_options = fsopts->fs_options;
+	char buf[1024];
 
 	int	rv;
 
@@ -226,22 +225,26 @@ ffs_parse_opts(const char *option, fsinf
 	if (debug & DEBUG_FS_PARSE_OPTS)
 		printf("ffs_parse_opts: got `%s'\n", option);
 
-	rv = set_option(ffs_options, option);
+	rv = set_option(ffs_options, option, buf, sizeof(buf));
 	if (rv == -1)
 		return 0;
 
 	if (ffs_options[rv].name == NULL)
 		abort();
 
-	if (strcmp(ffs_options[rv].name, "optimization") == 0) {
-		if (strcmp(optimization, "time") == 0) {
+	switch (ffs_options[rv].letter) {
+	case 'o':
+		if (strcmp(buf, "time") == 0) {
 			ffs_opts->optimization = FS_OPTTIME;
-		} else if (strcmp(optimization, "space") == 0) {
+		} else if (strcmp(buf, "space") == 0) {
 			ffs_opts->optimization = FS_OPTSPACE;
 		} else {
-			warnx("Invalid optimization `%s'", optimization);
+			warnx("Invalid optimization `%s'", buf);
 			return 0;
 		}
+		break;
+	default:
+		break;
 	}
 	return 1;
 }

Index: src/usr.sbin/makefs/makefs.c
diff -u src/usr.sbin/makefs/makefs.c:1.43 src/usr.sbin/makefs/makefs.c:1.44
--- src/usr.sbin/makefs/makefs.c:1.43	Tue Jan 29 09:09:48 2013
+++ src/usr.sbin/makefs/makefs.c	Tue Jan 29 10:52:25 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: makefs.c,v 1.43 2013/01/29 14:09:48 christos Exp $	*/
+/*	$NetBSD: makefs.c,v 1.44 2013/01/29 15:52:25 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.43 2013/01/29 14:09:48 christos Exp $");
+__RCSID("$NetBSD: makefs.c,v 1.44 2013/01/29 15:52:25 christos Exp $");
 #endif	/* !__lint */
 
 #include <assert.h>
@@ -302,7 +302,7 @@ main(int argc, char *argv[])
 }
 
 int
-set_option(const option_t *options, const char *option)
+set_option(const option_t *options, const char *option, char *buf, size_t len)
 {
 	char *var, *val;
 	int retval;
@@ -315,13 +315,14 @@ set_option(const option_t *options, cons
 			*val++ = '\0';
 			break;
 		}
-	retval = set_option_var(options, var, val);
+	retval = set_option_var(options, var, val, buf, len);
 	free(var);
 	return retval;
 }
 
 int
-set_option_var(const option_t *options, const char *var, const char *val)
+set_option_var(const option_t *options, const char *var, const char *val,
+    char *buf, size_t len)
 {
 	char *s;
 	size_t i;
@@ -354,7 +355,11 @@ set_option_var(const option_t *options, 
 				err(1, NULL);
 			*(char **)options[i].value = s;
 			break;
-
+		case OPT_STRBUF:
+			if (buf == NULL)
+				abort();
+			strlcpy(buf, val, len);
+			break;
 		case OPT_INT64:
 			NUM(64);
 		case OPT_INT32:

Index: src/usr.sbin/makefs/makefs.h
diff -u src/usr.sbin/makefs/makefs.h:1.30 src/usr.sbin/makefs/makefs.h:1.31
--- src/usr.sbin/makefs/makefs.h:1.30	Mon Jan 28 16:03:27 2013
+++ src/usr.sbin/makefs/makefs.h	Tue Jan 29 10:52:25 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: makefs.h,v 1.30 2013/01/28 21:03:27 christos Exp $	*/
+/*	$NetBSD: makefs.h,v 1.31 2013/01/29 15:52:25 christos Exp $	*/
 
 /*
  * Copyright (c) 2001 Wasabi Systems, Inc.
@@ -118,6 +118,7 @@ typedef struct _fsnode {
 typedef enum {
 	OPT_STRARRAY,
 	OPT_STRPTR,
+	OPT_STRBUF,
 	OPT_BOOL,
 	OPT_INT8,
 	OPT_INT16,
@@ -173,8 +174,9 @@ typedef struct {
 void		apply_specfile(const char *, const char *, fsnode *, int);
 void		dump_fsnodes(fsnode *);
 const char *	inode_type(mode_t);
-int		set_option(const option_t *, const char *);
-int		set_option_var(const option_t *, const char *, const char *);
+int		set_option(const option_t *, const char *, char *, size_t);
+int		set_option_var(const option_t *, const char *, const char *,
+    char *, size_t);
 fsnode *	walk_dir(const char *, const char *, fsnode *, fsnode *);
 void		free_fsnodes(fsnode *);
 option_t *	copy_opts(const option_t *);

Reply via email to