From 05e0c703d243dba8249be4d9fe00cfa53fe0c2399e8d72b995bbffa31189171b Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Thu, 16 Dec 2010 12:59:25 +0000 Subject: [PATCH] Accepting request 56197 from home:seife:testing OBS-URL: https://build.opensuse.org/request/show/56197 OBS-URL: https://build.opensuse.org/package/show/Base:System/systemd?expand=0&rev=101 --- ...splash-handling-for-password-dialogs.patch | 61 +++++++++++++++++++ systemd.changes | 6 ++ systemd.spec | 2 + 3 files changed, 69 insertions(+) create mode 100644 0001-Add-bootsplash-handling-for-password-dialogs.patch diff --git a/0001-Add-bootsplash-handling-for-password-dialogs.patch b/0001-Add-bootsplash-handling-for-password-dialogs.patch new file mode 100644 index 00000000..a3907589 --- /dev/null +++ b/0001-Add-bootsplash-handling-for-password-dialogs.patch @@ -0,0 +1,61 @@ +From 81eca00461968aac09f9e8535f4327282698b495 Mon Sep 17 00:00:00 2001 +From: Stefan Seyfried +Date: Thu, 16 Dec 2010 11:30:17 +0100 +Subject: [PATCH] Add bootsplash handling for password dialogs + +openSUSE uses bootsplash.org, so add a crude handling for setting the +splash screen to verbose when a password is asked... +--- + src/ask-password-api.c | 22 ++++++++++++++++++++++ + 1 files changed, 22 insertions(+), 0 deletions(-) + +diff --git a/src/ask-password-api.c b/src/ask-password-api.c +index 9f7023e..2023441 100644 +--- a/src/ask-password-api.c ++++ b/src/ask-password-api.c +@@ -47,6 +47,9 @@ int ask_password_tty( + int r, ttyfd = -1, notify = -1; + struct pollfd pollfd[2]; + bool reset_tty = false; ++ bool splash_silent = false; ++ FILE *procsplash = NULL; ++ char *line = NULL; + enum { + POLL_TTY, + POLL_INOTIFY +@@ -90,6 +93,19 @@ int ask_password_tty( + } + + reset_tty = true; ++ procsplash = fopen("/proc/splash", "r+"); ++ if (procsplash) { ++ getline(&line, &p, procsplash); ++ p = 0; /* reset, just to make sure */ ++ if (line && ++ (strstr(line, "on\n") == line + strlen(line) - 3) && ++ (strstr(line, "silent") != NULL)) { ++ splash_silent = true; ++ rewind(procsplash); ++ fprintf(procsplash, "verbose\n"); ++ fflush(procsplash); ++ } ++ } + } + + zero(pollfd); +@@ -201,6 +217,12 @@ finish: + close_nointr_nofail(ttyfd); + } + ++ if (splash_silent) { /* only set if procsplash != NULL */ ++ rewind(procsplash); ++ fprintf(procsplash, "silent\n"); ++ fclose(procsplash); ++ } ++ + return r; + } + +-- +1.7.3.1 + diff --git a/systemd.changes b/systemd.changes index bf5b5e83..c524deb9 100644 --- a/systemd.changes +++ b/systemd.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Thu Dec 16 12:49:00 UTC 2010 - seife@opensuse.org + +- add bootsplash handling patch to be able to enter e.g. + crypto passphrases (bnc#659885) + ------------------------------------------------------------------- Thu Dec 9 18:54:15 CET 2010 - kay.sievers@novell.com diff --git a/systemd.spec b/systemd.spec index 16a5a1d3..5c47c886 100644 --- a/systemd.spec +++ b/systemd.spec @@ -43,6 +43,7 @@ Requires: fsck-with-dev-lock Conflicts: mkinitrd < 2.6.0-5 Source0: http://www.freedesktop.org/software/systemd/releases/%{name}-%{version}.tar.bz2 Source1: systemd-rpmlintrc +Patch42: 0001-Add-bootsplash-handling-for-password-dialogs.patch %description Systemd is a system and service manager, compatible with SysV and LSB @@ -77,6 +78,7 @@ Drop-in replacement of System V init tools. %prep %setup -q +%patch42 -p1 %build # prevent pre-generated and distributed files from re-building