/* ftruncate emulations that work on some System V's.
This file is in the public domain. */
-#ifdef HAVE_CONFIG_H
-#if defined (CONFIG_BROKETS)
-/* We use <config.h> instead of "config.h" so that a compilation
- using -I. -I$srcdir will use ./config.h rather than $srcdir/config.h
- (which it would do because it found this file in $srcdir). */
#include <config.h>
-#else
-#include "config.h"
-#endif
-#endif
+
+/* Specification. */
+#include <unistd.h>
#include <sys/types.h>
#include <fcntl.h>
#ifdef F_CHSIZE
int
-ftruncate (fd, length)
- int fd;
- off_t length;
+ftruncate (int fd, off_t length)
{
return fcntl (fd, F_CHSIZE, length);
}
#else /* not F_CHSIZE */
-#ifdef F_FREESP
+# ifdef F_FREESP
/* By William Kucharski <kucharsk@netcom.com>. */
-#include <sys/stat.h>
-#include <errno.h>
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
+# include <sys/stat.h>
+# include <errno.h>
int
-ftruncate (fd, length)
- int fd;
- off_t length;
+ftruncate (int fd, off_t length)
{
struct flock fl;
struct stat filebuf;
return 0;
}
-#else /* not F_CHSIZE nor F_FREESP */
-#ifdef HAVE_CHSIZE
+# else /* not F_CHSIZE nor F_FREESP */
+# if HAVE_CHSIZE /* native Windows, e.g. mingw */
int
-ftruncate (fd, length)
- int fd;
- off_t length;
+ftruncate (int fd, off_t length)
{
return chsize (fd, length);
}
-#else /* not F_CHSIZE nor F_FREESP nor HAVE_CHSIZE */
+# else /* not F_CHSIZE nor F_FREESP nor HAVE_CHSIZE */
-#include <errno.h>
-#ifndef errno
-extern int errno;
-#endif
+# include <errno.h>
int
-ftruncate (fd, length)
- int fd;
- off_t length;
+ftruncate (int fd, off_t length)
{
errno = EIO;
return -1;
}
-#endif /* not HAVE_CHSIZE */
-#endif /* not F_FREESP */
+# endif /* not HAVE_CHSIZE */
+# endif /* not F_FREESP */
#endif /* not F_CHSIZE */