Hello community,

here is the log from the commit of package util-linux for openSUSE:Factory 
checked in at 2014-03-15 17:37:59
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/util-linux (Old)
 and      /work/SRC/openSUSE:Factory/.util-linux.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "util-linux"

Changes:
--------
--- /work/SRC/openSUSE:Factory/util-linux/util-linux.changes    2014-02-15 
17:23:06.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.util-linux.new/util-linux.changes       
2014-03-15 17:38:01.000000000 +0100
@@ -1,0 +2,9 @@
+Thu Mar  6 09:43:34 UTC 2014 - [email protected]
+
+- Modify the patches 
+  agetty-fooled-on-serial-line-due-plymouth.patch
+  sulogin-fooled-on-tty-line-due-plymouth.patch
+  to be able to disable plymouth if not already terminated due to
+  a hanging network service (bnc#866860)
+
+-------------------------------------------------------------------

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ agetty-fooled-on-serial-line-due-plymouth.patch ++++++
--- /var/tmp/diff_new_pack.5znZfO/_old  2014-03-15 17:38:02.000000000 +0100
+++ /var/tmp/diff_new_pack.5znZfO/_new  2014-03-15 17:38:02.000000000 +0100
@@ -3,12 +3,26 @@
 console as the flags are locked.
 
 ---
- agetty.c |   39 ++++++++++++++++++++++++++++++++-------
- 1 file changed, 32 insertions(+), 7 deletions(-)
+ agetty.c |   75 
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++------
+ 1 file changed, 68 insertions(+), 7 deletions(-)
 
 --- term-utils/agetty.c
-+++ term-utils/agetty.c        2014-01-10 13:05:50.411075349 +0000
-@@ -281,8 +281,9 @@ static void login_options_to_argv(char *
++++ term-utils/agetty.c        2014-03-05 17:52:32.574235616 +0000
+@@ -20,6 +20,7 @@
+ #include <sys/ioctl.h>
+ #include <sys/types.h>
+ #include <sys/stat.h>
++#include <sys/wait.h>
+ #include <fcntl.h>
+ #include <stdarg.h>
+ #include <ctype.h>
+@@ -276,13 +277,15 @@ static void log_warn (const char *, ...)
+ static ssize_t append(char *dest, size_t len, const char  *sep, const char 
*src);
+ static void check_username (const char* nm);
+ static void login_options_to_argv(char *argv[], int *argc, char *str, char 
*username);
++static int plymouth_command(const char* arg);
+ 
+ /* Fake hostname for ut_host specified on command line. */
  static char *fakehost;
  
  #ifdef DEBUGGING
@@ -19,7 +33,7 @@
  # endif
  # define debug(s) do { fprintf(dbf,s); fflush(dbf); } while (0)
  FILE *dbf;
-@@ -320,8 +321,12 @@ int main(int argc, char **argv)
+@@ -320,8 +323,12 @@ int main(int argc, char **argv)
  
  #ifdef DEBUGGING
        dbf = fopen(DEBUG_OUTPUT, "w");
@@ -33,7 +47,7 @@
  #endif                                /* DEBUGGING */
  
        /* Parse command-line arguments. */
-@@ -473,7 +478,6 @@ int main(int argc, char **argv)
+@@ -473,7 +480,6 @@ int main(int argc, char **argv)
        if (options.osrelease)
                free(options.osrelease);
  #ifdef DEBUGGING
@@ -41,14 +55,14 @@
        if (close_stream(dbf) != 0)
                log_err("write failed: %s", DEBUG_OUTPUT);
  #endif
-@@ -1090,6 +1094,25 @@ static void termio_init(struct options *
+@@ -1104,6 +1110,27 @@ static void termio_init(struct options *
  {
        speed_t ispeed, ospeed;
        struct winsize ws;
 +      struct termios lock;
-+      int i;
++      int i =  (plymouth_command("--ping") == 0) ? 30 : 0;
 +
-+      for (i = 0; i < 20; i++) {
++      while (i-- > 0) {
 +              /*
 +               * Even with TTYReset=no it seems with systemd or plymouth
 +               * the termios flags become changed from under the first
@@ -60,14 +74,16 @@
 +              if (!lock.c_iflag && !lock.c_oflag && !lock.c_cflag && 
!lock.c_lflag)
 +                      break;
 +              debug("termios locked\n");
++              if (i == 15 && plymouth_command("quit") != 0)
++                      break;
 +              sleep(1);
 +      }
-+       memset(&lock, 0, sizeof(struct termios));
-+       ioctl(STDIN_FILENO, TIOCSLCKTRMIOS, &lock);
++      memset(&lock, 0, sizeof(struct termios));
++      ioctl(STDIN_FILENO, TIOCSLCKTRMIOS, &lock);
  
        if (op->flags & F_VCONSOLE) {
  #if defined(IUTF8) && defined(KDGKBMODE)
-@@ -1154,9 +1177,6 @@ static void termio_init(struct options *
+@@ -1168,9 +1195,6 @@ static void termio_init(struct options *
         * later on.
         */
  
@@ -77,7 +93,7 @@
  #ifdef IUTF8
        tp->c_iflag = tp->c_iflag & IUTF8;
        if (tp->c_iflag & IUTF8)
-@@ -1216,8 +1236,11 @@ static void termio_init(struct options *
+@@ -1230,8 +1254,11 @@ static void termio_init(struct options *
        if (op->flags & F_RTSCTS)
                tp->c_cflag |= CRTSCTS;
  #endif
@@ -90,7 +106,7 @@
  
        /* Go to blocking input even in local mode. */
        fcntl(STDIN_FILENO, F_SETFL,
-@@ -1238,6 +1261,10 @@ static void reset_vc(const struct option
+@@ -1252,6 +1279,10 @@ static void reset_vc(const struct option
  
        if (tcsetattr(STDIN_FILENO, TCSADRAIN, tp))
                log_warn(_("setting terminal attributes failed: %m"));
@@ -101,3 +117,37 @@
  }
  
  /* Extract baud rate from modem status message. */
+@@ -2273,3 +2304,33 @@ err:
+       log_err(_("checkname failed: %m"));
+ }
+ 
++/*
++ * 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);
++              dup2(fd, 0);
++              dup2(fd, 1);
++              dup2(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;
++}

++++++ sulogin-fooled-on-tty-line-due-plymouth.patch ++++++
--- /var/tmp/diff_new_pack.5znZfO/_old  2014-03-15 17:38:02.000000000 +0100
+++ /var/tmp/diff_new_pack.5znZfO/_new  2014-03-15 17:38:02.000000000 +0100
@@ -1,20 +1,57 @@
 Make sure that plymouth does not break sulogin.
 
 ---
- sulogin.c |   18 +++++++++++++++++-
- 1 file changed, 17 insertions(+), 1 deletion(-)
+ sulogin.c |   51 ++++++++++++++++++++++++++++++++++++++++++++++++++-
+ 1 file changed, 50 insertions(+), 1 deletion(-)
 
 --- login-utils/sulogin.c
-+++ login-utils/sulogin.c      2014-02-06 09:39:57.726236116 +0000
-@@ -83,7 +83,23 @@ static void tcinit(struct console *con)
++++ login-utils/sulogin.c      2014-03-05 17:42:40.442235465 +0000
+@@ -77,13 +77,62 @@ static volatile sig_atomic_t sigchild;
+ #endif
+ 
+ /*
++ * 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);
++              dup2(fd, 0);
++              dup2(fd, 1);
++              dup2(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;
++}
++
++/*
+  * Fix the tty modes and set reasonable defaults.
+  */
+ static void tcinit(struct console *con)
  {
        int mode = 0, flags = 0;
        struct termios *tio = &con->tio;
 -      int fd = con->fd;
 +      struct termios lock;
-+      int i, fd = con->fd;
++      int fd = con->fd, i = (plymouth_command("--ping")) ? 20 : 0;
 +
-+      for (i = 0; i < 5; i++) {
++      while (i-- > 0) {
 +              /*
 +               * With plymouth the termios flags become changed after this
 +               * function had changed the termios.
@@ -24,6 +61,8 @@
 +                      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));


-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to