30fdc15703
git-svn-id: svn://svn.openwrt.org/openwrt/packages@19137 3c298f89-4303-0410-b956-a3cf2f4a3e73
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);
|