]> granicus.if.org Git - ejabberd/commitdiff
Do not overwrite odbc config file (#2295)
authorChristophe Romain <christophe.romain@process-one.net>
Thu, 31 Jan 2019 12:25:56 +0000 (13:25 +0100)
committerChristophe Romain <christophe.romain@process-one.net>
Thu, 31 Jan 2019 12:25:56 +0000 (13:25 +0100)
src/ejabberd_sql.erl

index 1534790260d45a0f3ca6f4d0b57239a1575fcafc..2d9c64187e8234fe7222979741fb8e8ea75948b0 100644 (file)
@@ -1071,9 +1071,9 @@ init_mssql(Host) ->
     case filelib:ensure_dir(freetds_config()) of
        ok ->
            try
-               ok = file:write_file(freetds_config(), FreeTDS, [append]),
-               ok = file:write_file(odbcinst_config(), ODBCINST),
-               ok = file:write_file(odbc_config(), ODBCINI, [append]),
+               ok = write_file_if_new(freetds_config(), FreeTDS),
+               ok = write_file_if_new(odbcinst_config(), ODBCINST),
+               ok = write_file_if_new(odbc_config(), ODBCINI),
                os:putenv("ODBCSYSINI", tmp_dir()),
                os:putenv("FREETDS", freetds_config()),
                os:putenv("FREETDSCONF", freetds_config()),
@@ -1089,6 +1089,12 @@ init_mssql(Host) ->
            Err
     end.
 
+write_file_if_new(File, Payload) ->
+    case filelib:is_file(File) of
+       true -> ok;
+       false -> file:write_file(File, Payload)
+    end.
+
 tmp_dir() ->
     case os:type() of
        {win32, _} -> filename:join([os:getenv("HOME"), "conf"]);