summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--abs/core/sysvinit/0001-simplify-writelog.patch126
-rw-r--r--abs/core/sysvinit/0002-remove-ansi-escape-codes-from-log-file.patch80
-rw-r--r--abs/core/sysvinit/PKGBUILD37
-rw-r--r--abs/core/sysvinit/__changelog33
-rw-r--r--abs/core/sysvinit/halt_init.patch (renamed from abs/core/sysvinit/halt-init.patch)9
-rw-r--r--abs/core/sysvinit/sysvinit.install3
6 files changed, 242 insertions, 46 deletions
diff --git a/abs/core/sysvinit/0001-simplify-writelog.patch b/abs/core/sysvinit/0001-simplify-writelog.patch
new file mode 100644
index 0000000..cc28f14
--- /dev/null
+++ b/abs/core/sysvinit/0001-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 1/2] 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
+
diff --git a/abs/core/sysvinit/0002-remove-ansi-escape-codes-from-log-file.patch b/abs/core/sysvinit/0002-remove-ansi-escape-codes-from-log-file.patch
new file mode 100644
index 0000000..89b3280
--- /dev/null
+++ b/abs/core/sysvinit/0002-remove-ansi-escape-codes-from-log-file.patch
@@ -0,0 +1,80 @@
+From 8d0022d9540112a92ce8d88c91c4ac10bad8c9ef Mon Sep 17 00:00:00 2001
+From: Florian Pritz <bluewind@xinu.at>
+Date: Sun, 24 Jun 2012 15:49:51 +0200
+Subject: [PATCH 2/2] remove ansi escape codes from log file
+
+References: https://en.wikipedia.org/wiki/ANSI_escape_code
+
+Signed-off-by: Florian Pritz <bluewind@xinu.at>
+---
+ bootlogd.c | 45 +++++++++++++++++++++++++++++++++++++++++++--
+ 1 file changed, 43 insertions(+), 2 deletions(-)
+
+diff --git a/bootlogd.c b/bootlogd.c
+index e36e261..88e610d 100644
+--- a/bootlogd.c
++++ b/bootlogd.c
+@@ -349,6 +349,7 @@ void writelog(FILE *fp, unsigned char *ptr, int len)
+ int dosync = 0;
+ int i;
+ static int first_run = 1;
++ static int inside_esc = 0;
+
+ for (i = 0; i < len; i++) {
+ int ignore = 0;
+@@ -364,10 +365,50 @@ void writelog(FILE *fp, unsigned char *ptr, int len)
+ first_run = 0;
+ }
+
+- if (*ptr == '\r') {
+- ignore = 1;
++ /* remove escape sequences, but do it in a way that allows us to stop
++ * in the middle in case the string was cut off */
++ if (inside_esc == 1) {
++ /* first '[' is special because if we encounter it again, it should be considered the final byte */
++ if (*ptr == '[') {
++ /* multi char sequence */
++ ignore = 1;
++ inside_esc = 2;
++ } else {
++ /* single char sequence */
++ if (*ptr >= 64 && *ptr <= 95) {
++ ignore = 1;
++ }
++ inside_esc = 0;
++ }
++ } else if (inside_esc == 2) {
++ switch (*ptr) {
++ case '0' ... '9': /* intermediate chars of escape sequence */
++ case ';':
++ case 32 ... 47:
++ if (inside_esc) {
++ ignore = 1;
++ }
++ break;
++ case 64 ... 126: /* final char of escape sequence */
++ if (inside_esc) {
++ ignore = 1;
++ inside_esc = 0;
++ }
++ break;
++ }
++ } else {
++ switch (*ptr) {
++ case '\r':
++ ignore = 1;
++ break;
++ case 27: /* ESC */
++ ignore = 1;
++ inside_esc = 1;
++ break;
++ }
+ }
+
++
+ if (!ignore) {
+ fwrite(ptr, sizeof(char), 1, fp);
+ }
+--
+1.7.10.4
+
diff --git a/abs/core/sysvinit/PKGBUILD b/abs/core/sysvinit/PKGBUILD
index c3ba701..27d5a09 100644
--- a/abs/core/sysvinit/PKGBUILD
+++ b/abs/core/sysvinit/PKGBUILD
@@ -1,6 +1,5 @@
-# $Id: PKGBUILD 92996 2010-10-02 19:26:38Z eric $
+# $Id: PKGBUILD 162726 2012-06-29 06:27:09Z bluewind $
# Maintainer: Eric Belanger <eric@archlinux.org>
-# Contributor: judd <jvinet@zeroflux.org>
pkgname=sysvinit
pkgver=2.88
@@ -10,33 +9,43 @@ arch=('i686' 'x86_64')
url="http://savannah.nongnu.org/projects/sysvinit"
license=('GPL')
groups=('base')
-depends=('shadow' 'util-linux' 'coreutils' 'glibc' 'awk' 'poweroff-scripts')
-source=(http://download.savannah.gnu.org/releases/sysvinit/${pkgname}-${pkgver}dsf.tar.bz2 halt-init.patch)
+depends=('util-linux' 'coreutils' 'glibc' 'awk' 'poweroff-scripts')
+install=sysvinit.install
+source=(http://download.savannah.gnu.org/releases/sysvinit/${pkgname}-${pkgver}dsf.tar.bz2
+ "0001-simplify-writelog.patch"
+ "0002-remove-ansi-escape-codes-from-log-file.patch"
+ "halt_init.patch")
build() {
cd "${srcdir}/${pkgname}-${pkgver}dsf"
- patch -p0 < ${srcdir}/halt-init.patch
- make || return 1
+
+ # FS#30005
+ patch -p1 -d "src" -i "${srcdir}/0001-simplify-writelog.patch"
+ patch -p1 -d "src" -i "${srcdir}/0002-remove-ansi-escape-codes-from-log-file.patch"
+ patch -p0 < ${srcdir}/halt_init.patch
+ make
}
package() {
cd "${srcdir}/${pkgname}-${pkgver}dsf"
make ROOT="${pkgdir}" install
+ # mountpoint is now provided by util-linux instead
+ cd "${pkgdir}"
+ rm bin/mountpoint
+ rm usr/share/man/man1/mountpoint.1
+
# Rename some stuff so it does not bigfoot changes needed for runit
cd "${pkgdir}/sbin"
rm -f reboot poweroff
- #These will be created in the poweroff-scripts post-install section
- #This should be removed when moving to 64 and we have no legacy to worry about
- #ln -s halt.init reboot.init
- #ln -s halt.init poweroff.init
-
-
-
mv halt halt.init
mv shutdown shutdown.init
+
+
}
md5sums=('6eda8a97b86e0a6f59dabbf25202aa6f'
- 'cd4c5767f63ca5881e3e1f1c4f10f896')
+ 'e3e82a3a38415518f52f78a622ef0262'
+ '04f0ab28340df08bb47d066669bc4519'
+ 'aec0de91c1d2f56e78393d400fd238a7')
diff --git a/abs/core/sysvinit/__changelog b/abs/core/sysvinit/__changelog
index f249199..0609292 100644
--- a/abs/core/sysvinit/__changelog
+++ b/abs/core/sysvinit/__changelog
@@ -1,30 +1,9 @@
-patch halt to work with runit
+halt_init.patch
+ # Rename some stuff so it does not bigfoot changes needed for runit
+ cd "${pkgdir}/sbin"
+ rm -f reboot poweroff
+ mv halt halt.init
+ mv shutdown shutdown.init
---- src/halt.c.orig 2008-08-30 17:25:02.000000000 +0000
-+++ src/halt.c 2008-08-30 18:10:29.000000000 +0000
-@@ -186,6 +186,14 @@
- if (!strcmp(progname, "reboot")) do_reboot = 1;
- if (!strcmp(progname, "poweroff")) do_poweroff = 1;
-
-+ if (!strcmp(progname, "reboot.init")) do_reboot = 1;
-+ if (!strcmp(progname, "poweroff.init")) do_poweroff = 1;
-+
-+ //fprintf(stderr, "%d: do_reboot \n ", do_reboot);
-+ //fprintf(stderr, "%d: do_poweroff \n ", do_poweroff);
-+ //fprintf(stderr, "%s: \n", progname);
-+ //do_nothing = 1;
-+
- /*
- * Get flags
- */
-# mjh 08-17-2011
-* mv halt to halt-init
-* mv shutdown shutdown-init
-* rm -f reboot poweroff
-* remove sysvinit.install
-
-#add -jm
-'poweroff-scripts' as a depend
-
diff --git a/abs/core/sysvinit/halt-init.patch b/abs/core/sysvinit/halt_init.patch
index 0885252..4f10932 100644
--- a/abs/core/sysvinit/halt-init.patch
+++ b/abs/core/sysvinit/halt_init.patch
@@ -1,12 +1,11 @@
--- src/halt.c.orig 2010-02-26 13:45:49.000000000 +0000
-+++ src/halt.c 2010-12-02 17:42:51.000000000 +0000
-@@ -198,6 +198,9 @@
++++ src/halt.c 2012-08-07 23:13:06.321378085 +0000
+@@ -197,6 +197,8 @@
+
if (!strcmp(progname, "reboot")) do_reboot = 1;
if (!strcmp(progname, "poweroff")) do_poweroff = 1;
-
+ if (!strcmp(progname, "reboot.init")) do_reboot = 1;
+ if (!strcmp(progname, "poweroff.init")) do_poweroff = 1;
-+
+
/*
* Get flags
- */
diff --git a/abs/core/sysvinit/sysvinit.install b/abs/core/sysvinit/sysvinit.install
new file mode 100644
index 0000000..2f0e62e
--- /dev/null
+++ b/abs/core/sysvinit/sysvinit.install
@@ -0,0 +1,3 @@
+post_upgrade() {
+ [ -x sbin/init ] && sbin/init u
+}