From d101da235bebfedc773e2f1be824df926891cc1a Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Mon, 16 May 2005 18:45:19 +0000 Subject: r6822: Use chsize if we don't have ftruncate. From Steven Edwards . Jeremy. (This used to be commit 2f78ba5ea71504c2c9bb44c36000b3cab1227f78) --- source3/configure.in | 2 +- source3/lib/replace.c | 19 +++++++++++-------- 2 files changed, 12 insertions(+), 9 deletions(-) (limited to 'source3') diff --git a/source3/configure.in b/source3/configure.in index 9b53e65c65..b86d3f2501 100644 --- a/source3/configure.in +++ b/source3/configure.in @@ -1034,7 +1034,7 @@ AC_CHECK_FUNCS(fstat strchr utime utimes getrlimit fsync memset strlcpy strlcat 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 poll rdchk getgrnam getgrent pathconf realpath) -AC_CHECK_FUNCS(setpriv setgidx setuidx setgroups sysconf mktime rename ftruncate stat64 fstat64) +AC_CHECK_FUNCS(setpriv setgidx setuidx setgroups sysconf mktime rename ftruncate chsize stat64 fstat64) AC_CHECK_FUNCS(lstat64 fopen64 atexit grantpt dup2 lseek64 ftruncate64 readdir64) AC_CHECK_FUNCS(fseek64 fseeko64 ftell64 ftello64 setluid getpwanam setlinebuf) AC_CHECK_FUNCS(srandom random srand rand setenv usleep strcasecmp fcvt fcvtl symlink readlink) diff --git a/source3/lib/replace.c b/source3/lib/replace.c index 298707727e..b7695bd8dd 100644 --- a/source3/lib/replace.c +++ b/source3/lib/replace.c @@ -29,17 +29,20 @@ ftruncate for operating systems that don't have it ********************************************************************/ int ftruncate(int f,SMB_OFF_T l) { - struct flock fl; - - fl.l_whence = 0; - fl.l_len = 0; - fl.l_start = l; - fl.l_type = F_WRLCK; - return fcntl(f, F_FREESP, &fl); +#ifdef HAVE_CHSIZE + return chsize(f,l); +#else + struct flock fl; + + fl.l_whence = 0; + fl.l_len = 0; + fl.l_start = l; + fl.l_type = F_WRLCK; + return fcntl(f, F_FREESP, &fl); +#endif } #endif /* HAVE_FTRUNCATE */ - #ifndef HAVE_STRLCPY /* like strncpy but does not 0 fill the buffer and always null terminates. bufsize is the size of the destination buffer */ -- cgit