]> git.tdb.fi Git - libs/core.git/blobdiff - source/fs/dir.h
Add move semantics to Variant
[libs/core.git] / source / fs / dir.h
index 53228ccd760ce233d235fbef7b13b4b965c5c28b..960be2e00c0559e258c6f2edbd7e3863e3f6cb84 100644 (file)
@@ -1,58 +1,67 @@
-/* $Id$
-
-This file is part of libmspfs
-Copyright © 2006-2008  Mikko Rasa, Mikkosoft Productions
-Distributed under the LGPL
-*/
-
 #ifndef MSP_FS_DIR_H_
 #define MSP_FS_DIR_H_
 
-#include <list>
+#include <stdexcept>
 #include <string>
+#include <vector>
+#include <msp/core/mspcore_api.h>
 #include "path.h"
 
 namespace Msp {
 namespace FS {
 
+class MSPCORE_API not_a_directory: public std::runtime_error
+{
+public:
+       not_a_directory(const Path &);
+       ~not_a_directory() throw() override = default;
+};
+
 /// Creates a directory
-void mkdir(const Path &path, int mode);
+MSPCORE_API void mkdir(const Path &path, int mode);
 
 /// Creates a directory and any required parent directories
-void mkpath(const Path &path, int mode);
+MSPCORE_API void mkpath(const Path &path, int mode);
 
 /// Removes a directory, which must be empty
-void rmdir(const Path &path);
+MSPCORE_API void rmdir(const Path &path);
 
 /// Removes a directory and anything it contains
-void rmpath(const Path &path);
+MSPCORE_API void rmpath(const Path &path);
 
 /// Lists the contents of a directory
-std::list<std::string> list_files(const Path &path);
+MSPCORE_API std::vector<std::string> list_files(const Path &path);
 
 /// Lists the contents of a directory, filtered with a regex
-std::list<std::string> list_filtered(const Path &path, const std::string &filter);
+MSPCORE_API std::vector<std::string> list_filtered(const Path &path, const std::string &filter);
 
 /// Returns the current working directory
-Path getcwd();
+MSPCORE_API Path getcwd();
+
+/// Changes the current working directory
+MSPCORE_API void chdir(const Path &);
 
 /// Returns the user's home directory
-Path get_home_dir();
+MSPCORE_API Path get_home_dir();
 
-/// Returns a directory suitable for storing user-specific data
-Path get_user_data_dir(const std::string &appname);
+/// Returns a directory suitable for storing user-specific data.
+MSPCORE_API Path get_user_data_dir();
 
-/// Returns a directory containing system-wide configuration
-Path get_sys_conf_dir(const std::string &argv0);
+/// Returns a directory containing system-wide configuration.
+MSPCORE_API Path get_sys_conf_dir();
 
-/// Returns a directory containing immutable system-wide data
-Path get_sys_data_dir(const std::string &argv0, const std::string &appname);
+/// Returns a directory containing immutable system-wide data.
+MSPCORE_API Path get_sys_data_dir();
 
-/// Returns a directory containing system-wide architecture-specific files
-Path get_sys_lib_dir(const std::string &argv0, const std::string &appname);
+/// Returns a directory containing system-wide architecture-specific files.
+MSPCORE_API Path get_sys_lib_dir();
 
-/// Changes the current working directory
-void chdir(const Path &);
+/** Looks for a file in a list of paths.  Returns the absolute path to the
+first existing location, or an empty Path if the file is not found at all. */
+MSPCORE_API Path path_lookup(const std::string &, const std::vector<Path> &);
+
+/** Looks for a file using the PATH environment variable. */
+MSPCORE_API Path path_lookup(const std::string &);
 
 } // namespace FS
 } // namespace Msp