Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 17 Feb 2021 03:00:00 +0000 (UTC)
From:      Mikhail Teterin <mi@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r565477 - in head/lang/siod: . files
Message-ID:  <202102170300.11H300tT023996@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: mi
Date: Wed Feb 17 03:00:00 2021
New Revision: 565477
URL: https://svnweb.freebsd.org/changeset/ports/565477

Log:
  Upgrade from circa 2000 to circa 2014 code. Unfortunately, upstream
  are somewhat sloppy about releases -- and do not publish versioned
  files. I'm calling this one 3.6.2, because that's the last version
  found in the change log.
  
  The new build uses bsd.lib.mk and bsd.prog.mk -- in order to:
  	a) build shared libraries cleanly;
  	b) stand a chance of working on the hardware platforms,
  	   where the author never tried it.
  
  The large patches provide for warning-free compiles with WARNS=7 --
  tested on FreeBSD-11/amd64.
  
  We now take care to link with libgnuregex.so -- whether from base
  or provided by devel/libgnuregex instead of using the bundled
  (ancient) version of Henry Spencer's library.
  
  Similarly, the port links with the base -lmd instead of compiling
  its own MD5-implementation.
  
  Additional new feature is options, which currently include:
  
  	. Socket support -- this used to be built unconditionally
  	  and is still on by default. However, someone concerned
  	  about the "network daemon" security warning may want to
  	  to turn this off.
  	. Regex module -- also on by default. But, because it may,
  	  depending on the OS version, drag in a dependency, it
  	  can be turned off.
  	. NDBM -- a never-before built (not on FreeBSD) module
  	  allowing work with NDBM databases. On by default now,
  	  because it has no dependencies.
  	. GD -- the graphics library. Never built before by this
  	  port, it remains off by default because it depends on
  	  graphics/gd (or ukrainian/gd).
  	. SQL_SYBASE -- for interactions with Sybase (and MS-SQL)
  	  database servers. Depends on databases/freetds and therefor
  	  off by default.
  
  There is also sql_oracle module, which is not enabled (for now),
  because databases/oracle8-client is, unfortunately, i386-only.
  
  The peculiarity of installing siod.html into ${PREFIX}/lib/siod
  remains for now -- suggestions welcome.
  
  Sponsored by:	United Marsupials

Added:
  head/lang/siod/files/BSDmakefile   (contents, props changed)
  head/lang/siod/files/BSDmakefile.lib   (contents, props changed)
  head/lang/siod/files/BSDmakefile.module   (contents, props changed)
  head/lang/siod/files/BSDmakefile.prog   (contents, props changed)
  head/lang/siod/files/patch-gd   (contents, props changed)
  head/lang/siod/files/patch-lib
     - copied, changed from r565476, head/lang/siod/files/patch-slibu.c
  head/lang/siod/files/patch-ndbm   (contents, props changed)
  head/lang/siod/files/patch-parser_pratt   (contents, props changed)
  head/lang/siod/files/patch-regex
     - copied, changed from r565476, head/lang/siod/files/patch-regex.c
  head/lang/siod/files/patch-sample.c   (contents, props changed)
  head/lang/siod/files/patch-siod.c   (contents, props changed)
  head/lang/siod/files/patch-sql_sybase   (contents, props changed)
  head/lang/siod/files/patch-ss   (contents, props changed)
  head/lang/siod/files/patch-tar   (contents, props changed)
Deleted:
  head/lang/siod/files/patch-makefile
  head/lang/siod/files/patch-regex.c
  head/lang/siod/files/patch-slibu.c
Modified:
  head/lang/siod/Makefile
  head/lang/siod/distinfo
  head/lang/siod/pkg-plist

Modified: head/lang/siod/Makefile
==============================================================================
--- head/lang/siod/Makefile	Wed Feb 17 02:30:18 2021	(r565476)
+++ head/lang/siod/Makefile	Wed Feb 17 03:00:00 2021	(r565477)
@@ -2,31 +2,69 @@
 # $FreeBSD$
 
 PORTNAME=	siod
-PORTVERSION=	3.4
+PORTVERSION=	3.6.2
 CATEGORIES=	lang scheme
-MASTER_SITES=	LOCAL/jkoshy
+MASTER_SITES=	http://people.delphiforums.com/gjc/
 DISTNAME=	siod
-EXTRACT_SUFX=	.tgz
+DIST_SUBDIR=	${PORTNAME}-${PORTVERSION}	# Upstream aren't versioned :(
 
-MAINTAINER=	ports@FreeBSD.org
+MAINTAINER=	mi@aldan.algebra.com
 COMMENT=	Small footprint implementation of the Scheme programming language
 
