[SCM] Samba Shared Repository - branch v4-18-stable updated

Jule Anger janger at samba.org
Wed Feb 15 15:18:37 UTC 2023


The branch, v4-18-stable has been updated
       via  4c48a250c04 VERSION: Disable GIT_SNAPSHOT for the 4.18.0rc3 release.
       via  4480a638407 WHATSNEW: Add release notes for Samba 4.18.0rc3.
       via  82d7b2a142e vfs_ceph: use fsp_get_pathref_fd in ceph fstatat and close vfs calls
       via  c714e369507 s3:lib: Change file_modtime() to return an error code and a struct timespec.
       via  9a3fb55870d selftest: Only run samba.tests.smb3unix in developer mode
       via  a19e32ef2cb python:tests: Avoid exceptions in cleanup code if a test fails in smb3unix.py
       via  f6bbd277dcb param: Use a higher time resolution for lp_file_list_changed()
       via  0853cda5d92 lib:param: Remove trailing whitespaces from loadparm.c
       via  aa4c0c5ffa4 lib:util: Print data in ISO 8601 format
       via  897a183c7b2 lib:util: Remove trailing whitespaces from time.c
       via  8816c1b6e31 mdssvc: fix kMDScopeArray parsing
       via  3a5190b80b8 selftest: Update devel_env.sh for SAMBA_DCERPCD_DONT_LOG_STDOUT=1
       via  fd2cb3197ba s3:tests: Add support for SMBD_DONT_LOG_STDOUT=1 in test_chdir_cache.sh
       via  550faa99fc8 ldb: version 2.7.1
       via  74f6ca2ca90 tevent: version 0.14.1
       via  2d07ab93e55 tevent: remove the already removed tevent_port.c also from the build
       via  d14e1c8bef5 replace: remove unused configure checks for port_create()
       via  9fbff9d422a replace: provide PIPE_BUF on GNU/Hurd
       via  c98812ce65e WHATSNEW: fix typo
       via  ad669874981 VERSION: Bump version up to Samba 4.18.0rc3...
      from  71fa86a3fbb VERSION: Disable GIT_SNAPSHOT for the 4.18.0rc2 release.

https://git.samba.org/?p=samba.git;a=shortlog;h=v4-18-stable


- Log -----------------------------------------------------------------
-----------------------------------------------------------------------

Summary of changes:
 VERSION                                            |  2 +-
 WHATSNEW.txt                                       | 26 ++++++++++++--
 lib/ldb/ABI/{ldb-2.6.1.sigs => ldb-2.7.1.sigs}     |  0
 ...pyldb-util-2.1.0.sigs => pyldb-util-2.7.1.sigs} |  0
 lib/ldb/wscript                                    |  2 +-
 lib/param/loadparm.c                               | 22 ++++++------
 lib/param/loadparm.h                               |  2 +-
 lib/replace/system/network.h                       | 12 +++++++
 lib/replace/system/select.h                        |  4 ---
 lib/replace/wscript                                |  5 ---
 lib/smbconf/smbconf_txt.c                          | 18 ++++++++--
 .../ABI/{tevent-0.14.0.sigs => tevent-0.14.1.sigs} |  0
 lib/tevent/wscript                                 |  5 +--
 lib/util/samba_util.h                              | 12 +++++--
 lib/util/time.c                                    | 42 +++++++++++-----------
 lib/util/util.c                                    | 25 ++++++++-----
 python/samba/tests/smb3unix.py                     | 12 ++++---
 selftest/devel_env.sh                              |  1 +
 source3/modules/vfs_ceph.c                         |  7 ++--
 source3/param/loadparm.c                           | 38 +++++++++++++++-----
 source3/rpc_server/mdssvc/mdssvc.c                 |  6 ++++
 source3/script/tests/test_chdir_cache.sh           | 16 +++++++--
 source3/selftest/tests.py                          |  9 +++--
 source3/wscript                                    |  1 +
 24 files changed, 181 insertions(+), 86 deletions(-)
 copy lib/ldb/ABI/{ldb-2.6.1.sigs => ldb-2.7.1.sigs} (100%)
 copy lib/ldb/ABI/{pyldb-util-2.1.0.sigs => pyldb-util-2.7.1.sigs} (100%)
 copy lib/tevent/ABI/{tevent-0.14.0.sigs => tevent-0.14.1.sigs} (100%)


