chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
sleep: implement suspend/hibernate as first class targets
[elogind.git]
/
src
/
systemctl
/
systemctl.c
diff --git
a/src/systemctl/systemctl.c
b/src/systemctl/systemctl.c
index c08d80912a3ad70dab44371bdeceecdcce97aa28..762b5be3463288b92cb0218535868f9887747c1d 100644
(file)
--- a/
src/systemctl/systemctl.c
+++ b/
src/systemctl/systemctl.c
@@
-45,6
+45,7
@@
#include "utmp-wtmp.h"
#include "special.h"
#include "initreq.h"
#include "utmp-wtmp.h"
#include "special.h"
#include "initreq.h"
+#include "path-util.h"
#include "strv.h"
#include "dbus-common.h"
#include "cgroup-show.h"
#include "strv.h"
#include "dbus-common.h"
#include "cgroup-show.h"
@@
-61,6
+62,7
@@
#include "spawn-polkit-agent.h"
#include "install.h"
#include "logs-show.h"
#include "spawn-polkit-agent.h"
#include "install.h"
#include "logs-show.h"
+#include "path-util.h"
static const char *arg_type = NULL;
static char **arg_property = NULL;
static const char *arg_type = NULL;
static char **arg_property = NULL;
@@
-95,6
+97,8
@@
static enum action {
ACTION_REBOOT,
ACTION_KEXEC,
ACTION_EXIT,
ACTION_REBOOT,
ACTION_KEXEC,
ACTION_EXIT,
+ ACTION_SUSPEND,
+ ACTION_HIBERNATE,
ACTION_RUNLEVEL2,
ACTION_RUNLEVEL3,
ACTION_RUNLEVEL4,
ACTION_RUNLEVEL2,
ACTION_RUNLEVEL3,
ACTION_RUNLEVEL4,
@@
-560,7
+564,7
@@
static int compare_unit_file_list(const void *a, const void *b) {
return r;
}
return r;
}
- return strcasecmp(
file_name_from_path(u->path), file_name_from_path
(v->path));
+ return strcasecmp(
path_get_file_name(u->path), path_get_file_name
(v->path));
}
static bool output_show_unit_file(const UnitFileList *u) {
}
static bool output_show_unit_file(const UnitFileList *u) {
@@
-579,7
+583,7
@@
static void output_unit_file_list(const UnitFileList *units, unsigned c) {
if (!output_show_unit_file(u))
continue;
if (!output_show_unit_file(u))
continue;
- max_id_len = MAX(max_id_len, strlen(
file_name_from_path
(u->path)));
+ max_id_len = MAX(max_id_len, strlen(
path_get_file_name
(u->path)));
state_cols = MAX(state_cols, strlen(unit_file_state_to_string(u->state)));
}
state_cols = MAX(state_cols, strlen(unit_file_state_to_string(u->state)));
}
@@
-616,7
+620,7
@@
static void output_unit_file_list(const UnitFileList *units, unsigned c) {
} else
on = off = "";
} else
on = off = "";
- id =
file_name_from_path
(u->path);
+ id =
path_get_file_name
(u->path);
e = arg_full ? NULL : ellipsize(id, id_cols, 33);
e = arg_full ? NULL : ellipsize(id, id_cols, 33);
@@
-1603,6
+1607,10
@@
static enum action verb_to_action(const char *verb) {
return ACTION_DEFAULT;
else if (streq(verb, "exit"))
return ACTION_EXIT;
return ACTION_DEFAULT;
else if (streq(verb, "exit"))
return ACTION_EXIT;
+ else if (streq(verb, "suspend"))
+ return ACTION_SUSPEND;
+ else if (streq(verb, "hibernate"))
+ return ACTION_HIBERNATE;
else
return ACTION_INVALID;
}
else
return ACTION_INVALID;
}
@@
-1621,7
+1629,9
@@
static int start_unit(DBusConnection *bus, char **args) {
[ACTION_RESCUE] = SPECIAL_RESCUE_TARGET,
[ACTION_EMERGENCY] = SPECIAL_EMERGENCY_TARGET,
[ACTION_DEFAULT] = SPECIAL_DEFAULT_TARGET,
[ACTION_RESCUE] = SPECIAL_RESCUE_TARGET,
[ACTION_EMERGENCY] = SPECIAL_EMERGENCY_TARGET,
[ACTION_DEFAULT] = SPECIAL_DEFAULT_TARGET,
- [ACTION_EXIT] = SPECIAL_EXIT_TARGET
+ [ACTION_EXIT] = SPECIAL_EXIT_TARGET,
+ [ACTION_SUSPEND] = SPECIAL_SUSPEND_TARGET,
+ [ACTION_HIBERNATE] = SPECIAL_HIBERNATE_TARGET
};
int r, ret = 0;
};
int r, ret = 0;
@@
-3721,7
+3731,7
@@
static int enable_sysv_units(char **args) {
if (!isempty(arg_root))
argv[c++] = q = strappend("--root=", arg_root);
if (!isempty(arg_root))
argv[c++] = q = strappend("--root=", arg_root);
- argv[c++] =
file_name_from_path
(p);
+ argv[c++] =
path_get_file_name
(p);
argv[c++] =
streq(verb, "enable") ? "on" :
streq(verb, "disable") ? "off" : "--level=5";
argv[c++] =
streq(verb, "enable") ? "on" :
streq(verb, "disable") ? "off" : "--level=5";
@@
-4199,7
+4209,9
@@
static int systemctl_help(void) {
" poweroff Shut down and power-off the system\n"
" reboot Shut down and reboot the system\n"
" kexec Shut down and reboot the system with kexec\n"
" poweroff Shut down and power-off the system\n"
" reboot Shut down and reboot the system\n"
" kexec Shut down and reboot the system with kexec\n"
- " exit Ask for user instance termination\n",
+ " exit Request user instance exit\n"
+ " suspend Suspend the system\n"
+ " hibernate Hibernate the system\n",
program_invocation_short_name);
return 0;
program_invocation_short_name);
return 0;
@@
-5133,6
+5145,8
@@
static int systemctl_main(DBusConnection *bus, int argc, char *argv[], DBusError
{ "poweroff", EQUAL, 1, start_special },
{ "reboot", EQUAL, 1, start_special },
{ "kexec", EQUAL, 1, start_special },
{ "poweroff", EQUAL, 1, start_special },
{ "reboot", EQUAL, 1, start_special },
{ "kexec", EQUAL, 1, start_special },
+ { "suspend", EQUAL, 1, start_special },
+ { "hibernate", EQUAL, 1, start_special },
{ "default", EQUAL, 1, start_special },
{ "rescue", EQUAL, 1, start_special },
{ "emergency", EQUAL, 1, start_special },
{ "default", EQUAL, 1, start_special },
{ "rescue", EQUAL, 1, start_special },
{ "emergency", EQUAL, 1, start_special },