/**
* \brief INI File handling library header
* \file ezini.h
* \author Michael Dipperstein (mdipperstein@gmail.com)
* \date November 22, 2015
*
* This file implements a set of library functions that maybe be used
* to create, update, and/or parse INI files.
*
* \copyright Copyright (C) 2015, 2019 by Michael Dipperstein
* (mdipperstein@gmail.com)
*
* \par
* This file is part of the ezini library.
*
* \license The ezini library is free software; you can redistribute it
* and/or modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either version 3
* of the License, or (at your option) any later version.
*
* \par
* The ezini library 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 GNU Lesser
* General Public License for more details.
*
* \par
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see .
*
*/
#ifndef __EZINI_H
#define __EZINI_H
/**
* \mainpage EZIni - INI File handling library
*
* These pages provide documentation for EZIni, an INI File handling library.
*
* \copyright Copyright (C) 2015, 2019 by Michael Dipperstein
* (mdipperstein@gmail.com)
*
* \license
* The ezini library is free software; you can redistribute it
* and/or modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either version 3
* of the License, or (at your option) any later version.
*
* \par
* The ezini library 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 GNU Lesser
* General Public License for more details.
*
* \par
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see .
*
*/
#ifdef __cplusplus
extern "C" {
#endif
/***************************************************************************
* TYPE DEFINITIONS
***************************************************************************/
/**
* \struct ini_entry_t
* \brief A structure containing the section, key, and value of INI.
* file entry
*/
typedef struct
{
char *section; /*!< pointer to a NULL terminated string containing the
section name */
char *key; /*!< pointer to a a NULL terminated string containing
the key name */
char *value; /*!< pointer to a NULL terminated string with entry
value. Use ASCII strings to represent numbers */
} ini_entry_t;
/**
* \typedef ini_entry_list_t
* \brief A shortcut for forward referenced struct ini_section_list_t*
*/
typedef struct ini_section_list_t* ini_entry_list_t;
/***************************************************************************
* PROTOTYPES
***************************************************************************/
/* add (section, key, value) to a list of INI entries */
int AddEntryToList(ini_entry_list_t *list, const char *section,
const char *key, const char *value);
/* free all of the entries in an entry list */
void FreeList(ini_entry_list_t list);
/* create/add entries to an INI file from a sorted entry list */
int MakeINIFile(const char *iniFile, const ini_entry_list_t list);
int AddEntryToFile(const char *iniFile, const ini_entry_list_t list);
/* remove a single entry from an INI file */
int DeleteEntryFromFile(const char *iniFile, const char *section,
const char *key);
/***************************************************************************
* get the next entry in INI file.
* returns: 1 if an entry is found
* 0 if there are no more entries
* -1 on error
***************************************************************************/
int GetEntryFromFile(FILE *iniFile, ini_entry_t *entry);
#ifdef __cplusplus
}
#endif
#endif /* ndef __EZINI_H */