f43f44a2e4
* Switch to quagga 0.99.x for stable version * Add menuconfig option to allow selection of old 0.98.6 version * Makefile cleanups git-svn-id: svn://svn.openwrt.org/openwrt/packages@23464 3c298f89-4303-0410-b956-a3cf2f4a3e73
41 lines
1.2 KiB
Diff
41 lines
1.2 KiB
Diff
--- a/lib/command.c
|
|
+++ b/lib/command.c
|
|
@@ -2601,6 +2601,13 @@ DEFUN (config_write_file,
|
|
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 @@ DEFUN (config_write_file,
|
|
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);
|