[arch-commits] Commit in slang/repos (3 files)
Bartłomiej Piotrowski
bpiotrowski at archlinux.org
Thu Feb 8 18:39:04 UTC 2018
Date: Thursday, February 8, 2018 @ 18:39:02
Author: bpiotrowski
Revision: 316460
archrelease: copy trunk to testing-x86_64
Added:
slang/repos/testing-x86_64/
slang/repos/testing-x86_64/0001-pre2.3.2-19-Added-support-for-the-new-ncurses-32-bit.patch
(from rev 316459, slang/trunk/0001-pre2.3.2-19-Added-support-for-the-new-ncurses-32-bit.patch)
slang/repos/testing-x86_64/PKGBUILD
(from rev 316459, slang/trunk/PKGBUILD)
-----------------------------------------------------------------+
0001-pre2.3.2-19-Added-support-for-the-new-ncurses-32-bit.patch | 202 ++++++++++
PKGBUILD | 43 ++
2 files changed, 245 insertions(+)
Copied: slang/repos/testing-x86_64/0001-pre2.3.2-19-Added-support-for-the-new-ncurses-32-bit.patch (from rev 316459, slang/trunk/0001-pre2.3.2-19-Added-support-for-the-new-ncurses-32-bit.patch)
===================================================================
--- testing-x86_64/0001-pre2.3.2-19-Added-support-for-the-new-ncurses-32-bit.patch (rev 0)
+++ testing-x86_64/0001-pre2.3.2-19-Added-support-for-the-new-ncurses-32-bit.patch 2018-02-08 18:39:02 UTC (rev 316460)
@@ -0,0 +1,202 @@
+From 6dd5ade9a97b52ace4ac033779a6d3c1c51db4d1 Mon Sep 17 00:00:00 2001
+From: "John E. Davis" <jed at jedsoft.org>
+Date: Tue, 30 Jan 2018 04:04:17 -0500
+Subject: [PATCH] pre2.3.2-19: Added support for the new ncurses 32-bit
+ terminfo database entries.
+
+diff --git a/src/sltermin.c b/src/sltermin.c
+index 34bc73c..99fc8f9 100644
+--- a/src/sltermin.c
++++ b/src/sltermin.c
+@@ -33,6 +33,11 @@ USA.
+ * term(4) man page on an SGI.
+ */
+
++/* The ncurses terminfo binary files come in two flavors: A legacy
++ * format that uses 16 bit integers in the number-section, and a new
++ * 32 bit format (nurses 6, from 2018).
++ */
++
+ /* Short integers are stored in two 8-bit bytes. The first byte contains
+ * the least significant 8 bits of the value, and the second byte contains
+ * the most significant 8 bits. (Thus, the value represented is
+@@ -43,7 +48,7 @@ USA.
+ * source and also is to be considered missing.
+ */
+
+-static int make_integer (unsigned char *buf)
++static int make_integer16 (unsigned char *buf)
+ {
+ register int lo, hi;
+ lo = (int) *buf++; hi = (int) *buf;
+@@ -55,6 +60,20 @@ static int make_integer (unsigned char *buf)
+ return lo + 256 * hi;
+ }
+
++static int make_integer32 (unsigned char *buf)
++{
++ unsigned int u;
++ int i;
++
++ u = (unsigned int)buf[0];
++ u |= ((unsigned int)buf[1])<<8;
++ u |= ((unsigned int)buf[2])<<16;
++ u |= ((unsigned int)buf[3])<<24;
++
++ i = (int)u;
++ return i;
++}
++
+ /*
+ * The compiled file is created from the source file descriptions of the
+ * terminals (see the -I option of infocmp) by using the terminfo compiler,
+@@ -64,14 +83,15 @@ static int make_integer (unsigned char *buf)
+ *
+ * The header section begins the file. This section contains six short
+ * integers in the format described below. These integers are (1) the magic
+- * number (octal 0432); (2) the size, in bytes, of the names section; (3)
+- * the number of bytes in the boolean section; (4) the number of short
+- * integers in the numbers section; (5) the number of offsets (short
++ * number (legacy:0432, 01036:32 but); (2) the size, in bytes, of the names section; (3)
++ * the number of bytes in the boolean section; (4) the number of integers
++ * in the numbers section; (5) the number of offsets (short
+ * integers) in the strings section; (6) the size, in bytes, of the string
+ * table.
+ */
+
+-#define MAGIC 0432
++#define MAGIC_LEGACY 0432
++#define MAGIC_32BIT 01036
+
+ /* In this structure, all char * fields are malloced EXCEPT if the
+ * structure is SLTERMCAP. In that case, only terminal_names is malloced
+@@ -91,6 +111,8 @@ struct _pSLterminfo_Type
+
+ unsigned int num_numbers;
+ unsigned char *numbers;
++ unsigned int sizeof_number;
++ int (*make_integer)(unsigned char *);
+
+ unsigned int num_string_offsets;
+ unsigned char *string_offsets;
+@@ -109,6 +131,7 @@ static FILE *open_terminfo (char *file, SLterminfo_Type *h)
+ {
+ FILE *fp;
+ unsigned char buf[12];
++ int magic;
+
+ /* Alan Cox reported a security problem here if the application using the
+ * library is setuid. So, I need to make sure open the file as a normal
+@@ -122,19 +145,34 @@ static FILE *open_terminfo (char *file, SLterminfo_Type *h)
+ fp = fopen (file, "rb");
+ if (fp == NULL) return NULL;
+
+- if ((12 == fread ((char *) buf, 1, 12, fp) && (MAGIC == make_integer (buf))))
++ if (12 != fread ((char *)buf, 1, 12, fp))
+ {
+- h->name_section_size = make_integer (buf + 2);
+- h->boolean_section_size = make_integer (buf + 4);
+- h->num_numbers = make_integer (buf + 6);
+- h->num_string_offsets = make_integer (buf + 8);
+- h->string_table_size = make_integer (buf + 10);
++ (void) fclose(fp);
++ return NULL;
++ }
++ magic = make_integer16(buf);
++ if (magic == MAGIC_LEGACY)
++ {
++ h->make_integer = make_integer16;
++ h->sizeof_number = 2;
++ }
++ else if (magic == MAGIC_32BIT)
++ {
++ h->make_integer = make_integer32;
++ h->sizeof_number = 4;
+ }
+ else
+ {
+- fclose (fp);
+- fp = NULL;
++ (void) fclose (fp);
++ return NULL;
+ }
++
++ h->name_section_size = make_integer16 (buf + 2);
++ h->boolean_section_size = make_integer16 (buf + 4);
++ h->num_numbers = make_integer16 (buf + 6);
++ h->num_string_offsets = make_integer16 (buf + 8);
++ h->string_table_size = make_integer16 (buf + 10);
++
+ return fp;
+ }
+
+@@ -187,13 +225,14 @@ static unsigned char *read_boolean_flags (FILE *fp, SLterminfo_Type *t)
+
+ /*
+ * The numbers section is similar to the boolean flags section. Each
+- * capability takes up two bytes, and is stored as a short integer. If the
+- * value represented is -1 or -2, the capability is taken to be missing.
++ * capability takes up 2(4) bytes for the legacy(32 bit) format and
++ * is stored as a integer. If the value represented is -1 or -2, the
++ * capability is taken to be missing.
+ */
+
+ static unsigned char *read_numbers (FILE *fp, SLterminfo_Type *t)
+ {
+- return t->numbers = read_terminfo_section (fp, 2 * t->num_numbers);
++ return t->numbers = read_terminfo_section (fp, t->sizeof_number * t->num_numbers);
+ }
+
+ /* The strings section is also similar. Each capability is stored as a
+@@ -402,7 +441,7 @@ char *_pSLtt_tigetstr (SLterminfo_Type *t, SLCONST char *cap)
+
+ offset = compute_cap_offset (cap, t, Tgetstr_Map, t->num_string_offsets);
+ if (offset < 0) return NULL;
+- offset = make_integer (t->string_offsets + 2 * offset);
++ offset = make_integer16 (t->string_offsets + 2 * offset);
+ if (offset < 0) return NULL;
+ return t->string_table + offset;
+ }
+@@ -418,7 +457,8 @@ int _pSLtt_tigetnum (SLterminfo_Type *t, SLCONST char *cap)
+
+ offset = compute_cap_offset (cap, t, Tgetnum_Map, t->num_numbers);
+ if (offset < 0) return -1;
+- return make_integer (t->numbers + 2 * offset);
++
++ return (*t->make_integer)(t->numbers + t->sizeof_number * offset);
+ }
+
+ int _pSLtt_tigetflag (SLterminfo_Type *t, SLCONST char *cap)
+diff --git a/src/untic.c b/src/untic.c
+index bd15478..2fa966a 100644
+--- a/src/untic.c
++++ b/src/untic.c
+@@ -36,7 +36,7 @@ int main (int argc, char **argv)
+ puts (t->terminal_names);
+ while (*map->name != 0)
+ {
+- str = (unsigned char *) SLtt_tigetstr (map->name, (char **) &t);
++ str = (unsigned char *) SLtt_tigetstr ((SLFUTURE_CONST char *)map->name, (char **) &t);
+ if (str == NULL)
+ {
+ map++;
+@@ -76,7 +76,7 @@ int main (int argc, char **argv)
+ while (*map->name != 0)
+ {
+ int val;
+- if ((val = SLtt_tigetnum (map->name, (char **) &t)) >= 0)
++ if ((val = SLtt_tigetnum ((SLFUTURE_CONST char *)map->name, (char **) &t)) >= 0)
+ {
+ fprintf (stdout, "\t%s#%d\t\t%s\n",
+ map->name, val,
+@@ -85,6 +85,7 @@ int main (int argc, char **argv)
+ map++;
+ }
+
++ _pSLtt_tifreeent (t);
+ return 0;
+ }
+
+--
+2.16.1
+
Copied: slang/repos/testing-x86_64/PKGBUILD (from rev 316459, slang/trunk/PKGBUILD)
===================================================================
--- testing-x86_64/PKGBUILD (rev 0)
+++ testing-x86_64/PKGBUILD 2018-02-08 18:39:02 UTC (rev 316460)
@@ -0,0 +1,43 @@
+# $Id$
+# Maintainer: Felix Yan <felixonmars at archlinux.org>
+# Contributor: Eric Belanger <eric at archlinux.org>
+# Contributor: Tom Newsom <Jeepster at gmx.co.uk>
+
+pkgname=slang
+pkgver=2.3.1a
+pkgrel=2
+pkgdesc="S-Lang is a powerful interpreted language"
+arch=('x86_64')
+url="http://www.jedsoft.org/slang/"
+license=('GPL')
+depends=('pcre')
+backup=('etc/slsh.rc')
+options=('!makeflags')
+source=(http://www.jedsoft.org/releases/slang/${pkgname}-${pkgver}.tar.bz2{,.asc}
+ 0001-pre2.3.2-19-Added-support-for-the-new-ncurses-32-bit.patch)
+sha1sums=('a8ea7f1b5736160a94efb67b137a0f5b9916bdf2'
+ 'SKIP'
+ '94548d7d996f5d75e02d8e158e261c0b3e013599')
+validpgpkeys=('AE962A02D29BFE4A4BB2805FDE401E0D5873000A') # John E. Davis
+
+prepare() {
+ cd ${pkgname}-${pkgver}
+ patch -p1 -i ../0001-pre2.3.2-19-Added-support-for-the-new-ncurses-32-bit.patch
+}
+
+build() {
+ cd ${pkgname}-${pkgver}
+ ./configure --prefix=/usr --sysconfdir=/etc
+ make
+}
+
+check() {
+ cd ${pkgname}-${pkgver}
+
+ [[ $CARCH = "i686" ]] || make check
+}
+
+package() {
+ cd ${pkgname}-${pkgver}
+ make DESTDIR="${pkgdir}" install-all
+}
More information about the arch-commits
mailing list