File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 3030#include < stack>
3131#include < stdexcept>
3232#include < string>
33+ #include < sys/stat.h>
3334#if __cplusplus >= 201103L
3435#ifdef SIMPLECPP_WINDOWS
3536#include < mutex>
3940#include < utility>
4041#include < vector>
4142
43+ #ifdef _WIN32
44+ using mode_t = unsigned short ;
45+ #else
46+ #include < sys/types.h>
47+ #endif
48+
4249#ifdef SIMPLECPP_WINDOWS
4350#include < windows.h>
4451#undef ERROR
@@ -3756,6 +3763,24 @@ std::string simplecpp::getCppStdString(const std::string &std)
37563763 return " " ;
37573764}
37583765
3766+ static mode_t file_type (const std::string &path)
3767+ {
3768+ struct stat file_stat;
3769+ if (stat (path.c_str (), &file_stat) == -1 )
3770+ return 0 ;
3771+ return file_stat.st_mode & S_IFMT;
3772+ }
3773+
3774+ bool simplecpp::isFile (const std::string &path)
3775+ {
3776+ return file_type (path) == S_IFREG;
3777+ }
3778+
3779+ bool simplecpp::isDirectory (const std::string &path)
3780+ {
3781+ return file_type (path) == S_IFDIR;
3782+ }
3783+
37593784#if (__cplusplus < 201103L) && !defined(__APPLE__)
37603785#undef nullptr
37613786#endif
Original file line number Diff line number Diff line change @@ -363,6 +363,20 @@ namespace simplecpp {
363363
364364 /* * Returns the __cplusplus value for a given standard */
365365 SIMPLECPP_LIB std::string getCppStdString (const std::string &std);
366+
367+ /* *
368+ * @brief Checks if given path is a file
369+ * @param path Path to be checked
370+ * @return true if given path is a file
371+ */
372+ SIMPLECPP_LIB bool isFile (const std::string &path);
373+
374+ /* *
375+ * @brief Checks if a given path is a directory
376+ * @param path Path to be checked
377+ * @return true if given path is a directory
378+ */
379+ SIMPLECPP_LIB bool isDirectory (const std::string &path);
366380}
367381
368382#if defined(_MSC_VER)
You can’t perform that action at this time.
0 commit comments