File:  [ELWIX - Embedded LightWeight unIX -] / libaitcfg / inc / aitcfg.h
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Thu Aug 28 13:17:41 2008 UTC (15 years, 8 months ago) by misho
Branches: misho
CVS tags: start, cfg3_0
AITNET library for configs

    1: #ifndef __AITCFG_H
    2: #define __AITCFG_H
    3: 
    4: 
    5: struct tagPair {
    6: 	unsigned int	uLine;
    7: 	unsigned char	*psSection;
    8: 	unsigned char	*psAttribute;
    9: 	unsigned char	*psValue;
   10: 	struct tagPair *sle_next;
   11: };
   12: 
   13: struct tagHead {
   14: 	struct tagPair *slh_first;
   15: };
   16: typedef struct tagHead sl_config;
   17: 
   18: 
   19: /*
   20:  * InitConfig() Head initializing function for config
   21:  * @cfg = New head element for init
   22:  * return: 0 ok; -1 error:: new head element is null
   23: */
   24: inline int InitConfig(sl_config * __restrict cfg);
   25: /*
   26:  * CreateConfig() Create config file from memory
   27:  * @csConfigName = New config filename
   28:  * @cfg = Head list element
   29:  * return: 0 ok; -1 error:: can`t save new config
   30: */
   31: int CreateConfig(const char *csConfigName, sl_config * __restrict cfg);
   32: /*
   33:  * LoadConfig() Load config from file
   34:  * @csConfigName = Filename of config
   35:  * @cfg = Head list element
   36:  * return: 0 ok; -1 error:: can`t load config
   37: */
   38: int LoadConfig(const char *csConfigName, sl_config * __restrict cfg);
   39: /*
   40:  * UnloadConfig() Unload config from memory and free resources
   41:  * @cfg = Head list element
   42: */
   43: void UnloadConfig(sl_config * __restrict cfg);
   44: 
   45: 
   46: // cfg_GetErrno() Get error code of last operation
   47: inline int cfg_GetErrno();
   48: // cfg_GetError() Get error text of last operation
   49: inline const char *cfg_GetError();
   50: 
   51: 
   52: /*
   53:  * ReadConfig() Read from file and add new item to config list
   54:  * @f = file resource
   55:  * @cfg = Head list element
   56:  * return: 0 ok; -1 error:: can`t allocate memory
   57: */
   58: int ReadConfig(FILE *f, sl_config * __restrict cfg);
   59: /*
   60:  * WriteConfig() Write to file from items in config list
   61:  * @f = file resource
   62:  * @cfg = Head list element
   63:  * return: 0 ok; -1 error:: can`t write to file
   64: */
   65: int WriteConfig(FILE *f, sl_config * __restrict cfg);
   66: 
   67: 
   68: /*
   69:  * cfg_FindAttribute() Find attribute position in config list
   70:  * @cfg = Head list element
   71:  * @csSec = Config section //[{csSec}]
   72:  * @csAttr = Config attribute //{csAttr} = ...
   73:  * return: 0 not found item; -1 error: null parameters; >0 position in list
   74: */
   75: inline int cfg_FindAttribute(sl_config * __restrict cfg, const u_char *csSec, const u_char *csAttr);
   76: /*
   77:  * cfg_SetAttribute() Set item in config list or add new item if not exists
   78:  * @cfg = Head list element
   79:  * @csSec = Config section //[{csSec}], if NULL set in *default* section
   80:  * @csAttr = Config attribute //{csAttr} = ..., if NULL set as *any* attribute
   81:  * @csVal = Config value //... = {csVal} to setup
   82:  * return: 0 nothing changed, -1 error: not enough memory; 1 find and update item; 2 added new item
   83: */
   84: int cfg_SetAttribute(sl_config * __restrict cfg, const u_char *csSec, const u_char *csAttr, const u_char *csVal);
   85: /*
   86:  * cfg_UnsetAttribute() Unset item from config list and free resources
   87:  * @cfg = Head list element
   88:  * @csSec = Config section //[{csSec}], if NULL unset in *default* section
   89:  * @csAttr = Config attribute //{csAttr} = ..., if NULL unset as *any* attribute
   90:  * return: 0 item not found, -1 error: null parameters; >0 position in list
   91: */
   92: int cfg_UnsetAttribute(sl_config * __restrict cfg, const u_char *csSec, const u_char *csAttr);
   93: /*
   94:  * cfg_GetAttribute() Get item from config list and return his value
   95:  * @cfg = Head list element
   96:  * @csSec = Config section //[{csSec}], if NULL unset in *default* section
   97:  * @csAttr = Config attribute //{csAttr} = ..., if NULL unset as *any* attribute
   98:  * return: NULL item not found or null parameters; !=NULL value const string
   99: */
  100: inline const u_char *cfg_GetAttribute(sl_config * __restrict cfg, const u_char *csSec, const u_char *csAttr);
  101: 
  102: /*
  103:  * cfg_LoadAttribute() Extended get attribute, if not found item return *default value*
  104:  * @cfg = Head list element
  105:  * @csSec = Config section //[{csSec}], if NULL unset in *default* section
  106:  * @csAttr = Config attribute //{csAttr} = ..., if NULL unset as *any* attribute
  107:  * @psVal = Return buffer for item Value //... = {psVal}
  108:  * @ValLen = Length of buffer //{psVal} for return
  109:  * @csDefValue = *Default Value* for return in //{psVal}, if not found item in config list
  110:  * return: 0 item not found, -1 error: null parameters; >0 number of copied bytes in //{psVal}
  111: */
  112: int cfg_LoadAttribute(sl_config * __restrict cfg, const u_char *csSec, const u_char *csAttr, 
  113: 		u_char * __restrict psVal, int ValLen, const char *csDefValue);
  114: 
  115: 
  116: #endif

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>