Merge commit '79fd186a5035cf16fc0ab288d8f59da8b1ba2c0e'
* commit '79fd186a5035cf16fc0ab288d8f59da8b1ba2c0e': lavf: Use MoveFileEx instead of rename/_wrename on windows Conflicts: configure Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
		
						commit
						cc663bd13a
					
				
							
								
								
									
										2
									
								
								configure
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								configure
									
									
									
									
										vendored
									
									
								
							@ -1732,6 +1732,7 @@ SYSTEM_FUNCS="
 | 
			
		||||
    lzo1x_999_compress
 | 
			
		||||
    mach_absolute_time
 | 
			
		||||
    MapViewOfFile
 | 
			
		||||
    MoveFileExA
 | 
			
		||||
    memalign
 | 
			
		||||
    mkstemp
 | 
			
		||||
    mmap
 | 
			
		||||
@ -4736,6 +4737,7 @@ check_func_headers windows.h GetProcessAffinityMask
 | 
			
		||||
check_func_headers windows.h GetProcessTimes
 | 
			
		||||
check_func_headers windows.h GetSystemTimeAsFileTime
 | 
			
		||||
check_func_headers windows.h MapViewOfFile
 | 
			
		||||
check_func_headers windows.h MoveFileExA
 | 
			
		||||
check_func_headers windows.h PeekNamedPipe
 | 
			
		||||
check_func_headers windows.h SetConsoleTextAttribute
 | 
			
		||||
check_func_headers windows.h Sleep
 | 
			
		||||
 | 
			
		||||
@ -187,14 +187,31 @@ static inline int win32_rename(const char *src_utf8, const char *dest_utf8)
 | 
			
		||||
        goto fallback;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    ret = _wrename(src_w, dest_w);
 | 
			
		||||
    ret = MoveFileExW(src_w, dest_w, MOVEFILE_REPLACE_EXISTING);
 | 
			
		||||
    av_free(src_w);
 | 
			
		||||
    av_free(dest_w);
 | 
			
		||||
    // Lacking proper mapping from GetLastError() error codes to errno codes
 | 
			
		||||
    if (ret)
 | 
			
		||||
        errno = EPERM;
 | 
			
		||||
    return ret;
 | 
			
		||||
 | 
			
		||||
fallback:
 | 
			
		||||
    /* filename may be be in CP_ACP */
 | 
			
		||||
    return rename(src_utf8, dest_utf8);
 | 
			
		||||
#if HAVE_MOVEFILEEXA
 | 
			
		||||
    ret = MoveFileExA(src_utf8, dest_utf8, MOVEFILE_REPLACE_EXISTING);
 | 
			
		||||
    if (ret)
 | 
			
		||||
        errno = EPERM;
 | 
			
		||||
#else
 | 
			
		||||
    /* Windows Phone doesn't have MoveFileExA. However, it's unlikely
 | 
			
		||||
     * that anybody would input filenames in CP_ACP there, so this
 | 
			
		||||
     * fallback is kept mostly for completeness. Alternatively we could
 | 
			
		||||
     * do MultiByteToWideChar(CP_ACP) and use MoveFileExW, but doing
 | 
			
		||||
     * explicit conversions with CP_ACP is allegedly forbidden in windows
 | 
			
		||||
     * store apps (or windows phone), and the notion of a native code page
 | 
			
		||||
     * doesn't make much sense there. */
 | 
			
		||||
    ret = rename(src_utf8, dest_utf8);
 | 
			
		||||
#endif
 | 
			
		||||
    return ret;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#define mkdir(a, b) win32_mkdir(a)
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user