/** @addtogroup XBT_file
* @brief File manipulation functions
*
- * This module redefine some quite classical functions (such as xbt_getline() or xbt_dirname()) for the platforms
+ * This module redefine some quite classical functions such as xbt_getline() or xbt_dirname() for the platforms
* lacking them.
* @{
*/
/* Our own implementation of dirname, that does not exist on windows */
XBT_PUBLIC(char *) xbt_dirname(const char *path);
+XBT_PUBLIC(char *) xbt_basename(const char *path);
+
/**@}*/
return dirname(xbt_strdup(path));
#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",drive,dir);
+#else
+ return basename(xbt_strdup(path));
+#endif
+}