Hello,
the attached patches are not complete yet, but fix a few problems
in building exim on SunOS 4, and should not hurt any system else.
I'll send more once I cleaned up a few hacks.
So far, Exim works good enough for me to forward mails to a smart host.
Getting rid of sendmail still feels good after all the years. :-)
Michael
--- ./src/exim-4.80.1/src/buildconfig.c 2012-10-25 05:37:38.000000000 +0200
+++ ./sun3/exim-4.80.1/src/buildconfig.c 2012-11-05 22:18:24.000000000 +0100
@@ -39,6 +39,8 @@
#include <pwd.h>
#include <grp.h>
+#include "os.h"
+
typedef struct {
const char *name;
int *flag;
--- ./src/exim-4.80.1/src/exim.h 2012-10-25 05:37:38.000000000 +0200
+++ ./sun3/exim-4.80.1/src/exim.h 2012-11-05 22:37:51.000000000 +0100
@@ -86,7 +86,9 @@
/* C99 integer types, figure out how to undo this if needed for older systems */
+#if (__STDC_VERSION__ >= 199901L)
#include <inttypes.h>
+#endif
/* Just in case some aged system doesn't define them... */
--- ./src/exim-4.80.1/OS/os.h-SunOS4 2012-10-25 05:37:38.000000000 +0200
+++ ./sun3/exim-4.80.1/OS/os.h-SunOS4 2012-11-23 23:59:35.000000000 +0100
@@ -1,5 +1,6 @@
/* Exim: OS-specific C header file for SunOS4 */
+#define EXIM_SOCKLEN_T size_t
#define LOAD_AVG_NEEDS_ROOT
#define HAVE_DEV_KMEM
#define LOAD_AVG_TYPE long
@@ -17,6 +18,7 @@
#define STRERROR_FROM_ERRLIST
#define memmove(a, b, c) bcopy(b, a, c)
#define strtoul(str, ptr, base) ((unsigned int)strtol((str),(ptr),(base)))
+#define strtoll(str, ptr, base) ((unsigned int)strtol((str),(ptr),(base)))
extern char *strerror(int);
extern int sys_nerr;
@@ -33,4 +35,17 @@
#define FUDGE_GETC_AND_FRIENDS
+typedef int ssize_t;
+typedef int sig_atomic_t;
+typedef struct state *res_state;
+#define int_eximarith_t long
+typedef unsigned int uint32_t;
+
+#define PR_EXIM_ARITH "%ld"
+#define SC_EXIM_ARITH "%li"
+#define SC_EXIM_DEC "%ld"
+
+#define LLONG_MIN LONG_MIN
+#define LLONG_MAX LONG_MAX
+
/* End */
--- ./src/exim-4.80.1/OS/Makefile-SunOS4 2012-10-25 05:37:38.000000000 +0200
+++ ./sun3/exim-4.80.1/OS/Makefile-SunOS4 2012-12-14 22:05:21.000000000 +0100
@@ -7,10 +7,17 @@
EXIT_FAILURE=1
EXIT_SUCCESS=0
LIBRESOLV=-lresolv
-XINCLUDE=-I/usr/include/X11
+LIBS=-lm
+
+X11=/opt/X11R6
+XINCLUDE=-I$(X11)/include
+XLFLAGS=-L$(X11)/lib
+EXTRALIBS_EXIMON=-lICE -lSM -lXpm
EXIWHAT_PS_ARG=-ax
EXIWHAT_EGREP_ARG='/exim( |$$)'
EXIWHAT_KILL_SIGNAL=-30
+HAVE_IPV6=
+
# End
--- src/exim-4.80.1/src/pdkim/bignum.c 2012-10-25 05:37:38.000000000 +0200
+++ sun3/exim-4.80.1/src/pdkim/bignum.c 2012-11-14 23:05:40.000000000 +0100
@@ -375,7 +375,8 @@
if( c == 0 && k == 0 && (i + j) != 0 )
continue;
- p += sprintf( p, "%02X", c );
+ sprintf( p, "%02X", c );
+ p += 2;
k = 1;
}
}
--- src/exim-4.80.1/exim_monitor/em_main.c 2012-10-25 05:37:38.000000000 +0200
+++ ./sun3/exim-4.80.1/exim_monitor/em_main.c 2012-11-13 22:44:49.000000000 +0100
@@ -137,7 +137,7 @@
in their libraries, but can provide the same facility by this simple
alternative function. */
-uschar *
+char *
strerror(int n)
{
if (n < 0 || n >= sys_nerr) return "unknown error number";
--- src/exim-4.80.1/scripts/lookups-Makefile 2012-10-25 05:37:38.000000000 +0200
+++ sun3/exim-4.80.1/scripts/lookups-Makefile 2012-11-05 22:10:54.000000000 +0100
@@ -19,6 +19,13 @@
export SHELL
fi
+ # Bash is always a good choice
+ if [ -x /usr/local/bin/bash ]
+ then
+ SHELL=/usr/local/bin/bash
+ export SHELL
+ fi
+
# IRIX uses /bin/ksh for sh but in a compatibility mode unless $_XPG == 1,
# where said compatibility mode disables $(...)
_XPG=1
--- src/exim-4.80.1/scripts/reversion 2012-10-25 05:37:38.000000000 +0200
+++ sun3/exim-4.80.1/scripts/reversion 2012-11-05 22:24:28.000000000 +0100
@@ -15,6 +15,12 @@
SHELL=/usr/xpg4/bin/sh
export PATH SHELL
fi
+ # Bash is always a good choice:
+ if [ -x /usr/local/bin/bash ]
+ then
+ SHELL=/usr/local/bin/bash
+ export SHELL
+ fi
# Irix:
_XPG=1 ; export _XPG
#