[coreboot] [commit] r6310 - in trunk/util/nvramtool: . cli

repository service svn at coreboot.org
Fri Jan 28 08:47:12 CET 2011


Author: oxygene
Date: Fri Jan 28 08:47:10 2011
New Revision: 6310
URL: https://tracker.coreboot.org/trac/coreboot/changeset/6310

Log:
Move CLI portion of nvramtool into cli/ subdirectory as first step towards librarization.
Also: update one regex wrapper user.

Signed-off-by: Patrick Georgi <patrick.georgi at secunet.com>
Acked-by: Stefan Reinauer <stefan.reinauer at coreboot.org>

Added:
   trunk/util/nvramtool/cli/
   trunk/util/nvramtool/cli/nvramtool.8
      - copied unchanged from r6309, trunk/util/nvramtool/nvramtool.8
   trunk/util/nvramtool/cli/nvramtool.c
      - copied, changed from r6309, trunk/util/nvramtool/nvramtool.c
   trunk/util/nvramtool/cli/opts.c
      - copied unchanged from r6309, trunk/util/nvramtool/opts.c
   trunk/util/nvramtool/cli/opts.h
      - copied unchanged from r6309, trunk/util/nvramtool/opts.h
Deleted:
   trunk/util/nvramtool/nvramtool.8
   trunk/util/nvramtool/nvramtool.c
   trunk/util/nvramtool/opts.c
   trunk/util/nvramtool/opts.h
Modified:
   trunk/util/nvramtool/Makefile

Modified: trunk/util/nvramtool/Makefile
==============================================================================
--- trunk/util/nvramtool/Makefile	Fri Jan 28 08:41:10 2011	(r6309)
+++ trunk/util/nvramtool/Makefile	Fri Jan 28 08:47:10 2011	(r6310)
@@ -24,12 +24,16 @@
 STRIP	= strip
 INSTALL = /usr/bin/install
 PREFIX  = /usr/local
-CFLAGS  = -O2 -g -Wall -W
+CFLAGS  = -O2 -g -Wall -W -I.
 #CFLAGS  = -Os -Wall
 
+CLI_OBJS = cli/nvramtool.o cli/opts.o
+
 OBJS =  cmos_lowlevel.o cmos_ops.o common.o compute_ip_checksum.o \
 	hexdump.o input_file.o layout.o layout_file.o lbtable.o   \
-	nvramtool.o opts.o reg_expr.o cbfs.o
+	reg_expr.o cbfs.o
+
+OBJS += $(CLI_OBJS)
 
 OS_ARCH        = $(shell uname)
 ifeq ($(OS_ARCH), Darwin)
@@ -43,7 +47,7 @@
 	$(STRIP) $(STRIP_ARGS) $(PROGRAM)
 
 clean:
-	rm -f $(PROGRAM) *.o
+	rm -f $(PROGRAM) $(OBJS)
 
 distclean: clean
 	rm -f .dependencies
@@ -55,7 +59,7 @@
 	mkdir -p $(DESTDIR)$(PREFIX)/sbin
 	$(INSTALL) $(PROGRAM) $(DESTDIR)$(PREFIX)/sbin
 	mkdir -p $(DESTDIR)$(PREFIX)/share/man/man8
-	$(INSTALL) $(PROGRAM).8 $(DESTDIR)$(PREFIX)/share/man/man8
+	$(INSTALL) cli/$(PROGRAM).8 $(DESTDIR)$(PREFIX)/share/man/man8
 
 .PHONY: all clean distclean dep
 

