tar: switch to gnulib fdutimensat module
* gnulib.modules: Add fdutimensat. * src/common.h (fd_utimensat): Remove decl. * src/extract.c (set_stat): Call fdutimensat, not fd_utimensat. * src/misc.c (set_file_atime): Likewise. (fd_utimensat): Remove.
This commit is contained in:
@@ -13,6 +13,7 @@ error
|
|||||||
exclude
|
exclude
|
||||||
exitfail
|
exitfail
|
||||||
fdopendir
|
fdopendir
|
||||||
|
fdutimensat
|
||||||
fileblocks
|
fileblocks
|
||||||
fnmatch-gnu
|
fnmatch-gnu
|
||||||
fseeko
|
fseeko
|
||||||
|
|||||||
@@ -612,8 +612,6 @@ bool maybe_backup_file (const char *file_name, bool this_is_the_archive);
|
|||||||
void undo_last_backup (void);
|
void undo_last_backup (void);
|
||||||
|
|
||||||
int deref_stat (bool deref, char const *name, struct stat *buf);
|
int deref_stat (bool deref, char const *name, struct stat *buf);
|
||||||
int fd_utimensat (int fd, int parentfd, char const *file,
|
|
||||||
struct timespec const ts[2], int atflag);
|
|
||||||
|
|
||||||
extern int chdir_current;
|
extern int chdir_current;
|
||||||
int chdir_arg (char const *dir);
|
int chdir_arg (char const *dir);
|
||||||
|
|||||||
@@ -324,7 +324,7 @@ set_stat (char const *file_name,
|
|||||||
ts[0].tv_nsec = UTIME_OMIT;
|
ts[0].tv_nsec = UTIME_OMIT;
|
||||||
ts[1] = st->mtime;
|
ts[1] = st->mtime;
|
||||||
|
|
||||||
if (fd_utimensat (fd, AT_FDCWD, file_name, ts, atflag) == 0)
|
if (fdutimensat (fd, AT_FDCWD, file_name, ts, atflag) == 0)
|
||||||
{
|
{
|
||||||
if (incremental_option)
|
if (incremental_option)
|
||||||
check_time (file_name, ts[0]);
|
check_time (file_name, ts[0]);
|
||||||
|
|||||||
17
src/misc.c
17
src/misc.c
@@ -613,21 +613,6 @@ deref_stat (bool deref, char const *name, struct stat *buf)
|
|||||||
return deref ? stat (name, buf) : lstat (name, buf);
|
return deref ? stat (name, buf) : lstat (name, buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Use futimens if possible, utimensat otherwise. */
|
|
||||||
int
|
|
||||||
fd_utimensat (int fd, int parentfd, char const *file,
|
|
||||||
struct timespec const ts[2], int atflag)
|
|
||||||
{
|
|
||||||
if (0 <= fd)
|
|
||||||
{
|
|
||||||
int result = futimens (fd, ts);
|
|
||||||
if (! (result < 0 && errno == ENOSYS))
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
return utimensat (parentfd, file, ts, atflag);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Set FD's (i.e., assuming the working directory is PARENTFD, FILE's)
|
/* Set FD's (i.e., assuming the working directory is PARENTFD, FILE's)
|
||||||
access time to ATIME. ATFLAG controls symbolic-link following, in
|
access time to ATIME. ATFLAG controls symbolic-link following, in
|
||||||
the style of openat. */
|
the style of openat. */
|
||||||
@@ -638,7 +623,7 @@ set_file_atime (int fd, int parentfd, char const *file, struct timespec atime,
|
|||||||
struct timespec ts[2];
|
struct timespec ts[2];
|
||||||
ts[0] = atime;
|
ts[0] = atime;
|
||||||
ts[1].tv_nsec = UTIME_OMIT;
|
ts[1].tv_nsec = UTIME_OMIT;
|
||||||
return fd_utimensat (fd, parentfd, file, ts, atflag);
|
return fdutimensat (fd, parentfd, file, ts, atflag);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* A description of a working directory. */
|
/* A description of a working directory. */
|
||||||
|
|||||||
Reference in New Issue
Block a user