+ char *tmp = xbt_strdup(path);
+ char *res = xbt_strdup(dirname(tmp));
+ free(tmp);
+ return res;
+#endif
+}
+/** @brief Returns the file component of a path (reimplementation of POSIX basename)
+ *
+ * The argument is never modified, and the returned value must be freed after use.
+ */
+char *xbt_basename(const char *path) {
+#if _MSC_VER
+ char file[1024];
+ char ext[1024];
+ errno_t err;
+ err = _splitpath_s(path, NULL,0, NULL,0, file,1024, ext,1024);
+ return bprintf("%s.%s",file,ext);
+#else
+ char *tmp = xbt_strdup(path);
+ char *res = xbt_strdup(basename(tmp));
+ free(tmp);
+ return res;