Check-in [525f68fcf8]
Overview
Comment:Added working addr and ipv4 conversion functions
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 525f68fcf86ab5296a2b7a0480976eca7ac3bddd
User & Date: rkeene on 2006-12-17 03:35:15
Other Links: manifest | tags
Context
2006-12-17
03:48
Removed attempts to set lc_errno to NONE check-in: 8e434a0cbf user: rkeene tags: trunk
03:35
Added working addr and ipv4 conversion functions check-in: 525f68fcf8 user: rkeene tags: trunk
03:04
Added an "ADDR" var type (since it was already documented) Removed brain-dead (void *) to type casts in lc_handle_...() check-in: e07808cac6 user: rkeene tags: trunk
Changes

Modified config.h.in from [003ec03eae] to [282078a7c0].

19
20
21
22
23
24
25






26
27
28
29
30
31
32
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38







+
+
+
+
+
+







#undef HAVE_INTTYPES_H

/* Define to 1 if you have fopen_net from libopennet */
#undef HAVE_LIBOPENNET

/* Define to 1 if you have the <memory.h> header file. */
#undef HAVE_MEMORY_H

/* Define to 1 if you have the <netdb.h> header file. */
#undef HAVE_NETDB_H

/* Define to 1 if you have the <netinet/in.h> header file. */
#undef HAVE_NETINET_IN_H

/* Define to 1 if you have the <opennet.h> header file. */
#undef HAVE_OPENNET_H

/* Define to 1 if you have the <pwd.h> header file. */
#undef HAVE_PWD_H

Modified configure from [9aa86e081f] to [cbe500dd7e].

16644
16645
16646
16647
16648
16649
16650


16651

16652
16653
16654
16655
16656
16657
16658
16644
16645
16646
16647
16648
16649
16650
16651
16652

16653
16654
16655
16656
16657
16658
16659
16660







+
+
-
+
















for ac_header in ctype.h dirent.h pwd.h stdio.h stdlib.h string.h sys/stat.h sys/time.h sys/types.h time.h unistd.h
for ac_header in ctype.h dirent.h pwd.h stdio.h stdlib.h string.h sys/stat.h sys/time.h sys/types.h time.h unistd.h netdb.h netinet/in.h
do
as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
if eval "test \"\${$as_ac_Header+set}\" = set"; then
  echo "$as_me:$LINENO: checking for $ac_header" >&5
echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
if eval "test \"\${$as_ac_Header+set}\" = set"; then
  echo $ECHO_N "(cached) $ECHO_C" >&6
16792
16793
16794
16795
16796
16797
16798

16799
16800
16801
16802
16803
16804
16805
16794
16795
16796
16797
16798
16799
16800
16801
16802
16803
16804
16805
16806
16807
16808







+







  cat >>confdefs.h <<_ACEOF
#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
_ACEOF

fi

done


echo "$as_me:$LINENO: checking whether time.h and sys/time.h may both be included" >&5
echo $ECHO_N "checking whether time.h and sys/time.h may both be included... $ECHO_C" >&6
if test "${ac_cv_header_time+set}" = set; then
  echo $ECHO_N "(cached) $ECHO_C" >&6
else
  cat >conftest.$ac_ext <<_ACEOF

Modified configure.ac from [1472e5abb5] to [a132a6477f].

30
31
32
33
34
35
36
37


38
39
40
41
42
43
44
45
46
30
31
32
33
34
35
36

37
38
39
40
41
42
43
44
45
46
47







-
+
+










dnl Get shared objects flags, calls DC_SYNC_SHLIBOBJS but if libobjs is
dnl changed later (by AC_REPLACE_FUNCS, for example) you must call
dnl DC_SYNC_SHLIBOBJS again.
DC_GET_SHOBJFLAGS

dnl This stuff has to come after the shobjtest to verify that it is correct
AC_CHECK_HEADERS(ctype.h dirent.h pwd.h stdio.h stdlib.h string.h sys/stat.h sys/time.h sys/types.h time.h unistd.h)
AC_CHECK_HEADERS(ctype.h dirent.h pwd.h stdio.h stdlib.h string.h sys/stat.h sys/time.h sys/types.h time.h unistd.h netdb.h netinet/in.h)

AC_HEADER_TIME

AC_REPLACE_FUNCS(strsep strtoll getuid)
AC_CHECK_FUNCS(getpwuid)

dnl This MUST be last.
DC_SYNC_SHLIBOBJS

AC_OUTPUT(Makefile lc_geterrno.3 lc_process.3 lc_register_var.3 lc_geterrstr.3 lc_register_callback.3 lc_cleanup.3 lc_process_file.3 libconfig.3)

Modified libconfig.c from [a6cd32cb12] to [ccb1bb4c78].

31
32
33
34
35
36
37




38
39
40
41
42
43
44
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48







+
+
+
+







#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif

#ifdef HAVE_PWD_H
#include <pwd.h>
#endif

#ifdef HAVE_NETDB_H
#include <netdb.h>
#endif

