git: 4050539eaaaa - main - deskutils/sliderule: prepare for 3rd millenium

From: Joerg Wunsch <joerg_at_FreeBSD.org>
Date: Tue, 22 Oct 2024 22:03:25 UTC
The branch main has been updated by joerg:

URL: https://cgit.FreeBSD.org/ports/commit/?id=4050539eaaaa6fc986a76656df7b78029f0388c7

commit 4050539eaaaa6fc986a76656df7b78029f0388c7
Author:     Joerg Wunsch <joerg@FreeBSD.org>
AuthorDate: 2024-10-22 22:00:53 +0000
Commit:     Joerg Wunsch <joerg@FreeBSD.org>
CommitDate: 2024-10-22 22:03:20 +0000

    deskutils/sliderule: prepare for 3rd millenium
    
    This historic (pre-C89) code no longer compiled under modern
    compilers. Modernize it.
    
    The code does not rely on GCC-specific stuff, so remove this
    requirement.
    
    PR:             281225
---
 deskutils/sliderule/Makefile              |   1 -
 deskutils/sliderule/files/patch-sr.c      | 293 ++++++++++++++
 deskutils/sliderule/files/patch-xcalc-2.c | 613 ++++++++++++++++++++++++++++++
 3 files changed, 906 insertions(+), 1 deletion(-)

diff --git a/deskutils/sliderule/Makefile b/deskutils/sliderule/Makefile
index 01d412c294c0..d2df287ed8e3 100644
--- a/deskutils/sliderule/Makefile
+++ b/deskutils/sliderule/Makefile
@@ -10,7 +10,6 @@ COMMENT=	The part of X11R3's xcalc featuring a slide rule
 
 USES=		imake xorg
 USE_XORG=	x11 xext
-USE_GCC=	yes
 PLIST_FILES=	bin/sliderule share/man/man1/sliderule.1.gz
 
 .include <bsd.port.mk>
