5 files changed, 104 insertions, 2 deletions
diff --git a/noncore/net/wellenreiter/libwellenreiter/source/Makefile b/noncore/net/wellenreiter/libwellenreiter/source/Makefile index 51b5ff3..6663c8a 100644 --- a/noncore/net/wellenreiter/libwellenreiter/source/Makefile +++ b/noncore/net/wellenreiter/libwellenreiter/source/Makefile | |||
@@ -2,3 +2,3 @@ | |||
2 | 2 | ||
3 | OBJ = wl_proto.o wl_sock.o wl_log.o cardmode.o sniff.o | 3 | OBJ = wl_proto.o wl_sock.o wl_log.o wl_conf.o cardmode.o sniff.o |
4 | CPP = g++ | 4 | CPP = g++ |
diff --git a/noncore/net/wellenreiter/libwellenreiter/source/wl_conf.cc b/noncore/net/wellenreiter/libwellenreiter/source/wl_conf.cc new file mode 100644 index 0000000..ba56754 --- a/dev/null +++ b/noncore/net/wellenreiter/libwellenreiter/source/wl_conf.cc | |||
@@ -0,0 +1,81 @@ | |||
1 | /* | ||
2 | * Configfile operations for wellenreiter | ||
3 | * | ||
4 | * $Id$ | ||
5 | */ | ||
6 | |||
7 | #include "wl_conf.hh" | ||
8 | #include "wl_log.hh" | ||
9 | #include "wl_types.hh" | ||
10 | |||
11 | /* Check whether configfile exists and is readable */ | ||
12 | int wl_checkcfg(void) | ||
13 | { | ||
14 | FILE *wl_config; | ||
15 | |||
16 | if((wl_config = fopen(WL_CONFFILE, "r")) == NULL) | ||
17 | { | ||
18 | wl_logerr("Cannot open configfile: %s", strerror(errno)); | ||
19 | return 0; | ||
20 | } | ||
21 | else | ||
22 | { | ||
23 | fclose(wl_config); | ||
24 | return 1; | ||
25 | } | ||
26 | |||
27 | } | ||
28 | |||
29 | /* Get value for given token from config file */ | ||
30 | int wl_cfgvalue(const char *token, char *out, int maxlen) | ||
31 | { | ||
32 | FILE *wl_config; | ||
33 | char *ptr, *ptr2; | ||
34 | char confbuf[WL_CONFBUFF]; | ||
35 | |||
36 | if(token == NULL) | ||
37 | return -1; | ||
38 | |||
39 | if((wl_config = fopen(WL_CONFFILE, "r")) == NULL) | ||
40 | { | ||
41 | wl_logerr("Cannot open configfile: %s", strerror(errno)); | ||
42 | return -1; | ||
43 | } | ||
44 | |||
45 | /* Clear buffers */ | ||
46 | memset(out, 0, maxlen); | ||
47 | memset(confbuf, 0, sizeof(confbuf)); | ||
48 | |||
49 | while((fgets(confbuf, sizeof(confbuf) - 1, wl_config)) != NULL) | ||
50 | { | ||
51 | |||
52 | /* Ignore comments */ | ||
53 | if(confbuf[0] == '#') continue; | ||
54 | |||
55 | /* Search for token, if found check whether next character | ||
56 | * is a '=' or a ' ' | ||
57 | */ | ||
58 | if(strstr(confbuf, token) != NULL && | ||
59 | (confbuf[strlen(token)] == '=' || confbuf[strlen(token)] == ' ')) | ||
60 | { | ||
61 | |||
62 | /* Get value between quotes */ | ||
63 | if((ptr = strstr(confbuf, "\"")) == NULL) | ||
64 | break; | ||
65 | ++ptr; | ||
66 | if((ptr2 = strstr(ptr, "\"")) == NULL) | ||
67 | break; | ||
68 | ptr2[0] = '\0'; | ||
69 | |||
70 | memcpy(out, ptr, maxlen - 1); | ||
71 | break; | ||
72 | |||
73 | } | ||
74 | memset(confbuf, 0, sizeof(confbuf)); | ||
75 | } | ||
76 | |||
77 | fclose(wl_config); | ||
78 | |||
79 | return (out[0] == '\0' ? 0 : 1); | ||
80 | } | ||
81 | |||
diff --git a/noncore/net/wellenreiter/libwellenreiter/source/wl_conf.hh b/noncore/net/wellenreiter/libwellenreiter/source/wl_conf.hh new file mode 100644 index 0000000..4061440 --- a/dev/null +++ b/noncore/net/wellenreiter/libwellenreiter/source/wl_conf.hh | |||
@@ -0,0 +1,12 @@ | |||
1 | /* $Id$ */ | ||
2 | |||
3 | #ifndef WLCONF_HH | ||
4 | #define WLCONF_HH | ||
5 | |||
6 | #include <string.h> | ||
7 | #include <errno.h> | ||
8 | |||
9 | int wl_checkcfg(void); | ||
10 | int wl_cfgvalue(const char *, char *, int); | ||
11 | |||
12 | #endif /* WLCONF_HH */ | ||
diff --git a/noncore/net/wellenreiter/libwellenreiter/source/wl_proto.cc b/noncore/net/wellenreiter/libwellenreiter/source/wl_proto.cc index 664ba92..67dfc02 100644 --- a/noncore/net/wellenreiter/libwellenreiter/source/wl_proto.cc +++ b/noncore/net/wellenreiter/libwellenreiter/source/wl_proto.cc | |||
@@ -17,2 +17,3 @@ int add_field(char *buffer, const char *string, int len) | |||
17 | /* 3 Byte = Length */ | 17 | /* 3 Byte = Length */ |
18 | memset(newlen, 0, sizeof(newlen)); | ||
18 | snprintf(newlen, sizeof(newlen) - 1, "%.3d", len); | 19 | snprintf(newlen, sizeof(newlen) - 1, "%.3d", len); |
@@ -32,2 +33,3 @@ int get_field(const char *buffer, char *out, int maxlen) | |||
32 | /* Get length of value */ | 33 | /* Get length of value */ |
34 | memset(len, 0, sizeof(len)); | ||
33 | memcpy(len, buffer, 3); | 35 | memcpy(len, buffer, 3); |
@@ -36,3 +38,2 @@ int get_field(const char *buffer, char *out, int maxlen) | |||
36 | memset(out, 0, maxlen); | 38 | memset(out, 0, maxlen); |
37 | |||
38 | if(atoi(len) > maxlen -1) | 39 | if(atoi(len) > maxlen -1) |
@@ -55,2 +56,4 @@ int send_network_found (const char *guihost, int guiport, void *structure) | |||
55 | 56 | ||
57 | memcpy(buffer, 0, sizeof(buffer)); | ||
58 | |||
56 | /* Type = Found new net (without length field) */ | 59 | /* Type = Found new net (without length field) */ |
diff --git a/noncore/net/wellenreiter/libwellenreiter/source/wl_types.hh b/noncore/net/wellenreiter/libwellenreiter/source/wl_types.hh index a5ca281..f12d65e 100644 --- a/noncore/net/wellenreiter/libwellenreiter/source/wl_types.hh +++ b/noncore/net/wellenreiter/libwellenreiter/source/wl_types.hh | |||
@@ -16,4 +16,6 @@ | |||
16 | 16 | ||
17 | /* Socket specific */ | ||
17 | #define WL_SOCKBUF 512 /* Buffer for wl_send and wl_recv calls */ | 18 | #define WL_SOCKBUF 512 /* Buffer for wl_send and wl_recv calls */ |
18 | 19 | ||
20 | /* Protocol specific */ | ||
19 | 21 | ||
@@ -29,2 +31,6 @@ typedef struct { | |||
29 | 31 | ||
32 | /* Config specific */ | ||
33 | #define WL_CONFFILE "sample.conf" | ||
34 | #define WL_CONFBUFF 128 | ||
35 | |||
30 | #endif /* WL_TYPES_HH */ | 36 | #endif /* WL_TYPES_HH */ |