fs/AllocatedPath: make the nullptr_t constructor public
This commit is contained in:
parent
c4f7740b80
commit
bbc5212436
|
@ -67,7 +67,7 @@ struct LocatedUri {
|
|||
AllocatedPath path;
|
||||
|
||||
LocatedUri(Type _type, const char *_uri,
|
||||
AllocatedPath &&_path=AllocatedPath::Null())
|
||||
AllocatedPath &&_path=nullptr)
|
||||
:type(_type), canonical_uri(_uri), path(std::move(_path)) {}
|
||||
};
|
||||
|
||||
|
|
|
@ -46,7 +46,7 @@ static constexpr Domain log_domain("log");
|
|||
#ifndef ANDROID
|
||||
|
||||
static int out_fd = -1;
|
||||
static AllocatedPath out_path = AllocatedPath::Null();
|
||||
static AllocatedPath out_path = nullptr;
|
||||
|
||||
static void redirect_logs(int fd)
|
||||
{
|
||||
|
@ -169,7 +169,7 @@ log_deinit(void)
|
|||
{
|
||||
#ifndef ANDROID
|
||||
close_log_files();
|
||||
out_path = AllocatedPath::Null();
|
||||
out_path = nullptr;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
|
@ -39,7 +39,7 @@
|
|||
* The absolute path of the playlist directory encoded in the
|
||||
* filesystem character set.
|
||||
*/
|
||||
static AllocatedPath playlist_dir_fs = AllocatedPath::Null();
|
||||
static AllocatedPath playlist_dir_fs = nullptr;
|
||||
|
||||
static void
|
||||
mapper_set_playlist_dir(AllocatedPath &&path)
|
||||
|
@ -72,15 +72,15 @@ map_uri_fs(const char *uri) noexcept
|
|||
assert(*uri != '/');
|
||||
|
||||
if (instance->storage == nullptr)
|
||||
return AllocatedPath::Null();
|
||||
return nullptr;
|
||||
|
||||
const auto music_dir_fs = instance->storage->MapFS("");
|
||||
if (music_dir_fs.IsNull())
|
||||
return AllocatedPath::Null();
|
||||
return nullptr;
|
||||
|
||||
const auto uri_fs = AllocatedPath::FromUTF8(uri);
|
||||
if (uri_fs.IsNull())
|
||||
return AllocatedPath::Null();
|
||||
return nullptr;
|
||||
|
||||
return AllocatedPath::Build(music_dir_fs, uri_fs);
|
||||
}
|
||||
|
@ -118,7 +118,7 @@ AllocatedPath
|
|||
map_spl_utf8_to_fs(const char *name) noexcept
|
||||
{
|
||||
if (playlist_dir_fs.IsNull())
|
||||
return AllocatedPath::Null();
|
||||
return nullptr;
|
||||
|
||||
std::string filename_utf8 = name;
|
||||
filename_utf8.append(PLAYLIST_FILE_SUFFIX);
|
||||
|
@ -126,7 +126,7 @@ map_spl_utf8_to_fs(const char *name) noexcept
|
|||
const auto filename_fs =
|
||||
AllocatedPath::FromUTF8(filename_utf8.c_str());
|
||||
if (filename_fs.IsNull())
|
||||
return AllocatedPath::Null();
|
||||
return nullptr;
|
||||
|
||||
return AllocatedPath::Build(playlist_dir_fs, filename_fs);
|
||||
}
|
||||
|
|
|
@ -36,7 +36,7 @@ Context::GetCacheDir(JNIEnv *env) const
|
|||
jobject file = env->CallObjectMethod(Get(), method);
|
||||
if (file == nullptr) {
|
||||
env->ExceptionClear();
|
||||
return AllocatedPath::Null();
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
return Java::File::ToAbsolutePath(env, file);
|
||||
|
|
|
@ -60,7 +60,7 @@ Environment::getExternalStorageDirectory()
|
|||
env->CallStaticObjectMethod(cls,
|
||||
getExternalStorageDirectory_method);
|
||||
if (file == nullptr)
|
||||
return AllocatedPath::Null();
|
||||
return nullptr;
|
||||
|
||||
return Java::File::ToAbsolutePath(env, file);
|
||||
}
|
||||
|
@ -70,7 +70,7 @@ Environment::getExternalStoragePublicDirectory(const char *type)
|
|||
{
|
||||
if (getExternalStoragePublicDirectory_method == nullptr)
|
||||
/* needs API level 8 */
|
||||
return AllocatedPath::Null();
|
||||
return nullptr;
|
||||
|
||||
JNIEnv *env = Java::GetEnv();
|
||||
|
||||
|
@ -79,7 +79,7 @@ Environment::getExternalStoragePublicDirectory(const char *type)
|
|||
Environment::getExternalStoragePublicDirectory_method,
|
||||
type2.Get());
|
||||
if (file == nullptr)
|
||||
return AllocatedPath::Null();
|
||||
return nullptr;
|
||||
|
||||
return Java::File::ToAbsolutePath(env, file);
|
||||
}
|
||||
|
|
|
@ -118,7 +118,7 @@ ConfigBlock::GetPath(const char *name, const char *default_value) const
|
|||
s = bp->value.c_str();
|
||||
} else {
|
||||
if (default_value == nullptr)
|
||||
return AllocatedPath::Null();
|
||||
return nullptr;
|
||||
|
||||
s = default_value;
|
||||
}
|
||||
|
|
|
@ -125,7 +125,7 @@ config_get_path(ConfigOption option)
|
|||
{
|
||||
const auto *param = config_get_param(option);
|
||||
if (param == nullptr)
|
||||
return AllocatedPath::Null();
|
||||
return nullptr;
|
||||
|
||||
return param->GetPath();
|
||||
}
|
||||
|
|
|
@ -71,7 +71,7 @@ config_get_string(enum ConfigOption option,
|
|||
/**
|
||||
* Returns an optional configuration variable which contains an
|
||||
* absolute path. If there is a tilde prefix, it is expanded.
|
||||
* Returns AllocatedPath::Null() if the value is not present.
|
||||
* Returns nullptr if the value is not present.
|
||||
*
|
||||
* Throws #std::runtime_error on error.
|
||||
*/
|
||||
|
|
|
@ -86,7 +86,7 @@ ParsePath(const char *path)
|
|||
if (*path == '\0')
|
||||
return GetConfiguredHome();
|
||||
|
||||
AllocatedPath home = AllocatedPath::Null();
|
||||
AllocatedPath home = nullptr;
|
||||
|
||||
if (*path == '/') {
|
||||
home = GetConfiguredHome();
|
||||
|
@ -107,11 +107,11 @@ ParsePath(const char *path)
|
|||
}
|
||||
|
||||
if (home.IsNull())
|
||||
return AllocatedPath::Null();
|
||||
return nullptr;
|
||||
|
||||
AllocatedPath path2 = AllocatedPath::FromUTF8Throw(path);
|
||||
if (path2.IsNull())
|
||||
return AllocatedPath::Null();
|
||||
return nullptr;
|
||||
|
||||
return AllocatedPath::Build(home, path2);
|
||||
} else if (!PathTraitsUTF8::IsAbsolute(path)) {
|
||||
|
|
|
@ -79,7 +79,7 @@ inline SimpleDatabase::SimpleDatabase(AllocatedPath &&_path,
|
|||
#ifdef ENABLE_ZLIB
|
||||
compress(_compress),
|
||||
#endif
|
||||
cache_path(AllocatedPath::Null()),
|
||||
cache_path(nullptr),
|
||||
prefixed_light_song(nullptr) {
|
||||
}
|
||||
|
||||
|
|
|
@ -135,7 +135,7 @@ AllocatedPath
|
|||
WatchDirectory::GetUriFS() const noexcept
|
||||
{
|
||||
if (parent == nullptr)
|
||||
return AllocatedPath::Null();
|
||||
return nullptr;
|
||||
|
||||
const auto uri = parent->GetUriFS();
|
||||
if (uri.IsNull())
|
||||
|
|
|
@ -499,7 +499,7 @@ try {
|
|||
const char *const uri_utf8 = song.GetRealURI();
|
||||
|
||||
Path path_fs = nullptr;
|
||||
AllocatedPath path_buffer = AllocatedPath::Null();
|
||||
AllocatedPath path_buffer = nullptr;
|
||||
if (PathTraitsUTF8::IsAbsolute(uri_utf8)) {
|
||||
path_buffer = AllocatedPath::FromUTF8Throw(uri_utf8);
|
||||
path_fs = path_buffer;
|
||||
|
|
|
@ -71,7 +71,7 @@ public:
|
|||
:SocketMonitor(_loop),
|
||||
parent(_parent), serial(_serial),
|
||||
#ifdef HAVE_UN
|
||||
path(AllocatedPath::Null()),
|
||||
path(nullptr),
|
||||
#endif
|
||||
address(std::forward<A>(_address))
|
||||
{
|
||||
|
|
|
@ -43,7 +43,6 @@ class AllocatedPath {
|
|||
|
||||
string value;
|
||||
|
||||
AllocatedPath(std::nullptr_t):value() {}
|
||||
explicit AllocatedPath(const_pointer_type _value):value(_value) {}
|
||||
|
||||
AllocatedPath(const_pointer_type _begin, const_pointer_type _end)
|
||||
|
@ -56,6 +55,14 @@ class AllocatedPath {
|
|||
return AllocatedPath(PathTraitsFS::Build(a, a_size, b, b_size));
|
||||
}
|
||||
public:
|
||||
/**
|
||||
* Construct a "nulled" instance. Its IsNull() method will
|
||||
* return true. Such an object must not be used.
|
||||
*
|
||||
* @see IsNull()
|
||||
*/
|
||||
AllocatedPath(std::nullptr_t):value() {}
|
||||
|
||||
/**
|
||||
* Copy an #AllocatedPath object.
|
||||
*/
|
||||
|
@ -70,17 +77,6 @@ public:
|
|||
|
||||
~AllocatedPath();
|
||||
|
||||
/**
|
||||
* Return a "nulled" instance. Its IsNull() method will
|
||||
* return true. Such an object must not be used.
|
||||
*
|
||||
* @see IsNull()
|
||||
*/
|
||||
gcc_const
|
||||
static AllocatedPath Null() noexcept {
|
||||
return AllocatedPath(nullptr);
|
||||
}
|
||||
|
||||
gcc_pure
|
||||
operator Path() const noexcept {
|
||||
return Path::FromFS(c_str());
|
||||
|
|
|
@ -45,15 +45,15 @@ ReadLink(Path path)
|
|||
#ifdef _WIN32
|
||||
(void)path;
|
||||
errno = EINVAL;
|
||||
return AllocatedPath::Null();
|
||||
return nullptr;
|
||||
#else
|
||||
char buffer[MPD_PATH_MAX];
|
||||
ssize_t size = readlink(path.c_str(), buffer, MPD_PATH_MAX);
|
||||
if (size < 0)
|
||||
return AllocatedPath::Null();
|
||||
return nullptr;
|
||||
if (size_t(size) >= MPD_PATH_MAX) {
|
||||
errno = ENOMEM;
|
||||
return AllocatedPath::Null();
|
||||
return nullptr;
|
||||
}
|
||||
buffer[size] = '\0';
|
||||
return AllocatedPath::FromFS(buffer);
|
||||
|
|
|
@ -109,7 +109,7 @@ SafePathFromFS(PathTraitsFS::const_pointer_type dir)
|
|||
{
|
||||
if (IsValidPathString(dir) && IsValidDir(dir))
|
||||
return AllocatedPath::FromFS(dir);
|
||||
return AllocatedPath::Null();
|
||||
return nullptr;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -120,7 +120,7 @@ static AllocatedPath GetStandardDir(int folder_id)
|
|||
auto ret = SHGetFolderPath(nullptr, folder_id | CSIDL_FLAG_DONT_VERIFY,
|
||||
nullptr, SHGFP_TYPE_CURRENT, dir.data());
|
||||
if (FAILED(ret))
|
||||
return AllocatedPath::Null();
|
||||
return nullptr;
|
||||
return SafePathFromFS(dir.data());
|
||||
}
|
||||
#endif
|
||||
|
@ -185,7 +185,7 @@ ParseConfigLine(char *line, const char *dir_name, AllocatedPath &result_dir)
|
|||
// build the result path
|
||||
const char *path = line;
|
||||
|
||||
auto result = AllocatedPath::Null();
|
||||
AllocatedPath result = nullptr;
|
||||
if (home_relative) {
|
||||
auto home = GetHomeDir();
|
||||
if (home.IsNull())
|
||||
|
@ -205,7 +205,7 @@ ParseConfigLine(char *line, const char *dir_name, AllocatedPath &result_dir)
|
|||
static AllocatedPath
|
||||
GetUserDir(const char *name) noexcept
|
||||
try {
|
||||
auto result = AllocatedPath::Null();
|
||||
AllocatedPath result = nullptr;
|
||||
auto config_dir = GetUserConfigDir();
|
||||
if (config_dir.IsNull())
|
||||
return result;
|
||||
|
@ -218,7 +218,7 @@ try {
|
|||
return result;
|
||||
return result;
|
||||
} catch (const std::exception &e) {
|
||||
return AllocatedPath::Null();
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@ -242,9 +242,9 @@ GetUserConfigDir() noexcept
|
|||
return fallback;
|
||||
}
|
||||
|
||||
return AllocatedPath::Null();
|
||||
return nullptr;
|
||||
#else
|
||||
return AllocatedPath::Null();
|
||||
return nullptr;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -258,7 +258,7 @@ GetUserMusicDir() noexcept
|
|||
#elif defined(ANDROID)
|
||||
return Environment::getExternalStoragePublicDirectory("Music");
|
||||
#else
|
||||
return AllocatedPath::Null();
|
||||
return nullptr;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -279,11 +279,11 @@ GetUserCacheDir() noexcept
|
|||
return fallback;
|
||||
}
|
||||
|
||||
return AllocatedPath::Null();
|
||||
return nullptr;
|
||||
#elif defined(ANDROID)
|
||||
return context->GetCacheDir(Java::GetEnv());
|
||||
#else
|
||||
return AllocatedPath::Null();
|
||||
return nullptr;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -303,11 +303,11 @@ GetAppBaseDir() noexcept
|
|||
|
||||
// Check for error
|
||||
if (ret == 0)
|
||||
return AllocatedPath::Null();
|
||||
return nullptr;
|
||||
|
||||
// Check for truncation
|
||||
if (ret == app.size() && GetLastError() == ERROR_INSUFFICIENT_BUFFER)
|
||||
return AllocatedPath::Null();
|
||||
return nullptr;
|
||||
|
||||
auto app_path = AllocatedPath::FromFS(app.data());
|
||||
return app_path.GetDirectoryName().GetDirectoryName();
|
||||
|
@ -326,7 +326,7 @@ GetHomeDir() noexcept
|
|||
if (pw.ReadByUid(getuid()))
|
||||
return SafePathFromFS(pw->pw_dir);
|
||||
#endif
|
||||
return AllocatedPath::Null();
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
AllocatedPath
|
||||
|
@ -340,7 +340,7 @@ GetHomeDir(const char *user_name) noexcept
|
|||
if (pw.ReadByName(user_name))
|
||||
return SafePathFromFS(pw->pw_dir);
|
||||
#endif
|
||||
return AllocatedPath::Null();
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
@ -175,7 +175,7 @@ cdio_detect_device(void)
|
|||
char **devices = cdio_get_devices_with_cap(nullptr, CDIO_FS_AUDIO,
|
||||
false);
|
||||
if (devices == nullptr)
|
||||
return AllocatedPath::Null();
|
||||
return nullptr;
|
||||
|
||||
AllocatedPath path = AllocatedPath::FromFS(devices[0]);
|
||||
cdio_free_device_list(devices);
|
||||
|
|
|
@ -57,7 +57,7 @@ Java::File::ToAbsolutePath(JNIEnv *env, jobject _file)
|
|||
const jstring path = getAbsolutePath(env, file);
|
||||
if (path == nullptr) {
|
||||
env->ExceptionClear();
|
||||
return AllocatedPath::Null();
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
Java::String path2(env, path);
|
||||
|
|
|
@ -50,7 +50,7 @@ class RecorderOutput final : AudioOutput {
|
|||
/**
|
||||
* The destination file name.
|
||||
*/
|
||||
AllocatedPath path = AllocatedPath::Null();
|
||||
AllocatedPath path = nullptr;
|
||||
|
||||
/**
|
||||
* A string that will be used with FormatTag() to build the
|
||||
|
@ -298,7 +298,7 @@ RecorderOutput::SendTag(const Tag &tag)
|
|||
|
||||
AtScopeExit(p) { free(p); };
|
||||
|
||||
AllocatedPath new_path = AllocatedPath::Null();
|
||||
AllocatedPath new_path = nullptr;
|
||||
|
||||
try {
|
||||
new_path = ParsePath(p);
|
||||
|
|
|
@ -316,7 +316,7 @@ CompositeStorage::MapFS(const char *uri) const noexcept
|
|||
|
||||
auto f = FindStorage(uri);
|
||||
if (f.directory->storage == nullptr)
|
||||
return AllocatedPath::Null();
|
||||
return nullptr;
|
||||
|
||||
return f.directory->storage->MapFS(f.uri);
|
||||
}
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
AllocatedPath
|
||||
Storage::MapFS(gcc_unused const char *uri_utf8) const noexcept
|
||||
{
|
||||
return AllocatedPath::Null();
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
AllocatedPath
|
||||
|
|
|
@ -66,7 +66,7 @@ public:
|
|||
|
||||
/**
|
||||
* Map the given relative URI to a local file path. Returns
|
||||
* AllocatedPath::Null() on error or if this storage does not
|
||||
* nullptr on error or if this storage does not
|
||||
* support local files.
|
||||
*/
|
||||
gcc_pure
|
||||
|
|
|
@ -124,7 +124,7 @@ LocalStorage::MapFS(const char *uri_utf8) const noexcept
|
|||
try {
|
||||
return MapFSOrThrow(uri_utf8);
|
||||
} catch (...) {
|
||||
return AllocatedPath::Null();
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -54,7 +54,7 @@ static uid_t user_uid = (uid_t)-1;
|
|||
static gid_t user_gid = (gid_t)-1;
|
||||
|
||||
/** the absolute path of the pidfile */
|
||||
static AllocatedPath pidfile = AllocatedPath::Null();
|
||||
static AllocatedPath pidfile = nullptr;
|
||||
|
||||
/* whether "group" conf. option was given */
|
||||
static bool had_group = false;
|
||||
|
@ -251,7 +251,7 @@ daemonize_finish(void)
|
|||
{
|
||||
if (!pidfile.IsNull()) {
|
||||
unlink(pidfile.c_str());
|
||||
pidfile = AllocatedPath::Null();
|
||||
pidfile = nullptr;
|
||||
}
|
||||
|
||||
free(user_name);
|
||||
|
|
Loading…
Reference in New Issue