+tchar *
+canonicalize_fs_path(const tchar *fs_path)
+{
+ tchar *canonical_path;
+
+ if (!fs_path)
+ fs_path = T("");
+ canonical_path = TSTRDUP(fs_path);
+ zap_backslashes(canonical_path);
+ return canonical_path;
+}
+
+/* Strip leading and trailing slashes from a string. Also translates
+ * backslashes into forward slashes. */
+tchar *
+canonicalize_wim_path(const tchar *wim_path)
+{
+ tchar *p;
+ tchar *canonical_path;
+
+ if (wim_path == NULL) {
+ wim_path = T("");
+ } else {
+ while (*wim_path == T('/') || *wim_path == T('\\'))
+ wim_path++;
+ }
+ canonical_path = TSTRDUP(wim_path);
+ if (canonical_path) {
+ zap_backslashes(canonical_path);
+ for (p = tstrchr(canonical_path, T('\0')) - 1;
+ p >= canonical_path && *p == T('/');
+ p--)
+ {
+ *p = T('\0');
+ }
+ }
+ return canonical_path;
+}
+