Commit 25007999 authored by Wayne Davison's avatar Wayne Davison

- Changed set_modtime() to take the file's mode as an arg.

- Made set_modtime() handle symlinks or return 1 if not possible.
parent 8ce65463
......@@ -128,8 +128,13 @@ void overflow_exit(char *str)
int set_modtime(char *fname, time_t modtime)
int set_modtime(char *fname, time_t modtime, mode_t mode)
{
#if !defined HAVE_LUTIMES || !defined HAVE_UTIMES
if (S_ISLNK(mode))
return 1;
#endif
if (verbose > 2) {
rprintf(FINFO, "set modtime of %s to (%ld) %s",
safe_fname(fname), (long)modtime,
......@@ -140,7 +145,18 @@ int set_modtime(char *fname, time_t modtime)
return 0;
{
#ifdef HAVE_UTIMBUF
#ifdef HAVE_UTIMES
struct timeval t[2];
t[0].tv_sec = time(NULL);
t[0].tv_usec = 0;
t[1].tv_sec = modtime;
t[1].tv_usec = 0;
# ifdef HAVE_LUTIMES
if (S_ISLNK(mode))
return lutimes(fname, t);
# endif
return utimes(fname, t);
#elif defined HAVE_UTIMBUF
struct utimbuf tbuf;
tbuf.actime = time(NULL);
tbuf.modtime = modtime;
......@@ -151,12 +167,7 @@ int set_modtime(char *fname, time_t modtime)
t[1] = modtime;
return utime(fname,t);
#else
struct timeval t[2];
t[0].tv_sec = time(NULL);
t[0].tv_usec = 0;
t[1].tv_sec = modtime;
t[1].tv_usec = 0;
return utimes(fname,t);
#error No file-time-modification routine found!
#endif
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment