Add truncate() emulation to address Bug 208
diff --git a/ChangeLog b/ChangeLog
index 72a17ac..be9e706 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+20020507
+ - (tim) [configure.ac openbsd-compat/bsd-misc.c openbsd-compat/bsd-misc.h]
+   Add truncate() emulation to address Bug 208
+
 20020506
  - (djm) Unbreak auth-passwd.c for PAM and SIA
  - (djm) Unbreak PAM auth for protocol 1. Report from Pekka Savola 
@@ -535,4 +539,4 @@
  - (stevesk) entropy.c: typo in debug message
  - (djm) ssh-keygen -i needs seeded RNG; report from markus@
 
-$Id: ChangeLog,v 1.2095 2002/05/08 02:27:55 djm Exp $
+$Id: ChangeLog,v 1.2096 2002/05/08 02:51:31 tim Exp $
diff --git a/configure.ac b/configure.ac
index a092aaa..cc79ce8 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,4 +1,4 @@
-# $Id: configure.ac,v 1.53 2002/04/25 18:17:05 stevesk Exp $
+# $Id: configure.ac,v 1.54 2002/05/08 02:51:32 tim Exp $
 
 AC_INIT
 AC_CONFIG_SRCDIR([ssh.c])
@@ -572,7 +572,7 @@
 	realpath recvmsg rresvport_af sendmsg setdtablesize setegid \
 	setenv seteuid setlogin setproctitle setresgid setreuid setrlimit \
 	setsid setvbuf sigaction sigvec snprintf socketpair strerror \
-	strlcat strlcpy strmode strsep sysconf tcgetpgrp utimes \
+	strlcat strlcpy strmode strsep sysconf tcgetpgrp truncate utimes \
 	vhangup vsnprintf waitpid __b64_ntop _getpty)
 
 dnl IRIX and Solaris 2.5.1 have dirname() in libgen
diff --git a/openbsd-compat/bsd-misc.c b/openbsd-compat/bsd-misc.c
index 7bf46dd..237f939 100644
--- a/openbsd-compat/bsd-misc.c
+++ b/openbsd-compat/bsd-misc.c
@@ -24,7 +24,7 @@
 
 #include "includes.h"
 
-RCSID("$Id: bsd-misc.c,v 1.5 2001/10/10 20:38:56 mouring Exp $");
+RCSID("$Id: bsd-misc.c,v 1.6 2002/05/08 02:51:32 tim Exp $");
 
 char *get_progname(char *argv0)
 {
@@ -99,3 +99,22 @@
 	return(utime(filename, &ub));
 }
 #endif 
+
+#ifndef HAVE_TRUNCATE
+int truncate (const char *path, off_t length)
+{
+	int fd, ret, saverrno;
+
+	fd = open(path, O_WRONLY);
+	if (fd < 0)
+		return -1;
+
+	ret = ftruncate(fd, length);
+	saverrno = errno;
+	(void) close (fd);
+	if (ret == -1)
+		errno = saverrno;
+	return(ret);
+}
+#endif /* HAVE_TRUNCATE */
+
diff --git a/openbsd-compat/bsd-misc.h b/openbsd-compat/bsd-misc.h
index 2ca0f37..9475a29 100644
--- a/openbsd-compat/bsd-misc.h
+++ b/openbsd-compat/bsd-misc.h
@@ -22,7 +22,7 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-/* $Id: bsd-misc.h,v 1.3 2001/04/09 14:50:56 stevesk Exp $ */
+/* $Id: bsd-misc.h,v 1.4 2002/05/08 02:51:32 tim Exp $ */
 
 #ifndef _BSD_MISC_H
 #define _BSD_MISC_H
@@ -72,5 +72,8 @@
 int utimes(char *filename, struct timeval *tvp);
 #endif /* HAVE_UTIMES */
 
+#ifndef HAVE_TRUNCATE
+int truncate (const char *path, off_t length);
+#endif /* HAVE_TRUNCATE */
 
 #endif /* _BSD_MISC_H */