struct lc_varhandler_st *varhandlers = NULL;
lc_err_t lc_errno = LC_ERR_NONE;
const char *lc_err_usererrmsg = NULL;
const char *lc_errfile = NULL;
int lc_optind = 0;
int lc_errline = 0;
56
57
58
59
60
61
62
63
64
65







66
67
68
69



70

71
72




73
74
75
76
77


















































78
79
80
81
82
83

84
85

86

87
88
89




90
91
92
93




94
95

96
97

98
99
100
101

102
103
104
105






106
107

108
109


110
111
112


113
114
115
116
117
118
119
60
61
62
63
64
65
66



67
68
69
70
71
72
73
74



75
76
77
78
79


80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143

144


145
146
147



148
149
150
151




152
153
154
155
156

157


158




159




160
161
162
163
164
165
166
167
168


169
170



171
172
173
174
175
176
177
178
179







-
-
-
+
+
+
+
+
+
+

-
-
-
+
+
+

+
-
-
+
+
+
+





+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+





-
+
-
-
+

+
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+

-
+
-
-
+
-
-
-
-
+
-
-
-
-
+
+
+
+
+
+


+
-
-
+
+
-
-
-
+
+







	return(0);
}

static int lc_process_var_cidr(void *data, const char *value, const char **endptr) {
	return(-1);
}

static int lc_process_var_addr4(uint32_t *data, const char *value, const char **endptr) {
	return(-1);
}
static int lc_process_var_hostname4(uint32_t *data, const char *value, const char **endptr) {
	struct hostent *ghbn_ret;

	ghbn_ret = gethostbyname(value);
	if (ghbn_ret == NULL) {
		return(-1);
	}

static int lc_process_var_addr6(void *data, const char *value, const char **endptr) {
	return(-1);
}
	if (ghbn_ret->h_length != 4) {
		return(-1);
	}

	memcpy(data, ghbn_ret->h_addr_list[0], sizeof(*data));
static int lc_process_var_hostname4(uint32_t *data, const char *value, const char **endptr) {
	return(-1);

	*data = ntohl(*data);

	return(0);
}

static int lc_process_var_hostname6(void *data, const char *value, const char **endptr) {
	return(-1);
}

static int lc_process_var_ip4(uint32_t *data, const char *value, const char **endptr) {
	uint32_t ipval = 0, curr_ipval = 0;
	const char *valptr;
	int retval = 0;
	int dotcount = 0;

	for (valptr = value; *valptr; valptr++) {
		if (!isdigit(*valptr)) {
			if (*valptr == '.' || *valptr == ',') {
				dotcount++;
				if (dotcount >= 4) {
					retval = -1;
					break;
				}

				if (curr_ipval > 255) {
					retval = -1;
					break;
				}

				ipval <<= 8;
				ipval |= curr_ipval;
				curr_ipval = 0;

				/* For lists */
				if (*valptr == ',') {
					break;
				}

				continue;
			} else {
				retval = -1;
				break;
			}
		}

		curr_ipval *= 10;
		curr_ipval += *valptr - '0';
	}

	if (retval == 0) {
		ipval <<= 8;
		ipval |= curr_ipval;

		*data = ipval;
	}

	return(retval);
}

static int lc_process_var_ip6(void *data, const char *value, const char **endptr) {
	return(-1);
}

static int lc_process_var_ip4(uint32_t *data, const char *value, const char **endptr) {
static int lc_process_var_addr4(uint32_t *data, const char *value, const char **endptr) {
	const char *dotptr = NULL;
	int tmpval = -1, retval = 0;
	int lc_pv_ret;

	lc_pv_ret = lc_process_var_ip4(data, value, endptr);
	dotptr = value;

	while (1) {
	if (lc_pv_ret == 0) {
		return(lc_pv_ret);
	}

		tmpval = atoi(dotptr);
		if (tmpval < 0) {
			break;
		}
	lc_pv_ret = lc_process_var_hostname4(data, value, endptr);
	if (lc_pv_ret == 0) {
		return(lc_pv_ret);
	}

		retval <<= 8;
	return(-1);
		retval |= tmpval;

}
		dotptr = strpbrk(dotptr, "./ \t");
		if (dotptr == NULL) {
			break;
		}

		if (*dotptr != '.') {
			break;
		}
		dotptr++;
static int lc_process_var_addr6(void *data, const char *value, const char **endptr) {
	int lc_pv_ret;

	lc_pv_ret = lc_process_var_ip6(data, value, endptr);
	if (lc_pv_ret == 0) {
		return(lc_pv_ret);
	}

	lc_pv_ret = lc_process_var_hostname6(data, value, endptr);
	*data = retval;

	if (lc_pv_ret == 0) {
		return(lc_pv_ret);
	*endptr = (char *) dotptr;

	return(0);
	}
	return(-1);
}

static int lc_process_var_longlong(long long *data, const char *value, const char **endptr) {
	*data = strtoll(value, (char **) endptr, 10);

	return(0);
}