diff --git a/deskutils/sliderule/files/patch-sr.c b/deskutils/sliderule/files/patch-sr.c
new file mode 100644
index 000000000000..8d280405a806
--- /dev/null
+++ b/deskutils/sliderule/files/patch-sr.c
@@ -0,0 +1,293 @@
+--- sr.c.orig	1997-08-04 12:17:37.000000000 +0200
++++ sr.c	2024-10-22 23:55:52.935250000 +0200
+@@ -4,11 +4,12 @@
+ 
+ #ifndef lint
+ static char *rcsid_sr_c = "$XConsortium: sr.c,v 1.10 88/10/22 10:37:58 jim Exp $";
+-#endif	lint
++#endif	/* lint */
+ 
+ /* Slide Rule */
+ 
+ #include <stdio.h>
++#include <stdlib.h>
+ #include <math.h>
+ #include <signal.h>
+ #include <X11/Xos.h>
+@@ -53,8 +54,8 @@
+ extern XFontStruct *kfontinfo;
+ Font	scalefont, sscalefont;
+ extern Pixmap backgroundPix,regBorder,dimBorder,IconPix;
+-Pixmap	slidePix = NULL;
+-Pixmap	framePix = NULL;
++Pixmap	slidePix;
++Pixmap	framePix;
+ extern Cursor	arrow;
+ GC	sgc, cgc;
+ int	height,scalelen,width,fheight,foffset;
+@@ -63,14 +64,50 @@
+ double logtenoftwo;
+ extern short check_bits[];
+ 
++/* sr.c */
++void do_sr(int, char **, char *, int);
++void rescale(int);
++void drawmark(Window, int, int, int, int);
++void dolabel(Window, int, int, char *, int, int);
++void drawframe(void);
++void doscale(Window, int, int, int, int);
++void dotriangular(Window, int, int, int, int, double (*fun)(double));
++void dotenths(Window, int, int, int, int, char *, int, double, double);
++void drawslide(void);
++void redrawslide(int, int, int, int);
++void redrawframe(int, int, int, int);
++void drawhairl(void);
++void drawnums(void);
+ 
++/* xcalc.c */
++void parse_double(char *, char *, double *);
++void Syntax(void);
++void XCalcError(char *, char *, char *, char *, char *);
++void SetupTICalc(void);
++void SetupHPCalc(void);
++void DrawDisplay(void);
++void DrawKey(int);
++void InvertKey(int);
++void LetGoKey(int);
++void Quit(void);
++void PushOp(int);
++int PopOp(void);
++int isopempty(void);
++void PushNum(double);
++double PopNum(void);
++void RollNum(int);
++int isnumempty(void);
++void ClearStacks(void);
++int priority(int);
++void ResetCalc(void);
++void TypeChar(char);
++void onalarm(int);
++void Timer(long);
++void set_sizehint(XSizeHints *, int, int, char *);
+ 
+ /**************/
+-do_sr(argc, argv, geom, border)
++void do_sr(int argc, char **argv, char *geom, int border)
+ /**************/
+-char	**argv;
+-char	*geom;
+-int	border;
+ {
+     XSizeHints szhint;
+     Atom wprot, wdelw;
+@@ -147,7 +184,8 @@
+ 
+     while (1) {
+         Window wind,mwid;
+-	int	dummy, w;
++	int	dummy;
++	unsigned int dummy_u, w;
+ 
+         XNextEvent(dpy, &event);
+ 
+@@ -158,8 +196,8 @@
+             wind = exp_event->window;
+ 
+             if (wind==theWindow) {
+-		XGetGeometry(dpy, theWindow, &mwid, &dummy, &dummy, &w, &dummy,
+-			     &dummy, &dummy);
++		XGetGeometry(dpy, theWindow, &mwid, &dummy, &dummy, &w, &dummy_u,
++			     &dummy_u, &dummy_u);
+ 		if (width != w) {
+ 		    rescale(w);
+ 		    break;
+@@ -226,7 +264,8 @@
+ 	  }
+ 	case MotionNotify: {
+             XPointerMovedEvent *mov_event = (XPointerMovedEvent *) &event;
+-	    int	x, y, newx, dummy, mask;
++	    int	x, y, newx, dummy;
++	    unsigned int mask;
+ 	    Window mwid;
+ 
+             mwid = wind = mov_event->window;
+@@ -302,25 +341,24 @@
+ 		exit(0);
+ 	    break;
+         default:
+-           printf("event type=%ld\n",event.type); 
++           printf("event type=%d\n",event.type); 
+ 
+         }  /* end of switch */
+     }  /* end main loop */
+ }
+ 
+ 
+-rescale(w)
+-int	w;
++void rescale(int w)
+ {
+-    int	x,y,wx,wy;
++    int	x,y,wx,wy, dummy;
+     Window win;
+-    int	oldwidth, dummy;
++    unsigned int	oldwidth, dummy_u;
+ 
+-    XGetGeometry(dpy, theWindow, &win, &wx, &wy, &oldwidth, &dummy,
+-		 &dummy, &dummy);
++    XGetGeometry(dpy, theWindow, &win, &wx, &wy, &oldwidth, &dummy_u,
++		 &dummy_u, &dummy_u);
+     if (oldwidth != w) {
+ 	XQueryPointer(dpy, theWindow, &win, &win, &dummy, &dummy, &x, &y,
+-		      &dummy);
++		      &dummy_u);
+ 	XMoveResizeWindow(dpy, theWindow, wx + x - (x * w)/oldwidth, wy,
+ 			  w, HEIGHT);
+     }
+@@ -332,30 +370,24 @@
+     XResizeWindow(dpy, blackwid, width, SLIDEHIGH+2);
+     if (framePix)
+       XFreePixmap(dpy, framePix);
+-    framePix = NULL;
++    framePix = 0;
+     drawframe();
+     if (slidePix)
+       XFreePixmap(dpy, slidePix);
+-    slidePix = NULL;
++    slidePix = 0;
+     drawslide();
+     XMoveWindow(dpy, slidewid, xo, SLIDETOP);
+     drawnums();
+     drawhairl();
+ }
+ 
+-drawmark(win, x, y, height, topp)
+-Window	win;
+-int	x,y,height,topp;
++void drawmark(Window win, int x, int y, int height, int topp)
+ {
+     XDrawLine(dpy, win, sgc, x, (topp?y:y+MAJORH-height),
+ 	      x, height + (topp?y:y+MAJORH-height));
+ }
+ 
+-dolabel(win, x, y, str, topp, majorp)
+-Window	win;
+-int	x,y;
+-char	*str;
+-int	topp,majorp;
++void dolabel(Window win, int x, int y, char *str, int topp, int majorp)
+ {
+     XDrawString(dpy, win, sgc, x + 2,
+ 		(topp?y+FOFFSET+foffset:y+MAJORH-fheight+foffset),
+@@ -363,13 +395,13 @@
+ }
+ 
+ 
+-drawframe()
++void drawframe(void)
+ {
+     int		i,x,j,xx;
+     char	str[5];
+     int midpt = scalelen/2;
+ 
+-    if (framePix == NULL)
++    if (framePix == 0)
+       framePix = XCreatePixmap (dpy, theWindow, width, HEIGHT, 
+ 				DefaultDepth (dpy, DefaultScreen (dpy)));
+     XFillRectangle(dpy, framePix, cgc, 0, 0, width, HEIGHT);
+@@ -403,9 +435,7 @@
+     XCopyArea(dpy, framePix, theWindow, sgc, 0, 0, scalelen + START+END, HEIGHT, 0, 0);
+ }
+ 
+-doscale(win, high, offset, len, topp)
+-     Window	win;
+-     int	high, offset, len, topp;
++void doscale(Window win, int high, int offset, int len, int topp)
+ {
+   int	i,x,xx,j;
+   int	xs[11];
+@@ -430,10 +460,7 @@
+   drawmark(win, xs[i], high, MAJORH, topp);
+ }
+ 
+-dotriangular(win, high, offset, len, topp, fun)
+-Window	win;
+-int	high, offset, len, topp;
+-double	(*fun)();
++void dotriangular(Window win, int high, int offset, int len, int topp, double (*fun)(double))
+ {
+     double d, val;
+     int i;
+@@ -483,12 +510,8 @@
+ }
+ 
+ 
+-dotenths(win, high, offset, len, thislen, str, topp, start, incr)
+-Window	win;
+-int	high, offset, len, thislen;
+-char	*str;
+-int	topp;
+-double	start, incr;
++void dotenths(Window win, int high, int offset, int len, int thislen,
++	      char *str, int topp, double start, double incr)
+ {
+     int	i;
+     double d;
+@@ -540,13 +563,13 @@
+ 
+ 
+ 
+-drawslide()
++void drawslide(void)
+ {
+     int		i,x,j;
+     char	str[5];
+     int 	midpt = scalelen/2;
+ 
+-    if (slidePix == NULL)
++    if (slidePix == 0)
+       slidePix = XCreatePixmap (dpy, theWindow, width, SLIDEHIGH, 
+ 			        DefaultDepth (dpy, DefaultScreen (dpy)));
+     XFillRectangle(dpy, slidePix, cgc, 0, 0, width, SLIDEHIGH);
+@@ -565,35 +588,33 @@
+     XCopyArea(dpy, slidePix, slidewid, sgc, 0, 0, scalelen+START+END, SLIDEHIGH, 0, 0);
+ }
+ 
+-redrawslide(x, y, w, h)
+-int	x,y,w,h;
++void redrawslide(int x, int y, int w, int h)
+ {
+     int	i;
+ 
+-    if (slidePix != NULL)
++    if (slidePix != 0)
+       XCopyArea(dpy, slidePix, slidewid, sgc, 0, 0, scalelen + START + END, SLIDEHIGH,
+ 		0, 0);
+     else
+       drawslide();
+ }
+ 
+-redrawframe(x, y, w, h)
+-int	x,y,w,h;
++void redrawframe(int x, int y, int w, int h)
+ {
+-    if (framePix != NULL)
++    if (framePix != 0)
+       XCopyArea(dpy, framePix, theWindow, sgc, 0, 0, scalelen + START + END, HEIGHT,
+ 		0, 0);
+     else
+       drawframe();
+ }
+ 
+-drawhairl()
++void drawhairl(void)
+ {
+     XMoveWindow(dpy, hairlwid, hx, 0);
+     XClearWindow(dpy, hairlwid);
+ }
+ 
+-drawnums()
++void drawnums(void)
+ {
+     char	str[20];	/* leave room for sprintf to slop over */
+     float	x = ((float) (hx - START))/((float) scalelen);
diff --git a/deskutils/sliderule/files/patch-xcalc-2.c b/deskutils/sliderule/files/patch-xcalc-2.c
new file mode 100644
index 000000000000..04e7f4bc2d3e
--- /dev/null
+++ b/deskutils/sliderule/files/patch-xcalc-2.c
@@ -0,0 +1,613 @@
+--- xcalc.c.orig	2024-10-19 09:24:45.430740000 +0200
++++ xcalc.c	2024-10-22 23:27:45.340336000 +0200
+@@ -4,7 +4,7 @@
+ 
+ #ifndef lint
+ static char *rcsid_xcalc_c = "$XConsortium: xcalc.c,v 1.23 88/10/05 11:13:33 jim Exp $";
+-#endif	lint
++#endif	/* lint */
+ 
+ /*
+  * xcalc.c  -  a hand calculator for the X Window system
+@@ -34,6 +34,7 @@
+ 
+ #include <errno.h>
+ #include <stdio.h>
++#include <stdlib.h>
+ #include <math.h>
+ #include <signal.h>
+ #include <X11/Xos.h>
+@@ -113,11 +114,11 @@
+ struct _key {
+            char   *st;
+ 	   int	  code;
+-	   int    (*fun)();
++	   void    (*fun)(int);
+            Window wid;
+            short  x,y,width,height;
+            int    fore,back;
+-	   void	  (*func)();
++	   void	  (*func)(void);
+             };
+ 
+ struct _key *key;
+@@ -171,9 +172,67 @@
+ #define kBKSP  46
+ 
+ 
+-int  oneop(),twoop(),clearf(),offf(),invf(),drgf(),eef();
+-int  lparf(),rparf(),digit(),decf(),negf(),equf();
++/* sr.c */
++void do_sr(int, char **, char *, int);
++void rescale(int);
++void drawmark(Window, int, int, int, int);
++void dolabel(Window, int, int, char *, int, int);
++void drawframe(void);
++void doscale(Window, int, int, int, int);
++void dotriangular(Window, int, int, int, int, double (*fun)(double));
++void dotenths(Window, int, int, int, int, char *, int, double, double);
++void drawslide(void);
++void redrawslide(int, int, int, int);
++void redrawframe(int, int, int, int);
++void drawhairl(void);
++void drawnums(void);
+ 
++/* xcalc.c */
++void parse_double(char *, char *, double *);
++void Syntax(void);
++void XCalcError(char *, char *);
++void SetupTICalc(void);
++void SetupHPCalc(void);
++void DrawDisplay(void);
++void DrawKey(int);
++void InvertKey(int);
++void LetGoKey(int);
++void digit(int);
++void bkspf(int);
++void decf(int);
++void eef(int);
++void clearf(int);
++void negf(int);
++void twoop(int);
++void twof(int);
++void entrf(int);
++void equf(int);
++void lparf(int);
++void rollf(int);
++void rparf(int);
++void drgf(int);
++void invf(int);
++void memf(int);
++void oneop(int);
++void offf(int);
++void nop(int);
++void Quit(void);
++void PushOp(int);
++int PopOp(void);
++int isopempty(void);
++void PushNum(double);
++double PopNum(void);
++void RollNum(int);
++int isnumempty(void);
++void ClearStacks(void);
++int priority(int);
++void ResetCalc(void);
++void TypeChar(char);
++void onalarm(int);
++void Timer(long);
++void fperr(int);
++void set_sizehint(XSizeHints *, int, int, char *);
++
+ /* "1/x", "x^2", "SQRT","CE/C", "AC",
+    "INV", "sin", "cos", "tan",  "DRG",
+    "e",   "EE",  "log", "ln",   "y^x",
+@@ -201,8 +260,6 @@
+   {"EXC",kEXC,oneop},{"0",kZERO,digit},{".",kDEC,decf},
+   {"+/-",kNEG,negf},{"=",kEQU,equf}};
+ 
+-int  twof(),nop(),rollf(),bkspf(),entrf(),memf();
+-
+ /*  { "SQRT","e^x", "10^x", "y^x", "1/x", "CHS", "7", "8", "9",  "/",
+       "x!",  "PI",  "sin",  "cos", "tan", "EEX", "4", "5", "6",  "x",
+       "",    "",    "R v",  "x:y", "<-",  "ENTR","1", "2", "3",  "-",
+@@ -247,10 +304,7 @@
+  * sscanf will call lower level routines that will set errno.
+  */
+ 
+-void parse_double (src, fmt, dp)
+-    char *src;
+-    char *fmt;
+-    double *dp;
++void parse_double (char *src, char *fmt, double *dp)
+ {
+     int olderrno = errno;
+ 
+@@ -265,9 +319,7 @@
+  * fetched before the display is open.  The program should get rewritten....
+  */
+ 
+-static void open_the_display (argc, argv)
+-    int argc;
+-    char **argv;
++static void open_the_display (int argc, char **argv)
+ {
+     int i;
+     char *displayname = NULL;
+@@ -296,15 +348,10 @@
+ 
+ 
+ /**************/
+-main(argc, argv)
+-    int   argc;
+-    char *argv[];
++int main(int argc, char **argv)
+ /**************/
+ {
+     int i, status,dpcs;
+-#ifndef IEEE
+-    extern void fperr();
+-#endif
+ 
+     char *fc, *bc, *nfc, *nbc, *ofc, *obc, *ffc, *fbc, *dfc, *dbc, *ifc, *ibc;
+     char *geom    = NULL;
+@@ -529,7 +576,7 @@
+ 
+     /* Create Icon Pixmap */
+     IconPix = XCreateBitmapFromData (dpy, DefaultRootWindow(dpy),
+-        icon_bits, icon_width, icon_height);
++        (char *)icon_bits, icon_width, icon_height);
+ 
+     if (analog)
+       do_sr(argc, argv, geom, border);
+@@ -550,7 +597,7 @@
+ 				    szhint.x, szhint.y, 
+ 			    	    szhint.width, szhint.height, border,
+ 				    ForeColor, BackColor);
+-    if (!theWindow) XCalcError("Can't open calculator window");
++    if (!theWindow) XCalcError("Can't open calculator window", NULL);
+ 
+     if (stip)
+       XSetWindowBackgroundPixmap(dpy, theWindow, backgroundPix);
+@@ -687,7 +734,7 @@
+             break;
+ 	  }
+         default:
+-            fprintf (stderr, "%s:  unexpected event type %ld = 0x%lx\n",
++            fprintf (stderr, "%s:  unexpected event type %d = 0x%x\n",
+ 	   	    ProgramName, event.type, event.type);
+ 	    break;
+         }  /* end of switch */
+@@ -696,7 +743,7 @@
+ 
+ 
+ /***********************************/
+-Syntax ()
++void Syntax (void)
+ {
+     fprintf (stderr, "usage:  %s [-options ...]\n\n",
+ 	     ProgramName);
+@@ -722,17 +769,16 @@
+ 
+ 
+ /***********************************/
+-XCalcError(identifier,arg1,arg2,arg3,arg4)
+-       char *identifier,*arg1,*arg2,*arg3,*arg4;
++void XCalcError(char *identifier, char *arg1)
+ {
+-    fprintf(stderr, identifier, arg1,arg2,arg3,arg4);
++    fprintf(stderr, identifier, arg1);
+     exit(1);
+ }
+ 
+ 
+ 
+ /***********************************/
+-SetupTICalc()
++void SetupTICalc(void)
+ {
+     int i;
+ 
+@@ -773,7 +819,7 @@
+ 				  dispwide-2,disphigh,2,DispFore,DispBack);
+ }
+ 
+-SetupHPCalc()
++void SetupHPCalc(void)
+ {
+     int i,j;
+ 
+@@ -816,7 +862,7 @@
+ 
+ 
+ /**************/
+-DrawDisplay()
++void DrawDisplay(void)
+ {
+     int strwide;
+ 
+@@ -855,8 +901,7 @@
+ 
+ 
+ /***************/
+-DrawKey(keynum)
+-    int keynum;
++void DrawKey(int keynum)
+ {
+     char *str;
+     int strwide,extrapad;
+@@ -876,8 +921,7 @@
+ 
+ 
+ /*********************************/
+-InvertKey(keynum)
+-    int keynum;
++void InvertKey(int keynum)
+ {
+     struct _key *kp;
+ 
+@@ -910,8 +954,7 @@
+ static double mem[10] = { 0.0 };
+ 
+ /*********************************/
+-LetGoKey(keynum)
+-     int keynum;
++void LetGoKey(int keynum)
+ {
+     int i;
+     int code;
+@@ -980,8 +1023,7 @@
+ }
+ 
+ 
+-digit(keynum)
+-     int keynum;
++void digit(int keynum)
+ {
+   flagINV=0;
+   if (rpn && (memop == kSTO || memop == kRCL || memop == kSUM)) {
+@@ -1012,7 +1054,7 @@
+   entered=1;
+ }
+ 
+-bkspf()
++void bkspf(int dummy)
+ {
+   if (entered!=1 || clrdisp)
+     return;
+@@ -1025,7 +1067,7 @@
+   DrawDisplay();
+ }
+ 
+-decf()
++void decf(int dummy)
+ {
+   flagINV=0;
+   if (clrdisp) {
+@@ -1042,7 +1084,7 @@
+   entered=1;
+ }
+ 
+-eef()
++void eef(int dummy)
+ {
+   flagINV=0;
+   if (clrdisp) {
+@@ -1059,7 +1101,7 @@
+   entered=1;
+ }
+ 
+-clearf()
++void clearf(int dummy)
+ {
+   flagINV=0;
+   if (clear && !rpn) { /* clear all */
+@@ -1074,7 +1116,7 @@
+   DrawDisplay();
+ }
+ 
+-negf()
++void negf(int dummy)
+ {
+   flagINV=0;
+   if (exponent) {       /* neg the exponent */
+@@ -1101,10 +1143,8 @@
+ }
+ 
+ /* Two operand functions for infix calc */
+-twoop(keynum)
++void twoop(int keynum)
+ {
+-  double PopNum();
+-
+   if (flagINV) {
+     flagINV=0;
+     DrawDisplay();
+@@ -1166,10 +1206,8 @@
+ }                      
+ 
+ /* Two operand functions for rpn calc */
+-twof(keynum)
++void twof(int keynum)
+ {
+-  double PopNum();
+-
+   if (flagINV) {
+     flagINV=0;
+     DrawDisplay();
+@@ -1196,7 +1234,7 @@
+ }
+ 
+ 
+-entrf()
++void entrf(int dummy)
+ {
+   flagINV=0;
+   if (!entered)
+@@ -1213,10 +1251,8 @@
+     PushNum(dnum);
+ }
+ 
+-equf()
++void equf(int dummy)
+ {
+-  double PopNum();
+-
+   flagINV=0;
+   if (!entered)
+     return;
+@@ -1257,7 +1293,7 @@
+   DrawDisplay();
+ }
+         
+-lparf()
++void lparf(int dummy)
+ {
+   flagINV=0;
+   PushOp(kLPAR);
+@@ -1265,10 +1301,8 @@
+   DrawDisplay();
+ }
+ 
+-rollf()
++void rollf(int dummy)
+ {
+-  double PopNum();
+-
+   if (!entered)
+     return;
+   if (entered==1)
+@@ -1281,10 +1315,8 @@
+   DrawDisplay();
+ }
+ 
+-rparf()
++void rparf(int dummy)
+ {
+-  double PopNum();
+-
+   flagINV=0;
+   if (!entered)
+     return;
+@@ -1326,7 +1358,7 @@
+   DrawDisplay();
+ }
+ 
+-drgf()
++void drgf(int dummy)
+ {
+   if (flagINV) {
+     if (entered==1)
+@@ -1343,7 +1375,8 @@
+   }
+                          
+   flagINV=0;
+-  drgmode = ++drgmode % 3;
++  drgmode++;
++  drgmode = drgmode % 3;
+   switch (drgmode) {
+   case DEG:  drg2rad=PI / 180.0;
+ 	     rad2drg=180.0 / PI;
+@@ -1358,13 +1391,13 @@
+   DrawDisplay();
+ }
+ 
+-invf()
++void invf(int dummy)
+ {
+   flagINV = ~flagINV;
+   DrawDisplay();
+ }
+ 
+-memf(keynum)
++void memf(int keynum)
+ {
+     if (entered==1)
+       parse_double(dispstr,"%lf",&dnum);
+@@ -1372,7 +1405,7 @@
+     clrdisp++;
+ }
+ 
+-oneop(keynum)
++void oneop(int keynum)
+ {
+   int i,j;
+   double dtmp;
+@@ -1434,7 +1467,7 @@
+   DrawDisplay();
+ }
+ 
+-offf()
++void offf(int dummy)
+ {
+   /* full reset */
+   ResetCalc();
+@@ -1445,14 +1478,14 @@
+ }
+ 
+ 
+-nop()
++void nop(int dummy)
+ {
+   XBell(dpy, 0);
+ }
+ 
+ 
+ /*******/
+-Quit()
++void Quit(void)
+ /*******/
+ {
+     if (dpy) XCloseDisplay (dpy);
+@@ -1468,8 +1501,7 @@
+ 
+ 
+ /*******/
+-PushOp(op)
+-   int op;
++void PushOp(int op)
+ /*******/
+ {
+   if (opsp==STACKMAX) {strcpy(dispstr,"stack error");  entered=3;}
+@@ -1477,7 +1509,7 @@
+ }
+ 
+ /*******/
+-int PopOp()
++int PopOp(void)
+ /*******/
+ {
+   if (opsp==0) {
+@@ -1489,15 +1521,14 @@
+ }
+ 
+ /*******/
+-int isopempty()
++int isopempty(void)
+ /*******/
+ {
+   return( opsp ? 0 : 1 );
+ }
+ 
+ /*******/
+-PushNum(num)
+- double num;
++void PushNum(double num)
+ /*******/
+ {
+   if (rpn) {
+@@ -1514,7 +1545,7 @@
+ }
+ 
+ /*******/
+-double PopNum()
++double PopNum(void)
+ /*******/
+ {
+     if (rpn) {
+@@ -1532,7 +1563,7 @@
+ }
+ 
+ /*******/
+-RollNum(dir)
++void RollNum(int dir)
+ /*******/
+ {
+     double tmp;
+@@ -1554,7 +1585,7 @@
+ 
+ 
+ /*******/
+-int isnumempty()
++int isnumempty(void)
+ /*******/
+ {
+   return( numsp ? 0 : 1 );
+@@ -1562,7 +1593,7 @@
+ 
+ 
+ /*******/
+-ClearStacks()
++void ClearStacks(void)
+ /*******/
+ {
+     if (rpn)
+@@ -1572,8 +1603,7 @@
+ 
+ 
+ /*******/
+-int priority(op)
+-         int op;
++int priority(int op)
+ /*******/
+ {
+     switch (op) {
+@@ -1588,7 +1618,7 @@
+ 
+ 
+ /********/
+-ResetCalc()
++void ResetCalc(void)
+ /********/
+ {
+     flagM=flagK=flagINV=flagE=flagPAREN=0;  drgmode=DEG;
+@@ -1600,8 +1630,7 @@
+ 
+ 
+ /*********/
+-TypeChar(c)
+-    char c;
++void TypeChar(char c)
+ /*********/
+ {
+     /* figure out if person typed a valid calculator key.
+@@ -1678,15 +1707,14 @@
+ 
+ /*******/
+ void
+-onalarm()
++onalarm(int dummy)
+ /*******/
+ {
+   timerdone=1;
+ }
+ 
+ /*******/
+-Timer(val)
+- long val;
++void Timer(long val)
+ /*******/
+ {
+         struct itimerval it;
+@@ -1705,20 +1733,15 @@
+ #ifndef IEEE
+ /******************/
+ void
+-fperr(sig,code,scp)
+-  int sig,code;
+-  struct sigcontext *scp;
++fperr(int sig)
+ /******************/
+ {
+-    longjmp(env,code);
++    longjmp(env,1);
+ }
+ 
+ #endif
+ 
+-set_sizehint (hintp, min_width, min_height, geom)
+-    XSizeHints *hintp;
+-    int min_width, min_height;
+-    char *geom;
++void set_sizehint (XSizeHints *hintp, int min_width, int min_height, char *geom)
+ {
+     int geom_result;
+ 
+@@ -1731,7 +1754,7 @@
+     geom_result = NoValue;
+     if (geom != NULL) {
+         geom_result = XParseGeometry (geom, &hintp->x, &hintp->y,
+-				      &hintp->width, &hintp->height);
++				      (unsigned int *)&hintp->width, (unsigned int *)&hintp->height);
+ 	if ((geom_result & WidthValue) && (geom_result & HeightValue)) {
+ 	    hintp->width = max (hintp->width, hintp->min_width);
+ 	    hintp->height = max (hintp->height, hintp->min_height);