diff options
author | Max Kellermann <max@duempel.org> | 2014-01-24 00:20:01 +0100 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2014-01-24 00:20:01 +0100 |
commit | 197b503f3ecbf68191b37a7c5fb9c25e975059ce (patch) | |
tree | e5889c528790eeddc6e98fdce4c87d34cdd1f588 /src/ConfigPath.cxx | |
parent | 129eb178eb45fd148ee8b9822b11e7a4bf8ccc00 (diff) | |
download | mpd-197b503f3ecbf68191b37a7c5fb9c25e975059ce.tar.gz mpd-197b503f3ecbf68191b37a7c5fb9c25e975059ce.tar.xz mpd-197b503f3ecbf68191b37a7c5fb9c25e975059ce.zip |
Config*: move to config/
Diffstat (limited to 'src/ConfigPath.cxx')
-rw-r--r-- | src/ConfigPath.cxx | 131 |
1 files changed, 0 insertions, 131 deletions
diff --git a/src/ConfigPath.cxx b/src/ConfigPath.cxx deleted file mode 100644 index a3b3f83a5..000000000 --- a/src/ConfigPath.cxx +++ /dev/null @@ -1,131 +0,0 @@ -/* - * Copyright (C) 2003-2014 The Music Player Daemon Project - * http://www.musicpd.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - */ - -#include "config.h" -#include "ConfigPath.hxx" -#include "fs/AllocatedPath.hxx" -#include "fs/Traits.hxx" -#include "fs/Domain.hxx" -#include "fs/StandardDirectory.hxx" -#include "util/Error.hxx" -#include "ConfigGlobal.hxx" - -#include <assert.h> -#include <string.h> - -#ifndef WIN32 -#include <pwd.h> - -/** - * Determine a given user's home directory. - */ -static AllocatedPath -GetHome(const char *user, Error &error) -{ - AllocatedPath result = GetHomeDir(user); - if (result.IsNull()) { - error.Format(path_domain, - "no such user: %s", user); - return AllocatedPath::Null(); - } - - return result; -} - -/** - * Determine the current user's home directory. - */ -static AllocatedPath -GetHome(Error &error) -{ - AllocatedPath result = GetHomeDir(); - if (result.IsNull()) { - error.Set(path_domain, - "problems getting home for current user"); - return AllocatedPath::Null(); - } - - return result; -} - -/** - * Determine the configured user's home directory. - */ -static AllocatedPath -GetConfiguredHome(Error &error) -{ - const char *user = config_get_string(CONF_USER, nullptr); - return user != nullptr - ? GetHome(user, error) - : GetHome(error); -} - -#endif - -AllocatedPath -ParsePath(const char *path, Error &error) -{ - assert(path != nullptr); - -#ifndef WIN32 - if (path[0] == '~') { - ++path; - - if (*path == '\0') - return GetConfiguredHome(error); - - AllocatedPath home = AllocatedPath::Null(); - - if (*path == '/') { - home = GetConfiguredHome(error); - - ++path; - } else { - const char *slash = strchr(path, '/'); - const char *end = slash == nullptr - ? path + strlen(path) - : slash; - const std::string user(path, end); - home = GetHome(user.c_str(), error); - - if (slash == nullptr) - return home; - - path = slash + 1; - } - - if (home.IsNull()) - return AllocatedPath::Null(); - - AllocatedPath path2 = AllocatedPath::FromUTF8(path, error); - if (path2.IsNull()) - return AllocatedPath::Null(); - - return AllocatedPath::Build(home, path2); - } else if (!PathTraitsUTF8::IsAbsolute(path)) { - error.Format(path_domain, - "not an absolute path: %s", path); - return AllocatedPath::Null(); - } else { -#endif - return AllocatedPath::FromUTF8(path, error); -#ifndef WIN32 - } -#endif -} |