diff options
author | root <root@rshg054.dnsready.net> | 2012-06-17 00:03:04 +0000 |
---|---|---|
committer | root <root@rshg054.dnsready.net> | 2012-06-17 00:03:04 +0000 |
commit | 608992f17d5473f8270f0779d3b9bcfe8fbdfa1c (patch) | |
tree | 01a9cf1b9b9ca1fd37e5c0a7f67f077633459f02 /testing/sysvinit | |
parent | f186b4cb8562b60dd4e1f5331f248caf547c8839 (diff) |
Sun Jun 17 00:03:04 UTC 2012
Diffstat (limited to 'testing/sysvinit')
-rw-r--r-- | testing/sysvinit/PKGBUILD | 10 | ||||
-rw-r--r-- | testing/sysvinit/simplify-writelog.patch | 126 |
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 + |