Copied: trunk/util/nvramtool/cli/nvramtool.8 (from r6309, trunk/util/nvramtool/nvramtool.8)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/util/nvramtool/cli/nvramtool.8	Fri Jan 28 08:47:10 2011	(r6310, copy of r6309, trunk/util/nvramtool/nvramtool.8)
@@ -0,0 +1,254 @@
+.\"***************************************************************************\
+.\" nvramtool.8
+.\"***************************************************************************
+.\"  Copyright (C) 2002, 2003 The Regents of the University of California.
+.\"  Produced at the Lawrence Livermore National Laboratory.
+.\"  Written by David S. Peterson <dsp at llnl.gov> <dave_peterson at pobox.com>.
+.\"  UCRL-CODE-2003-012
+.\"  All rights reserved.
+.\"
+.\"  This file is part of nvramtool, a utility for reading/writing coreboot
+.\"  parameters and displaying information from the coreboot table.
+.\"  For details, see http://coreboot.org/nvramtool.
+.\"
+.\"  Please also read the file DISCLAIMER which is included in this software
+.\"  distribution.
+.\"
+.\"  This program is free software; you can redistribute it and/or modify it
+.\"  under the terms of the GNU General Public License (as published by the
+.\"  Free Software Foundation) version 2, dated June 1991.
+.\"
+.\"  This program is distributed in the hope that it will be useful, but
+.\"  WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF
+.\"  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the terms and
+.\"  conditions of the GNU General Public License for more details.
+.\"
+.\"  You should have received a copy of the GNU General Public License along
+.\"  with this program; if not, write to the Free Software Foundation, Inc.,
+.\"  51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+.\"***************************************************************************/
+.TH NVRAMTOOL 8 "September 2008"
+.SH NAME
+nvramtool \- read/write coreboot-related information
+.SH SYNOPSIS
+.B "nvramtool [OPTS] [-n] -r NAME"
+.br
+.B "nvramtool [OPTS] -e NAME"
+.br
+.B "nvramtool [OPTS] -a"
+.br
+.B "nvramtool [OPTS] -w NAME=VALUE"
+.br
+.B "nvramtool [OPTS] -p INPUT_FILE"
+.br
+.B "nvramtool [OPTS] -i"
+.br
+.B "nvramtool [OPTS] -c [VALUE]"
+.br
+.B "nvramtool [OPTS] -l [ARG]"
+.br
+.B "nvramtool [OPTS] -d"
+.br
+.B "nvramtool [OPTS] -Y"
+.br
+.B "nvramtool [OPTS] -b OUTPUT_FILE"
+.br
+.B "nvramtool [OPTS] -B INPUT_FILE"
+.br
+.B "nvramtool [OPTS] -x"
+.br
+.B "nvramtool [OPTS] -X DUMPFILE"
+.br
+.B "nvramtool [OPTS] -v"
+.br
+.B "nvramtool [OPTS] -h"
+.SH DESCRIPTION
+.B "nvramtool"
+is a utility for reading/writing coreboot parameters and displaying
+information from the coreboot table.
+
+The coreboot table resides in low physical memory.  It is created at boot
+time by coreboot, and contains various system information such as the type
+of mainboard in use.  It specifies locations in the CMOS (nonvolatile RAM)
+where the coreboot parameters are stored.
+
+This program is intended for (x86-based) systems that use coreboot.  For
+information about coreboot, see
+.br
+http://www.coreboot.org/.
+.SH PARAMETERS
+.TP
+.B "[-n] -r NAME"
+Show the value of the coreboot parameter given by
+.B "NAME."
+If
+.B "-n"
+is specified, show only the value.  Otherwise show both parameter name and
+value.
+.TP
+.B "-e NAME"
+Show all possible values for parameter given by
+.B "NAME."
+.TP
+.B "-a"
+Show the names and values for all coreboot parameters.
+.TP
+.B "-w NAME=VALUE"
+Assign
+.B "VALUE"
+to coreboot parameter given by
+.B "NAME."
+.TP
+.B "-p INPUT_FILE"
+Assign values to coreboot parameters according to the contents of
+.B "INPUT_FILE."
+The format of this file is described below.
+.TP
+.B "-i"
+This is similar to the
+.B "-p"
+option, except that the contents of the input file are taken from standard
+input.
+.TP
+.B "-c [VALUE]"
+If
+.B "VALUE"
+is present then set the CMOS checksum for the coreboot parameters to
+.B "VALUE."
+Otherwise, show the checksum value.
+.TP
+.B "-l [ARG]"
+If
+.B "ARG"
+is present then show information from the coreboot table as specified by
+.B "ARG."
+Otherwise show all possible values for
+.B "ARG."
+.TP
+.B "-d"
+Do a low-level dump of the coreboot table.
+.TP
+.B "-Y"
+Write CMOS layout information to standard output.  If redirected to a file,
+the layout information may be used as input for the
+.B "'-y LAYOUT_FILE'"
+option (see below).
+.TP
+.B "-b OUTPUT_FILE"
+Write the contents of CMOS memory to the binary file
+.B "OUTPUT_FILE."
+The first 14 bytes of
+.B "OUTPUT_FILE"
+do not contain actual CMOS data, and are always written as zeros.  This is
+because the first 14 bytes of the CMOS area do not contain CMOS memory.  These
+bytes are involved with the functioning of the real time clock.
+.TP
+.B "-B INPUT_FILE"
+Read binary data from
+.B "INPUT_FILE"
+and write the data to CMOS memory.  The first 14 bytes of
+.B "INPUT_FILE"
+are skipped and data is written to CMOS starting at the 15th byte of the CMOS
+area.  This is because the first 14 bytes of the CMOS area do not contain CMOS
+memory.  These bytes are involved with the functioning of the real time clock.
+.TP
+.B "-x"
+Show a hex dump of all CMOS data.  The first 14 bytes of the dump do not
+contain actual CMOS data, and are always shown as zeros.  This is because the
+first 14 bytes of the CMOS area do not contain CMOS memory.  These bytes are
+involved with the functioning of the real time clock.
+.TP
+.B "-X DUMPFILE"
+Read binary data from
+.B "DUMPFILE"
+(presumably a CMOS dumpfile created using the
+.B "-b OUTPUT_FILE"
+option) and show a hex dump of the data.
+.TP
+.B "-v"
+Show version information for this program.
+.TP
+.B "-h"
+Show a help message for this program.
+.SH "OPTIONS"
+In all cases above,
+.B "[OPTS]"
+evaluates to the following:
+
+.B "    [-y LAYOUT_FILE | -t]"
+
+The
+.B "'-y LAYOUT_FILE'"
+option tells nvramtool to obtain CMOS layout information from the contents of
+.B "LAYOUT_FILE."
+Likewise, the
+.B "'-t'"
+option tells nvramtool to obtain CMOS layout information from the CMOS option
+table (contained within the coreboot table).  If neither option is
+specified, the CMOS option table is used by default.
+.B "LAYOUT_FILE"
+follows the format of the
+.B "cmos.layout"
+files provided by coreboot.
+
+If the coreboot installed on your system was built without specifying
+.B "CONFIG_HAVE_OPTION_TABLE,"
+then the coreboot table will not contain a CMOS option table.  In this case,
+the
+.B "'-y LAYOUT_FILE'"
+option must be used.
+
+These two options are silently ignored when used in combination with other
+options (such as
+.B "-h,"
+for instance) for which they are not applicable.
+.SH FILE FORMAT
+For the
+.B "-p"
+option,
+.B "INPUT_FILE"
+must consist of a sequence of lines such that each line is either a blank
+line, a comment, or an assignment.  A blank line consists only of zero or
+more whitespace characters (spaces and tabs).  A comment is constructed as
+follows:
+
+.B "    [ws]#[text]"
+
+Here,
+.B "[ws]"
+indicates optional whitespace characters and
+.B "[text]"
+indicates optional text.  Blank lines and comments are both ignored.  An
+assignment is constructed as follows:
+
+.B "    [ws]NAME[ws]=[ws]VALUE[ws]"
+
+Here,
+.B "NAME"
+is the name of a coreboot parameter and
+.B "VALUE"
+is the value that will be assigned to
+.B "NAME."
+.B "VALUE"
+is allowed to contain whitespace characters, but it must begin and end with
+nonwhitespace characters.  Note that each comment must appear on a line by
+itself.  If you attempt to add a comment to the end of an assignment, then the
+comment will be interpreted as part of
+.B "VALUE."
+It is useful to observe that the output produced by both the
+.B "-a"
+and the
+.B "'[-n] NAME'"
+options (without
+.B "-n"
+specified) adheres to this file format.
+.SH BUGS
+This program does not implement any type of synchronization to ensure that
+different processes don't stomp on each other when trying to access the
+nonvolatile RAM simultaneously.  Therefore, corruption of the BIOS parameter
+values may occur if multiple instances of this program are executed
+concurrently.
+.SH AUTHORS
+David S. Peterson <dsp at llnl.gov> <dave_peterson at pobox.com>
+.br
+Stefan Reinauer <stepan at coresystems.de>

