Add vrequest "environment" (a GString -> GString hashtable)
parent
d30e1b018a
commit
c56ade056f
@ -0,0 +1,20 @@
|
||||
#ifndef _LIGHTTPD_ENVIRONMENT_H_
|
||||
#define _LIGHTTPD_ENVIRONMENT_H_
|
||||
|
||||
#ifndef _LIGHTTPD_BASE_H_
|
||||
#error Please include <lighttpd/base.h> instead of this file
|
||||
#endif
|
||||
|
||||
struct environment {
|
||||
GHashTable *table;
|
||||
};
|
||||
|
||||
LI_API void environment_init(environment *env);
|
||||
LI_API void environment_reset(environment *env);
|
||||
LI_API void environment_clear(environment *env);
|
||||
|
||||
LI_API void environment_set(environment *env, const gchar *key, size_t keylen, const gchar *val, size_t valuelen);
|
||||
LI_API void environment_remove(environment *env, const gchar *key, size_t keylen);
|
||||
LI_API GString* environment_get(environment *env, const gchar *key, size_t keylen);
|
||||
|
||||
#endif
|
@ -0,0 +1,36 @@
|
||||
|
||||
#include <lighttpd/base.h>
|
||||
|
||||
static void _hash_free_gstring(gpointer data) {
|
||||
g_string_free((GString*) data, TRUE);
|
||||
}
|
||||
|
||||
void environment_init(environment *env) {
|
||||
env->table = g_hash_table_new_full(
|
||||
(GHashFunc) g_string_hash, (GEqualFunc) g_string_equal,
|
||||
_hash_free_gstring, _hash_free_gstring);
|
||||
}
|
||||
|
||||
void environment_reset(environment *env) {
|
||||
g_hash_table_remove_all(env->table);
|
||||
}
|
||||
|
||||
void environment_clear(environment *env) {
|
||||
g_hash_table_destroy(env->table);
|
||||
}
|
||||
|
||||
void environment_set(environment *env, const gchar *key, size_t keylen, const gchar *val, size_t valuelen) {
|
||||
GString *skey = g_string_new_len(key, keylen);
|
||||
GString *sval = g_string_new_len(val, valuelen);
|
||||
g_hash_table_insert(env->table, skey, sval);
|
||||
}
|
||||
|
||||
void environment_remove(environment *env, const gchar *key, size_t keylen) {
|
||||
const GString skey = { (gchar*) key, keylen, 0 }; /* fake a constant GString */
|
||||
g_hash_table_remove(env->table, &skey);
|
||||
}
|
||||
|
||||
GString* environment_get(environment *env, const gchar *key, size_t keylen) {
|
||||
const GString skey = { (gchar*) key, keylen, 0 }; /* fake a constant GString */
|
||||
return (GString*) g_hash_table_lookup(env->table, &skey);
|
||||
}
|
Loading…
Reference in New Issue