Merge "res_config_odbc: set empty extended field as a single whitespace" into 13

13.26
Friendly Automation 7 years ago committed by Gerrit Code Review
commit e821071943

@ -289,19 +289,34 @@ static struct ast_variable *realtime_odbc(const char *database, const char *tabl
} }
stringp = ast_str_buffer(rowdata); stringp = ast_str_buffer(rowdata);
while (stringp) { if (!strncmp(coltitle, "@", 1)) {
chunk = strsep(&stringp, ";"); /* The '@' prefix indicates it's a sorcery extended field.
if (!ast_strlen_zero(ast_strip(chunk))) { * Because ast_load_realtime_fields eliminates empty entries and makes blank (single whitespace)
if (strchr(chunk, '^')) { * entries empty and keeps them, the empty or NULL values are encoded
decode_chunk(chunk); * as a string containing a single whitespace. */
if (prev) {
prev->next = ast_variable_new(coltitle, S_OR(stringp," "), "");
if (prev->next) {
prev = prev->next;
} }
if (prev) { } else {
prev->next = ast_variable_new(coltitle, chunk, ""); prev = var = ast_variable_new(coltitle, S_OR(stringp," "), "");
if (prev->next) { }
prev = prev->next; } else {
while (stringp) {
chunk = strsep(&stringp, ";");
if (!ast_strlen_zero(ast_strip(chunk))) {
if (strchr(chunk, '^')) {
decode_chunk(chunk);
}
if (prev) {
prev->next = ast_variable_new(coltitle, chunk, "");
if (prev->next) {
prev = prev->next;
}
} else {
prev = var = ast_variable_new(coltitle, chunk, "");
} }
} else {
prev = var = ast_variable_new(coltitle, chunk, "");
} }
} }
} }
@ -453,17 +468,26 @@ static struct ast_config *realtime_multi_odbc(const char *database, const char *
goto next_sql_fetch; goto next_sql_fetch;
} }
stringp = ast_str_buffer(rowdata); stringp = ast_str_buffer(rowdata);
while (stringp) { if (!strncmp(coltitle, "@", 1)) {
chunk = strsep(&stringp, ";"); /* The '@' prefix indicates it's a sorcery extended field.
if (!ast_strlen_zero(ast_strip(chunk))) { * Because ast_load_realtime_fields eliminates empty entries and makes blank (single whitespace)
if (strchr(chunk, '^')) { * entries empty and keeps them, the empty or NULL values are encoded
decode_chunk(chunk); * as a string containing a single whitespace. */
} var = ast_variable_new(coltitle, S_OR(stringp," "), "");
if (!strcmp(initfield, coltitle)) { ast_variable_append(cat, var);
ast_category_rename(cat, chunk); } else {
while (stringp) {
chunk = strsep(&stringp, ";");
if (!ast_strlen_zero(ast_strip(chunk))) {
if (strchr(chunk, '^')) {
decode_chunk(chunk);
}
if (!strcmp(initfield, coltitle)) {
ast_category_rename(cat, chunk);
}
var = ast_variable_new(coltitle, chunk, "");
ast_variable_append(cat, var);
} }
var = ast_variable_new(coltitle, chunk, "");
ast_variable_append(cat, var);
} }
} }
} }

Loading…
Cancel
Save