Compensate for platforms that don't have strndup, like Solaris --- configure.in +++ configure.in @@ -30,7 +30,7 @@ dnl Checks for library functions. AC_TYPE_SIGNAL AC_FUNC_VPRINTF -AC_CHECK_FUNCS(gethostname socket strdup strstr) +AC_CHECK_FUNCS(gethostname socket strdup strndup strstr) dnl Check for optional features AC_ARG_ENABLE(logfile, --- ssmtp.c +++ ssmtp.c @@ -842,7 +842,16 @@ if (!rest) { return NULL; } +#ifdef HAVE_STRNDUP tok=strndup(*s,rest-(*s)); +#else + { + size_t len = rest - (*s); + tok = malloc(sizeof(char) * (len + 1)); + memcpy(tok, *s, len); + tok[len] = '\0'; + } +#endif if (!tok) { die("firsttok() -- strndup() failed"); }