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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user