diff --git a/HISTORY b/HISTORY index 6e4084edddc9b3f4a9fa7a7a667ce717724dcfd1..3d23133ac1856f632754a3f0800fe842426d3e27 100644 --- a/HISTORY +++ b/HISTORY @@ -1,4 +1,7 @@ +Version 1.46 2020-12-28 + * add function get_time_item_from_conf_ex + Version 1.45 2020-12-24 * add function uniq_skiplist_find_node_ex * use readdir instead of readdir_r in Linux diff --git a/src/shared_func.c b/src/shared_func.c index 56dd6d5dea134f49c2ed63a4052eaff2d3ed774c..947e811f6708d616fb253185d1243375c6d778f9 100644 --- a/src/shared_func.c +++ b/src/shared_func.c @@ -2220,8 +2220,20 @@ int set_rand_seed() return 0; } -int get_time_item_from_conf(IniContext *pIniContext, \ - const char *item_name, TimeInfo *pTimeInfo, \ +int get_time_item_from_conf_ex(IniFullContext *ini_ctx, + const char *item_name, TimeInfo *pTimeInfo, + const byte default_hour, const byte default_minute, + const bool bRetryGlobal) +{ + char *pValue; + pValue = iniGetStrValueEx(ini_ctx->section_name, item_name, + ini_ctx->context, bRetryGlobal); + return get_time_item_from_str(pValue, item_name, pTimeInfo, + default_hour, default_minute); +} + +int get_time_item_from_conf(IniContext *pIniContext, + const char *item_name, TimeInfo *pTimeInfo, const byte default_hour, const byte default_minute) { char *pValue; @@ -2251,8 +2263,8 @@ int get_time_item_from_str(const char *pValue, const char *item_name, count = sscanf(pValue, "%d:%d:%d", &hour, &minute, &second); if (count != 2 && count != 3) { - logError("file: "__FILE__", line: %d, " \ - "item \"%s\" 's value \"%s\" is not an valid time", \ + logError("file: "__FILE__", line: %d, " + "item \"%s\" 's value \"%s\" is not an valid time", __LINE__, item_name, pValue); return EINVAL; } @@ -2260,8 +2272,8 @@ int get_time_item_from_str(const char *pValue, const char *item_name, if ((hour < 0 || hour > 23) || (minute < 0 || minute > 59) || (second < 0 || second > 59)) { - logError("file: "__FILE__", line: %d, " \ - "item \"%s\" 's value \"%s\" is not an valid time", \ + logError("file: "__FILE__", line: %d, " + "item \"%s\" 's value \"%s\" is not an valid time", __LINE__, item_name, pValue); return EINVAL; } diff --git a/src/shared_func.h b/src/shared_func.h index 6b356b4da4ad0c89e69f8e7407d10407c6781e94..0d691c63490cc9e0db989efd1c5d46c6fae462d3 100644 --- a/src/shared_func.h +++ b/src/shared_func.h @@ -519,6 +519,22 @@ void set_log_level(char *pLogLevel); int load_allow_hosts(IniContext *pIniContext, \ in_addr_t **allow_ip_addrs, int *allow_ip_count); + +/** get time item from config context + * parameters: + * ini_ctx: the full ini context + * item_name: item name in config file, time format as hour:minute, such as 15:25 + * pTimeInfo: store time info + * default_hour: default hour value + * default_minute: default minute value + * bRetryGlobal: if fetch from global section when the item not exist + * return: error no , 0 success, != 0 fail +*/ +int get_time_item_from_conf_ex(IniFullContext *ini_ctx, + const char *item_name, TimeInfo *pTimeInfo, + const byte default_hour, const byte default_minute, + const bool bRetryGlobal); + /** get time item from config context * parameters: * pIniContext: the config context