From 798244cc1bf4b2e08f7b918ff7b56fe33ae5da6c Mon Sep 17 00:00:00 2001 From: YuQing <384681@qq.com> Date: Sat, 8 Feb 2020 09:19:10 +0800 Subject: [PATCH] add function fc_memrchr --- HISTORY | 4 +++- src/fast_task_queue.h | 1 + src/shared_func.c | 17 +++++++++++++++++ src/shared_func.h | 8 ++++++++ src/uniq_skiplist.h | 2 ++ 5 files changed, 31 insertions(+), 1 deletion(-) diff --git a/HISTORY b/HISTORY index b64d2d8..9f45707 100644 --- a/HISTORY +++ b/HISTORY @@ -1,9 +1,11 @@ -Version 1.44 2020-02-03 +Version 1.44 2020-02-08 * add test file src/tests/test_pthread_lock.c * add uniq_skiplist.[hc] * add function split_string_ex * fast_mblock.[hc]: add init_args for init_func + * struct fast_task_info add field: nio_stage + * add function fc_memrchr Version 1.43 2019-12-25 * replace function call system to getExecResult, diff --git a/src/fast_task_queue.h b/src/fast_task_queue.h index fe9601a..fa1aa05 100644 --- a/src/fast_task_queue.h +++ b/src/fast_task_queue.h @@ -56,6 +56,7 @@ struct fast_task_info int size; //alloc size int length; //data length int offset; //current offset + char nio_stage; //stage for network IO int64_t req_count; //request count TaskFinishCallback finish_callback; struct nio_thread_data *thread_data; diff --git a/src/shared_func.c b/src/shared_func.c index b8999e6..1480538 100644 --- a/src/shared_func.c +++ b/src/shared_func.c @@ -2854,6 +2854,23 @@ const char *fc_memmem(const string_t *str, const string_t *needle) return NULL; } +const char *fc_memrchr(const char *str, const int ch, const int len) +{ + const char *p; + + p = str + len - 1; + while (p >= str) + { + if (*p == ch) + { + return p; + } + --p; + } + + return NULL; +} + char *format_http_date(time_t t, BufferInfo *buffer) { struct tm tm_info; diff --git a/src/shared_func.h b/src/shared_func.h index 16c6abd..5a7e501 100644 --- a/src/shared_func.h +++ b/src/shared_func.h @@ -844,6 +844,14 @@ char *fc_strdup(const char *str, const int len); */ const char *fc_memmem(const string_t *str, const string_t *needle); +/** memmem + * parameters: + * str: the string to match + * needle: the needle string + * return: the matched string, NULL for fail +*/ +const char *fc_memrchr(const char *str, const int ch, const int len); + /** format HTTP Date as: Sat, 11 Mar 2017 21:49:51 GMT * parameters: * t: the time to format diff --git a/src/uniq_skiplist.h b/src/uniq_skiplist.h index 62075a9..e0da9f1 100644 --- a/src/uniq_skiplist.h +++ b/src/uniq_skiplist.h @@ -55,6 +55,8 @@ typedef struct uniq_skiplist_iterator { extern "C" { #endif +#define uniq_skiplist_count(sl) (sl)->element_count + #define uniq_skiplist_init(factory, max_level_count, compare_func, free_func) \ uniq_skiplist_init_ex(factory, max_level_count, \ compare_func, free_func, 64 * 1024, \