#define _WIMLIB_PROGRESS_H
#include "wimlib.h"
+#include "wimlib/paths.h"
#include "wimlib/types.h"
/* If specified, call the user-provided progress function and check its result.
}
}
+/* Windows: temporarily remove the stream name from the path */
+static inline tchar *
+progress_get_streamless_path(const tchar *path)
+{
+ tchar *cookie = NULL;
+#ifdef __WIN32__
+ cookie = (wchar_t *)path_stream_name(path);
+ if (cookie)
+ *--cookie = L'\0'; /* Overwrite the colon */
+#endif
+ return cookie;
+}
+
+/* Windows: temporarily replace \??\ with \\?\ (to make an NT namespace path
+ * into a Win32 namespace path) */
+static inline tchar *
+progress_get_win32_path(const tchar *path)
+{
+#ifdef __WIN32__
+ if (!wcsncmp(path, L"\\??\\", 4)) {
+ ((wchar_t *)path)[1] = L'\\';
+ return (wchar_t *)&path[1];
+ }
+#endif
+ return NULL;
+}
+
+/* Windows: restore the NT namespace path */
+static inline void
+progress_put_win32_path(tchar *cookie)
+{
+#ifdef __WIN32__
+ if (cookie)
+ *cookie = L'?';
+#endif
+}
+
+/* Windows: restore the stream name part of the path */
+static inline void
+progress_put_streamless_path(tchar *cookie)
+{
+#ifdef __WIN32__
+ if (cookie)
+ *cookie = L':';
+#endif
+}
+
#endif /* _WIMLIB_PROGRESS_H */