You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
113 lines
4.3 KiB
C
113 lines
4.3 KiB
C
/************************************************************************/
|
|
/* SISCO SOFTWARE MODULE HEADER *****************************************/
|
|
/************************************************************************/
|
|
/* (c) Copyright Systems Integration Specialists Company, Inc., */
|
|
/* 1991-2005 All Rights Reserved */
|
|
/* */
|
|
/* MODULE NAME : cfg_util.h */
|
|
/* PRODUCT(S) : */
|
|
/* */
|
|
/* MODULE DESCRIPTION : */
|
|
/* */
|
|
/* GLOBAL FUNCTIONS DEFINED IN THIS MODULE : */
|
|
/* */
|
|
/* MODIFICATION LOG : */
|
|
/* Date Who Rev Comments */
|
|
/* -------- --- ------ ------------------------------------------- */
|
|
/* 02/31/05 EJV 05 Chg MAX_NUM_KEYWORDS from 100 to 200. */
|
|
/* 10/08/98 MDE 04 Migrated to updated SLOG interface */
|
|
/* 08/06/98 JRB 03 Added cfg_get_octet_string function. */
|
|
/* 12/04/97 KCR 02 Added cfg_goto_keyword function */
|
|
/* 08/14/97 RKR 01 Format changes */
|
|
/* 04/02/97 DTL 7.00 MMSEASE 7.0 release. See MODL70.DOC for */
|
|
/* history. */
|
|
/************************************************************************/
|
|
|
|
#ifndef CFG_UTIL_INCLUDED
|
|
#define CFG_UTIL_INCLUDED
|
|
|
|
#include "slog.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/************************************************************************/
|
|
|
|
#define MAX_RVAL_LEN 256
|
|
#define MAX_NUM_KEYWORDS 200 /* just to prevent runaway */
|
|
|
|
/* Keyword table element */
|
|
struct cfg_kw_el
|
|
{
|
|
ST_CHAR *name; /* string to match on */
|
|
ST_VOID (*extract)(ST_VOID); /* function to call to extract */
|
|
ST_RET (*valid)(ST_VOID); /* call to check if ok to call */
|
|
};
|
|
typedef struct cfg_kw_el CFG_KW_EL;
|
|
|
|
/************************************************************************/
|
|
/* Externally visible variables */
|
|
|
|
extern ST_BOOLEAN config_stop; /* Set SD_TRUE to terminate */
|
|
extern ST_RET config_err; /* Set to non-zero for error */
|
|
extern ST_BOOLEAN config_eof; /* Set to SD_SUCCESS when eof is ok */
|
|
|
|
extern ST_CHAR *cfg_line_buf; /* file line read buffer */
|
|
extern ST_INT cfg_curr_line; /* Current line number */
|
|
extern ST_INT cfg_line_offset; /* Offset into cfg_line_buf */
|
|
extern ST_CHAR *cfg_special_char_str; /* Special ravl chars */
|
|
extern ST_CHAR *cfg_end_of_rval_str; /* 'End of rval' chars */
|
|
|
|
/************************************************************************/
|
|
/* Internal CFG_UTIL error codes */
|
|
|
|
#define CFG_CONVERT_ERR 0x8000
|
|
#define CFG_GET_RVAL_ERR 0x8001
|
|
#define CFG_UTIL_ERR 0x8002
|
|
|
|
/************************************************************************/
|
|
/* Externally visible functions */
|
|
|
|
ST_RET cfg_process_file (ST_CHAR *fileName, CFG_KW_EL *root_kw_tbl);
|
|
ST_RET cfg_tbl_push (CFG_KW_EL *);
|
|
ST_RET cfg_tbl_pop (ST_INT);
|
|
ST_CHAR *cfg_get_alloc_string (ST_VOID);
|
|
ST_CHAR *cfg_get_string_ptr (ST_VOID);
|
|
ST_RET cfg_get_short (ST_INT16 *int_ptr);
|
|
ST_RET cfg_get_ushort (ST_UINT16 *int_ptr);
|
|
ST_RET cfg_get_int (ST_INT *int_ptr);
|
|
ST_RET cfg_get_uint (ST_UINT *int_ptr);
|
|
ST_RET cfg_get_long (ST_LONG *int_ptr);
|
|
ST_RET cfg_get_ulong (ST_ULONG *int_ptr);
|
|
ST_RET cfg_get_hex_ushort (ST_UINT16 *int_ptr);
|
|
ST_RET cfg_get_hex_uint (ST_UINT *int_ptr);
|
|
ST_RET cfg_get_hex_ulong (ST_ULONG *out_ptr);
|
|
ST_RET cfg_get_value (ST_CHAR *format_string, ST_VOID *out_ptr);
|
|
ST_VOID cfg_set_config_err(ST_VOID);
|
|
ST_VOID cfg_set_endfile_ok(ST_VOID);
|
|
ST_RET cfg_get_double (ST_DOUBLE *out_ptr);
|
|
ST_RET cfg_goto_keyword (ST_CHAR *keyword);
|
|
ST_RET cfg_get_octet_string (ST_UCHAR *ostr, /* ptr to user's ostr */
|
|
ST_UINT *len_out_ptr, /* addr of len var to be set */
|
|
ST_UINT len_max); /* maximum len to allow. */
|
|
|
|
/************************************************************************/
|
|
/* CFG_UTIL logging control */
|
|
|
|
#define CFG_LOG_ERR 0x0001
|
|
#define CFG_LOG_FLOW 0x0002
|
|
extern ST_UINT cfg_log_mask;
|
|
|
|
/* For compatibility with older code only */
|
|
#define cfg_sLogCtrl sLogCtrl
|
|
|
|
/************************************************************************/
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
|
|
#endif
|
|
|
|
#endif
|