CLEANUP: wurfl: reduce exposure in the rest of the code

The only reason wurfl/wurfl.h was needed outside of wurfl.c was to expose
wurfl_handle which is a pointer to a structure, referenced by global.h.
By just storing a void* there instead, we can confine all wurfl code to
wurfl.c, which is really nice.
This commit is contained in:
Willy Tarreau 2016-11-08 18:47:25 +01:00
parent 29b25317fc
commit e5d3169e1c
5 changed files with 31 additions and 35 deletions

View File

@ -1,25 +0,0 @@
#ifndef _IMPORT_WURFL_H
#define _IMPORT_WURFL_H
#include <wurfl/wurfl.h>
int ha_wurfl_init(void);
void ha_wurfl_deinit(void);
typedef char *(*PROP_CALLBACK_FUNC)(wurfl_handle wHandle, wurfl_device_handle dHandle);
enum wurfl_data_type {
HA_WURFL_DATA_TYPE_UNKNOWN = 0,
HA_WURFL_DATA_TYPE_CAP = 100,
HA_WURFL_DATA_TYPE_VCAP = 200,
HA_WURFL_DATA_TYPE_PROPERTY = 300
};
typedef struct {
char *name;
enum wurfl_data_type type;
PROP_CALLBACK_FUNC func_callback;
struct ebmb_node nd;
} wurfl_data_t;
#endif

7
include/proto/wurfl.h Normal file
View File

@ -0,0 +1,7 @@
#ifndef _PROTO_WURFL_H
#define _PROTO_WURFL_H
int ha_wurfl_init(void);
void ha_wurfl_deinit(void);
#endif

View File

@ -36,10 +36,6 @@
#include <import/51d.h>
#endif
#ifdef USE_WURFL
#include <import/wurfl.h>
#endif
#ifndef UNIX_MAX_PATH
#define UNIX_MAX_PATH 108
#endif
@ -222,7 +218,7 @@ struct global {
struct list patch_file_list; /* the list of WURFL patch file to use */
char information_list_separator; /* the separator used in request to separate values */
struct list information_list; /* the list of WURFL data to return into request */
wurfl_handle handle; /* the handle to WURFL engine */
void *handle; /* the handle to WURFL engine */
struct eb_root btree; /* btree containing info (name/type) on WURFL data to return */
} wurfl;
#endif

View File

@ -114,6 +114,10 @@
#include <proto/ssl_sock.h>
#endif
#ifdef USE_WURFL
#include <proto/wurfl.h>
#endif
#ifdef USE_DEVICEATLAS
#include <import/da.h>
#endif
@ -122,10 +126,6 @@
#include <import/51d.h>
#endif
#ifdef USE_WURFL
#include <import/wurfl.h>
#endif
/*********************************************************************/
extern const struct comp_algo comp_algos[];

View File

@ -8,9 +8,11 @@
#include <proto/log.h>
#include <proto/proto_http.h>
#include <proto/sample.h>
#include <proto/wurfl.h>
#include <ebsttree.h>
#include <ebmbtree.h>
#include <import/wurfl.h>
#include <wurfl/wurfl.h>
#ifdef WURFL_DEBUG
@ -32,6 +34,22 @@ inline static void ha_wurfl_log(char * message, ...)
#define HA_WURFL_MAX_HEADER_LENGTH 1024
typedef char *(*PROP_CALLBACK_FUNC)(wurfl_handle wHandle, wurfl_device_handle dHandle);
enum wurfl_data_type {
HA_WURFL_DATA_TYPE_UNKNOWN = 0,
HA_WURFL_DATA_TYPE_CAP = 100,
HA_WURFL_DATA_TYPE_VCAP = 200,
HA_WURFL_DATA_TYPE_PROPERTY = 300
};
typedef struct {
char *name;
enum wurfl_data_type type;
PROP_CALLBACK_FUNC func_callback;
struct ebmb_node nd;
} wurfl_data_t;
static const char HA_WURFL_MODULE_VERSION[] = "1.0";
static const char HA_WURFL_ISDEVROOT_FALSE[] = "FALSE";
static const char HA_WURFL_ISDEVROOT_TRUE[] = "TRUE";