summaryrefslogtreecommitdiffstats
path: root/login-utils/sulogin.c
diff options
context:
space:
mode:
Diffstat (limited to 'login-utils/sulogin.c')
-rw-r--r--login-utils/sulogin.c44
1 files changed, 4 insertions, 40 deletions
diff --git a/login-utils/sulogin.c b/login-utils/sulogin.c
index 601d38caf..8d6e65229 100644
--- a/login-utils/sulogin.c
+++ b/login-utils/sulogin.c
@@ -58,6 +58,7 @@
#include "closestream.h"
#include "nls.h"
#include "pathnames.h"
+#include "plymouth-ctrl.h"
#include "strutils.h"
#include "ttyutils.h"
#include "sulogin-consoles.h"
@@ -92,42 +93,6 @@ static int locked_account_password(const char *passwd)
return 0;
}
-#ifdef TIOCGLCKTRMIOS
-/*
- * For the case plymouth is found on this system
- */
-static int plymouth_command(const char* arg)
-{
- const char *cmd = "/usr/bin/plymouth";
- static int has_plymouth = 1;
- pid_t pid;
-
- if (!has_plymouth)
- return 127;
-
- pid = fork();
- if (!pid) {
- int fd = open("/dev/null", O_RDWR);
- if (fd < 0)
- exit(127);
- dup2(fd, 0);
- dup2(fd, 1);
- dup2(fd, 2);
- if (fd > 2)
- close(fd);
- execl(cmd, cmd, arg, (char *) NULL);
- exit(127);
- } else if (pid > 0) {
- int status;
- waitpid(pid, &status, 0);
- if (status == 127)
- has_plymouth = 0;
- return status;
- }
- return 1;
-}
-#endif
-
/*
* Fix the tty modes and set reasonable defaults.
*/
@@ -138,8 +103,9 @@ static void tcinit(struct console *con)
struct termios lock;
int fd = con->fd;
#ifdef TIOCGLCKTRMIOS
- int i = (plymouth_command("--ping")) ? 20 : 0;
-
+ int i = (plymouth_command(MAGIC_PING)) ? PLYMOUTH_TERMIOS_FLAGS_DELAY : 0;
+ if (i)
+ plymouth_command(MAGIC_QUIT);
while (i-- > 0) {
/*
* With plymouth the termios flags become changed after this
@@ -150,8 +116,6 @@ static void tcinit(struct console *con)
break;
if (!lock.c_iflag && !lock.c_oflag && !lock.c_cflag && !lock.c_lflag)
break;
- if (i == 15 && plymouth_command("quit") != 0)
- break;
sleep(1);
}
memset(&lock, 0, sizeof(struct termios));