Copied and modified: trunk/util/nvramtool/cli/nvramtool.c (from r6309, trunk/util/nvramtool/nvramtool.c)
==============================================================================
--- trunk/util/nvramtool/nvramtool.c	Fri Jan 28 08:41:10 2011	(r6309, copy source)
+++ trunk/util/nvramtool/cli/nvramtool.c	Fri Jan 28 08:47:10 2011	(r6310)
@@ -682,8 +682,7 @@
 	regmatch_t match[N_MATCHES];
 	regex_t assignment;
 
-	compile_reg_exprs(REG_EXTENDED | REG_NEWLINE, 1, assignment_regex,
-			  &assignment);
+	compile_reg_expr(REG_EXTENDED | REG_NEWLINE, assignment_regex, &assignment);
 
 	/* Does 'arg' conform to proper assignment syntax?  If not, exit with a
 	 * usage message.
@@ -699,7 +698,7 @@
 	*name = &arg[match[1].rm_so];
 	*value = &arg[match[2].rm_so];
 
-	free_reg_exprs(1, &assignment);
+	regfree(&assignment);
 }
 
 /****************************************************************************

Copied: trunk/util/nvramtool/cli/opts.c (from r6309, trunk/util/nvramtool/opts.c)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/util/nvramtool/cli/opts.c	Fri Jan 28 08:47:10 2011	(r6310, copy of r6309, trunk/util/nvramtool/opts.c)
@@ -0,0 +1,259 @@
+/*****************************************************************************\
+ * opts.c
+ *****************************************************************************
+ *  Copyright (C) 2002-2005 The Regents of the University of California.
+ *  Produced at the Lawrence Livermore National Laboratory.
+ *  Written by Dave Peterson <dsp at llnl.gov> <dave_peterson at pobox.com>.
+ *  UCRL-CODE-2003-012
+ *  All rights reserved.
+ *
+ *  This file is part of nvramtool, a utility for reading/writing coreboot
+ *  parameters and displaying information from the coreboot table.
+ *  For details, see http://coreboot.org/nvramtool.
+ *
+ *  Please also read the file DISCLAIMER which is included in this software
+ *  distribution.
+ *
+ *  This program is free software; you can redistribute it and/or modify it
+ *  under the terms of the GNU General Public License (as published by the
+ *  Free Software Foundation) version 2, dated June 1991.
+ *
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the terms and
+ *  conditions of the GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License along
+ *  with this program; if not, write to the Free Software Foundation, Inc.,
+ *  51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+\*****************************************************************************/
+
+#include "common.h"
+#include "opts.h"
+
+nvramtool_op_info_t nvramtool_op;
+
+nvramtool_op_modifier_info_t nvramtool_op_modifiers[NVRAMTOOL_NUM_OP_MODIFIERS];
+
+static char *handle_optional_arg(int argc, char *argv[]);
+static void register_op(int *op_found, nvramtool_op_t op, char op_param[]);
+static void register_op_modifier(nvramtool_op_modifier_t mod, char mod_param[]);
+static void resolve_op_modifiers(void);
+static void sanity_check_args(void);
+
+static const char getopt_string[] = "-ab:B:c::C:dD:e:hil::np:r:tvw:xX:y:Y";
+
+/****************************************************************************
+ * parse_nvramtool_args
+ *
+ * Parse command line arguments.
+ ****************************************************************************/
+void parse_nvramtool_args(int argc, char *argv[])
+{
+	nvramtool_op_modifier_info_t *mod_info;
+	int i, op_found;
+	char c;
+
+	for (i = 0, mod_info = nvramtool_op_modifiers;
+	     i < NVRAMTOOL_NUM_OP_MODIFIERS; i++, mod_info++) {
+		mod_info->found = FALSE;
+		mod_info->found_seq = 0;
+		mod_info->param = NULL;
+	}
+
+	op_found = FALSE;
+	opterr = 0;
+
+	do {
+		switch (c = getopt(argc, argv, getopt_string)) {
+		case 'a':
+			register_op(&op_found,
+				    NVRAMTOOL_OP_CMOS_SHOW_ALL_PARAMS, NULL);
+			break;
+		case 'b':
+			register_op(&op_found, NVRAMTOOL_OP_WRITE_CMOS_DUMP,
+				    optarg);
+			break;
+		case 'B':
+			register_op(&op_found, NVRAMTOOL_OP_READ_CMOS_DUMP,
+				    optarg);
+			break;
+		case 'c':
+			register_op(&op_found, NVRAMTOOL_OP_CMOS_CHECKSUM,
+				    handle_optional_arg(argc, argv));
+			break;
+		case 'C':
+			register_op_modifier(NVRAMTOOL_MOD_USE_CBFS_FILE,
+					     optarg);
+			break;
+		case 'd':
+			register_op(&op_found, NVRAMTOOL_OP_LBTABLE_DUMP, NULL);
+			break;
+		case 'D':
+			register_op_modifier(NVRAMTOOL_MOD_USE_CMOS_FILE,
+					     optarg);
+			break;
+		case 'e':
+			register_op(&op_found, NVRAMTOOL_OP_SHOW_PARAM_VALUES,
+				    optarg);
+			break;
+		case 'h':
+			register_op(&op_found, NVRAMTOOL_OP_SHOW_USAGE, NULL);
+			break;
+		case 'i':
+			register_op(&op_found,
+				    NVRAMTOOL_OP_CMOS_SET_PARAMS_STDIN, NULL);
+			break;
+		case 'l':
+			register_op(&op_found, NVRAMTOOL_OP_LBTABLE_SHOW_INFO,
+				    handle_optional_arg(argc, argv));
+			break;
+		case 'n':
+			register_op_modifier(NVRAMTOOL_MOD_SHOW_VALUE_ONLY,
+					     NULL);
+			break;
+		case 'p':
+			register_op(&op_found,
+				    NVRAMTOOL_OP_CMOS_SET_PARAMS_FILE, optarg);
+			break;
+		case 'r':
+			register_op(&op_found, NVRAMTOOL_OP_CMOS_SHOW_ONE_PARAM,
+				    optarg);
+			break;
+		case 't':
+			register_op_modifier(NVRAMTOOL_MOD_USE_CMOS_OPT_TABLE,
+					     NULL);
+			break;
+		case 'v':
+			register_op(&op_found, NVRAMTOOL_OP_SHOW_VERSION, NULL);
+			break;
+		case 'w':
+			register_op(&op_found, NVRAMTOOL_OP_CMOS_SET_ONE_PARAM,
+				    optarg);
+			break;
+		case 'x':
+			register_op(&op_found, NVRAMTOOL_OP_SHOW_CMOS_HEX_DUMP,
+				    NULL);
+			break;
+		case 'X':
+			register_op(&op_found, NVRAMTOOL_OP_SHOW_CMOS_DUMPFILE,
+				    optarg);
+			break;
+		case 'y':
+			register_op_modifier(NVRAMTOOL_MOD_USE_CMOS_LAYOUT_FILE,
+					     optarg);
+			break;
+		case 'Y':
+			register_op(&op_found, NVRAMTOOL_OP_SHOW_LAYOUT, NULL);
+			break;
+		case -1:	/* no more command line args */
+			break;
+		case '?':	/* unknown option found */
+		case 1:	/* nonoption command line arg found */
+		default:
+			usage(stderr);
+			break;
+		}
+	} while (c != -1);
+
+	if (!op_found)
+		usage(stderr);
+
+	resolve_op_modifiers();
+	sanity_check_args();
+}
+
+/****************************************************************************
+ * handle_optional_arg
+ *
+ * Handle a command line option with an optional argument.
+ ****************************************************************************/
+static char *handle_optional_arg(int argc, char *argv[])
+{
+	char *arg;
+
+	if (optarg != NULL) {
+		/* optional arg is present and arg was specified as
+		 * "-zarg" (with no whitespace between "z" and "arg"),
+		 * where -z is the option and "arg" is the value of the
+		 * optional arg
+		 */
+		return optarg;
+	}
+
+	if ((argv[optind] == NULL) || (argv[optind][0] == '-'))
+		return NULL;
+
+	arg = argv[optind];	/* optional arg is present */
+
+	/* This call to getopt yields the optional arg we just found,
+	 * which we want to skip.
+	 */
+	getopt(argc, argv, getopt_string);
+
+	return arg;
+}
+
+/****************************************************************************
+ * register_op
+ *
+ * Store the user's selection of which operation this program should perform.
+ ****************************************************************************/
+static void register_op(int *op_found, nvramtool_op_t op, char op_param[])
+{
+	if (*op_found && (op != nvramtool_op.op))
+		usage(stderr);
+
+	*op_found = TRUE;
+	nvramtool_op.op = op;
+	nvramtool_op.param = op_param;
+}
+
+/****************************************************************************
+ * register_op_modifier
+ *
+ * Store information regarding an optional argument specified in addition to
+ * the user's selection of which operation this program should perform.
+ ****************************************************************************/
+static void register_op_modifier(nvramtool_op_modifier_t mod, char mod_param[])
+{
+	static int found_seq = 0;
+	nvramtool_op_modifier_info_t *mod_info;
+
+	mod_info = &nvramtool_op_modifiers[mod];
+	mod_info->found = TRUE;
+	mod_info->found_seq = ++found_seq;
+	mod_info->param = mod_param;
+}
+
+/****************************************************************************
+ * resolve_op_modifiers
+ *
+ * If the user specifies multiple arguments that conflict with each other,
+ * the last specified argument overrides previous conflicting arguments.
+ ****************************************************************************/
+static void resolve_op_modifiers(void)
+{
+	if (nvramtool_op_modifiers[NVRAMTOOL_MOD_USE_CMOS_LAYOUT_FILE].found &&
+	    nvramtool_op_modifiers[NVRAMTOOL_MOD_USE_CMOS_OPT_TABLE].found) {
+		if (nvramtool_op_modifiers[NVRAMTOOL_MOD_USE_CMOS_LAYOUT_FILE].found_seq >
+		    nvramtool_op_modifiers[NVRAMTOOL_MOD_USE_CMOS_OPT_TABLE].found_seq)
+			nvramtool_op_modifiers
+			    [NVRAMTOOL_MOD_USE_CMOS_OPT_TABLE].found = FALSE;
+		else
+			nvramtool_op_modifiers
+			    [NVRAMTOOL_MOD_USE_CMOS_LAYOUT_FILE].found = FALSE;
+	}
+}
+
+/****************************************************************************
+ * sanity_check_args
+ *
+ * Perform sanity checking on command line arguments.
+ ****************************************************************************/
+static void sanity_check_args(void)
+{
+	if ((nvramtool_op_modifiers[NVRAMTOOL_MOD_SHOW_VALUE_ONLY].found) &&
+	    (nvramtool_op.op != NVRAMTOOL_OP_CMOS_SHOW_ONE_PARAM))
+		usage(stderr);
+}

