X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/f725137b36b0a847bfab6401dc3130670a62910a..172a73b13fe909117c7fbf3d69d4ce5e87efdbc6:/src/xbt/xbt_os_file.cpp diff --git a/src/xbt/xbt_os_file.cpp b/src/xbt/xbt_os_file.cpp new file mode 100644 index 0000000000..d3e87dfd16 --- /dev/null +++ b/src/xbt/xbt_os_file.cpp @@ -0,0 +1,51 @@ +/* xbt_os_file.cpp -- portable interface to file-related functions */ + +/* Copyright (c) 2017. The SimGrid Team. + * All rights reserved. */ + +/* This program is free software; you can redistribute it and/or modify it + * under the terms of the license (GNU LGPL) which comes with this package. */ + +#include "xbt/file.hpp" /* this module */ + +#include "xbt/file.h" +#include "xbt/sysdep.h" + +#ifdef _WIN32 +#include +#endif + +#include +#include /* POSIX dirname */ + +/** @brief Returns the directory component of a path (reimplementation of POSIX dirname) + * + * The argument is never modified, and the returned value must be freed after use. + */ +char *xbt_dirname(const char *path) +{ + return xbt_strdup(simgrid::xbt::Path(path).getDirname().c_str()); +} + +/** @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) +{ + return xbt_strdup(simgrid::xbt::Path(path).getBasename().c_str()); +} + +std::string simgrid::xbt::Path::getDirname() +{ + std::string p(path_); + char *res = dirname(&p[0]); + return std::string(res, strlen(res)); +} + +std::string simgrid::xbt::Path::getBasename() +{ + std::string p(path_); + char *res = basename(&p[0]); + return std::string(res, strlen(res)); +}