diff options
Diffstat (limited to 'main')
-rw-r--r-- | main/config.c | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/main/config.c b/main/config.c index 4a14d21b5..28e9708a7 100644 --- a/main/config.c +++ b/main/config.c @@ -1314,7 +1314,7 @@ struct ast_config *ast_config_load_with_comments(const char *filename) return result; } -struct ast_variable *ast_load_realtime(const char *family, ...) +struct ast_variable *ast_load_realtime_all(const char *family, ...) { struct ast_config_engine *eng; char db[256]=""; @@ -1331,6 +1331,35 @@ struct ast_variable *ast_load_realtime(const char *family, ...) return res; } +struct ast_variable *ast_load_realtime(const char *family, ...) +{ + struct ast_variable *res, *cur, *prev = NULL, *freeme = NULL; + va_list ap; + + va_start(ap, family); + res = ast_load_realtime_all(family, ap); + va_end(ap); + + /* Eliminate blank entries */ + for (cur = res; cur; cur = cur->next) { + if (freeme) { + free(freeme); + freeme = NULL; + } + + if (ast_strlen_zero(cur->value)) { + if (prev) + prev->next = cur->next; + else + res = cur->next; + freeme = cur; + } else { + prev = cur; + } + } + return res; +} + /*! \brief Check if realtime engine is configured for family */ int ast_check_realtime(const char *family) { |