On 08/23/17 20:58, Nigel Taylor wrote:
> Hasn't been updated in a while.
> 
> patched for clang
> tests added, by running all examples, requires manual checks of results
> afterwards.
> 
> Tried only on amd64.
> 
> Ok?
> 
> 
Missed the attachment again.
Index: Makefile
===================================================================
RCS file: /home/cvs/ports/graphics/dpic/Makefile,v
retrieving revision 1.5
diff -u -p -r1.5 Makefile
--- Makefile	23 Oct 2014 13:43:04 -0000	1.5
+++ Makefile	6 Aug 2017 12:47:10 -0000
@@ -2,8 +2,7 @@
 
 COMMENT =		pic-like interpreter for producing line graphics
 
-DISTNAME =		dpic-2014.Jan.01
-PKGNAME =		${DISTNAME:S/Jan/01/}
+DISTNAME =		dpic-2017.08.01
 
 CATEGORIES =		graphics
 
@@ -13,18 +12,26 @@ HOMEPAGE =		https://ece.uwaterloo.ca/~ap
 PERMIT_PACKAGE_CDROM =	Yes
 
 WANTLIB +=		c m
-WRKDIST =		${WRKDIR}/dpic
 
 ALL_TARGET =		dpic
 
 MASTER_SITES =		${HOMEPAGE}
 
+
+TEST_DEPENDS =		print/texlive/base \
+			print/texlive/texmf,-main
+
+CONFIGURE_STYLE =	gnu
+
 do-install:
 	${INSTALL_PROGRAM} ${WRKSRC}/dpic ${PREFIX}/bin
 	${INSTALL_MAN} ${WRKSRC}/doc/dpic.1 ${PREFIX}/man/man1
 	${INSTALL_DATA_DIR} ${PREFIX}/share/examples/dpic/
-	cd ${WRKSRC}/examples/ && pax -rw * ${PREFIX}/share/examples/dpic/
+	cd ${WRKSRC}/examples/ && \
+		pax -rw sources Examples.txt Makefile README ${PREFIX}/share/examples/dpic/
 
-NO_TEST =		Yes
+do-test:
+	cd ${WRKSRC}/examples/ && \
+	make -e DPIC=${WRKSRC}/dpic all
 
 .include <bsd.port.mk>
