summarylogtreecommitdiffstats
path: root/0010-Replace-command-shutdown-with-halt-poweroff.patch
blob: 2e6196a3f5238aa372d0f002d2f3318e96632808 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
From fd7c3159988cb56e2cb703be23e8a4302331f338 Mon Sep 17 00:00:00 2001
From: Olivier Brunel <jjk@jjacky.com>
Date: Sat, 17 Oct 2015 12:53:10 +0200
Subject: [PATCH 10/10] Replace command "shutdown" with "halt" & "poweroff"

Signed-off-by: Olivier Brunel <jjk@jjacky.com>
---
 include/config.h |  1 +
 include/xlsh.h   |  4 +++-
 src/xlsh.c       | 21 ++++++++++++++++++---
 3 files changed, 22 insertions(+), 4 deletions(-)

diff --git a/include/config.h b/include/config.h
index 301f09f..1844bd3 100644
--- a/include/config.h
+++ b/include/config.h
@@ -17,6 +17,7 @@
 #define XLSH_PATH      "/bin:/usr/bin:/usr/local/bin"
 #define XLSH_REBOOT    "/sbin/reboot"
 #define XLSH_HALT      "/sbin/halt"
+#define XLSH_POWEROFF  "/sbin/poweroff"
 #define XLSH_XTTY      "/dev/console"
 #define XLSH_DATEFMT   "%Y-%m-%d"
 #define XLSH_TIMEFMT   "%H:%M"
diff --git a/include/xlsh.h b/include/xlsh.h
index a536996..0a131db 100644
--- a/include/xlsh.h
+++ b/include/xlsh.h
@@ -11,6 +11,7 @@ typedef enum xlsh_config_id_e {
   XLSH_ID_EXEC = 0,
   XLSH_ID_REBOOT,
   XLSH_ID_HALT,
+  XLSH_ID_POWEROFF,
   XLSH_ID_ISSUE,
   XLSH_ID_DATEFMT,
   XLSH_ID_TIMEFMT,
@@ -67,6 +68,7 @@ int xlsh_func_help(int argc, char** argv);
 int xlsh_func_version(int argc, char** argv);
 int xlsh_func_login(int argc, char** argv);
 int xlsh_func_reboot(int argc, char** argv);
-int xlsh_func_shutdown(int argc, char** argv);
+int xlsh_func_halt(int argc, char** argv);
+int xlsh_func_poweroff(int argc, char** argv);
 
 #endif
diff --git a/src/xlsh.c b/src/xlsh.c
index 3fc1711..7a3ceb9 100644
--- a/src/xlsh.c
+++ b/src/xlsh.c
@@ -32,6 +32,7 @@ static xlsh_config_item_t xlsh_config[] = {
   { "XLSH_EXEC", XLSH_EXEC, NULL },
   { "XLSH_REBOOT", XLSH_REBOOT, NULL },
   { "XLSH_HALT", XLSH_HALT, NULL },
+  { "XLSH_POWEROFF", XLSH_POWEROFF, NULL },
   { "XLSH_ISSUE", XLSH_ISSUE, NULL },
   { "XLSH_DATEFMT", XLSH_DATEFMT, NULL },
   { "XLSH_TIMEFMT", XLSH_TIMEFMT, NULL },
@@ -44,7 +45,8 @@ static xlsh_config_item_t xlsh_config[] = {
 static xlsh_command_t xlsh_commands[] = {
   { "login", "   : Logins specified user into the system", xlsh_func_login },
   { "reboot", "  : Reboots the system", xlsh_func_reboot },
-  { "shutdown", ": Halts the system", xlsh_func_shutdown },
+  { "halt", "    : Halts the system", xlsh_func_halt },
+  { "poweroff", ": Powers off the system", xlsh_func_poweroff },
   { "exit", "    : Exits (reloads) login shell", xlsh_func_exit },
   { "help", "    : Prints all available commands", xlsh_func_help },
   { "version", " : Prints copyright and version information", xlsh_func_version },
@@ -114,9 +116,9 @@ int xlsh_func_reboot(int argc, char** argv)
   return XLSH_EDONE;
 }
 
-int xlsh_func_shutdown(int argc, char** argv)
+int xlsh_func_halt(int argc, char** argv)
 {
-  printf("Initiating system shutdown ...\n");
+  printf("Halting system ...\n");
   if(libxlsh_proc_exec(XLSH_HALT, XLSH_DETACH) == -1) {
     fprintf(stderr, "Failed to execute: %s\n", XLSH_HALT);
     return XLSH_ERROR;
@@ -126,6 +128,18 @@ int xlsh_func_shutdown(int argc, char** argv)
   return XLSH_EDONE;
 }
 
+int xlsh_func_poweroff(int argc, char** argv)
+{
+  printf("Powering off system ...\n");
+  if(libxlsh_proc_exec(XLSH_POWEROFF, XLSH_DETACH) == -1) {
+    fprintf(stderr, "Failed to execute: %s\n", XLSH_POWEROFF);
+    return XLSH_ERROR;
+  }
+
+  pause();
+  return XLSH_EDONE;
+}
+
 // Session management helpers
 static int xlsh_session_conv(int num_msg, const struct pam_message** msg,
 			     struct pam_response** resp, void* appdata_ptr)
@@ -379,6 +393,7 @@ void xlsh_config_init(char* exec_arg)
 
   xlsh_config_set(&xlsh_config[XLSH_ID_REBOOT], NULL);
   xlsh_config_set(&xlsh_config[XLSH_ID_HALT], NULL);
+  xlsh_config_set(&xlsh_config[XLSH_ID_POWEROFF], NULL);
   xlsh_config_set(&xlsh_config[XLSH_ID_ISSUE], NULL);
   xlsh_config_set(&xlsh_config[XLSH_ID_TIMEFMT], NULL);
   xlsh_config_set(&xlsh_config[XLSH_ID_DATEFMT], NULL);
-- 
2.6.1