From f8f1007bf469d44480d95d0d78ddc156d00e059f Mon Sep 17 00:00:00 2001 From: Guus Sliepen Date: Wed, 8 Nov 2000 00:10:50 +0000 Subject: [PATCH] Porting to SunOS 5.8: - More #includes Linux doesn't seem to need - Don't do unsetenv() on SunOS - Use a replacement asprintf() in case the OS doesn't support it It now compiles properly under SunOS. --- configure.in | 4 ++-- lib/utils.c | 31 +++++++++++++++++++++++++++++++ src/net.c | 8 +++++--- src/tincd.c | 3 ++- 4 files changed, 40 insertions(+), 6 deletions(-) diff --git a/configure.in b/configure.in index 3295de99..3514e0e2 100644 --- a/configure.in +++ b/configure.in @@ -1,6 +1,6 @@ dnl Process this file with autoconf to produce a configure script. -dnl $Id: configure.in,v 1.13.2.14 2000/11/07 22:33:33 guus Exp $ +dnl $Id: configure.in,v 1.13.2.15 2000/11/08 00:10:49 guus Exp $ AC_INIT(src/tincd.c) AM_INIT_AUTOMAKE(tinc, 1.0pre3) @@ -46,7 +46,7 @@ dnl Checks for library functions. AC_FUNC_MEMCMP AC_FUNC_ALLOCA AC_TYPE_SIGNAL -AC_CHECK_FUNCS(ftime socket select strtol strerror flock) +AC_CHECK_FUNCS(ftime socket select strtol strerror flock unsetenv asprintf) jm_FUNC_MALLOC jm_FUNC_REALLOC diff --git a/lib/utils.c b/lib/utils.c index 795ece92..7f588b47 100644 --- a/lib/utils.c +++ b/lib/utils.c @@ -21,11 +21,13 @@ #include #include #include +#include #include "config.h" #include #include +#include volatile int (cp_line[]) = {0, 0, 0, 0, 0, 0, 0, 0}; volatile char (*cp_file[]) = {"?", "?", "?", "?", "?", "?", "?", "?"}; @@ -72,3 +74,32 @@ void cp_trace() cp_file[cp_index], cp_line[cp_index] ); } + +#ifndef HAVE_ASPRINTF +int asprintf(char **buf, const char *fmt, ...) +{ + int status; + va_list ap; + int len; + + len = 4096; + *buf = xmalloc(len); + + va_start(ap, fmt); + status = vsnprintf (*buf, len, fmt, ap); + va_end (ap); + + if(status >= 0) + *buf = xrealloc(*buf, status); + + if(status > len-1) + { + len = status; + va_start(ap, fmt); + status = vsnprintf (*buf, len, fmt, ap); + va_end (ap); + } + + return status; +} +#endif diff --git a/src/net.c b/src/net.c index bc32b7cc..5d7f8413 100644 --- a/src/net.c +++ b/src/net.c @@ -17,7 +17,7 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id: net.c,v 1.35.4.68 2000/11/07 21:43:28 guus Exp $ + $Id: net.c,v 1.35.4.69 2000/11/08 00:10:49 guus Exp $ */ #include "config.h" @@ -25,7 +25,8 @@ #include #include #include -#include +/* SunOS really wants sys/socket.h BEFORE net/if.h */ +#include #include #include #include @@ -33,7 +34,6 @@ #include #include #include -#include #include #include #include @@ -106,10 +106,12 @@ int execute_script(const char *name) asprintf(&s, "NETNAME=%s", netname); putenv(s); /* Don't free s! see man 3 putenv */ } +#ifdef HAVE_UNSETENV else { unsetenv("NETNAME"); } +#endif chdir(confbase); /* This cannot fail since we already read config files from this directory. */ diff --git a/src/tincd.c b/src/tincd.c index 4c494f5c..e4a2a44b 100644 --- a/src/tincd.c +++ b/src/tincd.c @@ -17,7 +17,7 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id: tincd.c,v 1.10.4.24 2000/11/03 22:31:55 zarq Exp $ + $Id: tincd.c,v 1.10.4.25 2000/11/08 00:10:50 guus Exp $ */ #include "config.h" @@ -35,6 +35,7 @@ #include #include #include +#include #ifdef HAVE_SYS_IOCTL_H # include -- 2.39.5