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
|
inotify1=yes
|
||||||
fi
|
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
|
# check if pipe2 is there
|
||||||
pipe2=no
|
pipe2=no
|
||||||
cat > $TMPC << EOF
|
cat > $TMPC << EOF
|
||||||
|
@ -5434,9 +5415,6 @@ fi
|
||||||
if test "$curses" = "yes" ; then
|
if test "$curses" = "yes" ; then
|
||||||
echo "CONFIG_CURSES=y" >> $config_host_mak
|
echo "CONFIG_CURSES=y" >> $config_host_mak
|
||||||
fi
|
fi
|
||||||
if test "$utimens" = "yes" ; then
|
|
||||||
echo "CONFIG_UTIMENSAT=y" >> $config_host_mak
|
|
||||||
fi
|
|
||||||
if test "$pipe2" = "yes" ; then
|
if test "$pipe2" = "yes" ; then
|
||||||
echo "CONFIG_PIPE2=y" >> $config_host_mak
|
echo "CONFIG_PIPE2=y" >> $config_host_mak
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -51,17 +51,6 @@ int os_mlock(void);
|
||||||
typedef struct timeval qemu_timeval;
|
typedef struct timeval qemu_timeval;
|
||||||
#define qemu_gettimeofday(tp) gettimeofday(tp, NULL)
|
#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);
|
bool is_daemonized(void);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -207,53 +207,6 @@ int qemu_pipe(int pipefd[2])
|
||||||
return ret;
|
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 *
|
char *
|
||||||
qemu_get_local_state_pathname(const char *relative_pathname)
|
qemu_get_local_state_pathname(const char *relative_pathname)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue