From: mouring Date: Mon, 15 Jan 2001 02:34:37 +0000 (+0000) Subject: - (bal) utimes() support via utime() interface on machine that lack utimes(). X-Git-Tag: PRE-REORDER~55 X-Git-Url: http://andersk.mit.edu/gitweb/openssh.git/commitdiff_plain/89c7e31cf81ba8a85ef727cc5bfb284e13d5e10f - (bal) utimes() support via utime() interface on machine that lack utimes(). --- diff --git a/ChangeLog b/ChangeLog index 56da470b..481a1332 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,6 @@ 20010115 - (bal) sftp-server.c change to use chmod() if fchmod() does not exist. + - (bal) utimes() support via utime() interface on machine that lack utimes(). 20010114 - (stevesk) initial work for OpenBSD "support supplementary group in diff --git a/acconfig.h b/acconfig.h index 6f56deb0..e2c34317 100644 --- a/acconfig.h +++ b/acconfig.h @@ -103,6 +103,9 @@ * message at run-time. */ #undef RSAREF +/* struct timeval */ +#undef HAVE_STRUCT_TIMEVAL + /* struct utmp and struct utmpx fields */ #undef HAVE_HOST_IN_UTMP #undef HAVE_HOST_IN_UTMPX diff --git a/bsd-misc.c b/bsd-misc.c index 2a059659..2e59019b 100644 --- a/bsd-misc.c +++ b/bsd-misc.c @@ -80,3 +80,15 @@ const char *strerror(int e) return(sys_errlist[e]); } #endif + +#ifndef HAVE_UTIMES +int utimes(char *filename, struct timeval *tvp) +{ + struct utimbuf ub; + + ub.actime = tvp->tv_sec; + ub.modtime = tvp->tv_usec; + + return(utime(filename, &ub)); +} +#endif diff --git a/bsd-misc.h b/bsd-misc.h index d8376562..e02c6678 100644 --- a/bsd-misc.h +++ b/bsd-misc.h @@ -54,4 +54,17 @@ int seteuid(uid_t euid); const char *strerror(int e); #endif + +#ifndef HAVE_UTIMES +#ifndef HAVE_STRUCT_TIMEVAL +struct timeval { + long tv_sec; + long tv_usec; +} +#endif /* HAVE_STRUCT_TIMEVAL */ + +int utimes(char *filename, struct timeval *tvp); +#endif /* HAVE_UTIMES */ + + #endif /* _BSD_MISC_H */ diff --git a/configure.in b/configure.in index 1ee18856..82cb5d4b 100644 --- a/configure.in +++ b/configure.in @@ -313,10 +313,10 @@ AC_CHECK_FUNC(utimes, ) # Checks for header files. -AC_CHECK_HEADERS(bstring.h endian.h floatingpoint.h getopt.h lastlog.h limits.h login.h login_cap.h maillock.h netdb.h netgroup.h netinet/in_systm.h paths.h poll.h pty.h shadow.h security/pam_appl.h sys/bitypes.h sys/bsdtty.h sys/cdefs.h sys/poll.h sys/queue.h sys/select.h sys/stat.h sys/stropts.h sys/sysmacros.h sys/time.h sys/ttcompat.h sys/un.h stddef.h time.h ttyent.h usersec.h util.h utmp.h utmpx.h vis.h) +AC_CHECK_HEADERS(bstring.h endian.h floatingpoint.h getopt.h lastlog.h limits.h login.h login_cap.h maillock.h netdb.h netgroup.h netinet/in_systm.h paths.h poll.h pty.h shadow.h security/pam_appl.h sys/bitypes.h sys/bsdtty.h sys/cdefs.h sys/poll.h sys/queue.h sys/select.h sys/stat.h sys/stropts.h sys/sysmacros.h sys/time.h sys/ttcompat.h sys/un.h stddef.h time.h ttyent.h usersec.h util.h utime.h utmp.h utmpx.h vis.h) dnl Checks for library functions. -AC_CHECK_FUNCS(arc4random atexit b64_ntop bcopy bindresvport_af clock fchmod freeaddrinfo futimes gai_strerror getcwd getaddrinfo getgrouplist getnameinfo getrlimit getrusage getttyent inet_aton inet_ntoa innetgr login_getcapbool md5_crypt memmove mkdtemp on_exit openpty realpath rresvport_af setdtablesize setenv seteuid setlogin setproctitle setreuid setrlimit setsid sigaction sigvec snprintf strerror strlcat strlcpy strsep strtok_r sysconf vsnprintf vhangup vis waitpid _getpty __b64_ntop) +AC_CHECK_FUNCS(arc4random atexit b64_ntop bcopy bindresvport_af clock fchmod freeaddrinfo futimes gai_strerror getcwd getaddrinfo getgrouplist getnameinfo getrlimit getrusage getttyent inet_aton inet_ntoa innetgr login_getcapbool md5_crypt memmove mkdtemp on_exit openpty realpath rresvport_af setdtablesize setenv seteuid setlogin setproctitle setreuid setrlimit setsid sigaction sigvec snprintf strerror strlcat strlcpy strsep strtok_r sysconf utimes vsnprintf vhangup vis waitpid _getpty __b64_ntop) dnl Checks for time functions AC_CHECK_FUNCS(gettimeofday time) dnl Checks for libutil functions @@ -825,14 +825,27 @@ if test "x$ac_cv_have_struct_addrinfo" = "xyes" ; then AC_DEFINE(HAVE_STRUCT_ADDRINFO) fi +AC_CACHE_CHECK([for struct timeval], ac_cv_have_struct_timeval, [ + AC_TRY_COMPILE( + [ #include ], + [ struct timeval tv; tv.tv_sec = 1;], + [ ac_cv_have_struct_timeval="yes" ], + [ ac_cv_have_struct_timeval="no" ] + ) +]) +if test "x$ac_cv_have_struct_timeval" = "xyes" ; then + AC_DEFINE(HAVE_STRUCT_TIMEVAL) + have_struct_timeval=1 +fi + # If we don't have int64_t then we can't compile sftp-server. So don't # even attempt to do it. if test "x$ac_cv_have_int64_t" = "xno" -a \ "x$ac_cv_sizeof_long_int" != "x8" -a \ "x$ac_cv_sizeof_long_long_int" = "x0" ; then NO_SFTP='#' - AC_SUBST(NO_SFTP) fi +AC_SUBST(NO_SFTP) dnl Checks for structure members OSSH_CHECK_HEADER_FOR_FIELD(ut_host, utmp.h, HAVE_HOST_IN_UTMP) diff --git a/includes.h b/includes.h index 96e97ca5..fc269e8e 100644 --- a/includes.h +++ b/includes.h @@ -85,6 +85,9 @@ static /**/const char *const rcsid[] = { (char *)rcsid, "\100(#)" msg } #ifdef HAVE_SYS_SYSMACROS_H # include #endif +#ifdef HAVE_UTIME_H +# include +#endif #ifdef HAVE_VIS_H # include #endif