git migration: Refactor the ASTERISK_FILE_VERSION macro
[asterisk/asterisk.git] / cel / cel_odbc.c
index 87036bb..4803444 100644 (file)
@@ -33,7 +33,7 @@
 
 #include "asterisk.h"
 
-ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
+ASTERISK_REGISTER_FILE()
 
 #include <sys/types.h>
 #include <time.h>
@@ -436,7 +436,7 @@ static void odbc_log(struct ast_event *event)
                                   This should be ok, however, as nobody is going to store just event
                                   date or just time for CDR purposes.
                                 */
-                               ast_strftime(colbuf, sizeof(colbuf), "%Y-%m-%d %H:%M:%S.%q", &tm);
+                               ast_strftime(colbuf, sizeof(colbuf), "%Y-%m-%d %H:%M:%S.%6q", &tm);
                                colptr = colbuf;
                        } else {
                                if (strcmp(entry->celname, "userdeftype") == 0) {
@@ -615,7 +615,7 @@ static void odbc_log(struct ast_event *event)
                                        if (ast_strlen_zero(colptr)) {
                                                continue;
                                        } else {
-                                               int year = 0, month = 0, day = 0, hour = 0, minute = 0, second = 0;
+                                               int year = 0, month = 0, day = 0, hour = 0, minute = 0, second = 0, fraction = 0;
                                                if (strcasecmp(entry->name, "eventdate") == 0) {
                                                        struct ast_tm tm;
                                                        ast_localtime(&record.event_time, &tm, tableptr->usegmtime ? "UTC" : NULL);
@@ -625,17 +625,18 @@ static void odbc_log(struct ast_event *event)
                                                        hour = tm.tm_hour;
                                                        minute = tm.tm_min;
                                                        second = (tableptr->allowleapsec || tm.tm_sec < 60) ? tm.tm_sec : 59;
+                                                       fraction = tm.tm_usec;
                                                } else {
-                                                       int count = sscanf(colptr, "%4d-%2d-%2d %2d:%2d:%2d", &year, &month, &day, &hour, &minute, &second);
+                                                       int count = sscanf(colptr, "%4d-%2d-%2d %2d:%2d:%2d.%6d", &year, &month, &day, &hour, &minute, &second, &fraction);
 
-                                                       if ((count != 3 && count != 5 && count != 6) || year <= 0 ||
+                                                       if ((count != 3 && count != 5 && count != 6 && count != 7) || year <= 0 ||
                                                                month <= 0 || month > 12 || day < 0 || day > 31 ||
                                                                ((month == 4 || month == 6 || month == 9 || month == 11) && day == 31) ||
                                                                (month == 2 && year % 400 == 0 && day > 29) ||
                                                                (month == 2 && year % 100 == 0 && day > 28) ||
                                                                (month == 2 && year % 4 == 0 && day > 29) ||
                                                                (month == 2 && year % 4 != 0 && day > 28) ||
-                                                               hour > 23 || minute > 59 || second > (tableptr->allowleapsec ? 60 : 59) || hour < 0 || minute < 0 || second < 0) {
+                                                               hour > 23 || minute > 59 || second > (tableptr->allowleapsec ? 60 : 59) || hour < 0 || minute < 0 || second < 0 || fraction < 0) {
                                                                ast_log(LOG_WARNING, "CEL variable %s is not a valid timestamp ('%s').\n", entry->name, colptr);
                                                                continue;
                                                        }
@@ -647,7 +648,7 @@ static void odbc_log(struct ast_event *event)
 
                                                ast_str_append(&sql, 0, "%s%s", first ? "" : ",", entry->name);
                                                LENGTHEN_BUF2(27);
-                                               ast_str_append(&sql2, 0, "%s{ts '%04d-%02d-%02d %02d:%02d:%02d'}", first ? "" : ",", year, month, day, hour, minute, second);
+                                               ast_str_append(&sql2, 0, "%s{ts '%04d-%02d-%02d %02d:%02d:%02d.%d'}", first ? "" : ",", year, month, day, hour, minute, second, fraction);
                                        }
                                        break;
                                case SQL_INTEGER:
@@ -761,8 +762,7 @@ static void odbc_log(struct ast_event *event)
                ast_str_append(&sql2, 0, ")");
                ast_str_append(&sql, 0, "%s", ast_str_buffer(sql2));
 
-               ast_verb(11, "[%s]\n", ast_str_buffer(sql));
-
+               ast_debug(3, "Executing SQL statement: [%s]\n", ast_str_buffer(sql));
                stmt = ast_odbc_prepare_and_execute(obj, generic_prepare, ast_str_buffer(sql));
                if (stmt) {
                        SQLRowCount(stmt, &rows);
@@ -834,6 +834,7 @@ static int reload(void)
 }
 
 AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, ODBC_BACKEND_NAME,
+       .support_level = AST_MODULE_SUPPORT_CORE,
        .load = load_module,
        .unload = unload_module,
        .reload = reload,