diff options
-rw-r--r-- | sysvinit/0001-do-not-build-sulogin-on-archlinux-it-is-provided-by-.patch | 35 | ||||
-rw-r--r-- | sysvinit/0001-simplify-writelog.patch | 126 | ||||
-rw-r--r-- | sysvinit/0002-remove-ansi-escape-codes-from-log-file.patch | 80 | ||||
-rw-r--r-- | sysvinit/PKGBUILD | 38 |
4 files changed, 15 insertions, 264 deletions
diff --git a/sysvinit/0001-do-not-build-sulogin-on-archlinux-it-is-provided-by-.patch b/sysvinit/0001-do-not-build-sulogin-on-archlinux-it-is-provided-by-.patch deleted file mode 100644 index 4a7392f..0000000 --- a/sysvinit/0001-do-not-build-sulogin-on-archlinux-it-is-provided-by-.patch +++ /dev/null @@ -1,35 +0,0 @@ -From 251ed68a591cd869b4d5d15bcb7da1f24a865550 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Mattias=20Andr=C3=A9e?= <maandree@operamail.com> -Date: Tue, 5 Nov 2013 08:15:59 +0100 -Subject: [PATCH] do not build sulogin on archlinux, it is provided by - util-linux -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Signed-off-by: Mattias Andrée <maandree@operamail.com> ---- - src/Makefile | 7 +++++++ - 1 file changed, 7 insertions(+) - -diff --git a/src/Makefile b/src/Makefile -index 9e80533..1998d39 100644 ---- a/src/Makefile -+++ b/src/Makefile -@@ -37,6 +37,13 @@ MAN1 += utmpdump.1 wall.1 - MAN8 += sulogin.8 bootlogd.8 - endif - -+ifeq ($(DISTRO),archlinux) -+SBIN += bootlogd -+USRBIN += utmpdump wall -+MAN1 += utmpdump.1 wall.1 -+MAN8 += bootlogd.8 -+endif -+ - ifeq ($(DISTRO),Debian) - CPPFLAGS+= -DACCTON_OFF - SBIN += sulogin bootlogd --- -1.8.4.2 - diff --git a/sysvinit/0001-simplify-writelog.patch b/sysvinit/0001-simplify-writelog.patch deleted file mode 100644 index cc28f14..0000000 --- a/sysvinit/0001-simplify-writelog.patch +++ /dev/null @@ -1,126 +0,0 @@ -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/sysvinit/0002-remove-ansi-escape-codes-from-log-file.patch b/sysvinit/0002-remove-ansi-escape-codes-from-log-file.patch deleted file mode 100644 index 89b3280..0000000 --- a/sysvinit/0002-remove-ansi-escape-codes-from-log-file.patch +++ /dev/null @@ -1,80 +0,0 @@ -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/sysvinit/PKGBUILD b/sysvinit/PKGBUILD index 169b031..fecc2e6 100644 --- a/sysvinit/PKGBUILD +++ b/sysvinit/PKGBUILD @@ -1,7 +1,7 @@ # Maintainer: Mattias Andrée <`base64 -d`(bWFhbmRyZWUK)@member.fsf.org> pkgname=sysvinit -pkgver=2.88 -pkgrel=15 +pkgver=2.90 +pkgrel=1 pkgdesc='Linux System V Init' url='http://savannah.nongnu.org/projects/sysvinit' arch=('i686' 'x86_64' 'armv6h') @@ -9,43 +9,35 @@ license=('GPL') depends=('glibc' 'procps-ng>=3.3.9') conflicts=('systemd-sysvcompat') -source=("http://download.savannah.gnu.org/releases/sysvinit/sysvinit-${pkgver}dsf.tar.bz2" - "0001-simplify-writelog.patch" "0002-remove-ansi-escape-codes-from-log-file.patch" - "0001-do-not-build-sulogin-on-archlinux-it-is-provided-by-.patch") -sha256sums=('60bbc8c1e1792056e23761d22960b30bb13eccc2cabff8c7310a01f4d5df1519' - '8126d09a35bdb9137bb19dc31b58cf1e829137fba34f7dcde7598018e1736826' - '90d38e4351ef9d77088661b411eb2b20eda435676e1e407f3d959ca2064d5c1e' - '43fed9d36b92f15bcdbde6ba2a2784a57115562795942c09dd33ff37a51cb138') +source=("http://download.savannah.nongnu.org/releases/sysvinit/sysvinit-${pkgver}.tar.xz") +sha256sums=('114cffc8ef514a38b9916de2050bb6d73b43dff7afd05aee6b09d2f6cea7664e') build() { - cd "$srcdir/$pkgname-${pkgver}dsf" - 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 -p1 -i "$srcdir/0001-do-not-build-sulogin-on-archlinux-it-is-provided-by-.patch" - + cd "$srcdir/$pkgname-${pkgver}" + # Patch for Arch's Linux filesystem hierarchy if [ "$(grep 'execv("/sbin/mount", args);' < src/killall5.c | wc -l)" = 1 ]; then sed -i 's:execv("/bin/mount", args);::' src/killall5.c fi - sed -i 's|/bin:/sbin:/usr/bin:/usr/sbin|/usr/bin|' src/initscript.sample src/init.h src/shutdown.c - sed -i 's|/sbin:/usr/sbin:/bin:/usr/bin|/usr/bin|' src/initscript.sample src/init.h src/shutdown.c - sed -i 's|/bin:/usr/bin:/sbin:/usr/sbin|/usr/bin|' src/initscript.sample src/init.h src/shutdown.c - sed -i 's:/sbin/:/bin/:g' contrib/notify-pam-dead.patch man/*.{1,5,8} src/*.{c,h} src/initscript.sample - sed -i 's:/bin/:/usr/bin/:g' contrib/notify-pam-dead.patch man/*.{1,5,8} src/*.{c,h} src/initscript.sample - sed -i 's:/usr/usr/:/usr/:g' contrib/notify-pam-dead.patch man/*.{1,5,8} src/*.{c,h} src/initscript.sample - + sed -i 's|/bin:/sbin:/usr/bin:/usr/sbin|/usr/bin|' src/init.h src/shutdown.c + sed -i 's|/sbin:/usr/sbin:/bin:/usr/bin|/usr/bin|' src/init.h src/shutdown.c + sed -i 's|/bin:/usr/bin:/sbin:/usr/sbin|/usr/bin|' src/init.h src/shutdown.c + sed -i 's:/sbin/:/bin/:g' contrib/notify-pam-dead.patch man/*.{1,5,8} src/*.{c,h} + sed -i 's:/bin/:/usr/bin/:g' contrib/notify-pam-dead.patch man/*.{1,5,8} src/*.{c,h} + sed -i 's:/usr/usr/:/usr/:g' contrib/notify-pam-dead.patch man/*.{1,5,8} src/*.{c,h} + make DISTRO=archlinux } package() { - cd "$srcdir/$pkgname-${pkgver}dsf" + cd "$srcdir/$pkgname-${pkgver}" mkdir -p "$pkgdir/__temp__" make DISTRO=archlinux ROOT="$pkgdir/__temp__" install cd "$pkgdir/__temp__" - rm -r bin usr/bin usr/share/man/man?/{mesg,utmpdump,wall,last,pidof}.? usr/share/man/man1 + rm -r bin usr/bin usr/share/man/man*/{mesg,last,pidof}.* usr/share/man/man1 find . | while read file; do if [ -d "$file" ]; then mkdir -p ".$file" |