-BROKEN_aarch64=		fails to link: ld: error: unable to find library -lm
-BROKEN_armv6=		fails to link: final link failed: Nonrepresentable section on output
-BROKEN_armv7=		fails to link: ld: siod: hidden symbol `__aeabi_uidivmod' in /usr/lib/libgcc.a(aeabi_uidivmod.o) is referenced by DSO
-BROKEN_mips64=		fails to link: final link failed: Nonrepresentable section on output
-BROKEN_riscv64=		fails to link: ld: error: unable to find library -lm
+LICENSE=	LGPL21	# Declared inside slib.c
 
-USE_LDCONFIG=	yes
-LLD_UNSAFE=	yes
+USES=		uidfix tar:tgz dos2unix
 
+USE_LDCONFIG=	${PREFIX}/lib/siod
+
+DOS2UNIX_FILES=	sql_oracle.c ss.c
+OPTIONS_DEFINE=	SQL_SYBASE GD NDBM REGEX SS
+OPTIONS_DEFAULT=NDBM REGEX SS
+SQL_SYBASE_DESC=Build Sybase (and MS-SQL) client-module (using FreeTDS)
+SS_DESC=	Sockets support - required for any network programs
+NDBM_DESC=	Support for NDBM-databases
 NO_WRKSUBDIR=	yes
-MAKEFILE=	makefile
-ALL_TARGET=	freebsd
-MAKE_ENV=	LD_LIBRARY_PATH=.
-MAKE_JOBS_UNSAFE=	yes
+EXTRACT_AFTER_ARGS=--exclude md5\* --exclude regex.h --exclude reg????*.c
+CFLAGS+=	-Werror
+MAKE_ARGS=	VPATH=${WRKSRC} MODULES=${MODULES:Q}
+MAKEFILE=	${FILESDIR}/BSDmakefile
+MAKE_ENV=	MKDIR=${MKDIR:Q} STAGEDIR=${STAGEDIR:Q}
+MAKE_ENV+=	MAN1PREFIX=${MAN1PREFIX} PREFIX=${PREFIX:Q}
+MAKE_ENV+=	INSTALL_MAN=${INSTALL_MAN:Q} INSTALL_SCRIPT=${INSTALL_SCRIPT:Q}
+MAKE_ENV+=	INSTALL_DATA=${INSTALL_DATA:Q}
 
-post-install:
-	@${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/siod
+MODULES=	tar parser_pratt
+
+SQL_SYBASE_LIB_DEPENDS=	libct.so:databases/freetds	# Or freetds-devel
+GD_LIB_DEPENDS=		libgd.so:graphics/gd	# Or ukrainian/gd
+REGEX_LIB_DEPENDS=	libgnuregex.so:devel/libgnuregex
+OPTIONS_SUB=	yes
+
+.if "${PREFIX}" != "/usr/local"
+post-patch:
+	${REINPLACE_CMD} 's|/usr/local|${PREFIX}|g' ${WRKSRC}/slib.c
+.endif
+
+post-build:
+	${REINPLACE_CMD} -e 's|\./siod|env LD_LIBRARY_PATH=lib siod/siod|g' \
+		-e 's|/usr/local|${PREFIX}|g' ${WRKSRC}/makefile
+	${MAKE} -C ${WRKSRC} -f makefile build_driver
+
+.include <bsd.port.options.mk>
+MODULES+=	${SELECTED_OPTIONS:tl}
+
+do-configure:
+	${MKDIR} ${WRKSRC}/lib
+	${LN} -sf ${FILESDIR}/BSDmakefile.lib ${WRKSRC}/lib/BSDmakefile
+.for s in ${MODULES}
+	${MKDIR} ${WRKSRC}/$s
+	${SED} "s,%%MODULE%%,$s,g" ${FILESDIR}/BSDmakefile.module > \
+	    ${WRKSRC}/$s/BSDmakefile
+.endfor
+.for s in siod sample
+	${MKDIR} ${WRKSRC}/$s
+	${SED} "s,%%PROG%%,$s,g" ${FILESDIR}/BSDmakefile.prog >	\
+	    ${WRKSRC}/$s/BSDmakefile
+.endfor
 
 .include <bsd.port.mk>

Modified: head/lang/siod/distinfo
==============================================================================
--- head/lang/siod/distinfo	Wed Feb 17 02:30:18 2021	(r565476)
+++ head/lang/siod/distinfo	Wed Feb 17 03:00:00 2021	(r565477)
@@ -1,2 +1,3 @@
-SHA256 (siod.tgz) = b9b0d19795c49b9665cdbf6ea7d50affef2bc594a382e18c4d8b52c8f1b1e4f0
-SIZE (siod.tgz) = 217202
+TIMESTAMP = 1613414947
+SHA256 (siod-3.6.2/siod.tgz) = 34ddcfabc140ebd7780e03be4a79d293e6eafc88e06cfc5c567d6c52bb9140bd
+SIZE (siod-3.6.2/siod.tgz) = 213446

Added: head/lang/siod/files/BSDmakefile
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/lang/siod/files/BSDmakefile	Wed Feb 17 03:00:00 2021	(r565477)
@@ -0,0 +1,16 @@
+SUBDIR=	lib ${MODULES} siod sample
+
+beforeinstall:
+	${MKDIR} ${STAGEDIR}${PREFIX}/lib/siod
+
+afterinstall:
+	# Install man-pages
+	set -x; for m in *.man; do	\
+		${INSTALL_MAN} $$m ${STAGEDIR}${MAN1PREFIX}/man/man1/$${m%%.man}.1;	\
+	done
+	${INSTALL_SCRIPT} `${MAKE} -f makefile -V CMDFILES`	\
+		${STAGEDIR}${PREFIX}/bin/
+	${INSTALL_DATA} `${MAKE} -f makefile -V LIBFILES`	\
+		${STAGEDIR}${PREFIX}/lib/siod
+
+.include <bsd.subdir.mk>

Added: head/lang/siod/files/BSDmakefile.lib
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/lang/siod/files/BSDmakefile.lib	Wed Feb 17 03:00:00 2021	(r565477)
@@ -0,0 +1,16 @@
+LIB=		siod
+MK_PROFILE=	no
+SHLIB_MAJOR=	3
+SHLIB_MINOR=	6
+
+WARNS=	7
+
+SRCS=	slib.c sliba.c trace.c slibu.c
+INCS=	siod.h
+CFLAGS+=-DHAVE_SYS_PARAM_H
+LDADD=	-lmd -lm -lcrypt
+
+LIBDIR=	${PREFIX}/lib
+INCSDIR=${PREFIX}/include
+
+.include <bsd.lib.mk>

Added: head/lang/siod/files/BSDmakefile.module
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/lang/siod/files/BSDmakefile.module	Wed Feb 17 03:00:00 2021	(r565477)
@@ -0,0 +1,21 @@
+SHLIB_NAME=	%%MODULE%%.so
+MK_PROFILE=	no
+
+WARNS=	7
+
+# Some modules have dependencies installed by other ports:
+gd_CFLAGS=	-isystem ${LOCALBASE}/include
+gd_LDADD=	-L${LOCALBASE}/lib -lgd
+regex_CFLAGS=	-isystem ${LOCALBASE}/include
+regex_LDADD=	-L${LOCALBASE}/lib -lgnuregex
+sql_sybase_CFLAGS=-isystem ${LOCALBASE}/include
+sql_sybase_LDADD=-L${LOCALBASE}/lib -lct
+
+CFLAGS+=	-DHAVE_SYS_PARAM_H ${%%MODULE%%_CFLAGS}
+LDADD=		${%%MODULE%%_LDADD}
+
+SRCS=	%%MODULE%%.c
+
+LIBDIR=	${PREFIX}/lib/siod
+
+.include <bsd.lib.mk>

Added: head/lang/siod/files/BSDmakefile.prog
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/lang/siod/files/BSDmakefile.prog	Wed Feb 17 03:00:00 2021	(r565477)
@@ -0,0 +1,14 @@
+PROG=	%%PROG%%
+
+WARNS=	7
+
+BINDIR=	${PREFIX}/bin
+MANDIR=	${PREFIX}/man/man
+LDADD=	-L${.CURDIR:H}/lib -lsiod
+MK_MAN=	no
+
+.if "%%PROG%%" == "sample"
+INTERNALPROG=	yes	# We want it built -- as proof -- but not installed
+.endif
+
+.include <bsd.prog.mk>

Added: head/lang/siod/files/patch-gd
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/lang/siod/files/patch-gd	Wed Feb 17 03:00:00 2021	(r565477)
@@ -0,0 +1,391 @@
+--- gd.c	2014-03-25 04:10:42.000000000 -0400
++++ gd.c	2021-02-16 11:58:57.946320000 -0500
+@@ -9,5 +9,11 @@
+ #include <stdlib.h>
+ #include <string.h>
+-#include "gd.h"
++#include <gd.h>
++#include <gdfontg.h>
++#include <gdfontl.h>
++#include <gdfontmb.h>
++#include <gdfonts.h>
++#include <gdfontt.h>
++
+ #include "siod.h"
+ 
+@@ -17,15 +23,9 @@
+ 	NIL);}
+ 
+-long tc_gdimage = 0;
+-long tc_gdfont = 0;
+-long tc_gdpoint = 0;
+-
+-extern gdFontPtr gdFontGiant;
+-extern gdFontPtr gdFontLarge;
+-extern gdFontPtr gdFontMediumBold;
+-extern gdFontPtr gdFontSmall;
+-extern gdFontPtr gdFontTiny;
++static long tc_gdimage = 0;
++static long tc_gdfont = 0;
++static long tc_gdpoint = 0;
+ 
+-LISP lgdImageCreate(LISP sx,LISP sy)
++static LISP lgdImageCreate(LISP sx,LISP sy)
+ {LISP result;
+  long iflag;
+@@ -38,5 +38,5 @@
+  return(result);}
+ 
+-LISP lgdImageCreateFromGif(LISP f)
++static LISP lgdImageCreateFromGif(LISP f)
+ {LISP result;
+  long iflag;
+@@ -49,5 +49,5 @@
+  return(result);}
+ 
+-LISP lgdImageCreateFromXbm(LISP f)
++static LISP lgdImageCreateFromXbm(LISP f)
+ {LISP result;
+  long iflag;
+@@ -61,13 +61,13 @@
+ 
+ 
+-gdImagePtr get_gdImagePtr(LISP ptr)
++static gdImagePtr get_gdImagePtr(LISP ptr)
+ {gdImagePtr im;
+  if (NTYPEP(ptr,tc_gdimage))
+    err("not a gdImage",ptr);
+- if (!(im = (gdImagePtr) ptr->storage_as.string.data))
++ if (!(im = (gdImagePtr)(void *)ptr->storage_as.string.data))
+    err("gd Image deallocated",ptr);
+  return(im);}
+ 
+-LISP lcgdFontCreate(gdFontPtr font)
++static LISP lcgdFontCreate(gdFontPtr font)
+ {LISP result;
+  long iflag;
+@@ -80,13 +80,13 @@
+  return(result);}
+ 
+-gdFontPtr get_gdFontPtr(LISP ptr)
++static gdFontPtr get_gdFontPtr(LISP ptr)
+ {gdFontPtr fn;
+  if (NTYPEP(ptr,tc_gdfont))
+    err("not a gdFont",ptr);
+- if (!(fn = (gdFontPtr) ptr->storage_as.string.data))
++ if (!(fn = (gdFontPtr)(void *)ptr->storage_as.string.data))
+    err("gd Font deallocated",ptr);
+  return(fn);}
+ 
+-LISP lgdPoint(LISP args)
++static LISP lgdPoint(LISP args)
+ {LISP result,l;
+  long iflag,j,m,n = nlength(args);
+@@ -98,5 +98,5 @@
+  result->type = tc_gdpoint;
+  iflag = no_interrupt(1);
+- pt =  (gdPointPtr) must_malloc(sizeof(gdPoint) * m);
++ pt =  must_malloc(sizeof(gdPoint) * m);
+  result->storage_as.string.data = (char *) pt;
+  result->storage_as.string.dim = m;
+@@ -107,14 +107,14 @@
+  return(result);}
+ 
+-gdPointPtr get_gdPointPtr(LISP ptr,long *n)
++static gdPointPtr get_gdPointPtr(LISP ptr,long *n)
+ {gdPointPtr pt;
+  if (NTYPEP(ptr,tc_gdpoint))
+    err("not a gdPoint",ptr);
+- if (!(pt = (gdPointPtr) ptr->storage_as.string.data))
++ if (!(pt = (gdPointPtr)(void *)ptr->storage_as.string.data))
+    err("gd point deallocated",ptr);
+  *n = ptr->storage_as.string.dim;
+  return(pt);}
+ 
+-LISP lgdPointx(LISP ptr,LISP j,LISP value)
++static LISP lgdPointx(LISP ptr,LISP j,LISP value)
+ {long n,i;
+  gdPointPtr pt;
+@@ -129,5 +129,5 @@
+ 
+ 
+-LISP lgdPointy(LISP ptr,LISP j,LISP value)
++static LISP lgdPointy(LISP ptr,LISP j,LISP value)
+ {long n,i;
+  gdPointPtr pt;
+@@ -141,5 +141,5 @@
+  return(value);}
+  
+-LISP lgdImageGif(LISP im,LISP f)
++static LISP lgdImageGif(LISP im,LISP f)
+ {long iflag;
+  iflag = no_interrupt(1);
+@@ -156,19 +156,22 @@
+ #include <unistd.h>
+ 
+-void gdImageGifmem(gdImagePtr im, char *buffer, size_t *len)
++static void gdImageGifmem(gdImagePtr im, char *buffer, size_t *len)
+ {FILE *f;
+  char tmpname[32];
+  struct stat sb;
+- strcpy(tmpname, "/tmp/gd.XXXXXX");
+- mktemp(tmpname);
+- if ((f = fopen(tmpname, "wb+")) != NULL) {
+-     gdImageGif(im, f);
+-     fstat(fileno(f), &sb);
+-     if (sb.st_size < *len) *len = sb.st_size;
+-     rewind(f);
+-     fread(buffer, 1, *len, f);
++ int fd;
++ strcpy(tmpname, "/tmp/gd.XXXXXX.gif");
++ fd = mkstemps(tmpname, 4);
++ if (fd != -1 && (f = fdopen(fd, "wb+")) != NULL) {
++     gdImageGif(im, f);	/* XXX no error-checking from here on */
++     if (fstat(fileno(f), &sb) == 0 && sb.st_size <= (off_t)*len) {
++       *len = sb.st_size;
++       rewind(f);
++       *len = fread(buffer, 1, *len, f);
++     } else
++       *len = 0;
+      fclose(f);
+  } else {
+-     *len = 0;
++     *len = 0;	/* XXX and no reporting for what little checking there is */
+  }
+  unlink(tmpname);
+@@ -177,10 +180,10 @@
+ #endif
+ 
+-LISP lgdImageGifmem(LISP im,LISP b)
+-{long iflag,dim;
++static LISP lgdImageGifmem(LISP im, LISP b)
++{long iflag;
+  size_t len;
+  char *buffer;
+- buffer = get_c_string_dim(b,&dim);
+- len = dim;
++ buffer = get_string_data(b);
++ len = b->storage_as.string.dim;
+  iflag = no_interrupt(1);
+  gdImageGifmem(get_gdImagePtr(im),buffer,&len);
+@@ -188,5 +191,5 @@
+  return(flocons(len));}
+ 
+-LISP lgdImageColorAllocate(LISP l)
++static LISP lgdImageColorAllocate(LISP l)
+ {long iflag;
+  int result;
+@@ -202,5 +205,5 @@
+  return(flocons(result));}
+ 
+-LISP lgdImageColorClosest(LISP l)
++static LISP lgdImageColorClosest(LISP l)
+ {long iflag;
+  int result;
+@@ -216,5 +219,5 @@
+  return(flocons(result));}
+ 
+-LISP lgdImageColorExact(LISP l)
++static LISP lgdImageColorExact(LISP l)
+ {long iflag;
+  int result;
+@@ -230,5 +233,5 @@
+  return(flocons(result));}
+ 
+-LISP lgdImageLine(LISP l)
++static LISP lgdImageLine(LISP l)
+ {gdImagePtr im;
+  int x1,y1,x2,y2,color;
+@@ -242,5 +245,5 @@
+  return(NIL);}
+ 
+-LISP lgdImageSetPixel(LISP l)
++static LISP lgdImageSetPixel(LISP l)
+ {gdImagePtr im;
+  int x,y,color;
+@@ -252,5 +255,5 @@
+  return(NIL);}
+ 
+-LISP lgdImagePolygon(LISP im,LISP points,LISP color)
++static LISP lgdImagePolygon(LISP im,LISP points,LISP color)
+ {gdPointPtr pt;
+  long n;
+@@ -262,5 +265,5 @@
+  return(NIL);}
+ 
+-LISP lgdImageFilledPolygon(LISP im,LISP points,LISP color)
++static LISP lgdImageFilledPolygon(LISP im,LISP points,LISP color)
+ {gdPointPtr pt;
+  long n;
+@@ -272,5 +275,5 @@
+  return(NIL);}
+ 
+-LISP lgdImageRectangle(LISP l)
++static LISP lgdImageRectangle(LISP l)
+ {gdImagePtr im;
+  int x1,y1,x2,y2,color;
+@@ -284,5 +287,5 @@
+  return(NIL);}
+ 
+-LISP lgdImageFilledRectangle(LISP l)
++static LISP lgdImageFilledRectangle(LISP l)
+ {gdImagePtr im;
+  int x1,y1,x2,y2,color;
+@@ -296,5 +299,5 @@
+  return(NIL);}
+ 
+-LISP lgdImageArc(LISP l)
++static LISP lgdImageArc(LISP l)
+ {gdImagePtr im;
+  int cx,cy,w,h,s,e,color;
+@@ -311,5 +314,5 @@
+ 
+ 
+-LISP lgdImageFillToBorder(LISP l)
++static LISP lgdImageFillToBorder(LISP l)
+ {gdImagePtr im;
+  int x,y,border,color;
+@@ -322,5 +325,5 @@
+  return(NIL);}
+ 
+-LISP lgdImageFill(LISP l)
++static LISP lgdImageFill(LISP l)
+ {gdImagePtr im;
+  int x,y,color;
+@@ -331,14 +334,6 @@
+  gdImageFill(im,x,y,color);
+  return(NIL);}
+- 
+-/*
+ 
+-void gdImageSetBrush(gdImagePtr im, gdImagePtr brush)
+-void gdImageSetTile(gdImagePtr im, gdImagePtr tile)
+-void gdImageSetStyle(gdImagePtr im, int *style, int styleLength)
+-
+-*/
+-
+-LISP lgdImageChar(LISP l)
++static LISP lgdImageChar(LISP l)
+ {gdImagePtr im;
+  gdFontPtr font;
+@@ -353,5 +348,5 @@
+  return(NIL);}
+ 
+-LISP lgdImageCharUp(LISP l)
++static LISP lgdImageCharUp(LISP l)
+ {gdImagePtr im;
+  gdFontPtr font;
+@@ -366,5 +361,5 @@
+  return(NIL);}
+ 
+-LISP lgdImageString(LISP l)
++static LISP lgdImageString(LISP l)
+ {gdImagePtr im;
+  gdFontPtr font;
+@@ -375,10 +370,10 @@
+  x = get_c_long(poparg(&l,NIL));
+  y = get_c_long(poparg(&l,NIL));
+- c = get_c_string(poparg(&l,NIL));
++ c = get_string_data(poparg(&l, NIL));
+  color = get_c_long(poparg(&l,NIL));
+  gdImageString(im,font,x,y,c,color);
+  return(NIL);}
+ 
+-LISP lgdImageStringUp(LISP l)
++static LISP lgdImageStringUp(LISP l)
+ {gdImagePtr im;
+  gdFontPtr font;
+@@ -389,21 +384,21 @@
+  x = get_c_long(poparg(&l,NIL));
+  y = get_c_long(poparg(&l,NIL));
+- c = get_c_string(poparg(&l,NIL));
++ c = get_string_data(poparg(&l, NIL));
+  color = get_c_long(poparg(&l,NIL));
+  gdImageStringUp(im,font,x,y,c,color);
+  return(NIL);}
+ 
+-LISP lgdImageColorTransparent(LISP im,LISP color)
++static LISP lgdImageColorTransparent(LISP im,LISP color)
+ {gdImageColorTransparent(get_gdImagePtr(im),get_c_long(color));
+  return(NIL);}
+ 
+-LISP lgdImageInterlace(LISP im,LISP interlace)
++static LISP lgdImageInterlace(LISP im,LISP interlace)
+ {gdImageInterlace(get_gdImagePtr(im),get_c_long(interlace));
+  return(NIL);}
+ 
+-void gdimage_prin1(LISP ptr,struct gen_printio *f)
++static void gdimage_prin1(LISP ptr,struct gen_printio *f)
+ {char buff[256];
+  gdImagePtr im;
+- if ((im = (gdImagePtr) ptr->storage_as.string.data))
++ if ((im = (gdImagePtr)(void *)ptr->storage_as.string.data))
+    sprintf(buff,"#<GDIMAGE %p %d by %d>",
+ 	   im,im->sx,im->sy);
+@@ -412,14 +407,14 @@
+  gput_st(f,buff);}
+ 
+-void gdimage_gc_free(LISP ptr)
++static void gdimage_gc_free(LISP ptr)
+ {gdImagePtr im;
+- if ((im = (gdImagePtr) ptr->storage_as.string.data))
++ if ((im = (gdImagePtr)(void *)ptr->storage_as.string.data))
+    {gdImageDestroy(im);
+     ptr->storage_as.string.data = NULL;}}
+ 
+-void gdfont_prin1(LISP ptr,struct gen_printio *f)
++static void gdfont_prin1(LISP ptr,struct gen_printio *f)
+ {char buff[256];
+  gdFontPtr fnt;
+- if ((fnt = (gdFontPtr) ptr->storage_as.string.data))
++ if ((fnt = (gdFontPtr)(void *)ptr->storage_as.string.data))
+    sprintf(buff,"#<GDFONT %p %d by %d>",
+ 	   fnt,fnt->w,fnt->h);
+@@ -428,7 +423,7 @@
+  gput_st(f,buff);}
+ 
+-void gdfont_gc_free(LISP ptr)
++static void gdfont_gc_free(LISP ptr)
+ {gdFontPtr fnt;
+- if ((fnt = (gdFontPtr) ptr->storage_as.string.data) &&
++ if ((fnt = (gdFontPtr)(void *)ptr->storage_as.string.data) &&
+      ptr->storage_as.string.dim)
+    /* there is no api in gd 1.2 for loading a file from a file.
+@@ -437,29 +432,31 @@
+  }
+ 
+-void gdpoint_prin1(LISP ptr,struct gen_printio *f)
++static void gdpoint_prin1(LISP ptr,struct gen_printio *f)
+ {char buff[256];
+  gdPointPtr pt;
+- pt = (gdPointPtr) ptr->storage_as.string.data;
++ pt = (gdPointPtr)(void *)ptr->storage_as.string.data;
+  sprintf(buff,"#<GDPOINT %p %ld>",
+ 	 pt,ptr->storage_as.string.dim);
+  gput_st(f,buff);}
+ 
+-void gdpoint_gc_free(LISP ptr)
++static void gdpoint_gc_free(LISP ptr)
+ {gdPointPtr pt;
+- if ((pt = (gdPointPtr) ptr->storage_as.string.data))
++ if ((pt = (gdPointPtr)(void *)ptr->storage_as.string.data))
+    {free(pt);
+     ptr->storage_as.string.data = NULL;
+     ptr->storage_as.string.dim = 0;}}
+ 
+-LISP gdfont_w(LISP ptr)
++static LISP gdfont_w(LISP ptr)
+ {gdFontPtr font;
+  font = get_gdFontPtr(ptr);
+  return(flocons(font->w));}
+ 
+-LISP gdfont_h(LISP ptr)
++static LISP gdfont_h(LISP ptr)
+ {gdFontPtr font;
+  font = get_gdFontPtr(ptr);
+  return(flocons(font->h));}
+ 
++void init_gd(void);	/* Module entry point - our sole exported function */
++
+ void init_gd(void)
+ {long j;

Copied and modified: head/lang/siod/files/patch-lib (from r565476, head/lang/siod/files/patch-slibu.c)
==============================================================================
--- head/lang/siod/files/patch-slibu.c	Wed Feb 17 02:30:18 2021	(r565476, copy source)
+++ head/lang/siod/files/patch-lib	Wed Feb 17 03:00:00 2021	(r565477)
@@ -1,7 +1,1616 @@
---- slibu.c.orig	Mon Dec  1 19:16:38 1997
-+++ slibu.c	Thu Jan  6 15:04:04 2000
-@@ -20,6 +20,10 @@
+--- siod.h	2014-03-25 04:10:42.000000000 -0400
++++ siod.h	2021-02-15 20:59:39.714149000 -0500
+@@ -20,5 +20,5 @@
+ 		struct obj * cdr;} cons;
+ 	struct {double data;} flonum;
+-	struct {char *pname;
++	struct {const char *pname;
+ 		struct obj * vcell;} symbol;
+ 	struct {char *name;
+@@ -41,5 +41,5 @@
+  	struct {char *name;
+  		struct obj * (*f)(struct obj **, struct obj **);} subrm;
+-	struct {char *name;
++	struct {const char *name;
+ 		struct obj * (*f)(void *,...);} subr;
+ 	struct {struct obj *env;
+@@ -151,5 +151,5 @@
+ struct gen_printio
+ {int (*putc_fcn)(int,void *);
+- int (*puts_fcn)(char *,void *);
++ int (*puts_fcn)(const char *, void *);
+  void *cb_argument;};
+ 
+@@ -160,10 +160,10 @@
+ 
+ struct repl_hooks
+-{void (*repl_puts)(char *);
++{void (*repl_puts)(const char *);
+  LISP (*repl_read)(void);
+  LISP (*repl_eval)(LISP);
+  void (*repl_print)(LISP);};
+ 
+-void __stdcall process_cla(int argc,char **argv,int warnflag);
++void __stdcall process_cla(int argc, const char **argv, int warnflag);
+ void __stdcall print_welcome(void);
+ void __stdcall print_hs_1(void);
+@@ -172,6 +172,6 @@
+ LISP get_eof_val(void);
+ long repl_driver(long want_sigint,long want_init,struct repl_hooks *);
+-void set_stdout_hooks(void (*puts_f)(char *));
+-void set_repl_hooks(void (*puts_f)(char *),
++void set_stdout_hooks(void (*puts_f)(const char *));
++void set_repl_hooks(void (*puts_f)(const char *),
+ 		    LISP (*read_f)(void),
+ 		    LISP (*eval_f)(LISP),
+@@ -180,7 +180,8 @@
+ LISP err(const char *message, LISP x);
+ LISP errswitch(void);
+-char *get_c_string(LISP x);
+-char *get_c_string_dim(LISP x,long *);
+-char *try_get_c_string(LISP x);
++void *get_string_data(LISP x);
++const char *get_c_string(LISP x);
++const char *get_c_string_dim(LISP x, long *);
++const char *try_get_c_string(LISP x);
+ long get_c_long(LISP x);
+ double get_c_double(LISP x);
+@@ -204,30 +205,30 @@
+ LISP eq(LISP x,LISP y);
+ LISP eql(LISP x,LISP y);
+-LISP symcons(char *pname,LISP vcell);
++LISP symcons(const char *pname, LISP vcell);
+ LISP symbolp(LISP x);
+ LISP symbol_boundp(LISP x,LISP env);
+ LISP symbol_value(LISP x,LISP env);
+-LISP cintern(char *name);
+-LISP rintern(char *name);
+-LISP subrcons(long type, char *name, SUBR_FUNC f);
++LISP cintern(const char *name);
++LISP rintern(const char *name);
++LISP subrcons(long type, const char *name, SUBR_FUNC f);
+ LISP closure(LISP env,LISP code);
+ void gc_protect(LISP *location);
+ void gc_protect_n(LISP *location,long n);
+-void gc_protect_sym(LISP *location,char *st);
++void gc_protect_sym(LISP *location, const char *st);
+ 
+ void __stdcall init_storage(void);
+ void __stdcall init_slibu(void);
+ 
+-void init_subr(char *name, long type, SUBR_FUNC fcn);
+-void init_subr_0(char *name, LISP (*fcn)(void));
+-void init_subr_1(char *name, LISP (*fcn)(LISP));
+-void init_subr_2(char *name, LISP (*fcn)(LISP,LISP));
+-void init_subr_2n(char *name, LISP (*fcn)(LISP,LISP));
+-void init_subr_3(char *name, LISP (*fcn)(LISP,LISP,LISP));
+-void init_subr_4(char *name, LISP (*fcn)(LISP,LISP,LISP,LISP));
+-void init_subr_5(char *name, LISP (*fcn)(LISP,LISP,LISP,LISP,LISP));
+-void init_lsubr(char *name, LISP (*fcn)(LISP));
+-void init_fsubr(char *name, LISP (*fcn)(LISP,LISP));
+-void init_msubr(char *name, LISP (*fcn)(LISP *,LISP *));
++void init_subr(const char *name, long type, SUBR_FUNC fcn);
++void init_subr_0(const char *name, LISP (*fcn)(void));
++void init_subr_1(const char *name, LISP (*fcn)(LISP));
++void init_subr_2(const char *name, LISP (*fcn)(LISP, LISP));
++void init_subr_2n(const char *name, LISP (*fcn)(LISP, LISP));
++void init_subr_3(const char *name, LISP (*fcn)(LISP, LISP, LISP));
++void init_subr_4(const char *name, LISP (*fcn)(LISP, LISP, LISP, LISP));
++void init_subr_5(const char *name, LISP (*fcn)(LISP, LISP, LISP, LISP, LISP));
++void init_lsubr(const char *name, LISP (*fcn)(LISP));
++void init_fsubr(const char *name, LISP (*fcn)(LISP, LISP));
++void init_msubr(const char *name, LISP (*fcn)(LISP *, LISP *));
+ 
+ LISP assq(LISP x,LISP alist);
+@@ -256,5 +257,5 @@
+ 		    LISP (*fcn2)(char *,long, int *));
+ LISP apropos(LISP);
+-LISP vload(char *fname,long cflag,long rflag);
++LISP vload(const char *fname, long cflag, long rflag);
+ LISP load(LISP fname,LISP cflag,LISP rflag);
+ LISP require(LISP fname);
+@@ -293,5 +294,6 @@
+ void __stdcall init_trace(void);
+ long __stdcall repl_c_string(char *,long want_sigint,long want_init,long want_print);
+-char * __stdcall siod_version(void);
++long __stdcall repl_c_string01(const char *, long want_sigint, long want_init, long want_print);
++const char * __stdcall siod_version(void);
+ LISP nreverse(LISP);
+ LISP number2string(LISP,LISP,LISP,LISP);
+@@ -316,8 +318,8 @@
+ LISP lapply(LISP fcn,LISP args);
+ LISP mallocl(void *lplace,long size);
+-void gput_st(struct gen_printio *,char *);
+-void put_st(char *st);
++void gput_st(struct gen_printio *, const char *);
++void put_st(const char *st);
+ LISP listn(long n, ...);
+-char *must_malloc(unsigned long size);
++void *must_malloc(unsigned long size);
+ LISP lstrbreakup(LISP str,LISP lmarker);
+ LISP lstrunbreakup(LISP elems,LISP lmarker);
+@@ -356,5 +358,5 @@
+ 
+ 
+-LISP symalist(char *item,...);
++LISP symalist(const char *item, ...);
+ 
+ LISP encode_st_mode(LISP l);
+@@ -363,5 +365,5 @@
+ int __stdcall siod_main(int argc,char **argv, char **env);
+ void __stdcall siod_shuffle_args(int *pargc,char ***pargv);
+-void __stdcall siod_init(int argc,char **argv);
++void __stdcall siod_init(int argc, const char **argv);
+ 
+ #if defined(WIN32) && defined(_WINDOWS_)
+--- siodp.h	2014-03-25 04:10:42.000000000 -0400
++++ siodp.h	2021-02-15 14:47:39.214446000 -0500
+@@ -18,5 +18,5 @@
+ 
+ extern long siod_verbose_level;
+-extern char *siod_lib;
++extern const char *siod_lib;
+ extern long nointerrupt;
+ extern long interrupt_differed;
+@@ -81,7 +81,7 @@
+ 
+ #define STACK_CHECK(_ptr) \
+-  if (((char *) (_ptr)) < stack_limit_ptr) err_stack((char *) _ptr);
++  if (((char *) (_ptr)) < stack_limit_ptr) err_stack(_ptr);
+ 
+-void err_stack(char *);
++void err_stack(LISP *);
+ 
+ #if defined(VMS) && defined(VAX)
+@@ -95,9 +95,9 @@
+ void err_ctrl_c(void);
+ double myruntime(void);
+-void fput_st(FILE *f,char *st);
+-void put_st(char *st);
+-void grepl_puts(char *,void (*)(char *));
++void fput_st(FILE *f, const char *st);
++void put_st(const char *st);
++void grepl_puts(const char *, void (*)(const char *));
+ void gc_fatal_error(void);
+-LISP gen_intern(char *name,long copyp);
++LISP gen_intern(const char *name, long copyp);
+ void scan_registers(void);
+ void init_storage_1(void);
+@@ -136,5 +136,5 @@
+ LISP leval_quote(LISP args,LISP env);
+ LISP leval_tenv(LISP args,LISP env);
+-int flush_ws(struct gen_readio *f,char *eoferr);
++int flush_ws(struct gen_readio *f, const char *eoferr);
+ int f_getc(FILE *f);
+ void f_ungetc(int c, FILE *f);
+@@ -164,6 +164,6 @@
+ void file_gc_free(LISP ptr);
+ void file_prin1(LISP ptr,struct gen_printio *f);
+-LISP fopen_c(char *name,char *how);
+-LISP fopen_cg(FILE *(*)(const char *,const char *),char *,char *);
++LISP fopen_c(const char *name, const char *how);
++LISP fopen_cg(FILE *(*)(const char *, const char *), const char *, const char *);
+ LISP fopen_l(LISP name,LISP how);
+ LISP fclose_l(LISP p);
+--- slib.c	2014-03-25 04:40:18.000000000 -0400
++++ slib.c	2021-02-15 20:55:35.681648000 -0500
+@@ -77,8 +77,12 @@
  #include <errno.h>
+ 
++#if defined(HAVE_SYS_PARAM_H)
++#include <sys/param.h>
++#endif
++
+ #include "siod.h"
+ #include "siodp.h"
+ 
+-#ifdef linux
++#if defined(linux) || defined(BSD)
+ #define sprintf_s snprintf
+ #endif
+@@ -90,57 +94,57 @@
+ 	NIL);}
+ 
+-char * __stdcall siod_version(void)
++const char * __stdcall siod_version(void)
+ {return("3.6.2 12-MAY-07");}
+ 
+-long nheaps = 2;
+-LISP *heaps;
++static long nheaps = 2;
++static LISP *heaps;
+ LISP heap,heap_end,heap_org;
+-long heap_size = 5000;
+-long old_heap_used;
+-long gc_status_flag = 1;
+-char *init_file = (char *) NULL;
++static long heap_size = 5000;
++static long old_heap_used;
++static long gc_status_flag = 1;
++static const char *init_file = NULL;
+ char *tkbuffer = NULL;
+-long gc_kind_copying = 0;
+-long gc_cells_allocated = 0;
+-double gc_time_taken;
+-LISP *stack_start_ptr = NULL;
+-LISP freelist;
+-jmp_buf errjmp;
++static long gc_kind_copying = 0;
++static long gc_cells_allocated = 0;
++static double gc_time_taken;
++static LISP *stack_start_ptr = NULL;
++static LISP freelist;
++static jmp_buf errjmp;
+ long errjmp_ok = 0;
+ long nointerrupt = 1;
+ long interrupt_differed = 0;
+-LISP oblistvar = NIL;
++static LISP oblistvar = NIL;
+ LISP sym_t = NIL;
+-LISP eof_val = NIL;
+-LISP sym_errobj = NIL;
+-LISP sym_catchall = NIL;
+-LISP sym_progn = NIL;
+-LISP sym_lambda = NIL;
+-LISP sym_quote = NIL;
+-LISP sym_dot = NIL;
+-LISP sym_after_gc = NIL;
+-LISP sym_eval_history_ptr = NIL;
++static LISP eof_val = NIL;
++static LISP sym_errobj = NIL;
++static LISP sym_catchall = NIL;
++static LISP sym_progn = NIL;
++static LISP sym_lambda = NIL;
++static LISP sym_quote = NIL;
++static LISP sym_dot = NIL;
++static LISP sym_after_gc = NIL;
++static LISP sym_eval_history_ptr = NIL;
+ LISP unbound_marker = NIL;
+-LISP *obarray;
+-long obarray_dim = 100;
++static LISP *obarray;
++static long obarray_dim = 100;
+ struct catch_frame *catch_framep = (struct catch_frame *) NULL;
+-void (*repl_puts)(char *) = NULL;
+-LISP (*repl_read)(void) = NULL;
+-LISP (*repl_eval)(LISP) = NULL;
+-void (*repl_print)(LISP) = NULL;
+-void (*stdout_puts)(char *) = NULL;
+-LISP *inums;
+-long inums_dim = 256;
+-struct user_type_hooks *user_types = NULL;
+-long user_tc_next = tc_user_min;
+-struct gc_protected *protected_registers = NULL;
+-jmp_buf save_regs_gc_mark;
+-double gc_rt;
+-long gc_cells_collected;
+-char *user_ch_readm = "";
+-char *user_te_readm = "";
+-LISP (*user_readm)(int, struct gen_readio *) = NULL;
+-LISP (*user_readt)(char *,long, int *) = NULL;
+-void (*fatal_exit_hook)(void) = NULL;
++static void (*repl_puts)(const char *) = NULL;
++static LISP (*repl_read)(void) = NULL;
++static LISP (*repl_eval)(LISP) = NULL;
++static void (*repl_print)(LISP) = NULL;
++static void (*stdout_puts)(const char *) = NULL;
++static LISP *inums;
++static long inums_dim = 256;
++static struct user_type_hooks *user_types = NULL;
++static long user_tc_next = tc_user_min;
++static struct gc_protected *protected_registers = NULL;
++static jmp_buf save_regs_gc_mark;
++static double gc_rt;
++static long gc_cells_collected;
++static const char *user_ch_readm = "";
++static const char *user_te_readm = "";
++static LISP (*user_readm)(int, struct gen_readio *) = NULL;
++static LISP (*user_readt)(char *, long, int *) = NULL;
++static void (*fatal_exit_hook)(void) = NULL;
+ #ifdef THINK_C
+ int ipoll_counter = 0;
+@@ -148,5 +152,5 @@
+ 
+ char *stack_limit_ptr = NULL;
+-long stack_size = 
++static long stack_size = 
+ #ifdef THINK_C
+   10000;
+@@ -170,10 +174,10 @@
+ #endif
+ 
+-char *siod_lib = SIOD_LIB_DEFAULT;
++const char *siod_lib = SIOD_LIB_DEFAULT;
+ 
+-void __stdcall process_cla(int argc,char **argv,int warnflag)
++void __stdcall process_cla(int argc, const char **argv, int warnflag)
+ {int k;
+  char *ptr;
+- static siod_lib_set = 0;
++ static int siod_lib_set = 0;
+  char msgbuff[256];
+ #if !defined(vms)
+@@ -288,5 +292,5 @@
+  return(x);}
+ 
+-void handle_sigfpe(int sig SIG_restargs)
++void handle_sigfpe(int sig SIG_restargs __unused)
+ {
+ #ifdef WIN32
+@@ -296,5 +300,5 @@
+  err("floating point exception",NIL);}
+ 
+-void handle_sigint(int sig SIG_restargs)
++void handle_sigint(int sig SIG_restargs __unused)
+ {signal(SIGINT,handle_sigint);
+ #if defined(WIN32)
+@@ -364,12 +368,12 @@
+  return(rv);}
+ 
+-static void ignore_puts(char *st)
++static void ignore_puts(const char *st __unused)
+ {}
+ 
+-static void noprompt_puts(char *st)
++static void noprompt_puts(const char *st)
+ {if (strcmp(st,"> ") != 0)
+    put_st(st);}
+ 
+-static char *repl_c_string_arg = NULL;
++static const char *repl_c_string_arg = NULL;
+ static char *repl_c_string_out = NULL;
+ static long repl_c_string_flag = 0;
+@@ -386,5 +390,5 @@
+  return(read_from_string(s));}
+ 
+-static void ignore_print(LISP x)
++static void ignore_print(LISP x __unused)
+ {repl_c_string_flag = 1;}
+ 
+@@ -397,5 +401,5 @@
+  char *end;};
+ 
+-static int rcsp_puts(char *from,void *cb)
++static int rcsp_puts(const char *from, void *cb)
+ {long fromlen,intolen,cplen;
+  struct rcsp_puts *p = (struct rcsp_puts *) cb;
+@@ -421,16 +425,11 @@
+  repl_c_string_flag = 1;}
+ 
+-long __stdcall repl_c_string(char *str,
+-		   long want_sigint,long want_init,long want_print)
++long __stdcall repl_c_string01(const char *str,
++		   long want_sigint, long want_init, long want_print)
+ {struct repl_hooks h;
+  long retval;
+  h.repl_read = repl_c_string_read;
+  h.repl_eval = NULL;
+- if (want_print > 1)
+-   {h.repl_puts = ignore_puts;
+-    h.repl_print = repl_c_string_print;
+-    repl_c_string_print_len = want_print;
+-    repl_c_string_out = str;}
+- else if (want_print)
++ if (want_print)
+    {h.repl_puts = noprompt_puts;
+     h.repl_print = not_ignore_print;
+@@ -452,4 +451,25 @@
+   return(2);}
+ 
++long __stdcall repl_c_string(char *str,
++		   long want_sigint, long want_init, long want_print)
++{struct repl_hooks h;
++ long retval;
++ h.repl_read = repl_c_string_read;
++ h.repl_eval = NULL;
++
++ h.repl_puts = ignore_puts;
++ h.repl_print = repl_c_string_print;
++ repl_c_string_print_len = want_print;
++ repl_c_string_out = str;
++ repl_c_string_arg = str;
++ repl_c_string_flag = 0;
++ retval = repl_driver(want_sigint, want_init, &h);
++ if (retval != 0)
++   return(retval);
++ else if (repl_c_string_flag == 1)
++   return(0);
++ else
++  return(2);}
++
+ #ifdef unix
+ #include <sys/types.h>
+@@ -511,11 +531,11 @@
+ #endif

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202102170300.11H300tT023996>