This patch fixes libxview and let contool work again.
Now it cores dump on startup.
Giovanni
Index: config/patches/p-libxview-textsw-txt_again_c
===================================================================
RCS file: /cvs/ports/x11/xview/config/patches/p-libxview-textsw-txt_again_c,v
retrieving revision 1.3
diff -u -r1.3 p-libxview-textsw-txt_again_c
--- config/patches/p-libxview-textsw-txt_again_c 18 Apr 2005 11:48:20
-0000 1.3
+++ config/patches/p-libxview-textsw-txt_again_c 19 Jul 2007 12:42:58
-0000
@@ -1,7 +1,6 @@
-$OpenBSD: p-libxview-textsw-txt_again_c,v 1.3 2005/04/18 11:48:20 espie Exp $
---- lib/libxview/textsw/txt_again.c.orig Tue Jun 29 07:17:32 1993
-+++ lib/libxview/textsw/txt_again.c Sun Apr 17 23:59:11 2005
-@@ -28,6 +28,8 @@ Pkg_private CHAR *STRNCPY();
+--- txt_again.c.orig Tue Jun 29 07:17:32 1993
++++ txt_again.c Sat Jun 2 10:55:43 2007
+@@ -28,6 +28,8 @@
Pkg_private Es_index textsw_do_input();
Pkg_private Es_index textsw_do_pending_delete();
@@ -10,7 +9,7 @@
string_t null_string = {0, 0, 0};
#define TEXT_DELIMITER "\\"
-@@ -182,6 +184,7 @@ textsw_string_min_free(ptr_to_string, mi
+@@ -182,6 +184,7 @@
* Following is stolen from 3.2ALPHA sprintf(str, fmt, va_alist) SIDE_EFFECT:
* TXTSW_STRING_FREE(ptr_to_string) is modified by this routine.
*/
@@ -18,31 +17,23 @@
#ifndef SVR4
/* VARARGS2 */
-@@ -325,6 +328,31 @@ va_dcl
+@@ -325,6 +328,23 @@
#endif /* SVR4 */
+#else /* __OpenBSD__ */
-+/*inspiration taken from sprintf.c */
+
+static int
+textsw_printf(register string_t *ptr_to_string, char *fmt, ...)
-+{
-+ FILE _strbuf;
-+ int result;
-+ va_list args;
-+ _strbuf._flags = __SWR | __SSTR;
-+ _strbuf._bf._base = _strbuf._p = (char *)
TXTSW_STRING_FREE(ptr_to_string);
-+ _strbuf._bf._size = _strbuf._w = ptr_to_string->max_length -
TXTSW_STRING_LENGTH(ptr_to_string);
++{
++ int result;
++ va_list args;
++
+ VA_START(args, fmt);
-+ result = vfprintf (&_strbuf, fmt, args);
-+ va_end(args);
-+ TXTSW_STRING_FREE(ptr_to_string) = (char *) _strbuf._p;
-+#ifndef lint
-+ if (result >= 0)
-+ putc('\0', &_strbuf);
-+#endif
-+ return (result);
++ result = vsnprintf(TXTSW_STRING_FREE(ptr_to_string),
ptr_to_string->max_length - TXTSW_STRING_LENGTH(ptr_to_string), fmt, args);
++ if (result >=0)
++ TXTSW_STRING_FREE(ptr_to_string) += result;
++ return(result);
+}
+
+#endif /* __OpenBSD__ */
@@ -50,7 +41,7 @@
static void
textsw_record_buf(again, buffer, buffer_length)
register string_t *again;
-@@ -619,6 +647,8 @@ textsw_record_trash_insert(textsw)
+@@ -619,6 +639,8 @@
*/
/* VARARGS2 */
@@ -59,12 +50,11 @@
static int
#ifdef ANSI_FUNC_PROTO
textsw_scanf(register string_t *ptr_to_string, register char *fmt, ...)
-@@ -705,6 +735,38 @@ va_dcl
+@@ -705,6 +727,36 @@
#endif /* OW_I18N */
}
+#else /* __OpenBSD__ */
-+/*inspiration/code taken from sscanf.c */
+
+static int
+eofread(cookie, buf, len)
@@ -79,21 +69,20 @@
+static int
+textsw_scanf(register string_t *ptr_to_string, char *fmt, ...)
+{
-+ FILE _strbuf;
-+ int result;
-+ va_list args;
-+
-+ memset(&_strbuf, 0, sizeof _strbuf);
-+ _strbuf._flags = __SRD;
-+ _strbuf._bf._base = _strbuf._p = (char *)
TXTSW_STRING_BASE(ptr_to_string);
-+ _strbuf._bf._size = _strbuf._r = TXTSW_STRING_LENGTH(ptr_to_string);
-+ _strbuf._read = eofread;
-+ VA_START(args, fmt);
-+ result = __svfscanf(&_strbuf, fmt, args);
-+ va_end(args);
-+ TXTSW_STRING_BASE(ptr_to_string) = (char *) _strbuf._p;
-+ return (result);
-+}
++ va_list args;
++ int result;
++ size_t len = TXTSW_STRING_LENGTH(ptr_to_string);
++ char *str = malloc(len + 1);
++ if (str == NULL)
++ return -1;
++ memcpy(str, TXTSW_STRING_BASE(ptr_to_string), len);
++ str[len] = '\0';
++ VA_START(args, fmt);
++ result = vsscanf(str, fmt, args);
++ va_end(args);
++ free(str);
++ return(result);
++}
+#endif /* __OpenBSD__ */
static int
Index: lib/Makefile
===================================================================
RCS file: /cvs/ports/x11/xview/lib/Makefile,v
retrieving revision 1.17
diff -u -r1.17 Makefile
--- lib/Makefile 1 Jan 2006 20:57:03 -0000 1.17
+++ lib/Makefile 19 Jul 2007 12:43:02 -0000
@@ -2,7 +2,7 @@
COMMENT= "OpenLook Toolkit libs, includes, and man pages"
-PKGNAME= xview-lib-${XVIEW_VERSION}p1
+PKGNAME= xview-lib-${XVIEW_VERSION}p2
SHARED_LIBS= olgx 3.2 \
xview 3.2
EXTRACT_ONLY=