summaryrefslogtreecommitdiff
path: root/media-gfx
diff options
context:
space:
mode:
authorV3n3RiX <venerix@redcorelinux.org>2017-08-06 02:39:58 +0100
committerV3n3RiX <venerix@redcorelinux.org>2017-08-06 02:39:58 +0100
commita485d72cc6d5f0c97dc9572a4900181d22891bb8 (patch)
treeb5578c183624983311bd752aea33dc5cf63c7d6b /media-gfx
parentd0890f8e94a3770632fa931be19c12c9cffc6be9 (diff)
media-gfx/splashutils : import from gentoo tree, adjust it to modern openrc
Diffstat (limited to 'media-gfx')
-rw-r--r--media-gfx/splashutils/Manifest7
-rw-r--r--media-gfx/splashutils/files/splashutils-1.5.4.4-freetype-bz2.patch15
-rw-r--r--media-gfx/splashutils/files/splashutils-1.5.4.4-ft25.patch42
-rw-r--r--media-gfx/splashutils/files/splashutils-1.5.4.4-gentoo-typo-fix.patch19
-rw-r--r--media-gfx/splashutils/files/splashutils-1.5.4.4-multi-keyboard.patch381
-rw-r--r--media-gfx/splashutils/files/splashutils-1.5.4.4-no-la.patch12
-rw-r--r--media-gfx/splashutils/files/splashutils-1.5.4.4-openrc-run.patch9
-rw-r--r--media-gfx/splashutils/files/splashutils-1.5.4.4-sys-queue.patch8
-rw-r--r--media-gfx/splashutils/splashutils-1.5.4.4-r1706.ebuild240
9 files changed, 733 insertions, 0 deletions
diff --git a/media-gfx/splashutils/Manifest b/media-gfx/splashutils/Manifest
new file mode 100644
index 00000000..ac1a36e7
--- /dev/null
+++ b/media-gfx/splashutils/Manifest
@@ -0,0 +1,7 @@
+DIST freetype-2.3.12.tar.bz2 1453034 SHA256 3b96438f016a62b676c1d2089c00ca777f710d19f6aefa66ccf068d360db3e92 SHA512 becb0f138ee13181513d3f03b943f0a474e492cab151992fa78d0c84127819dc91ec6d2bd1528af7e111ab150b3a29104f2f7ab79650cebc35ce4d966b19f34b WHIRLPOOL 1a7363b8e1cc1b4597077e6cdf7e978b80cc76e1428124312d139ee81fe5247eed5ec0243352b721c28a25a179bceb901700d0766c1a5110b19f8fe53c303a89
+DIST jpegsrc.v8a.tar.gz 962018 SHA256 bf86a5eaafa79b5d60feb27bee08df2db4c9ca2fb40d453e7a2080f7663a713b SHA512 4020e82e16b99189b1a50bad18b09616775559740b94a988692aa33f9302d4b5abe3ccaa30895b49e6950fb3d9a830deeb7df750d128ec5c7e1844583db4524d WHIRLPOOL 46e0c98f30c8d975b85b8e86b69e9c5c64632f579502b1b3c54902706d7e08b86582a85b49a0d3bfffd03cd90946fbd20171324504a5ff521eb89e6ce11d568b
+DIST libpng-1.4.3.tar.bz2 658335 SHA256 2b022f39f4788505ad62a4b1f4a33286228d544719680da40f3626393ecde4a2 SHA512 aaa137ebc2312805d58caf19702d24a34ee81593d4250c4e807ce66ba7edb829926919cd0a2b0e5975421451c8eb6674798c06dbaf745175b16c9d3c92b63f61 WHIRLPOOL d383e01e6080166816991650183b47d15938aa269c0a85e234846b9c5a7ec04a1ba7620779b4ddae639ca64440772ce8dd1b3a596f6eb32124c4d6c55592fb0a
+DIST miscsplashutils-0.1.8.tar.bz2 91997 SHA256 38e8434c7266126477237c4d9e6cbeca152089ab33c14a7761089b7970f8d336 SHA512 fa017e264249feda45839030728e90c82f775354c3f2c29a88362938c4a31b19e6d61f967512305642f8b96575f4d756ba197e672a361760e40080c23ec0442a WHIRLPOOL c418ee425bf323fc0e00388be4547232207fd6cac10a2e8cafeef8c8aabcd014052307533bd015e61dc483ab45edd9fbd59a3005549b7bee4a4b90bf3297394a
+DIST splashutils-gentoo-1.0.17.tar.bz2 15814 SHA256 6877263d0b6f5a3532db0d6a531cd4d41fbc6c45a16c5d10050e9048ecc1af81 SHA512 75f1fbfdf165f571b0bf09235235827f370e1b940f1717c4faf5b223caba0b80f853a910ba492c776512aecfafa6e74fd964239bbc6cf412620143d5ffc74167 WHIRLPOOL de9e1ca86a87c169f0a2f7844ab9a68b29cc46c208daca4d13cf7d552b35c05b6e266d66724078cf1f6eea3d41496fdf4fd7b3219697b2032520ad2b9a5ec5c9
+DIST splashutils-lite-1.5.4.4.tar.bz2 441340 SHA256 bc0e22293d4550281d2289672da3acb42594c18a75b9d00ba75526e05162ec6b SHA512 1a78216a1de1fdccff514494d7301640e447c65466e1fe02428e5114485507f67fe4394094880d927d074a8ab2d9c786ba03f9fb0371eb7ab6ef4e3b01aa4613 WHIRLPOOL f861a1673fd9e1fe32e417da48be8c472c5c3cc06844eb0886a66b498ca38cb04a6e51708821eefe3e15f66004bb6a4ef76df7242643b34090035bffdf1f87d7
+DIST zlib-1.2.3.tar.bz2 425209 SHA256 e3b9950851a19904d642c4dec518623382cf4d2ac24f70a76510c944330d28ca SHA512 edae735960279d92acf58e1f4095c6392a7c2059b8f1d2c46648fc608a0fb06b392db2d073f4973f5762c034ea66596e769b95b3d26ad963a086b9b2d09825f2 WHIRLPOOL e874b123296f5d77daf60617501b30f4beebccb64b3910c2539f75f6c194a2cf4885dc7a3904bf790e1651120ec33b55c48e95970dd6bfd6c4d0a2ea48d7d0f4
diff --git a/media-gfx/splashutils/files/splashutils-1.5.4.4-freetype-bz2.patch b/media-gfx/splashutils/files/splashutils-1.5.4.4-freetype-bz2.patch
new file mode 100644
index 00000000..3438fd52
--- /dev/null
+++ b/media-gfx/splashutils/files/splashutils-1.5.4.4-freetype-bz2.patch
@@ -0,0 +1,15 @@
+=== modified file 'fbtruetype/Makefile'
+--- fbtruetype/Makefile 2011-10-01 14:10:17 +0000
++++ fbtruetype/Makefile 2011-10-01 14:15:02 +0000
+@@ -23,8 +23,8 @@
+ OBJECTS = fbtruetype.o messages.o console.o ttf.o luxisri.o
+
+ LDFLAGS += -L$(LIBDIR)
+-LIBSS = $(LIBDIR)/libfreetype.a $(LIBDIR)/libz.a -lm
+-LIBSD = -lfreetype -lm
++LIBSS = $(shell pkg-config freetype2 --libs --static) -lm
++LIBSD = $(shell pkg-config freetype2 --libs) -lm
+
+ CFLAGS += -I/usr/include/freetype2
+ COMPILE = $(CC) $(CFLAGS)
+
diff --git a/media-gfx/splashutils/files/splashutils-1.5.4.4-ft25.patch b/media-gfx/splashutils/files/splashutils-1.5.4.4-ft25.patch
new file mode 100644
index 00000000..b5194d54
--- /dev/null
+++ b/media-gfx/splashutils/files/splashutils-1.5.4.4-ft25.patch
@@ -0,0 +1,42 @@
+Gentoo-bug: https://bugs.gentoo.org/506124
+Signed-off-by: Lars Wendler (Polynomial-C)
+Modified-by: Sergey Popov (Pinkbyte)
+--- miscsplashutils-0.1.8/fbtruetype/ttf.c
++++ miscsplashutils-0.1.8/fbtruetype/ttf.c
+@@ -13,8 +13,8 @@
+ #include <ft2build.h>
+ #include FT_FREETYPE_H
+ /* #include <freetype/freetype.h> */
+-#include <freetype/ftoutln.h>
+-#include <freetype/ttnameid.h>
++#include FT_OUTLINE_H
++#include FT_TRUETYPE_IDS_H
+
+ #include "ttf.h"
+
+--- splashutils-1.5.4.4/src/ttf.c 2015-02-01 11:35:04.330595381 +0300
++++ splashutils-1.5.4.4/src/ttf.c 2015-02-01 11:35:24.287596342 +0300
+@@ -25,8 +25,8 @@
+ #include <assert.h>
+
+ #include <ft2build.h>
+-#include <freetype/ftoutln.h>
+-#include <freetype/ttnameid.h>
++#include FT_OUTLINE_H
++#include FT_TRUETYPE_IDS_H
+
+ #include "common.h"
+ #include "render.h"
+--- splashutils-1.5.4.4/src/ttf.h 2015-02-01 11:38:33.852605470 +0300
++++ splashutils-1.5.4.4/src/ttf.h 2015-02-01 11:38:52.504606368 +0300
+@@ -1,8 +1,8 @@
+ #ifndef _TTF_H
+ #define _TTF_H
+ #include <ft2build.h>
+-#include <freetype/ftoutln.h>
+-#include <freetype/ttnameid.h>
++#include FT_OUTLINE_H
++#include FT_TRUETYPE_IDS_H
+
+ #define CACHED_METRICS 0x10
+ #define CACHED_BITMAP 0x01
diff --git a/media-gfx/splashutils/files/splashutils-1.5.4.4-gentoo-typo-fix.patch b/media-gfx/splashutils/files/splashutils-1.5.4.4-gentoo-typo-fix.patch
new file mode 100644
index 00000000..4b8d5137
--- /dev/null
+++ b/media-gfx/splashutils/files/splashutils-1.5.4.4-gentoo-typo-fix.patch
@@ -0,0 +1,19 @@
+commit 74dda8291efae78f00bb781148c8fd4fccaeb764
+Author: MichaƂ Januszewski <spock@gentoo.org>
+Date: Tue Jun 14 23:23:33 2011 +0200
+
+ Fix typo in the Gentoo initscript.
+
+diff --git a/gentoo/init-fbcondecor b/gentoo/init-fbcondecor
+index b66f40a..ce921b6 100755
+--- a/gentoo/init-fbcondecor
++++ b/gentoo/init-fbcondecor
+@@ -12,7 +12,7 @@ start() {
+ splash_setup
+
+ if [ -z "${FBCONDECOR_TTYS}" ]; then
+- FBCONDECOR_TTYS=$(seq 1 "${rc_tty_number:-${RC_TTY_NUMBER}:-12}")
++ FBCONDECOR_TTYS=$(seq 1 "${rc_tty_number:-${RC_TTY_NUMBER:-12}}")
+ fi
+
+ local err=0
diff --git a/media-gfx/splashutils/files/splashutils-1.5.4.4-multi-keyboard.patch b/media-gfx/splashutils/files/splashutils-1.5.4.4-multi-keyboard.patch
new file mode 100644
index 00000000..23f15fd8
--- /dev/null
+++ b/media-gfx/splashutils/files/splashutils-1.5.4.4-multi-keyboard.patch
@@ -0,0 +1,381 @@
+diff -ru a/core/src/common.h b/core/src/common.h
+--- a/core/src/common.h 2013-01-11 06:35:35.000000000 +0200
++++ b/core/src/common.h 2013-01-11 06:34:08.000000000 +0200
+@@ -34,6 +34,10 @@
+ #define PATH_PROC FBSPLASH_DIR"/proc"
+ #endif
+
++/* Maximum number of keyboard connected to a machine.
++ * The number is big (8) to be on the safe side */
++#define MAX_KBDS 8
++
+ /* Useful short-named types */
+ typedef u_int8_t u8;
+ typedef u_int16_t u16;
+diff -ru a/core/src/daemon.c b/core/src/daemon.c
+--- a/core/src/daemon.c 2013-01-11 06:35:35.000000000 +0200
++++ b/core/src/daemon.c 2013-01-11 06:34:08.000000000 +0200
+@@ -20,6 +20,7 @@
+ #include <sys/ioctl.h>
+ #include <sys/wait.h>
+ #include <sys/mman.h>
++#include <sys/select.h>
+ #include <pthread.h>
+ #include <errno.h>
+ #include <dirent.h>
+@@ -29,6 +30,8 @@
+ #include "common.h"
+ #include "daemon.h"
+
++#define EV_BUF_SIZE 8
++
+ /* Threading structures */
+ pthread_mutex_t mtx_tty = PTHREAD_MUTEX_INITIALIZER;
+ pthread_mutex_t mtx_paint = PTHREAD_MUTEX_INITIALIZER;
+@@ -41,7 +44,8 @@
+ int ctty = CTTY_VERBOSE;
+
+ /* File descriptors */
+-int fd_evdev = -1;
++int fd_evdevs[MAX_KBDS];
++int evdev_count = 0;
+ #ifdef CONFIG_GPM
+ int fd_gpm = -1;
+ #endif
+@@ -51,7 +55,6 @@
+
+ /* Misc settings */
+ char *notify[2];
+-char *evdev = NULL;
+
+ /* Service list */
+ list svcs = { NULL, NULL };
+@@ -400,56 +403,83 @@
+ }
+ }
+
++__u16 get_ev_key_pressed(int fd_evdev, int ev_buf_size,
++ struct input_event *ev_buf) {
++ size_t rb;
++ int i;
++ rb = read(fd_evdev, ev_buf, sizeof(struct input_event) * ev_buf_size);
++ if (rb < (int) sizeof(struct input_event))
++ return 0;
++
++ for (i = 0; i < (int) (rb / sizeof(struct input_event)); i++) {
++ if (ev_buf[i].type != EV_KEY || ev_buf[i].value != 0)
++ continue;
++ return ev_buf[i].code;
++ }
++}
++
+ /*
+ * Event device monitor thread.
+ */
+ void* thf_switch_evdev(void *unused)
+ {
+- int i, h, oldstate;
+- size_t rb;
+- struct input_event ev[8];
++ int i, h, oldstate, nfds, retval, fd_evdev;
++ fd_set rfds;
++ struct input_event ev_buf[EV_BUF_SIZE];
++ __u16 key_pressed = 0;
+
+ while (1) {
+- rb = read(fd_evdev, ev, sizeof(struct input_event)*8);
+- if (rb < (int) sizeof(struct input_event))
+- continue;
++ nfds = 0, fd_evdev = -1;
++ FD_ZERO(&rfds);
++ for (i = 0;i < evdev_count;i++) {
++ FD_SET(fd_evdevs[i], &rfds);
++ nfds = max(nfds, fd_evdevs[i]);
++ }
+
+- for (i = 0; i < (int) (rb / sizeof(struct input_event)); i++) {
+- if (ev[i].type != EV_KEY || ev[i].value != 0)
+- continue;
++ nfds++;
+
+- switch (ev[i].code) {
+- case KEY_F2:
+- pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &oldstate);
+- pthread_mutex_lock(&mtx_paint);
+- if (ctty == CTTY_SILENT) {
+- h = config.tty_v;
+- } else {
+- h = config.tty_s;
++ retval = select(nfds, &rfds, NULL, NULL, NULL);
++ if (retval == -1)
++ perror("select()");
++ else if (retval) {
++ for (i = 0;i < evdev_count;i++) {
++ if (FD_ISSET(fd_evdevs[i], &rfds)) {
++ fd_evdev = fd_evdevs[i];
++ break;
+ }
+- pthread_mutex_unlock(&mtx_paint);
+- pthread_setcancelstate(oldstate, NULL);
++ }
++ key_pressed = get_ev_key_pressed(fd_evdev, EV_BUF_SIZE, ev_buf);
++ if (key_pressed == -1)
++ continue;
++ switch (key_pressed) {
++ case KEY_F2:
++ pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &oldstate);
++ pthread_mutex_lock(&mtx_paint);
++ h = (ctty == CTTY_SILENT) ? config.tty_v : config.tty_s;
++ pthread_mutex_unlock(&mtx_paint);
++ pthread_setcancelstate(oldstate, NULL);
++
++ /* Switch to the new tty. This ioctl has to be done on
++ * the silent tty. Sometimes init will mess with the
++ * settings of the verbose console which will prevent
++ * console switching from working properly.
++ *
++ * Don't worry about fd_tty[config.tty_s]
++ * not being protected by a mutex --
++ * this thread is always killed before any changes
++ * are made to fd_tty[config.tty_s].
++ */
++ ioctl(fd_tty[config.tty_s], VT_ACTIVATE, h);
++ break;
+
+- /* Switch to the new tty. This ioctl has to be done on
+- * the silent tty. Sometimes init will mess with the
+- * settings of the verbose console which will prevent
+- * console switching from working properly.
+- *
+- * Don't worry about fd_tty[config.tty_s] not being protected by a
+- * mutex -- this thread is always killed before any changes
+- * are made to fd_tty[config.tty_s].
+- */
+- ioctl(fd_tty[config.tty_s], VT_ACTIVATE, h);
+- break;
+-
+- case KEY_F3:
+- config.textbox_visible = !config.textbox_visible;
+- invalidate_textbox(theme, config.textbox_visible);
+- cmd_paint(NULL);
+- break;
++ case KEY_F3:
++ config.textbox_visible = !config.textbox_visible;
++ invalidate_textbox(theme, config.textbox_visible);
++ cmd_paint(NULL);
++ break;
+ }
+- }
+- }
++ } /* end of else if (retval) */
++ } /* end of while(1) */
+
+ pthread_exit(NULL);
+ }
+@@ -519,7 +549,7 @@
+
+ /* Do we have to start a monitor thread? */
+ if (update & UPD_MON) {
+- if (fd_evdev != -1) {
++ if (evdev_count >= 0) {
+ if (pthread_create(&th_switchmon, NULL, &thf_switch_evdev, NULL)) {
+ iprint(MSG_ERROR, "Evdev monitor thread creation failed.\n");
+ exit(3);
+diff -ru a/core/src/daemon.h b/core/src/daemon.h
+--- a/core/src/daemon.h 2013-01-11 06:35:35.000000000 +0200
++++ b/core/src/daemon.h 2013-01-11 06:34:08.000000000 +0200
+@@ -40,13 +40,13 @@
+ extern int fd_tty_s, fd_tty1, fd_tty0;
+
+ /*
+- * Event device on which the daemon listens for F2 keypresses.
+- * The proper device has to be detected by an external program and
++ * Event devices on which the daemon listens for F2 keypresses.
++ * The proper devices have to be detected by an external program and
+ * then enabled by sending an appropriate command to the splash
+ * daemon.
+ */
+-extern int fd_evdev;
+-extern char *evdev;
++extern int fd_evdevs[];
++extern int evdev_count;
+
+ #ifdef CONFIG_GPM
+ #include <gpm.h>
+diff -ru a/core/src/daemon_cmd.c b/core/src/daemon_cmd.c
+--- a/core/src/daemon_cmd.c 2013-01-11 06:35:35.000000000 +0200
++++ b/core/src/daemon_cmd.c 2013-01-11 06:34:08.000000000 +0200
+@@ -239,18 +239,35 @@
+ */
+ int cmd_set_event_dev(void **args)
+ {
+- if (evdev)
+- free(evdev);
+-
+- evdev = strdup(args[0]);
++ char *evdevs;
++ char *evdev;
++ int i, j, fd_evdev = -1;
+
+ pthread_cancel(th_switchmon);
++ for (i = 0;i < evdev_count;i++) {
++ close(fd_evdevs[i]);
++ }
++ evdevs = strdup(args[1]);
++ evdev_count = *(int*)args[0];
++ j = 0;
++ for (i = 0;i < evdev_count;i++, evdevs = NULL) {
++ evdev = strtok(evdevs, ",");
++ fd_evdev = open(evdev, O_RDONLY);
++ if (fd_evdev != -1) {
++ fd_evdevs[j] = fd_evdev;
++ j++;
++ } else {
++ perror("failed to open event device");
++ }
++ }
++ if (j == 0) { /* all input devices failed to open */
++ evdev_count = -1;
++ free(evdevs);
++ return -1;
++ }
+
+- if (fd_evdev != -1)
+- close(fd_evdev);
+-
+- fd_evdev = open(evdev, O_RDONLY);
+-
++ evdev_count = j;
++ free(evdevs);
+ switchmon_start(UPD_MON, config.tty_s);
+
+ return 0;
+@@ -524,8 +541,8 @@
+
+ { .cmd = "set event dev",
+ .handler = cmd_set_event_dev,
+- .args = 1,
+- .specs = "s"
++ .args = 2,
++ .specs = "ds"
+ },
+
+ { .cmd = "set message",
+@@ -628,7 +645,7 @@
+ continue;
+
+ for (j = 0; j < known_cmds[i].args; j++) {
+- for (; buf[k] == ' '; buf[k] = 0, k++);
++ for (; buf[k] == ' '; buf[k] = '\0', k++);
+ if (!buf[k]) {
+ args[j] = NULL;
+ continue;
+diff -ru a/core/src/libfbsplash.c b/core/src/libfbsplash.c
+--- a/core/src/libfbsplash.c 2013-01-11 06:35:35.000000000 +0200
++++ b/core/src/libfbsplash.c 2013-01-11 06:34:08.000000000 +0200
+@@ -588,6 +588,8 @@
+ return -1;
+ }
+
++#define EVDV_BUF_LEN 128
++
+ /**
+ * Try to set the event device for the splash daemon.
+ *
+@@ -595,10 +597,14 @@
+ */
+ int fbsplash_set_evdev(void)
+ {
+- char buf[128];
++ char buf[EVDV_BUF_LEN];
++ char evdev_devs[EVDV_BUF_LEN * MAX_KBDS];
+ FILE *fp;
+ int i, j;
+-
++ int kbd_count;
++ int max_chars, chars_left, dev_path_len;
++ char dev_path[] = PATH_DEV "/input/";
++ dev_path_len = strlen(dev_path);
+ char *evdev_cmds[] = {
+ "/bin/grep -Hsi keyboard " PATH_SYS "/class/input/input*/name | /bin/sed -e 's#.*input\\([0-9]*\\)/name.*#event\\1#'",
+ "/bin/grep -Hsi keyboard " PATH_SYS "/class/input/event*/device/driver/description | /bin/grep -o 'event[0-9]\\+'",
+@@ -608,22 +614,43 @@
+
+ /* Try to activate the event device interface so that F2 can
+ * be used to switch from verbose to silent. */
+- buf[0] = 0;
+- for (i = 0; i < sizeof(evdev_cmds)/sizeof(char*); i++) {
++ buf[0] = '\0';
++ kbd_count = 0;
++ max_chars = sizeof(evdev_devs) / sizeof(char*);
++ chars_left = max_chars - 1;
++ evdev_devs[0] = '\0';
++ for (i = 0; i < sizeof(evdev_cmds) / sizeof(char*); i++) {
+ fp = popen(evdev_cmds[i], "r");
+ if (fp) {
+- fgets(buf, 128, fp);
+- if ((j = strlen(buf)) > 0) {
+- if (buf[j-1] == '\n')
+- buf[j-1] = 0;
+- break;
++ while (fgets(buf, 128, fp) && kbd_count < MAX_KBDS) {
++ if ((j = strlen(buf)) > 0) {
++ if (buf[j-1] == '\n')
++ buf[j-1] = ',';
++ if (chars_left < (j + dev_path_len)) {
++ break;
++ }
++ kbd_count++;
++ strncat(evdev_devs, dev_path, chars_left);
++ chars_left -= dev_path_len;
++ strncat(evdev_devs, buf, chars_left);
++ chars_left -= j;
++ }
++ }
++ /* replace the last ',' with '\n' */
++ if (chars_left > 0 && evdev_devs[0] != '\0') {
++ j = strlen(evdev_devs);
++ if (j > 2) {
++ evdev_devs[j - 1] = '\n';
++ }
+ }
+ pclose(fp);
+ }
++ if (kbd_count > 0)
++ break;
+ }
+
+- if (buf[0] != 0) {
+- fbsplash_send("set event dev " PATH_DEV "/input/%s\n", buf);
++ if (evdev_devs[0] != '\0') {
++ fbsplash_send("set event dev %d %s", kbd_count, evdev_devs);
+ return 0;
+ } else {
+ return -1;
+@@ -661,6 +688,8 @@
+ return 0;
+ }
+
++#define MAX_CMD 2048
++
+ /**
+ * Send stuff to the splash daemon using the splash FIFO.
+ *
+@@ -668,7 +697,7 @@
+ */
+ int fbsplash_send(const char *fmt, ...)
+ {
+- char cmd[256];
++ char cmd[MAX_CMD];
+ va_list ap;
+
+ if (!fp_fifo) {
+@@ -690,7 +719,7 @@
+ }
+
+ va_start(ap, fmt);
+- vsnprintf(cmd, 256, fmt, ap);
++ vsnprintf(cmd, MAX_CMD, fmt, ap);
+ va_end(ap);
+
+ fprintf(fp_fifo, cmd);
diff --git a/media-gfx/splashutils/files/splashutils-1.5.4.4-no-la.patch b/media-gfx/splashutils/files/splashutils-1.5.4.4-no-la.patch
new file mode 100644
index 00000000..0dae2589
--- /dev/null
+++ b/media-gfx/splashutils/files/splashutils-1.5.4.4-no-la.patch
@@ -0,0 +1,12 @@
+--- splashutils-1.5.4.4/src/Makefile.am.orig 2011-06-13 01:43:39.000000000 +0400
++++ splashutils-1.5.4.4/src/Makefile.am 2015-08-09 23:37:23.191078543 +0300
+@@ -119,7 +119,7 @@
+ fbsplash.h
+ libfbsplashrender_la_CFLAGS = $(AM_CFLAGS)
+ libfbsplashrender_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(libfbsplashrender_version)
+-libfbsplashrender_la_LIBADD = libfbsplash.la
++libfbsplashrender_la_LIBADD =
+
+ libfbsplashrender_la_CFLAGS += $(JPEG_CFLAGS)
+ libfbsplashrender_la_LIBADD += $(JPEG_LIBS)
+
diff --git a/media-gfx/splashutils/files/splashutils-1.5.4.4-openrc-run.patch b/media-gfx/splashutils/files/splashutils-1.5.4.4-openrc-run.patch
new file mode 100644
index 00000000..7300936b
--- /dev/null
+++ b/media-gfx/splashutils/files/splashutils-1.5.4.4-openrc-run.patch
@@ -0,0 +1,9 @@
+diff -Nur a/init-fbcondecor b/init-fbcondecor
+--- a/init-fbcondecor 2011-06-12 22:45:59.000000000 +0100
++++ b/init-fbcondecor 2017-08-06 02:31:27.989502111 +0100
+@@ -1,4 +1,4 @@
+-#!/sbin/runscript
++#!/sbin/openrc-run
+ # Copyright 1999-2007 Gentoo Foundation
+ # Distributed under the terms of the GNU General Public License v2
+
diff --git a/media-gfx/splashutils/files/splashutils-1.5.4.4-sys-queue.patch b/media-gfx/splashutils/files/splashutils-1.5.4.4-sys-queue.patch
new file mode 100644
index 00000000..8ede7322
--- /dev/null
+++ b/media-gfx/splashutils/files/splashutils-1.5.4.4-sys-queue.patch
@@ -0,0 +1,8 @@
+--- splash.c 2011-06-13 04:45:59.000000000 +0700
++++ splash.c 2014-11-14 20:04:43.000000000 +0700
+@@ -21,4 +21,5 @@
+ #include <sys/wait.h>
+ #include <sys/ioctl.h>
++#include <sys/queue.h>
+ #include <linux/kd.h>
+ #include <linux/fb.h>
diff --git a/media-gfx/splashutils/splashutils-1.5.4.4-r1706.ebuild b/media-gfx/splashutils/splashutils-1.5.4.4-r1706.ebuild
new file mode 100644
index 00000000..a0e0c7b8
--- /dev/null
+++ b/media-gfx/splashutils/splashutils-1.5.4.4-r1706.ebuild
@@ -0,0 +1,240 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+inherit autotools eutils multilib toolchain-funcs
+
+MISCSPLASH="miscsplashutils-0.1.8"
+GENTOOSPLASH="splashutils-gentoo-1.0.17"
+V_JPEG="8a"
+V_PNG="1.4.3"
+V_ZLIB="1.2.3"
+V_FT="2.3.12"
+
+ZLIBSRC="libs/zlib-${V_ZLIB}"
+LPNGSRC="libs/libpng-${V_PNG}"
+JPEGSRC="libs/jpeg-${V_JPEG}"
+FT2SRC="libs/freetype-${V_FT}"
+
+RESTRICT="test"
+IUSE="hardened +png +truetype gpm fbcondecor"
+
+DESCRIPTION="Framebuffer splash utilities"
+HOMEPAGE="https://sourceforge.net/projects/fbsplash.berlios/"
+SRC_URI="
+ mirror://sourceforge/fbsplash.berlios/${PN}-lite-${PV}.tar.bz2
+ mirror://sourceforge/fbsplash.berlios/${GENTOOSPLASH}.tar.bz2
+ mirror://gentoo/${MISCSPLASH}.tar.bz2
+ mirror://sourceforge/libpng/libpng-${V_PNG}.tar.bz2
+ ftp://ftp.uu.net/graphics/jpeg/jpegsrc.v${V_JPEG}.tar.gz
+ mirror://sourceforge/freetype/freetype-${V_FT}.tar.bz2
+ http://www.gzip.org/zlib/zlib-${V_ZLIB}.tar.bz2
+"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~alpha amd64 ~arm ~ia64 ~ppc ~ppc64 ~sparc x86"
+
+RDEPEND="
+ gpm? ( sys-libs/gpm[static-libs(+)] )
+ truetype? (
+ >=media-libs/freetype-2[static-libs]
+ app-arch/bzip2[static-libs(+)]
+ sys-libs/zlib[static-libs(+)]
+ )
+ png? (
+ >=media-libs/libpng-1.4.3[static-libs]
+ sys-libs/zlib[static-libs(+)]
+ )
+ virtual/jpeg:0[static-libs]
+ app-arch/cpio
+ media-gfx/fbgrab
+ !sys-apps/lcdsplash
+ sys-apps/openrc"
+
+DEPEND="${RDEPEND}
+ >=dev-libs/klibc-1.5
+ virtual/pkgconfig
+"
+
+S="${WORKDIR}/${P/_/-}"
+SG="${WORKDIR}/${GENTOOSPLASH}"
+SM="${WORKDIR}/${MISCSPLASH}"
+
+pkg_setup() {
+ if use hardened; then
+ ewarn "Due to problems with klibc, it is currently impossible to compile splashutils"
+ ewarn "with 'hardened' GCC flags. As a workaround, the package will be compiled with"
+ ewarn "-fno-stack-protector. Hardened GCC features will not be used while building"
+ ewarn "the splash kernel helper."
+ fi
+}
+
+src_prepare() {
+ mv "${WORKDIR}"/{libpng-${V_PNG},jpeg-${V_JPEG},zlib-${V_ZLIB},freetype-${V_FT}} "${S}/libs"
+
+ # We need to delete the Makefile and let it be rebuilt when splashutils
+ # is being configured. Either that, or we end up with a segfaulting kernel
+ # helper.
+ rm "${S}/libs/zlib-${V_ZLIB}/Makefile"
+
+ cd "${SG}"
+ epatch "${FILESDIR}/${P}-gentoo-typo-fix.patch"
+ epatch "${FILESDIR}/${P}-sys-queue.patch"
+ epatch "${FILESDIR}/${P}-openrc-run.patch"
+
+ if use truetype ; then
+ cd "${SM}"
+ epatch "${FILESDIR}/${P}-freetype-bz2.patch"
+ cd "${WORKDIR}"
+ epatch "${FILESDIR}/${P}-ft25.patch"
+ fi
+
+ cd "${S}"
+ ln -sf "${S}/src" "${WORKDIR}/core"
+
+ #epatch "${FILESDIR}/${P}-bzip2.patch"
+ epatch "${FILESDIR}/${P}-multi-keyboard.patch"
+ # Bug #557126
+ epatch "${FILESDIR}/${P}-no-la.patch"
+
+ if ! tc-is-cross-compiler && \
+ has_version "sys-devel/gcc:$(gcc-version)[vanilla]" ; then
+ ewarn "Your GCC was built with the 'vanilla' flag set. If you can't compile"
+ ewarn "splashutils, you're on your own, as this configuration is not supported."
+ else
+ # This should make splashutils compile on systems with hardened GCC.
+ sed -e 's@K_CFLAGS =@K_CFLAGS = -fno-stack-protector@' -i "${S}/Makefile.in"
+ fi
+
+ if ! use truetype ; then
+ sed -i -e 's/fbtruetype kbd/kbd/' "${SM}/Makefile"
+ fi
+
+ # Latest version of klibc defined its own version of ferror, so there is
+ # not need for the hack in klibc_compat.h
+ if has_version ">=dev-libs/klibc-1.5.20"; then
+ echo > "libs/klibc_compat.h"
+ fi
+
+ rm -f m4/*
+ epatch_user
+ export PKG_CONFIG="pkg-config --static"
+ eautoreconf
+}
+
+src_configure() {
+ tc-export CC
+ cd "${SM}"
+ emake CC="${CC}" LIB=$(get_libdir) STRIP=true
+
+ cd "${S}"
+ econf \
+ $(use_with png) \
+ --without-mng \
+ $(use_with gpm) \
+ $(use_with truetype ttf) \
+ $(use_with truetype ttf-kernel) \
+ $(use_enable fbcondecor) \
+ --docdir=/usr/share/doc/${PF} \
+ --with-freetype2-src=${FT2SRC} \
+ --with-jpeg-src=${JPEGSRC} \
+ --with-lpng-src=${LPNGSRC} \
+ --with-zlib-src=${ZLIBSRC} \
+ --with-essential-libdir=/$(get_libdir)
+}
+
+src_compile() {
+ emake CC="${CC}" STRIP="true"
+
+ cd "${SG}"
+ emake LIB=$(get_libdir)
+}
+
+src_install() {
+ local LIB=$(get_libdir)
+
+ cd "${SM}"
+ emake DESTDIR="${D}" LIB=${LIB} install
+
+ cd "${S}"
+ emake DESTDIR="${D}" STRIP="true" install
+
+ mv "${D}"/usr/${LIB}/libfbsplash.so* "${D}"/${LIB}/
+ gen_usr_ldscript libfbsplash.so
+
+ echo 'CONFIG_PROTECT_MASK="/etc/splash"' > 99splash
+ doenvd 99splash
+
+ if use fbcondecor ; then
+ newinitd "${SG}"/init-fbcondecor fbcondecor
+ newconfd "${SG}"/fbcondecor.conf fbcondecor
+ fi
+ newconfd "${SG}"/splash.conf splash
+
+ insinto /usr/share/${PN}
+ doins "${SG}"/initrd.splash
+
+ insinto /etc/splash
+ doins "${SM}"/fbtruetype/luxisri.ttf
+
+ cd "${SG}"
+ make DESTDIR="${D}" LIB=${LIB} install
+ prune_libtool_files
+
+ sed -i -e "s#/lib/splash#/${LIB}/splash#" "${D}"/sbin/splash-functions.sh
+ keepdir /${LIB}/splash/{tmp,cache,bin,sys}
+ dosym /${LIB}/splash/bin/fbres /sbin/fbres
+}
+
+pkg_preinst() {
+ has_version "<${CATEGORY}/${PN}-1.0"
+ previous_less_than_1_0=$?
+
+ has_version "<${CATEGORY}/${PN}-1.5.3"
+ previous_less_than_1_5_3=$?
+}
+
+pkg_postinst() {
+ if has_version sys-fs/devfsd || ! has_version virtual/udev ; then
+ elog "This package has been designed with udev in mind. Other solutions, such as"
+ elog "devfs or a static /dev tree might work, but are generally discouraged and"
+ elog "not supported. If you decide to switch to udev, you might want to have a"
+ elog "look at 'The Gentoo udev Guide', which can be found at"
+ elog " https://wiki.gentoo.org/wiki/Udev"
+ elog ""
+ fi
+
+ if [[ $previous_less_than_1_0 = 0 ]] ; then
+ elog "Since you are upgrading from a pre-1.0 version, please make sure that you"
+ elog "rebuild your initrds. You can use the splash_geninitramfs script to do that."
+ elog ""
+ fi
+
+ if [[ $previous_less_than_1_5_3 = 0 ]] && ! use fbcondecor ; then
+ elog "Starting with splashutils-1.5.3, support for the fbcondecor kernel patch"
+ elog "is optional and dependent on the the 'fbcondecor' USE flag. If you wish"
+ elog "to use fbcondecor, run:"
+ elog " echo \"media-gfx/splashutils fbcondecor\" >> /etc/portage/package.use"
+ elog "and re-emerge splashutils."
+ fi
+
+ if ! test -f /proc/cmdline ||
+ ! egrep -q '(console=tty1|CONSOLE=/dev/tty1)' /proc/cmdline ; then
+ elog "It is required that you add 'console=tty1' to your kernel"
+ elog "command line parameters."
+ elog ""
+ elog "After these modifications, the relevant part of the kernel command"
+ elog "line might look like:"
+ elog " splash=silent,fadein,theme:emergence console=tty1"
+ elog ""
+ fi
+
+ if ! has_version 'media-gfx/splash-themes-livecd' &&
+ ! has_version 'media-gfx/splash-themes-gentoo'; then
+ elog "The sample Gentoo themes (emergence, gentoo) have been removed from the"
+ elog "core splashutils package. To get some themes you might want to emerge:"
+ elog " media-gfx/splash-themes-livecd"
+ elog " media-gfx/splash-themes-gentoo"
+ fi
+}