From 8f520d21297a3ae557d82b586ad369662714d829 Mon Sep 17 00:00:00 2001 From: Eric Biggers Date: Sun, 17 Mar 2013 16:42:28 -0500 Subject: [PATCH] Fix UNIX build; rename functions; comments --- src/extract_image.c | 26 ++++++++++++++------------ src/win32.c | 23 +++++++++++++++-------- src/win32.h | 18 +++++++++--------- 3 files changed, 38 insertions(+), 29 deletions(-) diff --git a/src/extract_image.c b/src/extract_image.c index 7955417f..6279c490 100644 --- a/src/extract_image.c +++ b/src/extract_image.c @@ -375,10 +375,10 @@ dir_exists: } #ifndef __WIN32__ -static int unix_apply_dentry(const char *output_path, - size_t output_path_len, - const struct wim_dentry *dentry, - const struct apply_args *args) +static int unix_do_apply_dentry(const char *output_path, + size_t output_path_len, + struct wim_dentry *dentry, + struct apply_args *args) { const struct wim_inode *inode = dentry->d_inode; @@ -392,12 +392,14 @@ static int unix_apply_dentry(const char *output_path, return extract_regular_file(dentry, args, output_path); } -static int unix_apply_dentry_timestamps(const char *output_path, - size_t output_path_len, - const struct wim_dentry *dentry, - struct apply_args *args) +static int unix_do_apply_dentry_timestamps(const char *output_path, + size_t output_path_len, + const struct wim_dentry *dentry, + struct apply_args *args) { int ret; + const struct wim_inode *inode = dentry->d_inode; + /* Convert the WIM timestamps, which are accurate to 100 nanoseconds, * into struct timeval's. */ struct timeval tv[2]; @@ -448,9 +450,9 @@ static int apply_dentry_normal(struct wim_dentry *dentry, void *arg) len += dentry->full_path_utf8_len; } #ifdef __WIN32__ - return win32_apply_dentry(output_path, len, dentry, args); + return win32_do_apply_dentry(output_path, len, dentry, args); #else - return unix_apply_dentry(output_path, len, dentry, args); + return unix_do_apply_dentry(output_path, len, dentry, args); #endif } @@ -473,9 +475,9 @@ static int apply_dentry_timestamps_normal(struct wim_dentry *dentry, void *arg) len += dentry->full_path_utf8_len; } #ifdef __WIN32__ - return win32_apply_dentry_timestamps(output_path, len, dentry, args); + return win32_do_apply_dentry_timestamps(output_path, len, dentry, args); #else - return unix_apply_dentry_timestamps(output_path, len, dentry, args); + return unix_do_apply_dentry_timestamps(output_path, len, dentry, args); #endif } diff --git a/src/win32.c b/src/win32.c index 775e782e..483518c9 100644 --- a/src/win32.c +++ b/src/win32.c @@ -1068,10 +1068,12 @@ static int win32_set_security_data(const struct wim_inode *inode, return 0; } -int win32_apply_dentry(const char *output_path, - size_t output_path_len, - const struct wim_dentry *dentry, - struct apply_args *args) +/* Extract a file, directory, reparse point, or hard link to an + * already-extracted file using the Win32 API */ +int win32_do_apply_dentry(const char *output_path, + size_t output_path_len, + struct wim_dentry *dentry, + struct apply_args *args) { char *utf16_path; size_t utf16_path_len; @@ -1133,10 +1135,11 @@ out: return ret; } -int win32_apply_dentry_timestamps(const char *output_path, - size_t output_path_len, - const struct wim_dentry *dentry, - const struct apply_args *args) +/* Set timestamps on an extracted file using the Win32 API */ +int win32_do_apply_dentry_timestamps(const char *output_path, + size_t output_path_len, + const struct wim_dentry *dentry, + const struct apply_args *args) { /* Win32 */ char *utf16_path; @@ -1208,6 +1211,7 @@ int fsync(int fd) return 0; } +/* Use the Win32 API to get the number of processors */ unsigned win32_get_number_of_processors() { SYSTEM_INFO sysinfo; @@ -1215,6 +1219,9 @@ unsigned win32_get_number_of_processors() return sysinfo.dwNumberOfProcessors; } +/* Replacement for POSIX-2008 realpath(). Warning: partial functionality only + * (resolved_path must be NULL). Also I highly doubt that GetFullPathName + * really does the right thing under all circumstances. */ char *realpath(const char *path, char *resolved_path) { DWORD ret; diff --git a/src/win32.h b/src/win32.h index 084eb6b2..496ee5c3 100644 --- a/src/win32.h +++ b/src/win32.h @@ -36,15 +36,15 @@ extern int fnmatch(const char *pattern, const char *string, int flags); #define mkdir(name, mode) _mkdir(name) -extern int win32_apply_dentry(const char *output_path, - size_t output_path_len, - const struct wim_dentry *dentry, - struct apply_args *args); - -extern int win32_apply_dentry_timestamps(const char *output_path, - size_t output_path_len, - const struct wim_dentry *dentry, - const struct apply_args *args); +extern int win32_do_apply_dentry(const char *output_path, + size_t output_path_len, + struct wim_dentry *dentry, + struct apply_args *args); + +extern int win32_do_apply_dentry_timestamps(const char *output_path, + size_t output_path_len, + const struct wim_dentry *dentry, + const struct apply_args *args); extern int fsync(int fd); -- 2.43.0