From 30e316c22ff1a8dc9693a197c0a7274abec695fac678afe1954f124de3b86bf0 Mon Sep 17 00:00:00 2001 From: OBS User unknown Date: Mon, 29 Sep 2008 17:30:42 +0000 Subject: [PATCH] OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/e2fsprogs?expand=0&rev=36 --- e2fsprogs-1.41.1-splash_support.patch | 187 ++++++++++++++++++++++++++ e2fsprogs.changes | 5 + e2fsprogs.spec | 6 +- 3 files changed, 197 insertions(+), 1 deletion(-) create mode 100644 e2fsprogs-1.41.1-splash_support.patch diff --git a/e2fsprogs-1.41.1-splash_support.patch b/e2fsprogs-1.41.1-splash_support.patch new file mode 100644 index 0000000..9cc6237 --- /dev/null +++ b/e2fsprogs-1.41.1-splash_support.patch @@ -0,0 +1,187 @@ +Index: e2fsprogs-1.41.1/e2fsck/splash.c +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ e2fsprogs-1.41.1/e2fsck/splash.c 2008-09-29 16:42:50.000000000 +0200 +@@ -0,0 +1,101 @@ ++/* ++ * add support for switching the splash screen on boot ++ */ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include "splash.h" ++ ++static int verbose = 0; ++ ++/* nop implementation ++ */ ++static void nop(void) ++{ ++} ++ ++static struct splash_ops nop_ops = { ++ .splash_on = nop, ++ .splash_off = nop ++}; ++ ++/* ++ * bootsplash implementation ++ */ ++#define BOOTSPLASH_CTL "/proc/splash" ++ ++static int bootsplash_exists(void) ++{ ++ struct stat sb; ++ ++ if (stat(BOOTSPLASH_CTL, &sb) == -1) ++ return 0; ++ ++ if (S_ISREG(sb.st_mode)) ++ return 1; ++ ++ return 0; ++} ++ ++/* write msg to splash control, must be \0 terminated */ ++static void bootsplash_msg(const char *msg, size_t size) ++{ ++ int fd; ++ size_t written; ++ ++ fd = open(BOOTSPLASH_CTL, O_WRONLY); ++ if (fd == -1) { ++ if (verbose) ++ printf("cannot open %s\n", BOOTSPLASH_CTL); ++ return; ++ } ++ ++ written = write(fd, msg, size); ++ if (written != size) { ++ if (verbose) ++ printf("size = %i, written = %i\n", size, written); ++ } ++ (void)write(fd, "\n", 1); ++ ++ close(fd); ++} ++ ++static void bootsplash_on(void) ++{ ++ if (verbose) ++ printf("setting bootsplash silent\n"); ++ bootsplash_msg("silent", 6); ++} ++ ++static void bootsplash_off(void) ++{ ++ if (verbose) ++ printf("setting bootsplash verbose\n"); ++ bootsplash_msg("verbose", 7); ++} ++ ++static struct splash_ops bootsplash_ops = { ++ .splash_on = bootsplash_on, ++ .splash_off = bootsplash_off ++}; ++ ++/* ++ * Initialisation ++ */ ++void splash_init(struct splash_ops **ops) ++{ ++ if (bootsplash_exists()) ++ *ops = &bootsplash_ops; ++ else ++ *ops = &nop_ops; ++} ++ ++void splash_set_verbose(void) ++{ ++ verbose = 1; ++} ++ +Index: e2fsprogs-1.41.1/e2fsck/splash.h +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ e2fsprogs-1.41.1/e2fsck/splash.h 2008-09-29 16:42:23.000000000 +0200 +@@ -0,0 +1,13 @@ ++#ifndef _SPLASH_H ++#define _SPLASH_H ++ ++struct splash_ops { ++ void (*splash_on)(void); ++ void (*splash_off)(void); ++}; ++ ++void splash_init(struct splash_ops **ops); ++void splash_set_verbose(void); ++ ++#endif /* _SPLASH_H */ ++ +Index: e2fsprogs-1.41.1/e2fsck/Makefile.in +=================================================================== +--- e2fsprogs-1.41.1.orig/e2fsck/Makefile.in 2008-09-29 16:28:15.000000000 +0200 ++++ e2fsprogs-1.41.1/e2fsck/Makefile.in 2008-09-29 16:37:41.000000000 +0200 +@@ -63,7 +63,7 @@ COMPILE_ET=$(top_builddir)/lib/et/compil + OBJS= crc32.o dict.o unix.o e2fsck.o super.o pass1.o pass1b.o pass2.o \ + pass3.o pass4.o pass5.o journal.o badblocks.o util.o dirinfo.o \ + dx_dirinfo.o ehandler.o problem.o message.o recovery.o region.o \ +- revoke.o ea_refcount.o rehash.o profile.o prof_err.o $(MTRACE_OBJ) ++ revoke.o ea_refcount.o rehash.o profile.o prof_err.o splash.o $(MTRACE_OBJ) + + PROFILED_OBJS= profiled/dict.o profiled/unix.o profiled/e2fsck.o \ + profiled/super.o profiled/pass1.o profiled/pass1b.o \ +@@ -101,6 +101,7 @@ SRCS= $(srcdir)/e2fsck.c \ + $(srcdir)/rehash.c \ + $(srcdir)/region.c \ + $(srcdir)/profile.c \ ++ $(srcdir)/splash.c \ + prof_err.c \ + $(MTRACE_SRC) + +@@ -470,3 +471,5 @@ region.o: $(srcdir)/region.c $(srcdir)/e + profile.o: $(srcdir)/profile.c $(top_srcdir)/lib/et/com_err.h \ + $(srcdir)/profile.h prof_err.h + prof_err.o: prof_err.c ++splash.o: splash.c splash.h ++ +Index: e2fsprogs-1.41.1/e2fsck/unix.c +=================================================================== +--- e2fsprogs-1.41.1.orig/e2fsck/unix.c 2008-09-01 17:34:28.000000000 +0200 ++++ e2fsprogs-1.41.1/e2fsck/unix.c 2008-09-29 16:28:15.000000000 +0200 +@@ -53,6 +53,7 @@ extern int optind; + #include "e2p/e2p.h" + #include "e2fsck.h" + #include "problem.h" ++#include "splash.h" + #include "../version.h" + + /* Command line options */ +@@ -895,6 +896,7 @@ int main (int argc, char *argv[]) + int sysval, sys_page_size = 4096; + __u32 features[3]; + char *cp; ++ struct splash_ops *sops; + + clear_problem_context(&pctx); + #ifdef MTRACE +@@ -924,6 +926,7 @@ int main (int argc, char *argv[]) + exit(FSCK_ERROR); + } + reserve_stdio_fds(); ++ splash_init(&sops); + + #ifdef RESOURCE_TRACK + init_resource_track(&ctx->global_rtrack, NULL); +@@ -1242,6 +1245,7 @@ print_unsupp_features: + if (ctx->flags & E2F_FLAG_SIGNAL_MASK) + fatal_error(ctx, 0); + check_if_skip(ctx); ++ sops->splash_off(); + if (bad_blocks_file) + read_bad_blocks_file(ctx, bad_blocks_file, replace_bad_blocks); + else if (cflag) diff --git a/e2fsprogs.changes b/e2fsprogs.changes index 402256e..3e121c9 100644 --- a/e2fsprogs.changes +++ b/e2fsprogs.changes @@ -1,3 +1,8 @@ +------------------------------------------------------------------- +Mon Sep 29 18:28:40 CEST 2008 - mkoenig@suse.de + +- e2fsck: shut off splash screen when check is needed [bnc#237283] + ------------------------------------------------------------------- Mon Sep 15 15:23:43 CEST 2008 - mkoenig@suse.de diff --git a/e2fsprogs.spec b/e2fsprogs.spec index eb0fa61..1787014 100644 --- a/e2fsprogs.spec +++ b/e2fsprogs.spec @@ -27,7 +27,7 @@ Supplements: filesystem(ext2) filesystem(ext3) PreReq: %install_info_prereq AutoReqProv: on Version: 1.41.1 -Release: 8 +Release: 9 Summary: Utilities for the Second Extended File System Url: http://e2fsprogs.sourceforge.net Source: %{name}-%{version}.tar.bz2 @@ -43,6 +43,7 @@ Patch2: e2fsprogs-base_devt.patch Patch3: e2fsprogs-libvolume_id-support.patch Patch5: e2fsprogs-1.40.4-uuidd_pid_path.patch Patch6: e2fsprogs-1.41.1-link_fix.patch +Patch7: e2fsprogs-1.41.1-splash_support.patch # libcom_err patches # 66534 - [SL 10.0] et_list handling of krb5 and libcom_err.so.2 conflict Patch31: libcom_err-no-init_error_table.patch @@ -245,6 +246,7 @@ Authors: %patch3 -p1 %patch5 -p1 %patch6 -p1 +%patch7 -p1 # libcom_err patches %patch31 -p1 %patch32 -p1 @@ -466,6 +468,8 @@ rm -rf $RPM_BUILD_ROOT %{_mandir}/man3/com_err.3.gz %changelog +* Mon Sep 29 2008 mkoenig@suse.de +- e2fsck: shut off splash screen when check is needed [bnc#237283] * Mon Sep 15 2008 mkoenig@suse.de - remove recommends of uuid-runtime from libuuid [bnc#426278] - move uuid hints README.SUSE.uuidd to uuid-runtime package