Anklang 0.3.0-460-gc4ef46ba
ASE — Anklang Sound Engine (C++)

« « « Anklang Documentation
Loading...
Searching...
No Matches
Namespaces | Macros | Typedefs | Functions
path.cc File Reference
#include "path.hh"
#include "platform.hh"
#include "strings.hh"
#include "utils.hh"
#include "inifile.hh"
#include "internal.hh"
#include <unistd.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <algorithm>
#include <cstring>
#include <glob.h>
#include <mutex>
#include <filesystem>
#include <pwd.h>
#include "testing.hh"

Go to the source code of this file.

Namespaces

namespace  Ase
 The Anklang C++ API namespace.
 
namespace  Ase::Path
 The Path namespace provides functions for file path manipulation and testing.
 

Macros

#define IS_DIRSEP(c)
 
#define IS_SEARCHPATH_SEPARATOR(c)
 
#define UPPER_ALPHA(L)
 
#define LOWER_ALPHA(L)
 
#define ISALPHA(L)
 

Typedefs

using Ase::Path::StringStringM = std::map< String, String >
 

Functions

String Ase::Path::dirname (const String &path)
 Retrieve the directory part of the filename path.
 
String Ase::Path::basename (const String &path)
 Strips all directory components from path and returns the resulting file name.
 
String Ase::Path::normalize (const String &path)
 Convert path to normal form.
 
String Ase::Path::realpath (const String &path)
 Resolve links and directory references in path and provide a canonicalized absolute pathname.
 
String Ase::Path::dir_terminate (const String &path)
 Append trailing slash to path, unless it's present.
 
String Ase::Path::strip_slashes (const String &path)
 Strip trailing directory terminators.
 
String Ase::Path::abspath (const String &path, const String &incwd)
 
bool Ase::Path::isabs (const String &path)
 Return wether path is an absolute pathname.
 
bool Ase::Path::isroot (const String &path, bool dos_drives)
 Return wether path is an absolute pathname which identifies the root directory.
 
bool Ase::Path::isdirname (const String &path)
 Return wether path is pointing to a directory component.
 
bool Ase::Path::mkdirs (const String &dirpath, uint mode)
 Create the directories in dirpath with mode, check errno on false returns.
 
bool Ase::Path::dircontains (const String &dirpath, const String &descendant, String *relpath)
 Check if descendant belongs to the directory hierarchy under dirpath.
 
void Ase::Path::rmrf (const String &dir)
 Recursively delete directory tree.
 
bool Ase::Path::copy_file (const String &src, const String &dest)
 Copy a file to a new non-existing location, sets errno and returns false on error.
 
bool Ase::Path::rename (const String &src, const String &dest)
 
String Ase::Path::user_home (const String &username)
 Get a user's home directory, uses $HOME if no username is given.
 
String Ase::Path::data_home ()
 Get the $XDG_DATA_HOME directory, see: https://specifications.freedesktop.org/basedir-spec/latest.
 
String Ase::Path::config_home ()
 Get the $XDG_CONFIG_HOME directory, see: https://specifications.freedesktop.org/basedir-spec/latest.
 
String Ase::Path::cache_home ()
 Get the $XDG_CACHE_HOME directory, see: https://specifications.freedesktop.org/basedir-spec/latest.
 
String Ase::Path::runtime_dir ()
 Get the $XDG_RUNTIME_DIR directory, see: https://specifications.freedesktop.org/basedir-spec/latest.
 
String Ase::Path::xdg_dir (const String &xdgdir)
 
String Ase::Path::config_dirs ()
 Get the $XDG_CONFIG_DIRS directory list, see: https://specifications.freedesktop.org/basedir-spec/latest.
 
String Ase::Path::data_dirs ()
 Get the $XDG_DATA_DIRS directory list, see: https://specifications.freedesktop.org/basedir-spec/latest.
 
String Ase::Path::config_names ()
 Get config names as set with config_names(), if unset defaults to program_alias().
 
void Ase::Path::config_names (const String &names)
 Set a colon separated list of names for this application to find configuration settings and files.
 
StringPair Ase::Path::split_extension (const std::string &filepath, const bool lastdot)
 
String Ase::Path::expand_tilde (const String &path)
 Expand a "~/" or "~user/" path which refers to user home directories.
 
String Ase::Path::skip_root (const String &path)
 
size_t Ase::Path::file_size (const String &path)
 Retrieve the on-disk size in bytes of path.
 
bool Ase::Path::check (const String &file, const String &mode)
 
bool Ase::Path::equals (const String &file1, const String &file2)
 
String Ase::Path::cwd ()
 Return the current working directoy, including symlinks used in $PWD if available.
 
StringS Ase::Path::searchpath_split (const String &searchpath)
 
bool Ase::Path::searchpath_contains (const String &searchpath, const String &element)
 Check if searchpath contains element, a trailing slash searches for directories.
 
String Ase::Path::searchpath_find (const String &searchpath, const String &file, const String &mode)
 Find the first file in searchpath which matches mode (see check()).
 
StringS Ase::Path::searchpath_list (const String &searchpath, const String &mode)
 Find all searchpath entries matching mode (see check()).
 
String Ase::Path::join_with (const String &head, char joiner, const String &tail)
 Construct head + joiner + tail avoiding duplicates of joiner.
 
String Ase::Path::searchpath_multiply (const String &searchpath, const String &postfixes)
 Yield a new searchpath by combining each element of searchpath with each element of postfixes.
 
String Ase::Path::searchpath_join (const StringS &string_vector)
 
String Ase::Path::vpath_find (const String &file, const String &mode)
 
void Ase::Path::glob (const String &pathpattern, StringS &dirs, StringS &files)
 Create list with directories and filenames matching pathpattern with shell wildcards.
 
void Ase::Path::glob (const String &pathpattern, StringS &matches)
 Create list with filenames matching pathpattern with shell wildcards.
 
void Ase::Path::rglob (const String &basedir, const String &pattern, StringS &matches)
 Recursively match files with glob pattern under basedir.
 
void Ase::Path::unique_realpaths (StringS &pathnames)
 Convert all pathnames via realpath() and eliminate duplicates.
 
String Ase::Path::simplify_abspath (const std::string &abspath_expression)
 Remove extra slashes, './' and '../' from abspath_expression.
 
charAse::Path::memread (const String &filename, size_t *lengthp, ssize_t maxlength)
 
void Ase::Path::memfree (char *memread_mem)
 
bool Ase::Path::memwrite (const String &filename, size_t len, const uint8 *bytes, bool append, int perms)
 
String Ase::Path::stringread (const String &filename, ssize_t maxlength)
 
bool Ase::Path::stringwrite (const String &filename, const String &data, bool mkdirs_, int perms)
 
bool Ase::Path::stringappend (const String &filename, const String &data, bool mkdirs_, int perms)
 

Macro Definition Documentation

◆ IS_DIRSEP

#define IS_DIRSEP (   c)

Definition at line 26 of file path.cc.

◆ IS_SEARCHPATH_SEPARATOR

#define IS_SEARCHPATH_SEPARATOR (   c)

Definition at line 27 of file path.cc.

◆ ISALPHA

#define ISALPHA (   L)

Definition at line 30 of file path.cc.

◆ LOWER_ALPHA

#define LOWER_ALPHA (   L)

Definition at line 29 of file path.cc.

◆ UPPER_ALPHA

#define UPPER_ALPHA (   L)

Definition at line 28 of file path.cc.