X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;ds=sidebyside;f=src%2Fshared%2Fgenerator.c;h=5ac7b5f02f379fae03a7ff5392b77f6d6ee6a8e1;hb=76cf10dab7a36653a159f0e87c46a13df494474f;hp=49647c1ab6b55857ff687ae350fb1dd27ad14cbc;hpb=e48fdd84432bbf9c2ecc339183258c7c33116032;p=elogind.git
diff --git a/src/shared/generator.c b/src/shared/generator.c
index 49647c1ab..5ac7b5f02 100644
--- a/src/shared/generator.c
+++ b/src/shared/generator.c
@@ -19,6 +19,7 @@
along with systemd; If not, see .
***/
+#include
#include
#include "util.h"
@@ -26,32 +27,32 @@
#include "mkdir.h"
#include "unit-name.h"
#include "generator.h"
+#include "path-util.h"
int generator_write_fsck_deps(
FILE *f,
const char *dest,
const char *what,
const char *where,
- const char *type) {
+ const char *fstype) {
assert(f);
+ assert(dest);
+ assert(what);
+ assert(where);
if (!is_device_path(what)) {
log_warning("Checking was requested for \"%s\", but it is not a device.", what);
return 0;
}
- if (type && !streq(type, "auto")) {
- const char *checker;
+ if (!isempty(fstype) && !streq(fstype, "auto")) {
int r;
-
- checker = strappenda("/sbin/fsck.", type);
- r = access(checker, X_OK);
+ r = fsck_exists(fstype);
if (r < 0) {
- log_warning("Checking was requested for %s, but %s cannot be used: %m", what, checker);
-
+ log_warning("Checking was requested for %s, but fsck.%s cannot be used: %s", what, fstype, strerror(-r));
/* treat missing check as essentially OK */
- return errno == ENOENT ? 0 : -errno;
+ return r == -ENOENT ? 0 : r;
}
}