From 78635481e7180925345b59273ee7428a35c6dddc Mon Sep 17 00:00:00 2001 From: asterix Date: Mon, 3 Oct 2011 12:33:28 +0000 Subject: [PATCH] Add other string search method for cgi table. git-svn-id: https://src.develer.com/svnoss/bertos/trunk@5131 38d2e660-2303-0410-9eaa-f027e97ec537 --- bertos/net/http.c | 9 ++++++++- bertos/net/http.h | 3 ++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/bertos/net/http.c b/bertos/net/http.c index e3fc8085..89411052 100644 --- a/bertos/net/http.c +++ b/bertos/net/http.c @@ -104,6 +104,7 @@ void http_getPageName(const char *revc_buf, size_t recv_len, char *page_name, si *revc_buf++ == 'E' && *revc_buf++ == 'T') { str_ok = true; + /* skip the space and "/" */ revc_buf += 2; } } @@ -149,9 +150,15 @@ static http_handler_t cgi_search(const char *name, HttpCGI *table) if (!strcmp(table[i].name, ext)) break; } - else /* (table[i].type == CGI_MATCH_NAME) */ + else if (table[i].type == CGI_MATCH_NAME) { LOG_INFO("Match all name %s\n", name); + if (strstr(name, table[i].name) != NULL) + break; + } + else /* (table[i].type == CGI_MATCH_WORD) */ + { + LOG_INFO("Match all word %s\n", name); if (!strcmp(table[i].name, name)) break; } diff --git a/bertos/net/http.h b/bertos/net/http.h index 665e97aa..2b49c7f0 100644 --- a/bertos/net/http.h +++ b/bertos/net/http.h @@ -56,8 +56,9 @@ typedef struct HttpCGI #define CGI_MATCH_NONE 0 -#define CGI_MATCH_NAME 1 ///< Select item in table only if string match +#define CGI_MATCH_WORD 1 ///< Select item in table only if string match #define CGI_MATCH_EXT 2 ///< Select item in table if the extention match +#define CGI_MATCH_NAME 3 ///< Select item in table if the string is content void http_getPageName(const char *revc_buf, size_t recv_len, char *page_name, size_t len); -- 2.25.1