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
					
				| 
						 | 
				
			
			@ -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