/*****************************************************************************\
 * input_file.h
 *****************************************************************************
 *  Copyright (C) 2002-2005 The Regents of the University of California.
 *  Produced at the Lawrence Livermore National Laboratory.
 *  Written by David S. 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 https://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.
\*****************************************************************************/

#ifndef INPUT_FILE_H
#define INPUT_FILE_H

#include "common.h"
#include "layout.h"

typedef struct cmos_write_t cmos_write_t;

/* This represents a pending CMOS write operation.  When changing
 * multiple CMOS parameter values, we first represent the changes as a
 * list of pending write operations.  This allows us to sanity check all
 * write operations before any of them are performed.
 */
struct cmos_write_t {
	unsigned bit;
	unsigned length;
	cmos_entry_config_t config;
	unsigned long long value;
	cmos_write_t *next;
};

cmos_write_t *process_input_file(FILE * f);
void do_cmos_writes(cmos_write_t * list);

extern const char assignment_regex[];

#endif				/* INPUT_FILE_H */