Changeset truncated at 500 lines:

diff --git a/VERSION b/VERSION
index d8f3b790191..82827931d07 100644
--- a/VERSION
+++ b/VERSION
@@ -87,7 +87,7 @@ SAMBA_VERSION_PRE_RELEASE=
 # e.g. SAMBA_VERSION_RC_RELEASE=1                      #
 #  ->  "3.0.0rc1"                                      #
 ########################################################
-SAMBA_VERSION_RC_RELEASE=2
+SAMBA_VERSION_RC_RELEASE=3
 
 ########################################################
 # To mark SVN snapshots this should be set to 'yes'    #
diff --git a/WHATSNEW.txt b/WHATSNEW.txt
index 66a7a80e963..a035daeef79 100644
--- a/WHATSNEW.txt
+++ b/WHATSNEW.txt
@@ -1,12 +1,12 @@
 Release Announcements
 =====================
 
-This is the second release candidate of Samba 4.18.  This is *not*
+This is the third release candidate of Samba 4.18.  This is *not*
 intended for production environments and is designed for testing
 purposes only.  Please report any defects via the Samba bug reporting
 system at https://bugzilla.samba.org/.
 
-Samba 4.18 will be the next version of the Samba suite...
+Samba 4.18 will be the next version of the Samba suite.
 
 
 UPGRADING
@@ -125,6 +125,28 @@ smb.conf changes
   acl_xattr:security_acl_name             New             security.NTACL
 
 
+CHANGES SINCE 4.18.0rc2
+=======================
+
+o  Jeremy Allison <jra at samba.org>
+   * BUG 15301: Improve file_modtime() and issues around smb3 unix test.
+
+o  Ralph Boehme <slow at samba.org>
+   * BUG 15299: Spotlight doesn't work with latest macOS Ventura.
+
+o  Stefan Metzmacher <metze at samba.org>
+   * BUG 15298: Build failure on solaris with tevent 0.14.0 (and ldb 2.7.0).
+     (tevent 0.14.1 and ldb 2.7.1 are already released...)
+
+o  John Mulligan <jmulligan at redhat.com>
+   * BUG 15307: vfs_ceph incorrectly uses fsp_get_io_fd() instead of
+     fsp_get_pathref_fd() in close and fstat.
+
+o  Andreas Schneider <asn at samba.org>
+   * BUG 15291: test_chdir_cache.sh doesn't work with SMBD_DONT_LOG_STDOUT=1.
+   * BUG 15301: Improve file_modtime() and issues around smb3 unix test.
+
+
 CHANGES SINCE 4.18.0rc1
 =======================
 
diff --git a/lib/ldb/ABI/ldb-2.6.1.sigs b/lib/ldb/ABI/ldb-2.7.1.sigs
similarity index 100%
copy from lib/ldb/ABI/ldb-2.6.1.sigs
copy to lib/ldb/ABI/ldb-2.7.1.sigs
diff --git a/lib/ldb/ABI/pyldb-util-2.1.0.sigs b/lib/ldb/ABI/pyldb-util-2.7.1.sigs
similarity index 100%
copy from lib/ldb/ABI/pyldb-util-2.1.0.sigs
copy to lib/ldb/ABI/pyldb-util-2.7.1.sigs
diff --git a/lib/ldb/wscript b/lib/ldb/wscript
index 95aee9be6d3..03076e6cccc 100644
--- a/lib/ldb/wscript
+++ b/lib/ldb/wscript
@@ -2,7 +2,7 @@
 
 APPNAME = 'ldb'
 # For Samba 4.18.x !
-VERSION = '2.7.0'
+VERSION = '2.7.1'
 
 import sys, os
 
