X-Git-Url: https://wimlib.net/git/?a=blobdiff_plain;f=src%2Fwin32_replacements.c;h=5b3017a33af07437d178b1215dadef2c94b52241;hb=b4f0ab9002559b774407fb692bcc7e83a6c82ab7;hp=0f19e891385eee4c716574af9d6b7b2e1416a942;hpb=0806085ebb68ef71d1956a42de063f317ee9079e;p=wimlib diff --git a/src/win32_replacements.c b/src/win32_replacements.c index 0f19e891..5b3017a3 100644 --- a/src/win32_replacements.c +++ b/src/win32_replacements.c @@ -30,14 +30,13 @@ #include #include -#include /* for PathMatchSpecW() */ +#include /* for _get_osfhandle() */ + #include "wimlib/win32_common.h" #include "wimlib/assert.h" -#include "wimlib/file_io.h" #include "wimlib/glob.h" #include "wimlib/error.h" -#include "wimlib/wildcard.h" #include "wimlib/util.h" /* Replacement for POSIX fsync() */ @@ -189,51 +188,10 @@ err_set_errno: return -1; } -/* Replacement for POSIX fnmatch() (partial functionality only) */ -int -fnmatch(const wchar_t *pattern, const wchar_t *string, int flags) -{ - if (PathMatchSpecW(string, pattern)) - return 0; - else - return FNM_NOMATCH; -} - -/* truncate() replacement */ -int -win32_truncate_replacement(const wchar_t *path, off_t size) -{ - DWORD err = NO_ERROR; - LARGE_INTEGER liOffset; - - HANDLE h = win32_open_existing_file(path, GENERIC_WRITE); - if (h == INVALID_HANDLE_VALUE) - goto fail; - - liOffset.QuadPart = size; - if (!SetFilePointerEx(h, liOffset, NULL, FILE_BEGIN)) - goto fail_close_handle; - - if (!SetEndOfFile(h)) - goto fail_close_handle; - CloseHandle(h); - return 0; - -fail_close_handle: - err = GetLastError(); - CloseHandle(h); -fail: - if (err == NO_ERROR) - err = GetLastError(); - set_errno_from_win32_error(err); - return -1; -} - - /* This really could be replaced with _wcserror_s, but this doesn't seem to * actually be available in MSVCRT.DLL on Windows XP (perhaps it's statically * linked in by Visual Studio...?). */ -extern int +int win32_strerror_r_replacement(int errnum, wchar_t *buf, size_t buflen) { static pthread_mutex_t strerror_lock = PTHREAD_MUTEX_INITIALIZER; @@ -311,36 +269,6 @@ pwrite(int fd, const void *buf, size_t count, off_t offset) return do_pread_or_pwrite(fd, (void*)buf, count, offset, true); } -int -win32_get_file_and_vol_ids(const wchar_t *path, u64 *ino_ret, u64 *dev_ret) -{ - HANDLE h; - BY_HANDLE_FILE_INFORMATION file_info; - int ret; - DWORD err; - - h = win32_open_existing_file(path, FILE_READ_ATTRIBUTES); - if (h == INVALID_HANDLE_VALUE) { - ret = WIMLIB_ERR_OPEN; - goto out; - } - - if (!GetFileInformationByHandle(h, &file_info)) { - ret = WIMLIB_ERR_STAT; - } else { - *ino_ret = ((u64)file_info.nFileIndexHigh << 32) | - (u64)file_info.nFileIndexLow; - *dev_ret = file_info.dwVolumeSerialNumber; - ret = 0; - } - err = GetLastError(); - CloseHandle(h); - SetLastError(err); -out: - set_errno_from_GetLastError(); - return ret; -} - /* Replacement for glob() in Windows native builds that operates on wide * characters. */ int