-inline int stat(const Path &fn, struct stat &st)
-{ return ::stat(fn.str().c_str(), &st); }
+/// Lists the contents of a directory
+std::list<std::string> list_files(const Path &path);
+
+Filename splitext(const std::string &);
+int fnmatch(const std::string &, const Path &);
+
+/// Makes a path relative to some base path. That is, base/result==path.
+Path relative(const Path &path, const Path &base);
+
+std::string basename(const std::string &);
+
+/// Tests for existence of a file
+bool exists(const Path &path);
+
+/**
+Gets information about a file. Returns 0 on success or -1 on error. This
+version can be used to check for file existence and get information in one
+call.
+*/
+int stat(const Path &fn, struct stat &st);
+
+/**
+Returns information about a file. This version throws an exception if an error
+occurs.
+*/
+struct stat stat(const Path &fn);