Annotation of libaitcfg/src/aitcfg.c, revision 1.1
1.1 ! misho 1: #include "global.h"
! 2: #include "aitcfg.h"
! 3:
! 4:
! 5: #pragma GCC visibility push(hidden)
! 6:
! 7: int cfgErrno;
! 8: char cfgError[MAX_STR + 1];
! 9:
! 10: #pragma GCC visibility pop
! 11:
! 12:
! 13: /*
! 14: * InitConfig() Head initializing function for config
! 15: * @cfg = New head element for init
! 16: * return: 0 ok; -1 error:: new head element is null
! 17: */
! 18: inline int InitConfig(sl_config * __restrict cfg)
! 19: {
! 20: if (!cfg)
! 21: return -1;
! 22:
! 23: return (int) (cfg->slh_first = NULL);
! 24: }
! 25:
! 26: /*
! 27: * LoadConfig() Load config from file
! 28: * @csConfigName = Filename of config
! 29: * @cfg = Head list element
! 30: * return: 0 ok; -1 error:: can`t load config
! 31: */
! 32: int LoadConfig(const char *csConfigName, sl_config * __restrict cfg)
! 33: {
! 34: FILE *f;
! 35: int ret;
! 36:
! 37: if (!csConfigName || !cfg)
! 38: return -1;
! 39:
! 40: InitConfig(cfg);
! 41: if (access(csConfigName, R_OK)) {
! 42: LOGERR;
! 43: return -1;
! 44: }
! 45:
! 46: f = fopen(csConfigName, "rt");
! 47: if (!f) {
! 48: LOGERR;
! 49: return -1;
! 50: }
! 51:
! 52: ret ^= ret;
! 53: ret = ReadConfig(f, cfg);
! 54:
! 55: fclose(f);
! 56: return ret;
! 57: }
! 58:
! 59: /*
! 60: * UnloadConfig() Unload config from memory and free resources
! 61: * @cfg = Head list element
! 62: */
! 63: void UnloadConfig(sl_config * __restrict cfg)
! 64: {
! 65: struct tagPair *av;
! 66:
! 67: if (!cfg->slh_first)
! 68: return;
! 69:
! 70: for (av = cfg->slh_first; av; av = av->sle_next) {
! 71: cfg->slh_first = cfg->slh_first->sle_next;
! 72:
! 73: if (av->psValue)
! 74: free(av->psValue);
! 75: if (av->psAttribute)
! 76: free(av->psAttribute);
! 77: if (av->psSection)
! 78: free(av->psSection);
! 79: free(av);
! 80: }
! 81: }
! 82:
! 83: /*
! 84: * CreateConfig() Create config file from memory
! 85: * @csConfigName = New config filename
! 86: * @cfg = Head list element
! 87: * return: 0 ok; -1 error:: can`t save new config
! 88: */
! 89: int CreateConfig(const char *csConfigName, sl_config * __restrict cfg)
! 90: {
! 91: FILE *f;
! 92: int ret;
! 93:
! 94: if (!csConfigName || !cfg)
! 95: return -1;
! 96:
! 97: f = fopen(csConfigName, "wt");
! 98: if (!f) {
! 99: LOGERR;
! 100: return -1;
! 101: }
! 102:
! 103: ret ^= ret;
! 104: ret = WriteConfig(f, cfg);
! 105:
! 106: fclose(f);
! 107: return ret;
! 108: }
! 109:
! 110: // -----------------------------------------------------------
! 111:
! 112: //
! 113: // Error maintenance functions ...
! 114: //
! 115:
! 116: // cfg_GetErrno() Get error code of last operation
! 117: inline int cfg_GetErrno()
! 118: {
! 119: return cfgErrno;
! 120: }
! 121:
! 122: // cfg_GetError() Get error text of last operation
! 123: inline const char *cfg_GetError()
! 124: {
! 125: return cfgError;
! 126: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>