summaryrefslogtreecommitdiff
path: root/util/nvramtool/common.c
blob: bf2158b1d41a1bffb80d64c52ce9f6877475608f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
/*****************************************************************************\
 * common.c
 *****************************************************************************
 *  Copyright (C) 2002-2005 The Regents of the University of California.
 *  Produced at the Lawrence Livermore National Laboratory.
 *  Written by Dave Peterson <dsp@llnl.gov> <dave_peterson@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"

/* basename of this program, as reported by argv[0] */
const char prog_name[] = "nvramtool";

/* version of this program */
const char prog_version[] = "2.1";

/****************************************************************************
 * get_line_from_file
 *
 * Get a line of input from file 'f'.  Store result in 'line' which is an
 * array of 'line_buf_size' bytes.
 ****************************************************************************/
int get_line_from_file (FILE *f, char line[], int line_buf_size)
 { if (fgets(line, line_buf_size, f) == NULL)
      return LINE_EOF;

   /* If the file contains a line that is too long, then it's best to let the
    * user know right away rather than passing back a truncated result that
    * will lead to problems later on.
    */
   return (strlen(line) == ((size_t) (line_buf_size - 1))) ?
          LINE_TOO_LONG : OK;
 }

/****************************************************************************
 * out_of_memory
 *
 * We ran out of memory.  Print an error message and die.
 ****************************************************************************/
void out_of_memory (void)
 { fprintf(stderr, "%s: Out of memory.\n", prog_name);
   exit(1);
 }

/****************************************************************************
 * usage
 *
 * Write a usage message to 'outfile'.  If 'outfile' is 'stderr' then exit
 * with a value of 1.  Otherwise exit with a value of 0.
 ****************************************************************************/
void usage (FILE *outfile)
 { fprintf(outfile,
           "Usage: %s [-y LAYOUT_FILE | -t] PARAMETER ...\n\n"
           "       Read/write coreboot parameters or show info from "
           "coreboot table.\n\n"
           "       -y LAYOUT_FILE: Use CMOS layout specified by "
           "LAYOUT_FILE.\n"
           "       -t:             Use CMOS layout specified by CMOS option "
           "table.\n"
           "       [-n] -r NAME:   Show parameter NAME.  If -n is given, "
           "show value only.\n"
           "       -e NAME:        Show all possible values for parameter "
           "NAME.\n"
           "       -a:             Show names and values for all "
           "parameters.\n"
           "       -w NAME=VALUE:  Set parameter NAME to VALUE.\n"
           "       -p INPUT_FILE:  Set parameters according to INPUT_FILE.\n"
           "       -i:             Same as -p but file contents taken from "
           "standard input.\n"
           "       -c [VALUE]:     Show CMOS checksum or set checksum to "
           "VALUE.\n"
           "       -l [ARG]:       Show coreboot table info for ARG, or "
           "all ARG choices.\n"
           "       -d:             Show low-level dump of coreboot table.\n"
           "       -Y:             Show CMOS layout info.\n"
           "       -b OUTPUT_FILE: Dump CMOS memory contents to file.\n"
           "       -B INPUT_FILE:  Write file contents to CMOS memory.\n"
           "       -x:             Show hex dump of CMOS memory.\n"
           "       -X DUMPFILE:    Show hex dump of CMOS dumpfile.\n"
           "       -v:             Show version info for this program.\n"
           "       -h:             Show this message.\n", prog_name);
   exit(outfile == stderr);
 }