util: drop old utimensat() compat code
Now that 9pfs and virtfs-proxy-helper have been converted to utimensat(), we don't need to keep qemu_utimens() anymore. Signed-off-by: Greg Kurz <groug@kaod.org> Reviewed-by: Eric Blake <eblake@redhat.com>
This commit is contained in:
parent
24df3371d9
commit
fcdcf1eed2
22
configure
vendored
22
configure
vendored
@ -3629,25 +3629,6 @@ if compile_prog "" "" ; then
|
||||
inotify1=yes
|
||||
fi
|
||||
|
||||
# check if utimensat and futimens are supported
|
||||
utimens=no
|
||||
cat > $TMPC << EOF
|
||||
#define _ATFILE_SOURCE
|
||||
#include <stddef.h>
|
||||
#include <fcntl.h>
|
||||
#include <sys/stat.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
utimensat(AT_FDCWD, "foo", NULL, 0);
|
||||
futimens(0, NULL);
|
||||
return 0;
|
||||
}
|
||||
EOF
|
||||
if compile_prog "" "" ; then
|
||||
utimens=yes
|
||||
fi
|
||||
|
||||
# check if pipe2 is there
|
||||
pipe2=no
|
||||
cat > $TMPC << EOF
|
||||
@ -5434,9 +5415,6 @@ fi
|
||||
if test "$curses" = "yes" ; then
|
||||
echo "CONFIG_CURSES=y" >> $config_host_mak
|
||||
fi
|
||||
if test "$utimens" = "yes" ; then
|
||||
echo "CONFIG_UTIMENSAT=y" >> $config_host_mak
|
||||
fi
|
||||
if test "$pipe2" = "yes" ; then
|
||||
echo "CONFIG_PIPE2=y" >> $config_host_mak
|
||||
fi
|
||||
|
@ -51,17 +51,6 @@ int os_mlock(void);
|
||||
typedef struct timeval qemu_timeval;
|
||||
#define qemu_gettimeofday(tp) gettimeofday(tp, NULL)
|
||||
|
||||
#ifndef CONFIG_UTIMENSAT
|
||||
#ifndef UTIME_NOW
|
||||
# define UTIME_NOW ((1l << 30) - 1l)
|
||||
#endif
|
||||
#ifndef UTIME_OMIT
|
||||
# define UTIME_OMIT ((1l << 30) - 2l)
|
||||
#endif
|
||||
#endif
|
||||
typedef struct timespec qemu_timespec;
|
||||
int qemu_utimens(const char *path, const qemu_timespec *times);
|
||||
|
||||
bool is_daemonized(void);
|
||||
|
||||
/**
|
||||
|
@ -207,53 +207,6 @@ int qemu_pipe(int pipefd[2])
|
||||
return ret;
|
||||
}
|
||||
|
||||
int qemu_utimens(const char *path, const struct timespec *times)
|
||||
{
|
||||
struct timeval tv[2], tv_now;
|
||||
struct stat st;
|
||||
int i;
|
||||
#ifdef CONFIG_UTIMENSAT
|
||||
int ret;
|
||||
|
||||
ret = utimensat(AT_FDCWD, path, times, AT_SYMLINK_NOFOLLOW);
|
||||
if (ret != -1 || errno != ENOSYS) {
|
||||
return ret;
|
||||
}
|
||||
#endif
|
||||
/* Fallback: use utimes() instead of utimensat() */
|
||||
|
||||
/* happy if special cases */
|
||||
if (times[0].tv_nsec == UTIME_OMIT && times[1].tv_nsec == UTIME_OMIT) {
|
||||
return 0;
|
||||
}
|
||||
if (times[0].tv_nsec == UTIME_NOW && times[1].tv_nsec == UTIME_NOW) {
|
||||
return utimes(path, NULL);
|
||||
}
|
||||
|
||||
/* prepare for hard cases */
|
||||
if (times[0].tv_nsec == UTIME_NOW || times[1].tv_nsec == UTIME_NOW) {
|
||||
gettimeofday(&tv_now, NULL);
|
||||
}
|
||||
if (times[0].tv_nsec == UTIME_OMIT || times[1].tv_nsec == UTIME_OMIT) {
|
||||
stat(path, &st);
|
||||
}
|
||||
|
||||
for (i = 0; i < 2; i++) {
|
||||
if (times[i].tv_nsec == UTIME_NOW) {
|
||||
tv[i].tv_sec = tv_now.tv_sec;
|
||||
tv[i].tv_usec = tv_now.tv_usec;
|
||||
} else if (times[i].tv_nsec == UTIME_OMIT) {
|
||||
tv[i].tv_sec = (i == 0) ? st.st_atime : st.st_mtime;
|
||||
tv[i].tv_usec = 0;
|
||||
} else {
|
||||
tv[i].tv_sec = times[i].tv_sec;
|
||||
tv[i].tv_usec = times[i].tv_nsec / 1000;
|
||||
}
|
||||
}
|
||||
|
||||
return utimes(path, &tv[0]);
|
||||
}
|
||||
|
||||
char *
|
||||
qemu_get_local_state_pathname(const char *relative_pathname)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user