diff --git a/lib/param/loadparm.c b/lib/param/loadparm.c
index fc0dc4df83f..6ab7fa89db7 100644
--- a/lib/param/loadparm.c
+++ b/lib/param/loadparm.c
@@ -1,4 +1,4 @@
-/* 
+/*
    Unix SMB/CIFS implementation.
    Parameter loading functions
    Copyright (C) Karl Auer 1993-1998
@@ -1017,7 +1017,7 @@ void add_to_file_list(TALLOC_CTX *mem_ctx, struct file_lists **list,
 	}
 
 	if (!f) {
-		f = talloc(mem_ctx, struct file_lists);
+		f = talloc_zero(mem_ctx, struct file_lists);
 		if (!f)
 			goto fail;
 		f->next = *list;
@@ -1032,12 +1032,10 @@ void add_to_file_list(TALLOC_CTX *mem_ctx, struct file_lists **list,
 			goto fail;
 		}
 		*list = f;
-		f->modtime = file_modtime(subfname);
-	} else {
-		time_t t = file_modtime(subfname);
-		if (t)
-			f->modtime = t;
 	}
+
+	/* If file_modtime() fails it leaves f->modtime as zero. */
+	(void)file_modtime(subfname, &f->modtime);
 	return;
 
 fail:
@@ -2146,7 +2144,7 @@ void lpcfg_print_parameter(struct parm_struct *p, void *ptr, FILE * f)
 			break;
 
 		case P_OCTAL: {
-			int val = *(int *)ptr; 
+			int val = *(int *)ptr;
 			if (val == -1) {
 				fprintf(f, "-1");
 			} else {
@@ -3199,7 +3197,7 @@ struct loadparm_context *loadparm_init_global(bool load_default)
 /**
  * Initialise the global parameter structure.
  */
-struct loadparm_context *loadparm_init_s3(TALLOC_CTX *mem_ctx, 
+struct loadparm_context *loadparm_init_s3(TALLOC_CTX *mem_ctx,
 					  const struct loadparm_s3_helpers *s3_fns)
 {
 	struct loadparm_context *loadparm_context = talloc_zero(mem_ctx, struct loadparm_context);
@@ -3227,7 +3225,7 @@ const char *lp_default_path(void)
 }
 
 /**
- * Update the internal state of a loadparm context after settings 
+ * Update the internal state of a loadparm context after settings
  * have changed.
  */
 static bool lpcfg_update(struct loadparm_context *lp_ctx)
@@ -3273,7 +3271,7 @@ static bool lpcfg_update(struct loadparm_context *lp_ctx)
 			   lp_ctx->globals->syslog,
 			   lp_ctx->globals->syslog_only);
 
-	/* FIXME: This is a bit of a hack, but we can't use a global, since 
+	/* FIXME: This is a bit of a hack, but we can't use a global, since
 	 * not everything that uses lp also uses the socket library */
 	if (lpcfg_parm_bool(lp_ctx, NULL, "socket", "testnonblock", false)) {
 		setenv("SOCKET_TESTNONBLOCK", "1", 1);
@@ -3305,7 +3303,7 @@ bool lpcfg_load_default(struct loadparm_context *lp_ctx)
     path = lp_default_path();
 
     if (!file_exist(path)) {
-	    /* We allow the default smb.conf file to not exist, 
+	    /* We allow the default smb.conf file to not exist,
 	     * basically the equivalent of an empty file. */
 	    return lpcfg_update(lp_ctx);
     }
diff --git a/lib/param/loadparm.h b/lib/param/loadparm.h
index 98263f0e62b..af6b530366a 100644
--- a/lib/param/loadparm.h
+++ b/lib/param/loadparm.h
@@ -102,7 +102,7 @@ struct file_lists {
 	struct file_lists *next;
 	char *name;
 	char *subfname;
-	time_t modtime;
+	struct timespec modtime;
 };
 
 #define DEFAULT_NAME_RESOLVE_ORDER "lmhosts wins host bcast"
diff --git a/lib/replace/system/network.h b/lib/replace/system/network.h
index a84bfd453b1..1721d65a51a 100644
--- a/lib/replace/system/network.h
+++ b/lib/replace/system/network.h
@@ -91,6 +91,8 @@
 #include <stropts.h>
 #endif
 
+#include <limits.h>
+
 #ifndef HAVE_SOCKLEN_T
 #define HAVE_SOCKLEN_T
 typedef int socklen_t;
@@ -342,6 +344,16 @@ typedef unsigned short int sa_family_t;
 # endif
 #endif
 
+#ifndef PIPE_BUF
+# ifdef __GNU__
+  /*
+   * GNU/Hurd does not have such hardcoded limitations. But it has to support
+   * the minimum POSIX value anyway.
+   */
+#  define PIPE_BUF 512
+# endif
+#endif
+
 #ifndef HAVE_STRUCT_ADDRINFO
 #define HAVE_STRUCT_ADDRINFO
 struct addrinfo {
diff --git a/lib/replace/system/select.h b/lib/replace/system/select.h
index 9e945c3ccfa..11c5390d901 100644
--- a/lib/replace/system/select.h
+++ b/lib/replace/system/select.h
@@ -34,10 +34,6 @@
 #include <sys/epoll.h>
 #endif
 
-#ifdef HAVE_SOLARIS_PORTS
-#include <port.h>
-#endif
-
 #ifndef SELECT_CAST
 #define SELECT_CAST
 #endif
diff --git a/lib/replace/wscript b/lib/replace/wscript
index 82c5a8a477b..5c2b750832b 100644
--- a/lib/replace/wscript
+++ b/lib/replace/wscript
@@ -44,7 +44,6 @@ def configure(conf):
     conf.CHECK_HEADERS('locale.h ndir.h pwd.h')
     conf.CHECK_HEADERS('shadow.h sys/acl.h')
     conf.CHECK_HEADERS('sys/attributes.h attr/attributes.h sys/capability.h sys/dir.h sys/epoll.h')
-    conf.CHECK_HEADERS('port.h')
     conf.CHECK_HEADERS('sys/fcntl.h sys/filio.h sys/filsys.h sys/fs/s5param.h')
     conf.CHECK_HEADERS('sys/id.h sys/ioctl.h sys/ipc.h sys/mman.h sys/mode.h sys/ndir.h sys/priv.h')
     conf.CHECK_HEADERS('sys/resource.h sys/security.h sys/shm.h sys/statfs.h sys/statvfs.h sys/termio.h')
@@ -482,7 +481,6 @@ def configure(conf):
     conf.CHECK_FUNCS('timegm getifaddrs freeifaddrs mmap setgroups syscall setsid')
     conf.CHECK_FUNCS('getgrent_r getgrgid_r getgrnam_r getgrouplist getpagesize')
     conf.CHECK_FUNCS('getpwent_r getpwnam_r getpwuid_r epoll_create')
-    conf.CHECK_FUNCS('port_create')
     conf.CHECK_FUNCS('getprogname')
     if not conf.CHECK_FUNCS('copy_file_range'):
         conf.CHECK_CODE('''
@@ -708,9 +706,6 @@ syscall(SYS_copy_file_range,0,NULL,0,NULL,0,0);
     if conf.CONFIG_SET('HAVE_EPOLL_CREATE') and conf.CONFIG_SET('HAVE_SYS_EPOLL_H'):
         conf.DEFINE('HAVE_EPOLL', 1)
 
-    if conf.CONFIG_SET('HAVE_PORT_CREATE') and conf.CONFIG_SET('HAVE_PORT_H'):
-        conf.DEFINE('HAVE_SOLARIS_PORTS', 1)
-
     if conf.CHECK_FUNCS('eventfd', headers='sys/eventfd.h'):
         conf.DEFINE('HAVE_EVENTFD', 1)
 
diff --git a/lib/smbconf/smbconf_txt.c b/lib/smbconf/smbconf_txt.c
index 5c4bd27b9df..70a35ec4304 100644
--- a/lib/smbconf/smbconf_txt.c
+++ b/lib/smbconf/smbconf_txt.c
@@ -184,12 +184,23 @@ static sbcErr smbconf_txt_load_file(struct smbconf_ctx *ctx)
 {
 	sbcErr err;
 	uint64_t new_csn;
+	int rc;
+	struct timespec mt = {0};
 
 	if (!file_exist(ctx->path)) {
 		return SBC_ERR_BADFILE;
 	}
 
-	new_csn = (uint64_t)file_modtime(ctx->path);
+	rc = file_modtime(ctx->path, &mt);
+	if (rc != 0) {
+		/*
+		 * Not worth mapping errno returned
+		 * in rc to SBC_ERR_XXX. Just assume
+		 * access denied.
+		 */
+		return SBC_ERR_ACCESS_DENIED;
+	}
+	new_csn = (uint64_t)mt.tv_sec;
 	if (new_csn == pd(ctx)->csn) {
 		return SBC_ERR_OK;
 	}
@@ -275,11 +286,14 @@ static void smbconf_txt_get_csn(struct smbconf_ctx *ctx,
 				struct smbconf_csn *csn,
 				const char *service, const char *param)
 {
+	struct timespec mt = {0};
+
 	if (csn == NULL) {
 		return;
 	}
 
-	csn->csn = (uint64_t)file_modtime(ctx->path);
+	(void)file_modtime(ctx->path, &mt);
+	csn->csn = (uint64_t)mt.tv_sec;
 }
 
 /**
diff --git a/lib/tevent/ABI/tevent-0.14.0.sigs b/lib/tevent/ABI/tevent-0.14.1.sigs
similarity index 100%
copy from lib/tevent/ABI/tevent-0.14.0.sigs
copy to lib/tevent/ABI/tevent-0.14.1.sigs
diff --git a/lib/tevent/wscript b/lib/tevent/wscript
index df1c69127ab..0f6e92f93e8 100644
--- a/lib/tevent/wscript
+++ b/lib/tevent/wscript
@@ -1,7 +1,7 @@
 #!/usr/bin/env python
 
 APPNAME = 'tevent'
-VERSION = '0.14.0'
+VERSION = '0.14.1'
 
 import sys, os
 
@@ -93,9 +93,6 @@ def build(bld):
     if bld.CONFIG_SET('HAVE_EPOLL'):
         SRC += ' tevent_epoll.c'
 
-    if bld.CONFIG_SET('HAVE_SOLARIS_PORTS'):
-        SRC += ' tevent_port.c'
-
     if bld.env.standalone_tevent:
         bld.env.PKGCONFIGDIR = '${LIBDIR}/pkgconfig'
         private_library = False
diff --git a/lib/util/samba_util.h b/lib/util/samba_util.h
index 4eecfb8a583..f7e13bc8884 100644
--- a/lib/util/samba_util.h
+++ b/lib/util/samba_util.h
@@ -441,9 +441,15 @@ _PUBLIC_ int create_unlink_tmp(const char *dir);
 _PUBLIC_ bool file_exist(const char *fname);
 
 /**
- Check a files mod time.
-**/
-_PUBLIC_ time_t file_modtime(const char *fname);
+ * @brief Return a files modification time.
+ *
+ * @param fname  The name of the file.
+ *
+ * @param mt     A pointer to store the modification time.
+ *
+ * @return 0 on success, errno otherwise.
+ */
+_PUBLIC_ int file_modtime(const char *fname, struct timespec *mt);
 
 /**
  Check if a directory exists.
diff --git a/lib/util/time.c b/lib/util/time.c
index f1d6b566618..773fd611a33 100644
--- a/lib/util/time.c
+++ b/lib/util/time.c
@@ -1,9 +1,9 @@
-/* 
+/*
    Unix SMB/CIFS implementation.
    time handling functions
 
    Copyright (C) Andrew Tridgell 		1992-2004
-   Copyright (C) Stefan (metze) Metzmacher	2002   
+   Copyright (C) Stefan (metze) Metzmacher	2002
    Copyright (C) Jeremy Allison			2007
    Copyright (C) Andrew Bartlett                2011
 
@@ -11,12 +11,12 @@
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 3 of the License, or
    (at your option) any later version.
-   
+
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
-   
+
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
@@ -137,12 +137,12 @@ This takes GMT as input
 **/
 _PUBLIC_ void unix_to_nt_time(NTTIME *nt, time_t t)
 {
-	uint64_t t2; 
+	uint64_t t2;
 
 	if (t == (time_t)-1) {
 		*nt = (NTTIME)-1LL;
 		return;
-	}	
+	}
 
 	if (t == TIME_T_MAX || t == INT64_MAX) {
 		*nt = 0x7fffffffffffffffLL;
@@ -152,7 +152,7 @@ _PUBLIC_ void unix_to_nt_time(NTTIME *nt, time_t t)
 	if (t == 0) {
 		*nt = 0;
 		return;
-	}		
+	}
 
 	t2 = t;
 	t2 += TIME_FIXUP_CONSTANT_INT;
@@ -167,8 +167,8 @@ check if it's a null unix time
 **/
 _PUBLIC_ bool null_time(time_t t)
 {
-	return t == 0 || 
-		t == (time_t)0xFFFFFFFF || 
+	return t == 0 ||
+		t == (time_t)0xFFFFFFFF ||
 		t == (time_t)-1;
 }
 
@@ -271,7 +271,7 @@ void interpret_dos_date(uint32_t date,int *year,int *month,int *day,int *hour,in
 {
 	uint32_t p0,p1,p2,p3;
 
-	p0=date&0xFF; p1=((date&0xFF00)>>8)&0xFF; 
+	p0=date&0xFF; p1=((date&0xFF00)>>8)&0xFF;
 	p2=((date&0xFF0000)>>16)&0xFF; p3=((date&0xFF000000)>>24)&0xFF;
 
 	*second = 2*(p0 & 0x1F);
@@ -295,11 +295,11 @@ _PUBLIC_ time_t pull_dos_date(const uint8_t *date_ptr, int zone_offset)
 	dos_date = IVAL(date_ptr,0);
 
 	if (dos_date == 0) return (time_t)0;
-  
+
 	interpret_dos_date(dos_date,&t.tm_year,&t.tm_mon,
 			   &t.tm_mday,&t.tm_hour,&t.tm_min,&t.tm_sec);
 	t.tm_isdst = -1;
-  
+
 	ret = timegm(&t);
 
 	ret += zone_offset;
@@ -397,7 +397,7 @@ const char *timespec_string_buf(const struct timespec *tp,
 		}
 	} else if (!hires) {
 		len = snprintf(buf->buf, sizeof(buf->buf),
-			       "%04d/%02d/%02d %02d:%02d:%02d",
+			       "%04d-%02d-%02d %02d:%02d:%02d",
 			       1900 + tm->tm_year,
 			       tm->tm_mon + 1,
 			       tm->tm_mday,
@@ -406,7 +406,7 @@ const char *timespec_string_buf(const struct timespec *tp,
 			       tm->tm_sec);
 	} else {
 		len = snprintf(buf->buf, sizeof(buf->buf),
-			       "%04d/%02d/%02d %02d:%02d:%02d.%09ld",
+			       "%04d-%02d-%02d %02d:%02d:%02d.%09ld",
 			       1900 + tm->tm_year,
 			       tm->tm_mon + 1,
 			       tm->tm_mday,
@@ -693,7 +693,7 @@ _PUBLIC_ struct timeval timeval_current_ofs_usec(uint32_t usecs)
 }
 
 /**
-  compare two timeval structures. 
+  compare two timeval structures.
   Return -1 if tv1 < tv2
   Return 0 if tv1 == tv2
   Return 1 if tv1 > tv2
@@ -723,7 +723,7 @@ _PUBLIC_ bool timeval_expired(const struct timeval *tv)
 */
 _PUBLIC_ double timeval_elapsed2(const struct timeval *tv1, const struct timeval *tv2)
 {
-	return (tv2->tv_sec - tv1->tv_sec) + 
+	return (tv2->tv_sec - tv1->tv_sec) +
 	       (tv2->tv_usec - tv1->tv_usec)*1.0e-6;
 }
 
@@ -806,7 +806,7 @@ _PUBLIC_ struct timeval timeval_until(const struct timeval *tv1,
 */
 _PUBLIC_ NTTIME timeval_to_nttime(const struct timeval *tv)
 {
-	return 10*(tv->tv_usec + 
+	return 10*(tv->tv_usec +
 		  ((TIME_FIXUP_CONSTANT + (uint64_t)tv->tv_sec) * 1000000));
 }
 
@@ -828,7 +828,7 @@ _PUBLIC_ void nttime_to_timeval(struct timeval *tv, NTTIME t)
 		tv->tv_usec = 0;
 		return;
 	}
-	
+
 	tv->tv_usec = t - tv->tv_sec*1000000;
 }
 
@@ -938,8 +938,8 @@ bool nt_time_equal(NTTIME *t1, NTTIME *t2)
 
 bool null_timespec(struct timespec ts)
 {
-	return ts.tv_sec == 0 || 
-		ts.tv_sec == (time_t)0xFFFFFFFF || 
+	return ts.tv_sec == 0 ||
+		ts.tv_sec == (time_t)0xFFFFFFFF ||
 		ts.tv_sec == (time_t)-1;
 }
 
@@ -992,7 +992,7 @@ struct timespec timespec_min(const struct timespec *ts1,


-- 
Samba Shared Repository



More information about the samba-cvs mailing list