X-Git-Url: https://wimlib.net/git/?p=wimlib;a=blobdiff_plain;f=src%2Fwim.c;h=1ffc3fef442dccb5e0760bcd28db5f3cbbd99a31;hp=bd31c5b3ea9d1e1f1ee9e6ef262e502586988a5c;hb=2a33c303e30fd740f740e21632fd06b9e414b0c7;hpb=6cc8db9fac4dcfdcd474ee49790a30a54b83c798 diff --git a/src/wim.c b/src/wim.c index bd31c5b3..1ffc3fef 100644 --- a/src/wim.c +++ b/src/wim.c @@ -24,6 +24,14 @@ */ #include "config.h" + +#ifdef __WIN32__ +# include +# ifdef ERROR +# undef ERROR +# endif +#endif + #include #include #include @@ -43,6 +51,32 @@ #include "lookup_table.h" #include "xml.h" +#ifdef __WIN32__ +static char *realpath(const char *path, char *resolved_path) +{ + DWORD ret; + wimlib_assert(resolved_path == NULL); + + ret = GetFullPathNameA(path, 0, NULL, NULL); + if (!ret) + goto fail_win32; + + resolved_path = MALLOC(ret + 1); + if (!resolved_path) + goto fail; + ret = GetFullPathNameA(path, ret, resolved_path, NULL); + if (!ret) { + free(resolved_path); + goto fail_win32; + } + return resolved_path; +fail_win32: + win32_error(GetLastError()); +fail: + return NULL; +} +#endif + static int image_print_metadata(WIMStruct *w) { DEBUG("Printing metadata for image %d", w->current_image);