1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-13 13:18:06 +03:00

r2573: - added a configure test for nanosecond time resolution in struct stat

(recently Linux systems support this, allowing us to support the
  full resolution in NTTIME)

- use nanosecond resolution in the posix backend if available

- moved the configure tests and list of object files for the posix
  backend into ntvfs/posix/ to keep them more neatlly separated.
This commit is contained in:
Andrew Tridgell 2004-09-24 00:44:42 +00:00 committed by Gerald (Jerry) Carter
parent 4103392a59
commit d92ad9f307
5 changed files with 56 additions and 26 deletions

View File

@ -1,5 +1,8 @@
dnl # NTVFS Server subsystem
SMB_INCLUDE_M4(ntvfs/posix/config.m4)
SMB_MODULE_MK(ntvfs_posix, NTVFS, STATIC, ntvfs/posix/config.mk)
SMB_MODULE_MK(ntvfs_cifs, NTVFS, STATIC, ntvfs/config.mk)
SMB_MODULE_MK(ntvfs_simple, NTVFS, STATIC, ntvfs/config.mk)
@ -8,8 +11,6 @@ SMB_MODULE_MK(ntvfs_print, NTVFS, STATIC, ntvfs/config.mk)
SMB_MODULE_MK(ntvfs_ipc, NTVFS, STATIC, ntvfs/config.mk)
SMB_MODULE_MK(ntvfs_posix, NTVFS, STATIC, ntvfs/config.mk)
SMB_MODULE_MK(ntvfs_nbench, NTVFS, STATIC, ntvfs/config.mk)
SMB_SUBSYSTEM_MK(NTVFS,ntvfs/config.mk)

View File

@ -35,33 +35,10 @@ INIT_OBJ_FILES = \
ntvfs/ipc/vfs_ipc.o \
ntvfs/ipc/ipc_rap.o \
ntvfs/ipc/rap_server.o
# End MODULE ntvfs_ipc
################################################
################################################
# Start MODULE ntvfs_posix
[MODULE::ntvfs_posix]
INIT_OBJ_FILES = \
ntvfs/posix/vfs_posix.o
ADD_OBJ_FILES = \
ntvfs/posix/pvfs_util.o \
ntvfs/posix/pvfs_search.o \
ntvfs/posix/pvfs_dirlist.o \
ntvfs/posix/pvfs_fileinfo.o \
ntvfs/posix/pvfs_unlink.o \
ntvfs/posix/pvfs_mkdir.o \
ntvfs/posix/pvfs_open.o \
ntvfs/posix/pvfs_read.o \
ntvfs/posix/pvfs_write.o \
ntvfs/posix/pvfs_fsinfo.o \
ntvfs/posix/pvfs_qfileinfo.o \
ntvfs/posix/pvfs_setfileinfo.o \
ntvfs/posix/pvfs_rename.o \
ntvfs/posix/pvfs_resolve.o \
ntvfs/posix/pvfs_shortname.o
# End MODULE ntvfs_posix
################################################
################################################
# Start MODULE ntvfs_nbench

View File

@ -0,0 +1,23 @@
SMB_MODULE_MK(ntvfs_posix, NTVFS, STATIC, ntvfs/config.mk)
dnl #############################################
dnl see if we have nanosecond resolution for stat
AC_CACHE_CHECK([for tv_nsec nanosecond fields in struct stat],ac_cv_have_stat_tv_nsec,[
AC_TRY_COMPILE(
[
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
],
[struct stat st;
st.st_mtim.tv_nsec;
st.st_atim.tv_nsec;
st.st_ctim.tv_nsec;
],
ac_cv_decl_have_stat_tv_nsec=yes,
ac_cv_decl_have_stat_tv_nsec=no)
])
if test x"$ac_cv_decl_have_stat_tv_nsec" = x"yes"; then
AC_DEFINE(HAVE_STAT_TV_NSEC,1,[Whether stat has tv_nsec nanosecond fields])
fi

View File

@ -0,0 +1,23 @@
################################################
# Start MODULE ntvfs_posix
[MODULE::ntvfs_posix]
INIT_OBJ_FILES = \
ntvfs/posix/vfs_posix.o
ADD_OBJ_FILES = \
ntvfs/posix/pvfs_util.o \
ntvfs/posix/pvfs_search.o \
ntvfs/posix/pvfs_dirlist.o \
ntvfs/posix/pvfs_fileinfo.o \
ntvfs/posix/pvfs_unlink.o \
ntvfs/posix/pvfs_mkdir.o \
ntvfs/posix/pvfs_open.o \
ntvfs/posix/pvfs_read.o \
ntvfs/posix/pvfs_write.o \
ntvfs/posix/pvfs_fsinfo.o \
ntvfs/posix/pvfs_qfileinfo.o \
ntvfs/posix/pvfs_setfileinfo.o \
ntvfs/posix/pvfs_rename.o \
ntvfs/posix/pvfs_resolve.o \
ntvfs/posix/pvfs_shortname.o
# End MODULE ntvfs_posix
################################################

View File

@ -139,6 +139,12 @@ NTSTATUS pvfs_fill_dos_info(struct pvfs_state *pvfs, struct pvfs_filename *name)
unix_to_nt_time(&name->dos.access_time, name->st.st_atime);
unix_to_nt_time(&name->dos.write_time, name->st.st_mtime);
unix_to_nt_time(&name->dos.change_time, name->st.st_mtime);
#ifdef HAVE_STAT_TV_NSEC
name->dos.create_time += name->st.st_ctim.tv_nsec / 100;
name->dos.access_time += name->st.st_atim.tv_nsec / 100;
name->dos.write_time += name->st.st_mtim.tv_nsec / 100;
name->dos.change_time += name->st.st_mtim.tv_nsec / 100;
#endif
name->dos.attrib = dos_mode_from_stat(pvfs, &name->st);
name->dos.alloc_size = name->st.st_size;
name->dos.nlink = name->st.st_nlink;