Annotation of libaitcfg/src/aitcfg.c, revision 1.1.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>