Copied: trunk/util/nvramtool/cli/opts.h (from r6309, trunk/util/nvramtool/opts.h)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/util/nvramtool/cli/opts.h	Fri Jan 28 08:47:10 2011	(r6310, copy of r6309, trunk/util/nvramtool/opts.h)
@@ -0,0 +1,79 @@
+/*****************************************************************************\
+ * opts.h
+ *****************************************************************************
+ *  Copyright (C) 2002-2005 The Regents of the University of California.
+ *  Produced at the Lawrence Livermore National Laboratory.
+ *  Written by Dave Peterson <dsp at llnl.gov> <dave_peterson at pobox.com>.
+ *  UCRL-CODE-2003-012
+ *  All rights reserved.
+ *
+ *  This file is part of nvramtool, a utility for reading/writing coreboot
+ *  parameters and displaying information from the coreboot table.
+ *  For details, see http://coreboot.org/nvramtool.
+ *
+ *  Please also read the file DISCLAIMER which is included in this software
+ *  distribution.
+ *
+ *  This program is free software; you can redistribute it and/or modify it
+ *  under the terms of the GNU General Public License (as published by the
+ *  Free Software Foundation) version 2, dated June 1991.
+ *
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the terms and
+ *  conditions of the GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License along
+ *  with this program; if not, write to the Free Software Foundation, Inc.,
+ *  51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+\*****************************************************************************/
+
+#ifndef OPTS_H
+#define OPTS_H
+
+#include "common.h"
+
+typedef enum { NVRAMTOOL_OP_SHOW_VERSION = 0,
+	NVRAMTOOL_OP_SHOW_USAGE,
+	NVRAMTOOL_OP_LBTABLE_SHOW_INFO,
+	NVRAMTOOL_OP_LBTABLE_DUMP,
+	NVRAMTOOL_OP_SHOW_PARAM_VALUES,
+	NVRAMTOOL_OP_CMOS_SHOW_ONE_PARAM,
+	NVRAMTOOL_OP_CMOS_SHOW_ALL_PARAMS,
+	NVRAMTOOL_OP_CMOS_SET_ONE_PARAM,
+	NVRAMTOOL_OP_CMOS_SET_PARAMS_STDIN,
+	NVRAMTOOL_OP_CMOS_SET_PARAMS_FILE,
+	NVRAMTOOL_OP_CMOS_CHECKSUM,
+	NVRAMTOOL_OP_SHOW_LAYOUT,
+	NVRAMTOOL_OP_WRITE_CMOS_DUMP,
+	NVRAMTOOL_OP_READ_CMOS_DUMP,
+	NVRAMTOOL_OP_SHOW_CMOS_HEX_DUMP,
+	NVRAMTOOL_OP_SHOW_CMOS_DUMPFILE
+} nvramtool_op_t;
+
+typedef struct {
+	nvramtool_op_t op;
+	char *param;
+} nvramtool_op_info_t;
+
+typedef enum { NVRAMTOOL_MOD_SHOW_VALUE_ONLY = 0,
+	NVRAMTOOL_MOD_USE_CMOS_LAYOUT_FILE,
+	NVRAMTOOL_MOD_USE_CBFS_FILE,
+	NVRAMTOOL_MOD_USE_CMOS_FILE,
+	NVRAMTOOL_MOD_USE_CMOS_OPT_TABLE,
+	NVRAMTOOL_NUM_OP_MODIFIERS	/* must always be last */
+} nvramtool_op_modifier_t;
+
+typedef struct {
+	int found;
+	int found_seq;
+	char *param;
+} nvramtool_op_modifier_info_t;
+
+extern nvramtool_op_info_t nvramtool_op;
+
+extern nvramtool_op_modifier_info_t nvramtool_op_modifiers[];
+
+void parse_nvramtool_args(int argc, char *argv[]);
+
+#endif				/* OPTS_H */




More information about the coreboot mailing list