summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2010-04-08 02:00:40 +0200
committerLennart Poettering <lennart@poettering.net>2010-04-08 02:00:40 +0200
commit37d88da701d75a3893b262580dc59042147a9b89 (patch)
tree317ed60afa8743013b3297af8b102bb4f76bbe79
parent82771ba1f9d1099b86e0bda64a0fabfd0c9d2d22 (diff)
main: fall back to rescue target when default target cannot be loaded
-rw-r--r--main.c7
-rw-r--r--manager.h1
2 files changed, 7 insertions, 1 deletions
diff --git a/main.c b/main.c
index 18af93418d..b4fbdb58f5 100644
--- a/main.c
+++ b/main.c
@@ -307,7 +307,12 @@ int main(int argc, char *argv[]) {
if ((r = manager_load_unit(m, default_unit, &target)) < 0) {
log_error("Failed to load default target: %s", strerror(-r));
- goto finish;
+
+ log_info("Trying to load rescue target...");
+ if ((r = manager_load_unit(m, SPECIAL_RESCUE_TARGET, &target)) < 0) {
+ log_error("Failed to load rescue target: %s", strerror(-r));
+ goto finish;
+ }
}
if (action == ACTION_TEST) {
diff --git a/manager.h b/manager.h
index b6c0a51ecf..817bc00bc8 100644
--- a/manager.h
+++ b/manager.h
@@ -83,6 +83,7 @@ struct Watch {
#define SPECIAL_SYSLOG_TARGET "syslog.target" /* Should pull in syslog.socket or syslog.service */
#define SPECIAL_RTC_SET_TARGET "rtc-set.target" /* LSB's $time */
#define SPECIAL_BASIC_TARGET "basic.target"
+#define SPECIAL_RESCUE_TARGET "rescue.target"
/* For SysV compatibility. Usually an alias for a saner target. On
* SysV-free systems this doesn't exist. */