SWITCH_DECLARE(int) switch_inet_pton(int af, const char *src, void *dst);
SWITCH_DECLARE(int) switch_number_cmp(const char *exp, int val);
+SWITCH_DECLARE(int) switch_tod_cmp(const char *exp, int val);
/*!
\brief Split a user@domain string as user and domain
}
+SWITCH_DECLARE(int) switch_tod_cmp(const char *exp, int val)
+{
+ char *dup = strdup(exp);
+ char *minh;
+ char *minm;
+ char *mins;
+ char *maxh;
+ char *maxm;
+ char *maxs;
+
+ switch_assert(dup);
+
+ minh = dup;
+ if ((minm=strchr(dup, ':'))) {
+ *minm++ = '\0';
+ if ((maxh=strchr(minm, '-'))) {
+ if ((maxm=strchr(maxh, ':'))) {
+ *maxh++ = '\0';
+ *maxm++ = '\0';
+ /* Check if min/max seconds are present */
+ if ((mins=strchr(minm, ':'))) {
+ *mins++ = '\0';
+ } else {
+ mins = "00";
+ }
+ if ((maxs=strchr(maxm, ':'))) {
+ *maxs++ = '\0';
+ } else {
+ maxs = "00";
+ }
+
+ if (val >= (atol(minh) * 60 * 60) + (atol(minm) * 60) + atol(mins) && val < (atol(maxh) * 60 * 60) + (atol(maxm) * 60) + atol(maxs)) {
+ switch_safe_free(dup);
+ return 1;
+ }
+ }
+ }
+ }
+ switch_safe_free(dup);
+ return 0;
+
+}
+
SWITCH_DECLARE(int) switch_split_user_domain(char *in, char **user, char **domain)
{
char *p = NULL, *h = NULL, *u = in;
const char *xhour = switch_xml_attr(xcond, "hour");
const char *xminute = switch_xml_attr(xcond, "minute");
const char *xminday = switch_xml_attr(xcond, "minute-of-day");
+ const char *xtod = switch_xml_attr(xcond, "time-of-day");
switch_time_t ts = switch_micro_time_now();
int time_match = -1;
"XML DateTime Check: minute of day[%d] =~ %s (%s)\n", test, xminday, time_match ? "PASS" : "FAIL");
}
+ if (time_match && xtod) {
+ int test = (tm.tm_hour * 60 * 60) + (tm.tm_min * 60) + tm.tm_sec;
+ char tmpdate[10];
+ switch_snprintf(tmpdate, 6, "%d:%d:%d", tm.tm_hour, tm.tm_min, tm.tm_sec);
+ time_match = switch_tod_cmp(xtod, test);
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG9,
+ "XML DateTime Check: time of day[%s] =~ %s (%s)\n", tmpdate, xtod, time_match ? "PASS" : "FAIL");
+ }
+
return time_match;
}