8
0
mirror of https://github.com/FirebirdSQL/firebird.git synced 2025-01-23 08:03:04 +01:00

Name convention

This commit is contained in:
asfernandes 2009-09-22 15:36:21 +00:00
parent 4b3522374e
commit 3915cc3c15

View File

@ -1,110 +1,112 @@
/* /*
* The contents of this file are subject to the Initial * The contents of this file are subject to the Initial
* Developer's Public License Version 1.0 (the "License"); * Developer's Public License Version 1.0 (the "License");
* you may not use this file except in compliance with the * you may not use this file except in compliance with the
* License. You may obtain a copy of the License at * License. You may obtain a copy of the License at
* http://www.ibphoenix.com/main.nfs?a=ibphoenix&page=ibp_idpl. * http://www.ibphoenix.com/main.nfs?a=ibphoenix&page=ibp_idpl.
* *
* Software distributed under the License is distributed AS IS, * Software distributed under the License is distributed AS IS,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. * WITHOUT WARRANTY OF ANY KIND, either express or implied.
* See the License for the specific language governing rights * See the License for the specific language governing rights
* and limitations under the License. * and limitations under the License.
* *
* The Original Code was created by Dmitry Yemanov * The Original Code was created by Dmitry Yemanov
* for the Firebird Open Source RDBMS project. * for the Firebird Open Source RDBMS project.
* *
* Copyright (c) 2002 Dmitry Yemanov <dimitr@users.sf.net> * Copyright (c) 2002 Dmitry Yemanov <dimitr@users.sf.net>
* and all contributors signed below. * and all contributors signed below.
* *
* All Rights Reserved. * All Rights Reserved.
* Contributor(s): ______________________________________. * Contributor(s): ______________________________________.
*/ */
#include "firebird.h" #include "firebird.h"
#include "../common/classes/init.h" #include "../common/classes/init.h"
#include "../common/config/config.h" #include "../common/config/config.h"
#include "../common/config/config_file.h" #include "../common/config/config_file.h"
#include "../common/config/dir_list.h" #include "../common/config/dir_list.h"
#include "../jrd/os/path_utils.h" #include "../jrd/os/path_utils.h"
#include "../jrd/gds_proto.h" #include "../jrd/gds_proto.h"
#include "../common/utils_proto.h" #include "../common/utils_proto.h"
using namespace Firebird; using namespace Firebird;
namespace { namespace
class DatabaseDirectoryList : public DirectoryList {
{ class DatabaseDirectoryList : public DirectoryList
private: {
const PathName getConfigString() const private:
{ const PathName getConfigString() const
return PathName(Config::getDatabaseAccess()); {
} return PathName(Config::getDatabaseAccess());
public: }
explicit DatabaseDirectoryList(MemoryPool& p) public:
: DirectoryList(p) explicit DatabaseDirectoryList(MemoryPool& p)
{ : DirectoryList(p)
initialize(); {
} initialize();
}; }
InitInstance<DatabaseDirectoryList> databaseDirectoryList; };
InitInstance<DatabaseDirectoryList> databaseDirectoryList;
const char* const ALIAS_FILE = "aliases.conf";
const char* const ALIAS_FILE = "aliases.conf";
void replace_dir_sep(PathName& s)
{ void replace_dir_sep(PathName& s)
const char correct_dir_sep = PathUtils::dir_sep; {
const char incorrect_dir_sep = (correct_dir_sep == '/') ? '\\' : '/'; const char correct_dir_sep = PathUtils::dir_sep;
for (char* itr = s.begin(); itr < s.end(); ++itr) const char incorrect_dir_sep = (correct_dir_sep == '/') ? '\\' : '/';
{ for (char* itr = s.begin(); itr < s.end(); ++itr)
if (*itr == incorrect_dir_sep) {
{ if (*itr == incorrect_dir_sep)
*itr = correct_dir_sep; {
} *itr = correct_dir_sep;
} }
} }
} }
}
bool ResolveDatabaseAlias(const PathName& alias, PathName& database)
{ bool ResolveDatabaseAlias(const PathName& alias, PathName& database)
PathName alias_filename = fb_utils::getPrefix(fb_utils::FB_DIR_CONF, ALIAS_FILE); {
ConfigFile aliasConfig(false, true); PathName alias_filename = fb_utils::getPrefix(fb_utils::FB_DIR_CONF, ALIAS_FILE);
aliasConfig.setConfigFilePath(alias_filename); ConfigFile aliasConfig(false, true);
aliasConfig.setConfigFilePath(alias_filename);
PathName corrected_alias = alias;
replace_dir_sep(corrected_alias); PathName corrected_alias = alias;
replace_dir_sep(corrected_alias);
database = aliasConfig.getString(corrected_alias);
database = aliasConfig.getString(corrected_alias);
if (!database.empty())
{ if (!database.empty())
replace_dir_sep(database); {
if (PathUtils::isRelative(database)) replace_dir_sep(database);
{ if (PathUtils::isRelative(database))
gds__log("Value %s configured for alias %s " {
"is not a fully qualified path name, ignored", gds__log("Value %s configured for alias %s "
database.c_str(), alias.c_str()); "is not a fully qualified path name, ignored",
return false; database.c_str(), alias.c_str());
} return false;
return true; }
} return true;
}
// If file_name has no path part, expand it in DatabasesPath
Firebird::PathName Path, Name; // If file_name has no path part, expand it in DatabasesPath
PathUtils::splitLastComponent(Path, Name, corrected_alias); Firebird::PathName path, name;
// if path component not present in file_name PathUtils::splitLastComponent(path, name, corrected_alias);
if (Path.length() == 0)
{ // if path component not present in file_name
// try to expand to existing file if (path.isEmpty())
if (databaseDirectoryList().expandFileName(database, Name)) {
{ // try to expand to existing file
return true; if (databaseDirectoryList().expandFileName(database, name))
} {
// try to use default path return true;
if (databaseDirectoryList().defaultName(database, Name)) }
{ // try to use default path
return true; if (databaseDirectoryList().defaultName(database, name))
} {
} return true;
}
return false; }
}
return false;
}