aboutsummaryrefslogtreecommitdiff
path: root/src/net
diff options
context:
space:
mode:
Diffstat (limited to 'src/net')
-rw-r--r--src/net/util.c18
-rw-r--r--src/net/util.h4
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(&params, 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);