41 lines
1.1 KiB
Diff
41 lines
1.1 KiB
Diff
|
--- a/lib/command.c
|
||
|
+++ b/lib/command.c
|
||
|
@@ -2601,6 +2601,13 @@
|
||
|
VTY_NEWLINE);
|
||
|
goto finished;
|
||
|
}
|
||
|
+
|
||
|
+#if 0
|
||
|
+ /* This code fails on UNION MOUNTs and similar filesystems if the
|
||
|
+ * config file is still on the RO layer. Hardlinks across layers
|
||
|
+ * will not work and cause quagga to fail saving the configuration...
|
||
|
+ * should use rename() to move files around...
|
||
|
+ */
|
||
|
if (link (config_file, config_file_sav) != 0)
|
||
|
{
|
||
|
vty_out (vty, "Can't backup old configuration file %s.%s", config_file_sav,
|
||
|
@@ -2614,7 +2621,23 @@
|
||
|
VTY_NEWLINE);
|
||
|
goto finished;
|
||
|
}
|
||
|
+#else
|
||
|
+ /* And this is the code that hopefully does work */
|
||
|
+ if (rename (config_file, config_file_sav) != 0)
|
||
|
+ {
|
||
|
+ vty_out (vty, "Can't backup old configuration file %s.%s", config_file_sav,
|
||
|
+ VTY_NEWLINE);
|
||
|
+ goto finished;
|
||
|
+ }
|
||
|
+ sync ();
|
||
|
+#endif
|
||
|
+
|
||
|
+#if 0
|
||
|
+ /* same here. Please no cross-filesystem hardlinks... */
|
||
|
if (link (config_file_tmp, config_file) != 0)
|
||
|
+#else
|
||
|
+ if (rename (config_file_tmp, config_file) != 0)
|
||
|
+#endif
|
||
|
{
|
||
|
vty_out (vty, "Can't save configuration file %s.%s", config_file,
|
||
|
VTY_NEWLINE);
|