Annotation of libaitcfg/src/tools.c, revision 1.2.4.3
1.2 misho 1: /*************************************************************************
2: * (C) 2008 AITNET ltd - Sofia/Bulgaria - <misho@aitbg.com>
3: * by Michael Pounov <misho@openbsd-bg.org>
4: *
5: * $Author: misho $
1.2.4.3 ! misho 6: * $Id: tools.c,v 1.2.4.2 2009/11/11 14:46:36 misho Exp $
1.2 misho 7: *
8: *************************************************************************/
1.1 misho 9: #include "global.h"
10: #include "aitcfg.h"
11: #include "tools.h"
12:
13: #pragma GCC visibility push(hidden)
14:
15: // ltrim() Left trim whitespaces
16: inline int ltrim(u_char *psLine)
17: {
18: int pos = 0;
19:
20: if (!psLine)
21: return 0;
22: pos = strspn((char*) psLine, " \t\r\n");
23: if (!pos)
24: return 0;
25:
1.2.4.3 ! misho 26: memmove(psLine, psLine + pos, strlen((char*) psLine) - pos);
1.1 misho 27: return pos;
28: }
29:
30: // rtrim() Right trim whitespaces
31: inline int rtrim(u_char *psLine)
32: {
1.2.4.1 misho 33: register int i;
34: int pos = 0;
1.1 misho 35:
36: if (!psLine)
37: return 0;
1.2.4.1 misho 38: for (i = strlen((char*) psLine) - 1; i; i--) {
39: switch (psLine[i]) {
1.1 misho 40: case ' ':
41: case '\t':
42: case '\r':
43: case '\n':
1.2.4.1 misho 44: psLine[i] = 0;
1.1 misho 45: pos++;
46: continue;
47: }
48: break;
49: }
50:
51: return pos;
52: }
53:
54: #pragma GCC visibility pop
55:
56: // trim() Triming all whitespaces both left/right
57: inline int trim(u_char *psLine)
58: {
59: int ret = 0;
60:
61: ret = ltrim(psLine);
62: ret += rtrim(psLine);
63:
64: return ret;
65: }
1.2.4.2 misho 66:
67: // unquot() Unquoted string
68: inline int unquot(u_char *psLine)
69: {
70: char *pos, *str = NULL;
71: int flg;
72:
73: if (!psLine)
74: return 0;
75:
76: switch (*psLine) {
77: case '`':
78: case '"':
79: case '\'':
80: str = strdup((char*) psLine + 1);
81: for (pos = str, flg = 0; *pos; flg = ('\\' == *pos), pos++) {
82: if (!flg && *pos == *psLine) {
83: *pos = 0;
84: strlcpy((char*) psLine, str, strlen((char*) psLine) + 1);
85: break;
86: }
87: }
88: free(str);
89: return 1;
90: }
91:
92: return 0;
93: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>