unlink(getAbsolutePath(LOC_SYSTEM).c_str());
string tmp;
readlink(getAbsolutePath(LOC_PRE), tmp);
- symlink(tmp, getAbsolutePath(LOC_SYSTEM));
+ if (symlink(tmp, getAbsolutePath(LOC_SYSTEM)) != 0)
+ {
+ y2err("symlink failed path:" << getAbsolutePath(LOC_SYSTEM) <<
+ " errno:" << errno);
+ error = true;
+ }
+ lchown(getAbsolutePath(LOC_SYSTEM).c_str(), fs.st_uid, fs.st_gid);
} break;
}
}
permissions2
owner1
owner2
+owner3
missing-directory1
error1
error2
noinst_SCRIPTS = run-all
-noinst_PROGRAMS = simple1 permissions1 permissions2 owner1 owner2 \
+noinst_PROGRAMS = simple1 permissions1 permissions2 owner1 owner2 owner3 \
missing-directory1 error1 error2 error3 error4
simple1_SOURCES = simple1.cc common.h common.cc
owner1_SOURCES = owner1.cc common.h common.cc
owner2_SOURCES = owner2.cc common.h common.cc
+owner3_SOURCES = owner3.cc common.h common.cc
missing_directory1_SOURCES = missing-directory1.cc common.h common.cc
--- /dev/null
+
+#include <stdlib.h>
+#include <iostream>
+
+#include "common.h"
+
+using namespace std;
+
+
+int
+main()
+{
+ setup();
+
+ run_command("ln --symbolic test1 link");
+ run_command("chown --no-dereference nobody link");
+
+ first_snapshot();
+
+ run_command("rm link");
+ run_command("ln --symbolic test2 link");
+ run_command("chown --no-dereference nobody link");
+
+ second_snapshot();
+
+ check_rollback_statistics(0, 1, 0);
+
+ rollback();
+
+ check_rollback_errors(0, 0, 0);
+
+ check_first();
+
+ exit(EXIT_SUCCESS);
+}
run owner1
run owner2
+run owner3
run missing-directory1