summaryrefslogtreecommitdiff
path: root/openbsd-compat
diff options
context:
space:
mode:
authorTim Rice <tim@multitalents.net>2002-05-07 19:51:31 -0700
committerTim Rice <tim@multitalents.net>2002-05-07 19:51:31 -0700
commit4bd2a1989073dcf353e8e4801029f9b6873158df (patch)
treec367bb516838b2284f00286f53242607c08c06e5 /openbsd-compat
parentf762a4bea554a9ff4dc59b9456c7e1a2379310b3 (diff)
Add truncate() emulation to address Bug 208
Diffstat (limited to 'openbsd-compat')
-rw-r--r--openbsd-compat/bsd-misc.c21
-rw-r--r--openbsd-compat/bsd-misc.h5
2 files changed, 24 insertions, 2 deletions
diff --git a/openbsd-compat/bsd-misc.c b/openbsd-compat/bsd-misc.c
index 7bf46dd75..237f93931 100644
--- a/openbsd-compat/bsd-misc.c
+++ b/openbsd-compat/bsd-misc.c
@@ -24,7 +24,7 @@
24 24
25#include "includes.h" 25#include "includes.h"
26 26
27RCSID("$Id: bsd-misc.c,v 1.5 2001/10/10 20:38:56 mouring Exp $"); 27RCSID("$Id: bsd-misc.c,v 1.6 2002/05/08 02:51:32 tim Exp $");
28 28
29char *get_progname(char *argv0) 29char *get_progname(char *argv0)
30{ 30{
@@ -99,3 +99,22 @@ int utimes(char *filename, struct timeval *tvp)
99 return(utime(filename, &ub)); 99 return(utime(filename, &ub));
100} 100}
101#endif 101#endif
102
103#ifndef HAVE_TRUNCATE
104int truncate (const char *path, off_t length)
105{
106 int fd, ret, saverrno;
107
108 fd = open(path, O_WRONLY);
109 if (fd < 0)
110 return -1;
111
112 ret = ftruncate(fd, length);
113 saverrno = errno;
114 (void) close (fd);
115 if (ret == -1)
116 errno = saverrno;
117 return(ret);
118}
119#endif /* HAVE_TRUNCATE */
120
diff --git a/openbsd-compat/bsd-misc.h b/openbsd-compat/bsd-misc.h
index 2ca0f3704..9475a2945 100644
--- a/openbsd-compat/bsd-misc.h
+++ b/openbsd-compat/bsd-misc.h
@@ -22,7 +22,7 @@
22 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 22 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23 */ 23 */
24 24
25/* $Id: bsd-misc.h,v 1.3 2001/04/09 14:50:56 stevesk Exp $ */ 25/* $Id: bsd-misc.h,v 1.4 2002/05/08 02:51:32 tim Exp $ */
26 26
27#ifndef _BSD_MISC_H 27#ifndef _BSD_MISC_H
28#define _BSD_MISC_H 28#define _BSD_MISC_H
@@ -72,5 +72,8 @@ struct timeval {
72int utimes(char *filename, struct timeval *tvp); 72int utimes(char *filename, struct timeval *tvp);
73#endif /* HAVE_UTIMES */ 73#endif /* HAVE_UTIMES */
74 74
75#ifndef HAVE_TRUNCATE
76int truncate (const char *path, off_t length);
77#endif /* HAVE_TRUNCATE */
75 78
76#endif /* _BSD_MISC_H */ 79#endif /* _BSD_MISC_H */