We shouldn't use a filename blindly without checking to make sure it's unused first
authorTilghman Lesher <tilghman@meg.abyt.es>
Sun, 2 Sep 2007 14:37:53 +0000 (14:37 +0000)
committerTilghman Lesher <tilghman@meg.abyt.es>
Sun, 2 Sep 2007 14:37:53 +0000 (14:37 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@81430 65c4cc65-6c06-0410-ace0-fbb531ad65f3

main/config.c

index 7a44685..5889a03 100644 (file)
@@ -235,12 +235,14 @@ struct ast_config_include *ast_include_new(struct ast_config *conf, const char *
        instances is possible, I'd have
        to create a new master for each instance. */
        struct ast_config_include *inc;
+       struct stat statbuf;
        
        inc = ast_include_find(conf, included_file);
-       if (inc)
-       {
-               inc->inclusion_count++;
-               snprintf(real_included_file_name, real_included_file_name_size, "%s~~%d", included_file, inc->inclusion_count);
+       if (inc) {
+               do {
+                       inc->inclusion_count++;
+                       snprintf(real_included_file_name, real_included_file_name_size, "%s~~%d", included_file, inc->inclusion_count);
+               } while (stat(real_included_file_name, &statbuf) == 0);
                ast_log(LOG_WARNING,"'%s', line %d:  Same File included more than once! This data will be saved in %s if saved back to disk.\n", from_file, from_lineno, real_included_file_name);
        } else
                *real_included_file_name = 0;