#include <ucx/string.h>
#include "../public/nsapi.h"
#include "object.h"
#include "pool.h"
#include "../daemon/func.h"
httpd_object* object_new(
pool_handle_t *pool,
char *name) {
httpd_object *obj = pool_malloc(pool,
sizeof(httpd_object));
obj->pool = pool;
obj->name = name;
obj->path =
NULL;
obj->dt = pool_calloc(pool,
NUM_NSAPI_TYPES -
1,
sizeof(
struct dtable));
obj->nd =
NUM_NSAPI_TYPES -
1;
return obj;
}
void object_free(httpd_object *obj) {
}
void object_add_directive(httpd_object *obj, directive *dir,
int dt) {
dtable *l = object_get_dtable(obj, dt);
directive **drs = pool_malloc(obj->pool, (l->ndir+
1)*
sizeof(
void*));
for(
int i=
0;i<l->ndir;i++) {
drs[i] = l->dirs[i];
}
if(l->dirs !=
NULL) {
pool_free(obj->pool, l->dirs);
}
l->dirs = drs;
l->dirs[l->ndir] = dir;
l->ndir++;
}
httpd_objset* objset_create(
pool_handle_t *pool) {
httpd_objset *os = pool_malloc(pool,
sizeof(httpd_objset));
os->obj = pool_calloc(pool,
2,
sizeof(
void*));
os->pos =
0;
return os;
}
void objset_add_object(
pool_handle_t *p, httpd_objset *os, httpd_object *obj) {
if(os->pos !=
0 && os->pos %
2 ==
0) {
os->obj = pool_realloc(p, os->obj, (os->pos +
2) *
sizeof(
void*));
}
os->obj[os->pos] = obj;
os->pos++;
}
void httpobjconf_add_object(HTTPObjectConfig *conf, httpd_object *obj) {
conf->nobj++;
conf->objects = realloc(conf->objects, conf->nobj *
sizeof(
void*));
conf->objects[conf->nobj -
1] = obj;
}
void nsapi_context_next_stage(NSAPIContext *context) {
context->dtable_index =
0;
context->objset_index = -
1;
context->last_req_code =
REQ_NOACTION;
}
Condition* condition_from_str(
pool_handle_t *pool,
char *expr,
size_t len) {
Condition *cond = pool_malloc(pool,
sizeof(Condition));
cond->expression =
NULL;
cond->parent =
NULL;
cond->index =
0;
printf(
"Expression: {");
fwrite(expr, len,
1, stdout);
printf(
"}\n");
cond->expression = expression_from_str(pool, expr, len);
return cond;
}
Expression* expression_from_str(
pool_handle_t *pool,
char *expr,
size_t len) {
return NULL;
}
int condition_evaluate(Condition *condition, Session *sn, Request *rq) {
return 1;
}