X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/172a73b13fe909117c7fbf3d69d4ce5e87efdbc6..4c753f8d4cabd4104f3f7109823f16be2ebdcce3:/src/xbt/xbt_os_file.cpp diff --git a/src/xbt/xbt_os_file.cpp b/src/xbt/xbt_os_file.cpp index d3e87dfd16..68817d56d7 100644 --- a/src/xbt/xbt_os_file.cpp +++ b/src/xbt/xbt_os_file.cpp @@ -1,51 +1,47 @@ -/* xbt_os_file.cpp -- portable interface to file-related functions */ +/* xbt_os_file.cpp -- portable interface to file-related functions */ -/* Copyright (c) 2017. The SimGrid Team. - * All rights reserved. */ +/* Copyright (c) 2017-2022. 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 "src/internal_config.h" +#include "xbt/asserts.h" #include "xbt/file.hpp" /* this module */ -#include "xbt/file.h" -#include "xbt/sysdep.h" - #ifdef _WIN32 #include #endif +#if HAVE_UNISTD_H +#include +#include +#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) +simgrid::xbt::Path::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()); +#if HAVE_UNISTD_H + std::array buffer; + const char* cwd = getcwd(buffer.data(), 2048); + xbt_assert(cwd != nullptr, "Error during getcwd: %s", strerror(errno)); + path_ = cwd; +#else + path_ = "."; +#endif } -std::string simgrid::xbt::Path::getDirname() +std::string simgrid::xbt::Path::get_dir_name() const { std::string p(path_); - char *res = dirname(&p[0]); - return std::string(res, strlen(res)); + return dirname(&p[0]); } -std::string simgrid::xbt::Path::getBasename() +std::string simgrid::xbt::Path::get_base_name() const { std::string p(path_); - char *res = basename(&p[0]); - return std::string(res, strlen(res)); + return basename(&p[0]); }