Index: distinfo
===================================================================
RCS file: /home/cvs/ports/graphics/dpic/distinfo,v
retrieving revision 1.4
diff -u -p -r1.4 distinfo
--- distinfo	23 Oct 2014 13:43:05 -0000	1.4
+++ distinfo	5 Aug 2017 07:00:52 -0000
@@ -1,2 +1,2 @@
-SHA256 (dpic-2014.Jan.01.tar.gz) = Bb5z+hrYrkPonP4cDqkF0RtL5eezWcbn805Rpx6nv8U=
-SIZE (dpic-2014.Jan.01.tar.gz) = 584351
+SHA256 (dpic-2017.08.01.tar.gz) = 0GbWBx4BNqqJpYiiWAuMcFdKg29a7PbOFfRBbV923j0=
+SIZE (dpic-2017.08.01.tar.gz) = 1246842
Index: patches/patch-Makefile
===================================================================
RCS file: patches/patch-Makefile
diff -N patches/patch-Makefile
--- patches/patch-Makefile	23 Oct 2014 13:43:05 -0000	1.3
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,15 +0,0 @@
-$OpenBSD: patch-Makefile,v 1.3 2014/10/23 13:43:05 nigel Exp $
-Honour CC and CFLAGS
---- Makefile.orig	Mon May 16 13:59:42 2011
-+++ Makefile	Sun Mar 17 23:54:29 2013
-@@ -44,8 +44,8 @@ DEST = ${DESTDIR}/${PREFIX}/bin
- # CC=xlc
- 
- # other.  cc usually works too.
--CFLAGS += $(DEFINEA) $(DEFINEB) $(SAFEMODE) -O
--CC=gcc
-+CFLAGS += $(DEFINEA) $(DEFINEB) $(SAFEMODE)
-+CC?=gcc
- # CC?=gcc
- 
- OBJECTS = dpic.o p2clib.o
Index: patches/patch-Makefile_in
===================================================================
RCS file: patches/patch-Makefile_in
diff -N patches/patch-Makefile_in
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ patches/patch-Makefile_in	23 Jul 2017 16:20:22 -0000
@@ -0,0 +1,27 @@
+$OpenBSD$
+Index: Makefile.in
+--- Makefile.in.orig
++++ Makefile.in
+@@ -1,10 +1,9 @@
+ # For Linux (expects "make DESTDIR=xxx PREFIX=yyy install"):
+ DESTDIR = /usr
+-PREFIX = .
+-DEST = ${DESTDIR}/${PREFIX}/bin
++DEST = ${PREFIX}/bin
+ 
+-MANDIR = $(DESTDIR)/$(PREFIX)/share/man/man1
+-DOCDIR = $(DESTDIR)/$(PREFIX)/share/doc/dpic
++MANDIR = $(PREFIX)/share/man/man1
++DOCDIR = $(PREFIX)/share/doc/dpic
+ 
+ #-----------------------------------------------------------------------
+ 
+@@ -47,7 +46,7 @@ installdocs: doc/dpicdoc.pdf
+ 	install -m 644 doc/dpicdoc.pdf $(DOCDIR)
+ 	install -m 644 doc/dpictools.pic $(DOCDIR)
+ #	install -m 644 doc/dpic.1 $(SPECMANDIR)
+-	cat doc/dpic.1 | gzip > $(MANDIR)/dpic.1.gz
++	install -m 644 doc/dpic.1 $(MANDIR)
+ #Ubuntu files:
+ #/usr/bin/dpic
+ #/usr/share/doc/dpic/CHANGES.gz
Index: patches/patch-dpic_c
===================================================================
RCS file: patches/patch-dpic_c
diff -N patches/patch-dpic_c
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ patches/patch-dpic_c	5 Aug 2017 07:03:05 -0000
@@ -0,0 +1,244 @@
+$OpenBSD$
+Index: dpic.c
+--- dpic.c.orig
++++ dpic.c
+@@ -1241,11 +1241,11 @@ void wfloat(FILE **iou, double y)
+ { char buf[25];
+   int i;
+   if (fabs(y)==distmax)
+-     sprintf(buf,"%24.6e", y);
++     snprintf(buf,sizeof(buf), "%24.6e", y);
+   else if (y >= 0.0)
+-     sprintf(buf,"%24.6f", floor( 1000000*y+0.5)/1000000.0 );
++     snprintf(buf,sizeof(buf), "%24.6f", floor( 1000000*y+0.5)/1000000.0 );
+   else
+-     sprintf(buf,"%24.6f",-floor(-1000000*y+0.5)/1000000.0 );
++     snprintf(buf,sizeof(buf), "%24.6f",-floor(-1000000*y+0.5)/1000000.0 );
+   for (i=23; buf[i]=='0'; ) i-- ;
+   if (buf[i]=='.') buf[i] = (char)0;
+   else buf[i+1] = (char)0;
+@@ -1897,7 +1897,7 @@ boolean drawn(primitive *node, int linesp, double fill
+       return true;
+   }
+   else if (linesp == XLdotted || linesp == XLdashed || linesp == XLsolid ||
+-	   fill >= 0.0 && fill <= 1.0) {
++	   (fill >= 0.0 && fill <= 1.0)) {
+       return true;
+   }
+   else {
+@@ -4793,7 +4793,7 @@ void mfpdraw(primitive *node)
+     initnesw();
+     nesw(node);
+     if (node->ptype == XLbox) {
+-	if (node->Upr.Ubox.boxfill >= 0.0 && node->Upr.Ubox.boxfill <= 1.0 ||
++	if ((node->Upr.Ubox.boxfill >= 0.0 && node->Upr.Ubox.boxfill <= 1.0) ||
+ 	     node->shadedp != NULL) {
+ 	    mfpsetshade(node->Upr.Ubox.boxfill, node->shadedp);
+ 	    mfpbox(node->aat.xpos, node->aat.ypos, north, south, east, west,
+@@ -4812,7 +4812,7 @@ void mfpdraw(primitive *node)
+     break;
+ 
+   case XLellipse:
+-    if (node->Upr.Uellipse.efill >= 0.0 && node->Upr.Uellipse.efill <= 1.0 ||
++    if ((node->Upr.Uellipse.efill >= 0.0 && node->Upr.Uellipse.efill <= 1.0) ||
+ 	 node->shadedp != NULL) {
+ 	mfpsetshade(node->Upr.Uellipse.efill, node->shadedp);
+ 	mfpellipse(node->aat, node->Upr.Uellipse.elwidth, node->Upr.Uellipse.elheight);
+@@ -4828,7 +4828,7 @@ void mfpdraw(primitive *node)
+     break;
+ 
+   case XLcircle:
+-    if (node->Upr.Ucircle.cfill >= 0.0 && node->Upr.Ucircle.cfill <= 1.0 ||
++    if ((node->Upr.Ucircle.cfill >= 0.0 && node->Upr.Ucircle.cfill <= 1.0) ||
+ 	 node->shadedp != NULL) {
+ 	mfpsetshade(node->Upr.Ucircle.cfill, node->shadedp);
+ 	mfpcircle(node->aat, node->Upr.Ucircle.radius);
+@@ -5423,7 +5423,7 @@ void mpodraw(primitive *node)
+   case XBLOCK:
+     if (node->ptype == XLbox) {
+ 	if (node->shadedp != NULL ||
+-	     node->Upr.Ubox.boxfill >= 0.0 && node->Upr.Ubox.boxfill <= 1.0) {
++	     (node->Upr.Ubox.boxfill >= 0.0 && node->Upr.Ubox.boxfill <= 1.0)) {
+ 	    mpobox("fill ", node->aat, node->Upr.Ubox.boxwidth / 2,
+ 		   node->Upr.Ubox.boxheight / 2, node->Upr.Ubox.boxradius);
+ 	    addcolor(node->shadedp, node->Upr.Ubox.boxfill);
+@@ -5442,7 +5442,7 @@ void mpodraw(primitive *node)
+ 
+   case XLellipse:
+     if (node->shadedp != NULL ||
+-	 node->Upr.Uellipse.efill >= 0.0 && node->Upr.Uellipse.efill <= 1.0) {
++	 (node->Upr.Uellipse.efill >= 0.0 && node->Upr.Uellipse.efill <= 1.0)) {
+ 	mpoellipse("fill ", node->aat, node->Upr.Uellipse.elwidth / 2,
+ 		   node->Upr.Uellipse.elheight / 2);
+ 	addcolor(node->shadedp, node->Upr.Uellipse.efill);
+@@ -5460,7 +5460,7 @@ void mpodraw(primitive *node)
+ 
+   case XLcircle:
+     if (node->shadedp != NULL ||
+-	 node->Upr.Ucircle.cfill >= 0.0 && node->Upr.Ucircle.cfill <= 1.0) {
++	 (node->Upr.Ucircle.cfill >= 0.0 && node->Upr.Ucircle.cfill <= 1.0)) {
+ 	printf("fill fullcircle scaled ");
+ 	wfloat(&output, node->Upr.Ucircle.radius * 2 / fsc);
+ 	printf(" shifted ");
+@@ -6974,7 +6974,7 @@ void psdraw(primitive *node)
+   switch (node->ptype) {
+ 
+   case XLbox:
+-    if (node->Upr.Ubox.boxfill >= 0.0 && node->Upr.Ubox.boxfill <= 1.0 ||
++    if ((node->Upr.Ubox.boxfill >= 0.0 && node->Upr.Ubox.boxfill <= 1.0) ||
+ 	 node->shadedp != NULL) {
+ 	psbox(node->aat, node->Upr.Ubox.boxwidth / 2,
+ 	      node->Upr.Ubox.boxheight / 2, node->Upr.Ubox.boxradius);
+@@ -7027,7 +7027,7 @@ void psdraw(primitive *node)
+     else {
+ 	fill = node->Upr.Ucircle.cfill;
+     }
+-    if (fill >= 0.0 && fill <= 1.0 || node->shadedp != NULL) {
++    if ((fill >= 0.0 && fill <= 1.0) || node->shadedp != NULL) {
+ 	pssetthick(lth);
+ 	printf(" gsave ");
+ 	pswpos(node->aat);
+@@ -7416,7 +7416,7 @@ void pdfwfloat(double y)
+       ix = ixd;
+   } while (ix != 0 || j <= 6);
+   for (j = 1; j <= ln; j++) {
+-      sprintf(STR1, "%c", ts[ln - j]);
++      snprintf(STR1, sizeof(STR1), "%c", ts[ln - j]);
+       pdfstream(STR1, 1, &cx);
+   }
+ }
+@@ -7580,10 +7580,10 @@ void pdfwstring(nametype *p)
+       iswhite = (c == etxch || c == nlch || c == tabch || c == ' ');
+       if (!iswhite || !waswhite) {
+ 	  if (c == bslch || c == ')' || c == '(') {
+-	      sprintf(STR1, "%c", bslch);
++	      snprintf(STR1, sizeof(STR1), "%c", bslch);
+ 	      pdfstream(STR1, 1, &cx);
+ 	  }
+-	  sprintf(STR1, "%c", c);
++	  snprintf(STR1, sizeof(STR1), "%c", c);
+ 	  pdfstream(STR1, 1, &cx);
+       }
+       waswhite = iswhite;
+@@ -8020,7 +8020,7 @@ void pdfdraw(primitive *node)
+ 
+   case XLbox:
+     if (drawn(node, lsp, node->Upr.Ubox.boxfill)) {
+-	fll = (node->Upr.Ubox.boxfill >= 0.0 && node->Upr.Ubox.boxfill <= 1.0 ||
++	fll = ((node->Upr.Ubox.boxfill >= 0.0 && node->Upr.Ubox.boxfill <= 1.0) ||
+ 	       node->shadedp != NULL);
+ 	pdflinearfill(node->Upr.Ubox.boxfill, node->shadedp);
+ 	pdflineopts(lsp, node->lparam, lth, node->outlinep);
+@@ -8052,7 +8052,7 @@ void pdfdraw(primitive *node)
+ 	fill = node->Upr.Ucircle.cfill;
+     }
+     if (drawn(node, lsp, fill)) {
+-	fll = (fill >= 0.0 && fill <= 1.0 || node->shadedp != NULL);
++	fll = ((fill >= 0.0 && fill <= 1.0) || node->shadedp != NULL);
+ 	pdflinearfill(fill, node->shadedp);
+ 	pdflineopts(lsp, node->lparam, lth, node->outlinep);
+ 	pdfellipse(node->aat, x, y);
+@@ -8160,7 +8160,7 @@ void pdfdraw(primitive *node)
+ 	pdfwpos(node->Upr.Uline.endpos);
+ 	pdfstream(" l", 2, &cx);
+ 	if (node->son != NULL) {
+-	    sprintf(STR1, "%c", nlch);
++	    snprintf(STR1, sizeof(STR1), "%c", nlch);
+ 	    pdfstream(STR1, 1, &cx);
+ 	}
+ 	else {
+@@ -8241,7 +8241,7 @@ void pdfdraw(primitive *node)
+   case XLaTeX:
+     if (node->textp != NULL) {
+ 	pdfwstring(node->textp);
+-	sprintf(STR1, "%c", nlch);
++	snprintf(STR1, sizeof(STR1), "%c", nlch);
+ 	pdfstream(STR1, 1, &cx);
+     }
+     break;
+@@ -8448,7 +8448,7 @@ void texdraw(primitive *node)
+ 	lgth = linlen(node->Upr.Uline.endpos.xpos - node->aat.xpos,
+ 		      node->Upr.Uline.endpos.ypos - node->aat.ypos);
+ 	if (drawmode == Pict2e ||
+-	     lsp == XLsolid && (lgth > 0.18 || drawmode == tTeX)) {
++	     (lsp == XLsolid && (lgth > 0.18 || drawmode == tTeX))) {
+ 	    if (lgth > 0) {
+ 		printf("\\put");
+ 		wpos(node->aat);
+@@ -8759,16 +8759,16 @@ void texdraw(primitive *node)
+ 		node->direction = p->direction;
+ 	    }
+ 	}
+-	if (node->direction == XLleft && node->Upr.Uline.endpos.ypos < 0.0 ||
+-	     node->direction == XLdown && node->Upr.Uline.endpos.ypos > 0.0) {
++	if ((node->direction == XLleft && node->Upr.Uline.endpos.ypos < 0.0) ||
++	     (node->direction == XLdown && node->Upr.Uline.endpos.ypos > 0.0)) {
+ 	    printf("[bl]}\n");
+ 	}
+-	else if (node->direction == XLleft && node->Upr.Uline.endpos.ypos > 0.0 ||
+-		 node->direction == XLup && node->Upr.Uline.endpos.ypos < 0.0) {
++	else if ((node->direction == XLleft && node->Upr.Uline.endpos.ypos > 0.0) ||
++		 (node->direction == XLup && node->Upr.Uline.endpos.ypos < 0.0)) {
+ 	    printf("[tl]}\n");
+ 	}
+-	else if (node->direction == XLright && node->Upr.Uline.endpos.ypos < 0.0 ||
+-		 node->direction == XLup && node->Upr.Uline.endpos.ypos > 0.0) {
++	else if ((node->direction == XLright && node->Upr.Uline.endpos.ypos < 0.0) ||
++		 (node->direction == XLup && node->Upr.Uline.endpos.ypos > 0.0)) {
+ 	    printf("[tr]}\n");
+ 	}
+ 	else {
+@@ -12552,8 +12552,8 @@ void produce(stackinx newp, int p)
+ 	}
+ 	else {
+ 	    With1->xval += With1->yval;
+-	    if (With1->yval > 0 && With1->xval > With1->endchop ||
+-		 With1->yval < 0 && With1->xval < With1->endchop) {
++	    if ((With1->yval > 0 && With1->xval > With1->endchop) ||
++		 (With1->yval < 0 && With1->xval < With1->endchop)) {
+ 		bswitch = true;
+ 	    }
+ 	}
+@@ -13464,16 +13464,16 @@ void produce(stackinx newp, int p)
+ 	      s = sin(With2->Upr.Uline.endpos.xpos);
+ 	      With2->aat.xpos += With2->Upr.Uline.aradius * r;
+ 	      With2->aat.ypos += With2->Upr.Uline.aradius * s;
+-	      if (With2->direction == XLup && i == XLleft ||
+-		   With2->direction == XLdown && i == XLright ||
+-		   With2->direction == XLright && i == XLup ||
+-		   With2->direction == XLleft && i == XLdown) {
++	      if ((With2->direction == XLup && i == XLleft) ||
++		   (With2->direction == XLdown && i == XLright) ||
++		   (With2->direction == XLright && i == XLup) ||
++		   (With2->direction == XLleft && i == XLdown)) {
+ 		  With2->Upr.Uline.endpos.ypos = pi * 0.5;
+ 	      }
+-	      else if (With2->direction == XLup && i == XLright ||
+-		       With2->direction == XLdown && i == XLleft ||
+-		       With2->direction == XLright && i == XLdown ||
+-		       With2->direction == XLleft && i == XLup) {
++	      else if ((With2->direction == XLup && i == XLright) ||
++		       (With2->direction == XLdown && i == XLleft) ||
++		       (With2->direction == XLright && i == XLdown) ||
++		       (With2->direction == XLleft && i == XLup)) {
+ 		  With2->Upr.Uline.endpos.ypos = -pi * 0.5;
+ 	      }
+ 	      if (attstack[newp+2].lexval != XEMPTY) {
+@@ -17640,7 +17640,7 @@ void defineargbody(int *parenlevel, fbuffer **p2)
+ 	      }
+ 	  }
+ 	  /*D if debuglevel=2 then write(log,' instring=',instring,' '); D*/
+-	  if (!instring && (*parenlevel < 0 || *parenlevel == 0 && ch == ',')) {
++	  if (!instring && (*parenlevel < 0 || (*parenlevel == 0 && ch == ','))) {
+ 	      j = With->savedlen;
+ 	      inarg = false;
+ 	  }
+@@ -18743,7 +18743,7 @@ void getoptions(void)
+ }  /* getoptions */
+ 
+ 
+-void main(int argc, Char *argv[])
++int main(int argc, Char *argv[])
+ { P_argc = argc; P_argv = argv; __top_jb = NULL;
+   redirect = NULL;
+   copyin = NULL;
Index: patches/patch-p2c_h
===================================================================
RCS file: patches/patch-p2c_h
diff -N patches/patch-p2c_h
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ patches/patch-p2c_h	23 Jul 2017 16:20:22 -0000
@@ -0,0 +1,18 @@
+$OpenBSD$
+Index: p2c.h
+--- p2c.h.orig
++++ p2c.h
+@@ -435,12 +435,7 @@ typedef struct {
+ } _TEXT;
+ 
+ /* Memory allocation */
+-#ifdef __GCC__
+-# define Malloc(n)  (malloc(n) ?: (Anyptr)_OutMem())
+-#else
+-extern Anyptr __MallocTemp__;
+-# define Malloc(n)  ((__MallocTemp__ = malloc(n)) ? __MallocTemp__ : (Anyptr)_OutMem())
+-#endif
++extern void *Malloc(size_t);
+ #define FreeR(p)    (free((Anyptr)(p)))    /* used if arg is an rvalue */
+ #define Free(p)     (free((Anyptr)(p)), (p)=NULL)
+ 
Index: patches/patch-p2clib_c
===================================================================
RCS file: patches/patch-p2clib_c
diff -N patches/patch-p2clib_c
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ patches/patch-p2clib_c	23 Jul 2017 17:13:03 -0000
@@ -0,0 +1,208 @@
+$OpenBSD$
+Index: p2clib.c
+--- p2clib.c.orig
++++ p2clib.c
+@@ -30,8 +30,6 @@ int P_ioresult;
+ 
+ long EXCP_LINE;    /* Used by Pascal workstation system */
+ 
+-Anyptr __MallocTemp__;
+-
+ __p2c_jmp_buf *__top_jb;
+ 
+ 
+@@ -417,9 +415,10 @@ register int pos, len;
+ 
+ /* Insert string "src" at index "pos" of "dst". */
+ 
+-void strinsert(src, dst, pos)
++void strinsert(src, dst, pos, size)
+ register char *src, *dst;
+ register int pos;
++size_t size;
+ {
+     register int slen, dlen;
+ 
+@@ -429,7 +428,7 @@ register int pos;
+     dst += dlen;
+     dlen -= pos;
+     if (dlen <= 0) {
+-        strcpy(dst, src);
++        strlcpy(dst, src, size);
+         return;
+     }
+     slen = strlen(src);
+@@ -890,7 +889,7 @@ int *Day, *Month, *Year, *Hour, *Min, *Sec;
+ {
+ #ifndef NO_TIME
+     struct tm *tm;
+-    long clock;
++    time_t clock;
+ 
+     time(&clock);
+     tm = localtime(&clock);
+@@ -908,7 +907,7 @@ int *Day, *Month, *Year, *Hour, *Min, *Sec;
+ Void VAXdate(s)
+ char *s;
+ {
+-    long clock;
++    time_t clock;
+     char *c;
+     int i;
+     static int where[] = {8, 9, 0, 4, 5, 6, 0, 20, 21, 22, 23};
+@@ -924,7 +923,7 @@ char *s;
+ Void VAXtime(s)
+ char *s;
+ {
+-    long clock;
++    time_t clock;
+     char *c;
+     int i;
+ 
+@@ -959,7 +958,14 @@ register int len, n;
+ }
+ 
+ 
++void *Malloc(size_t size) {
++    void *p;
+ 
++    if ( (p = malloc(size)) )
++        return p;
++    _OutMem();
++    return p;
++}
+ 
+ /* if defined(__GNUC__) || defined(HAVE_INTTYPES_H) */
+ #ifndef NO_INTTYPES_H
+@@ -985,85 +991,87 @@ int _NilCheck()
+ /* The following is suitable for the HP Pascal operating system.
+    It might want to be revised when emulating another system. */
+ 
+-char *_ShowEscape(buf, code, ior, prefix)
++char *_ShowEscape(buf, code, ior, prefix, size)
+ char *buf, *prefix;
+-int code, ior;
++int code, ior, size;
+ {
+     char *bufp;
++    int sizep;
+ 
+     if (prefix && *prefix) {
+-        strcpy(buf, prefix);
+-	strcat(buf, ": ");
++        strlcpy(buf, prefix, size);
++	strlcat(buf, ": ", size);
+         bufp = buf + strlen(buf);
+     } else {
+         bufp = buf;
+     }
++    sizep = size - strlen(buf);
+     if (code == -10) {
+-        sprintf(bufp, "Pascal system I/O error %d", ior);
++        snprintf(bufp, sizep, "Pascal system I/O error %d", ior);
+         switch (ior) {
+             case 3:
+-                strcat(buf, " (illegal I/O request)");
++                strlcat(buf, " (illegal I/O request)", size);
+                 break;
+             case 7:
+-                strcat(buf, " (bad file name)");
++                strlcat(buf, " (bad file name)", size);
+                 break;
+             case FileNotFound:   /*10*/
+-                strcat(buf, " (file not found)");
++                strlcat(buf, " (file not found)", size);
+                 break;
+             case FileNotOpen:    /*13*/
+-                strcat(buf, " (file not open)");
++                strlcat(buf, " (file not open)", size);
+                 break;
+             case BadInputFormat: /*14*/
+-                strcat(buf, " (bad input format)");
++                strlcat(buf, " (bad input format)", size);
+                 break;
+             case 24:
+-                strcat(buf, " (not open for reading)");
++                strlcat(buf, " (not open for reading)", size);
+                 break;
+             case 25:
+-                strcat(buf, " (not open for writing)");
++                strlcat(buf, " (not open for writing)", size);
+                 break;
+             case 26:
+-                strcat(buf, " (not open for direct access)");
++                strlcat(buf, " (not open for direct access)", size);
+                 break;
+             case 28:
+-                strcat(buf, " (string subscript out of range)");
++                strlcat(buf, " (string subscript out of range)", size);
+                 break;
+             case EndOfFile:      /*30*/
+-                strcat(buf, " (end-of-file)");
++                strlcat(buf, " (end-of-file)", size);
+                 break;
+             case FileWriteError: /*38*/
+-		strcat(buf, " (file write error)");
++		strlcat(buf, " (file write error)", size);
+ 		break;
+         }
+     } else {
+-        sprintf(bufp, "Pascal system error %d", code);
++        snprintf(bufp, sizep, "Pascal system error %d", code);
+         switch (code) {
+             case -2:
+-                strcat(buf, " (out of memory)");
++                strlcat(buf, " (out of memory)", size);
+                 break;
+             case -3:
+-                strcat(buf, " (reference to NIL pointer)");
++                strlcat(buf, " (reference to NIL pointer)", size);
+                 break;
+             case -4:
+-                strcat(buf, " (integer overflow)");
++                strlcat(buf, " (integer overflow)", size);
+                 break;
+             case -5:
+-                strcat(buf, " (divide by zero)");
++                strlcat(buf, " (divide by zero)", size);
+                 break;
+             case -6:
+-                strcat(buf, " (real math overflow)");
++                strlcat(buf, " (real math overflow)", size);
+                 break;
+             case -8:
+-                strcat(buf, " (value range error)");
++                strlcat(buf, " (value range error)", size);
+                 break;
+             case -9:
+-                strcat(buf, " (CASE value range error)");
++                strlcat(buf, " (CASE value range error)", size);
+                 break;
+             case -12:
+-                strcat(buf, " (bus error)");
++                strlcat(buf, " (bus error)", size);
+                 break;
+             case -20:
+-                strcat(buf, " (stopped by user)");
++                strlcat(buf, " (stopped by user)", size);
+                 break;
+         }
+     }
+@@ -1086,7 +1094,7 @@ int code;
+         exit(EXIT_SUCCESS);
+     if (code == -1)
+         exit(EXIT_FAILURE);
+-    fprintf(stderr, "%s\n", _ShowEscape(buf, P_escapecode, P_ioresult, ""));
++    fprintf(stderr, "%s\n", _ShowEscape(buf, P_escapecode, P_ioresult, "", sizeof(buf)));
+     exit(EXIT_FAILURE);
+ }
+ 
+@@ -1105,7 +1113,7 @@ char *name;
+     if (!__top_jb && name && *name) {
+ 	char buf[100];
+ 	fprintf(stderr, "%s: %s\n",
+-		name, _ShowEscape(buf, P_escapecode, P_ioresult, ""));
++		name, _ShowEscape(buf, P_escapecode, P_ioresult, "", sizeof(buf)));
+ 	exit(EXIT_FAILURE);
+     }
+     return _Escape(-10);
Index: pkg/PLIST
===================================================================
RCS file: /home/cvs/ports/graphics/dpic/pkg/PLIST,v
retrieving revision 1.1.1.1
diff -u -p -r1.1.1.1 PLIST
--- pkg/PLIST	15 May 2011 18:49:41 -0000	1.1.1.1
+++ pkg/PLIST	3 Aug 2016 11:49:51 -0000
@@ -6,6 +6,10 @@ share/examples/dpic/Examples.txt
 share/examples/dpic/Makefile
 share/examples/dpic/README
 share/examples/dpic/sources/
+share/examples/dpic/sources/arcs.pic
+share/examples/dpic/sources/arrowheads.pic
+share/examples/dpic/sources/arrows.pic
+share/examples/dpic/sources/basictests.pic
 share/examples/dpic/sources/diag1.pic
 share/examples/dpic/sources/diag2.pic
 share/examples/dpic/sources/diag3.pic
@@ -15,6 +19,46 @@ share/examples/dpic/sources/diag8.pic
 share/examples/dpic/sources/diag9.pic
 share/examples/dpic/sources/diagA.pic
 share/examples/dpic/sources/diagB.pic
+share/examples/dpic/sources/diagC.pic
+share/examples/dpic/sources/man.tex
+share/examples/dpic/sources/man01.pic
+share/examples/dpic/sources/man02.pic
+share/examples/dpic/sources/man03.pic
+share/examples/dpic/sources/man04.pic
+share/examples/dpic/sources/man05.pic
+share/examples/dpic/sources/man06.pic
+share/examples/dpic/sources/man07.pic
+share/examples/dpic/sources/man08.pic
+share/examples/dpic/sources/man09.pic
+share/examples/dpic/sources/man10.pic
+share/examples/dpic/sources/man11.pic
+share/examples/dpic/sources/man12.pic
+share/examples/dpic/sources/man13.pic
+share/examples/dpic/sources/man14.pic
+share/examples/dpic/sources/man15.pic
+share/examples/dpic/sources/man16.pic
+share/examples/dpic/sources/man17.pic
+share/examples/dpic/sources/man18.pic
+share/examples/dpic/sources/man19.pic
+share/examples/dpic/sources/man20.pic
+share/examples/dpic/sources/man21.pic
+share/examples/dpic/sources/man22.pic
+share/examples/dpic/sources/man24.pic
+share/examples/dpic/sources/man25.pic
+share/examples/dpic/sources/man26.pic
+share/examples/dpic/sources/man28.pic
+share/examples/dpic/sources/man29.pic
+share/examples/dpic/sources/man30.pic
+share/examples/dpic/sources/man31.pic
+share/examples/dpic/sources/man32.pic
+share/examples/dpic/sources/man33.pic
+share/examples/dpic/sources/man34.pic
+share/examples/dpic/sources/man35.pic
+share/examples/dpic/sources/man36.pic
+share/examples/dpic/sources/man45.pic
+share/examples/dpic/sources/man46.pic
+share/examples/dpic/sources/man47.pic
+share/examples/dpic/sources/mode.tex
 share/examples/dpic/sources/test1.tex
 share/examples/dpic/sources/test2.tex
 share/examples/dpic/sources/test3.tex

Reply via email to