-/* $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 "path.h"
namespace Msp {
namespace FS {
+class not_a_directory: public std::runtime_error
+{
+public:
+ not_a_directory(const Path &);
+ virtual ~not_a_directory() throw() { }
+};
+
/// Creates a directory
void mkdir(const Path &path, int mode);
/// Returns the current working directory
Path getcwd();
+/// Changes the current working directory
+void chdir(const Path &);
+
/// Returns the user's home directory
Path get_home_dir();
-/// Returns a directory suitable for storing user-specific data
+/// Deprecated. Use the argument-less version instead.
Path get_user_data_dir(const std::string &appname);
-/// Returns a directory containing system-wide configuration
+/// Returns a directory suitable for storing user-specific data.
+Path get_user_data_dir();
+
+/// Deprecated. Use the argument-less version instead.
Path get_sys_conf_dir(const std::string &argv0);
-/// Returns a directory containing immutable system-wide data
+/// Returns a directory containing system-wide configuration.
+Path get_sys_conf_dir();
+
+/// Deprecated. Use the argument-less version instead.
Path get_sys_data_dir(const std::string &argv0, const std::string &appname);
-/// Returns a directory containing system-wide architecture-specific files
+/// Returns a directory containing immutable system-wide data.
+Path get_sys_data_dir();
+
+/// Deprecated. Use the argument-less version instead.
Path get_sys_lib_dir(const std::string &argv0, const std::string &appname);
-/// Changes the current working directory
-void chdir(const Path &);
+/// Returns a directory containing system-wide architecture-specific files.
+Path get_sys_lib_dir();
+
+/** 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. */
+Path path_lookup(const std::string &, const std::list<Path> &);
+
+/** Looks for a file using the PATH environment variable. */
+Path path_lookup(const std::string &);
} // namespace FS
} // namespace Msp