diff options
Diffstat (limited to 'src/net')
| -rw-r--r-- | src/net/util.c | 18 | ||||
| -rw-r--r-- | src/net/util.h | 4 |
2 files changed, 17 insertions, 5 deletions
diff --git a/src/net/util.c b/src/net/util.c index 41069fb..868da0f 100644 --- a/src/net/util.c +++ b/src/net/util.c @@ -316,19 +316,31 @@ int match_param(char* path, char* match, parray_t* arr){ return path[pi] == 0 && match[mi] == 0; } -parray_t* route_match(parray_t* paths, char* request){ - parray_t* out = parray_initl(paths->len); +parray_t* route_match(parray_t* paths, char* request, larray_t** _params){ + larray_t* params = *_params; + parray_t* out = parray_initl(paths->len * 2); + parray_t* temp; out->len = 0; for(int i = 0; i != paths->len; i++){ //if(match_param(paths->P[i].key->c, request)) //*if(strcmp(request, paths->P[i].key->c) == 0)*/{ //printf("pass!\n"); + //printf("%i\n", i); + + temp = parray_init(); + + if(match_param(paths->P[i].key->c, request, temp)){ out->P[out->len] = paths->P[i]; + larray_set(¶ms, out->len, (void*)temp); out->len++; + } else { + parray_clear(temp, FREE); + } //} } - printf("\n"); + + *_params = params; return out; } diff --git a/src/net/util.h b/src/net/util.h index 17a99ac..98d4d93 100644 --- a/src/net/util.h +++ b/src/net/util.h @@ -1,5 +1,5 @@ #include "common.h" - +#include "../types/larray.h" /** * @brief calls recv into buffer until everything is read * @@ -46,7 +46,7 @@ void client_fd_errors(int client_fd); int content_disposition(str* src, parray_t** _dest); -parray_t* route_match(parray_t* paths, char* path); +parray_t* route_match(parray_t* paths, char* path, larray_t** params); int match_param(char* path, char* match, parray_t* arr); |
