summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJelmer Vernooij <jelmer@samba.org>2005-05-16 18:57:56 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 13:16:47 -0500
commitd29f44c594f4857593e361e9e31eef3cec1a912c (patch)
treea8bc8e756556a54471688e3067add9f2f697557f
parente29cb65a909d9a6fbf1574e23f2e37b62084f6e9 (diff)
downloadsamba-d29f44c594f4857593e361e9e31eef3cec1a912c.tar.gz
samba-d29f44c594f4857593e361e9e31eef3cec1a912c.tar.bz2
samba-d29f44c594f4857593e361e9e31eef3cec1a912c.zip
r6825: Fall back to chsize if ftruncate is not available
patch from Steven Edwards (This used to be commit 82be4978116b73cd6d964da4fad59b5c5b11217e)
-rw-r--r--source4/build/m4/rewrite.m42
-rw-r--r--source4/lib/replace.c4
2 files changed, 5 insertions, 1 deletions
diff --git a/source4/build/m4/rewrite.m4 b/source4/build/m4/rewrite.m4
index 0da7316f5a..6917138ba2 100644
--- a/source4/build/m4/rewrite.m4
+++ b/source4/build/m4/rewrite.m4
@@ -192,7 +192,7 @@ AC_CHECK_FUNCS(fstat strchr utime utimes getrlimit fsync bzero memset strlcpy st
AC_CHECK_FUNCS(memmove vsnprintf snprintf asprintf vasprintf setsid glob strpbrk pipe crypt16 getauthuid)
AC_CHECK_FUNCS(strftime sigprocmask sigblock sigaction sigset innetgr setnetgrent getnetgrent endnetgrent)
AC_CHECK_FUNCS(initgroups select rdchk getgrnam getgrent pathconf realpath)
-AC_CHECK_FUNCS(setpriv setgidx setuidx setgroups sysconf mktime rename ftruncate)
+AC_CHECK_FUNCS(setpriv setgidx setuidx setgroups sysconf mktime rename ftruncate chsize)
AC_CHECK_FUNCS(setluid getpwanam setlinebuf)
AC_CHECK_FUNCS(srandom random srand rand setenv usleep strcasecmp fcvt fcvtl symlink readlink)
AC_CHECK_FUNCS(syslog vsyslog getgrouplist timegm backtrace)
diff --git a/source4/lib/replace.c b/source4/lib/replace.c
index ca367da9b5..89612912b7 100644
--- a/source4/lib/replace.c
+++ b/source4/lib/replace.c
@@ -32,6 +32,9 @@ ftruncate for operating systems that don't have it
********************************************************************/
int ftruncate(int f,off_t l)
{
+#ifdef HAVE_CHSIZE
+ return chsize(f,l);
+#else
struct flock fl;
fl.l_whence = 0;
@@ -39,6 +42,7 @@ ftruncate for operating systems that don't have it
fl.l_start = l;
fl.l_type = F_WRLCK;
return fcntl(f, F_FREESP, &fl);
+#endif
}
#endif /* HAVE_FTRUNCATE */