summaryrefslogtreecommitdiff
path: root/testing/sysvinit
diff options
context:
space:
mode:
authorroot <root@rshg054.dnsready.net>2012-06-17 00:03:04 +0000
committerroot <root@rshg054.dnsready.net>2012-06-17 00:03:04 +0000
commit608992f17d5473f8270f0779d3b9bcfe8fbdfa1c (patch)
tree01a9cf1b9b9ca1fd37e5c0a7f67f077633459f02 /testing/sysvinit
parentf186b4cb8562b60dd4e1f5331f248caf547c8839 (diff)
Sun Jun 17 00:03:04 UTC 2012
Diffstat (limited to 'testing/sysvinit')
-rw-r--r--testing/sysvinit/PKGBUILD10
-rw-r--r--testing/sysvinit/simplify-writelog.patch126
2 files changed, 131 insertions, 5 deletions
diff --git a/testing/sysvinit/PKGBUILD b/testing/sysvinit/PKGBUILD
index bbf2a6972..1355d31b4 100644
--- a/testing/sysvinit/PKGBUILD
+++ b/testing/sysvinit/PKGBUILD
@@ -1,9 +1,9 @@
-# $Id: PKGBUILD 161641 2012-06-12 20:53:23Z bluewind $
+# $Id: PKGBUILD 161862 2012-06-15 23:09:01Z bluewind $
# Maintainer: Eric Belanger <eric@archlinux.org>
pkgname=sysvinit
pkgver=2.88
-pkgrel=4
+pkgrel=5
pkgdesc="Linux System V Init"
arch=('i686' 'x86_64')
url="http://savannah.nongnu.org/projects/sysvinit"
@@ -12,15 +12,15 @@ groups=('base')
depends=('util-linux' 'coreutils' 'glibc' 'awk')
install=sysvinit.install
source=(http://download.savannah.gnu.org/releases/sysvinit/${pkgname}-${pkgver}dsf.tar.bz2
- "Remove-handling-of-special-chars-fix-per-line-buffer.patch")
+ "simplify-writelog.patch")
sha1sums=('f2ca149df1314a91f3007cccd7a0aa47d990de26'
- 'cb1180009cc2ff3ba1bc4fa5609f3d279fed9d0e')
+ 'd970e44e8b5574b3b6be709c7682845a974ed1ed')
build() {
cd "${srcdir}/${pkgname}-${pkgver}dsf"
# FS#30005
- patch -p1 -d "src" -i "${srcdir}/Remove-handling-of-special-chars-fix-per-line-buffer.patch"
+ patch -p1 -d "src" -i "${srcdir}/simplify-writelog.patch"
make
}
diff --git a/testing/sysvinit/simplify-writelog.patch b/testing/sysvinit/simplify-writelog.patch
new file mode 100644
index 000000000..272a88980
--- /dev/null
+++ b/testing/sysvinit/simplify-writelog.patch
@@ -0,0 +1,126 @@
+From 5577552eb1344ddd661893564b1e628f8edcf13d Mon Sep 17 00:00:00 2001
+From: Florian Pritz <bluewind@xinu.at>
+Date: Fri, 15 Jun 2012 16:41:52 +0200
+Subject: [PATCH] simplify writelog()
+
+All we do is prepend the date and remove \r. We don't handle color
+codes, but the user can just cat the log file in a terminal and it will
+interpret the codes correctly.
+
+Signed-off-by: Florian Pritz <bluewind@xinu.at>
+---
+ bootlogd.c | 76 +++++++++++++++++-------------------------------------------
+ 1 file changed, 21 insertions(+), 55 deletions(-)
+
+diff --git a/bootlogd.c b/bootlogd.c
+index 570d382..e36e261 100644
+--- a/bootlogd.c
++++ b/bootlogd.c
+@@ -68,11 +68,6 @@ int didnl = 1;
+ int createlogfile = 0;
+ int syncalot = 0;
+
+-struct line {
+- char buf[256];
+- int pos;
+-} line;
+-
+ /*
+ * Console devices as listed on the kernel command line and
+ * the mapping to actual devices in /dev
+@@ -351,63 +346,34 @@ int consolename(char *res, int rlen)
+ */
+ void writelog(FILE *fp, unsigned char *ptr, int len)
+ {
+- time_t t;
+- char *s;
+- char tmp[8];
+- int olen = len;
+- int dosync = 0;
+- int tlen;
+-
+- while (len > 0) {
+- tmp[0] = 0;
+- if (didnl) {
++ int dosync = 0;
++ int i;
++ static int first_run = 1;
++
++ for (i = 0; i < len; i++) {
++ int ignore = 0;
++
++ /* prepend date to every line */
++ if (*(ptr-1) == '\n' || first_run) {
++ time_t t;
++ char *s;
+ time(&t);
+ s = ctime(&t);
+ fprintf(fp, "%.24s: ", s);
+- didnl = 0;
++ dosync = 1;
++ first_run = 0;
+ }
+- switch (*ptr) {
+- case 27: /* ESC */
+- strcpy(tmp, "^[");
+- break;
+- case '\r':
+- line.pos = 0;
+- break;
+- case 8: /* ^H */
+- if (line.pos > 0) line.pos--;
+- break;
+- case '\n':
+- didnl = 1;
+- dosync = 1;
+- break;
+- case '\t':
+- line.pos += (line.pos / 8 + 1) * 8;
+- if (line.pos >= (int)sizeof(line.buf))
+- line.pos = sizeof(line.buf) - 1;
+- break;
+- case 32 ... 127:
+- case 161 ... 255:
+- tmp[0] = *ptr;
+- tmp[1] = 0;
+- break;
+- default:
+- sprintf(tmp, "\\%03o", *ptr);
+- break;
+- }
+- ptr++;
+- len--;
+
+- tlen = strlen(tmp);
+- if (tlen && (line.pos + tlen < (int)sizeof(line.buf))) {
+- memcpy(line.buf + line.pos, tmp, tlen);
+- line.pos += tlen;
++ if (*ptr == '\r') {
++ ignore = 1;
+ }
+- if (didnl) {
+- fprintf(fp, "%s\n", line.buf);
+- memset(&line, 0, sizeof(line));
++
++ if (!ignore) {
++ fwrite(ptr, sizeof(char), 1, fp);
+ }
+- }
+
++ ptr++;
++ }
+ if (dosync) {
+ fflush(fp);
+ if (syncalot) {
+@@ -415,7 +381,7 @@ void writelog(FILE *fp, unsigned char *ptr, int len)
+ }
+ }
+
+- outptr += olen;
++ outptr += len;
+ if (outptr >= endptr)
+ outptr = ringbuf;
+
+--
+1.7.10.4
+