/*
** CONFIG FILE: Simple config file parser
** Copyright (C) 2002 Michael W. Shaffer <mwshaffer@angrypot.com>
**
** 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; either version 2 of the License, or
** (at your option) any later version.
**
** 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
** GNU General Public License for more details.  
**
** You should have received a copy of the GNU General Public License
** along with this program (see the file COPYING). If not, write to:
**
** The Free Software Foundation, Inc.
** 59 Temple Place, Suite 330,
** Boston, MA  02111-1307  USA
*/

#ifndef CONFIG_FILE_H
#define CONFIG_FILE_H

#include "hash.h"

/*
** Config file format is as follows:
**
**  - settings are in the form of either:
**
**      key = value
**
**    or:
**
**      key : value
**
**  - keys and values may contain only the characters:
**
**      - _ . / a-z A-Z 0-9
**
**  - whitespace is optional and is discarded along with anything
**    else no explicitly listed above
**  - comments start with either ';' or '#' and continue
**    until end of line
**  - only one 'setting' per line
**
** The parsing routine basically supports either the classic
** unix style conf file with ':' as key/value separator and 
** '#' as comment character as well as .ini like syntax with
** '=' as key/value separator and ';' as comment character. I
** don't think that real windows .ini files allow comments on
** the same line as settings, but this routine does.
**
** Here are some short samples of each format:
**
*******************************************************************************
**
**  #
**  # sample exampled.conf file
**  # (classic unix syntax)
**  #
**  
**  host: 127.0.0.1          # peer host to monitor
**  interval: 20             # interval in seconds between checks
**  tolerance: 3             # number of failed checks to initiate failover
**
*******************************************************************************
**
**  ;
**  ; sample exampled.conf file
**  ; (.ini like systax)
**  ;
**  
**  host = 127.0.0.1          ; peer host to monitor
**  interval = 20             ; interval in seconds between checks
**  tolerance = 3             ; number of failed checks to initiate failover
** 
*******************************************************************************
*/

int parse_config_file (char *conf_path, struct hash_table *conf);

#endif /* CONFIG_FILE_H */



syntax highlighted by Code2HTML, v. 0.9.1