8
0
mirror of https://github.com/FirebirdSQL/firebird.git synced 2025-02-02 09:20:39 +01:00

New changes by Dmitry Emanov. Configuration manager and Windows build environment improvements

This commit is contained in:
skidder 2002-11-30 15:08:09 +00:00
parent 61ae1c45fc
commit db3692790b
25 changed files with 233 additions and 224 deletions

View File

@ -16,8 +16,7 @@
# Contributor(s): ______________________________________.
# Start of file prefix.win32: $(VERSION) $(PLATFORM)
PROD_FLAGS=-O2 -mno-cygwin -fcheck-new -DWIN32_LEAN_AND_MEAN
DEV_FLAGS=-ggdb -mno-cygwin -fcheck-new -DDEBUG -DDEBUG_GDS_ALLOC -DWIN32_LEAN_AND_MEAN
PROD_FLAGS=-O2 -mno-cygwin -fcheck-new -DWIN32_LEAN_AND_MEAN -MMD
DEV_FLAGS=-ggdb -mno-cygwin -fcheck-new -DDEBUG -DDEBUG_GDS_ALLOC -DWIN32_LEAN_AND_MEAN -MMD -Wall
PLATFORM_PATH=jrd/os/win32
OS_SPECIFIC_Files+=isc_win32.cpp thd_win32.cpp

View File

@ -41,7 +41,7 @@ RSC=rc.exe
# PROP Intermediate_Dir "debug\alice_ss"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../../src/include" /D "_DEBUG" /D "_LIB" /D "SUPERSERVER" /D "WIN32" /D "_MBCS" /D "_X86_" /D "DEV_BUILD" /FD /GZ /c
# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /Ob0 /I "../../../src/include" /D "_DEBUG" /D "_LIB" /D "SUPERSERVER" /D "WIN32" /D "_MBCS" /D "_X86_" /D "DEV_BUILD" /FD /GZ /c
# ADD BASE RSC /l 0x41d /d "_DEBUG"
# ADD RSC /l 0x41d /d "_DEBUG"
BSC32=bscmake.exe

View File

@ -41,7 +41,7 @@ RSC=rc.exe
# PROP Intermediate_Dir "debug\alice_cs"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../../src/include" /D "_DEBUG" /D "_LIB" /D "WIN32" /D "_MBCS" /D "_X86_" /D "DEV_BUILD" /FD /GZ /c
# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /Ob0 /I "../../../src/include" /D "_DEBUG" /D "_LIB" /D "WIN32" /D "_MBCS" /D "_X86_" /D "DEV_BUILD" /FD /GZ /c
# ADD BASE RSC /l 0x41d /d "_DEBUG"
# ADD RSC /l 0x41d /d "_DEBUG"
BSC32=bscmake.exe

View File

@ -41,7 +41,7 @@ RSC=rc.exe
# PROP Intermediate_Dir "debug\burp_ss"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../../src/include" /D "_DEBUG" /D "_LIB" /D "SUPERSERVER" /D "WIN32_LEAN_AND_MEAN" /D "WIN32" /D "_MBCS" /D "_X86_" /FD /GZ /c
# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /Ob0 /I "../../../src/include" /D "_DEBUG" /D "_LIB" /D "SUPERSERVER" /D "WIN32_LEAN_AND_MEAN" /D "WIN32" /D "_MBCS" /D "_X86_" /FD /GZ /c
# ADD BASE RSC /l 0x41d /d "_DEBUG"
# ADD RSC /l 0x41d /d "_DEBUG"
BSC32=bscmake.exe

View File

@ -41,7 +41,7 @@ RSC=rc.exe
# PROP Intermediate_Dir "debug\burp_cs"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../../src/include" /D "_DEBUG" /D "_LIB" /D "WIN32_LEAN_AND_MEAN" /D "WIN32" /D "_MBCS" /D "_X86_" /FD /GZ /c
# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /Ob0 /I "../../../src/include" /D "_DEBUG" /D "_LIB" /D "WIN32_LEAN_AND_MEAN" /D "WIN32" /D "_MBCS" /D "_X86_" /FD /GZ /c
# ADD BASE RSC /l 0x41d /d "_DEBUG"
# ADD RSC /l 0x41d /d "_DEBUG"
BSC32=bscmake.exe

View File

@ -41,7 +41,7 @@ RSC=rc.exe
# PROP Intermediate_Dir "debug\common"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "../../../src/include" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /D "DEV_BUILD" /YX /FD /GZ /c
# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /Ob0 /I "../../../src/include" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /D "DEV_BUILD" /YX /FD /GZ /c
# ADD BASE RSC /l 0x41d /d "_DEBUG"
# ADD RSC /l 0x41d /d "_DEBUG"
BSC32=bscmake.exe

View File

@ -41,7 +41,7 @@ RSC=rc.exe
# PROP Intermediate_Dir "debug\dsql_server_ss"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "../../../src/include" /D "DEBUG" /D "_DEBUG" /D "_LIB" /D "_WINDOWS" /D "SUPERSERVER" /D "WIN32_LEAN_AND_MEAN" /D "WIN32" /D "DEV_BUILD" /D "_MBCS" /D "_X86_" /FD /GZ /c
# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /Ob0 /I "../../../src/include" /D "DEBUG" /D "_DEBUG" /D "_LIB" /D "_WINDOWS" /D "SUPERSERVER" /D "WIN32_LEAN_AND_MEAN" /D "WIN32" /D "DEV_BUILD" /D "_MBCS" /D "_X86_" /FD /GZ /c
# ADD BASE RSC /l 0x41d /d "_DEBUG"
# ADD RSC /l 0x41d /d "_DEBUG"
BSC32=bscmake.exe
@ -166,13 +166,6 @@ SOURCE=..\..\..\src\dsql\pass1.cpp
# Begin Source File
SOURCE=..\..\..\src\dsql\preparse.cpp
!IF "$(CFG)" == "dsql_server - Win32 Debug"
!ELSEIF "$(CFG)" == "dsql_server - Win32 Release"
!ENDIF
# End Source File
# Begin Source File

View File

@ -41,7 +41,7 @@ RSC=rc.exe
# PROP Intermediate_Dir "debug\dsql_server_cs"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "../../../src/include" /D "DEBUG" /D "_DEBUG" /D "_LIB" /D "_WINDOWS" /D "WIN32_LEAN_AND_MEAN" /D "WIN32" /D "DEV_BUILD" /D "_MBCS" /D "_X86_" /FD /GZ /c
# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /Ob0 /I "../../../src/include" /D "DEBUG" /D "_DEBUG" /D "_LIB" /D "_WINDOWS" /D "WIN32_LEAN_AND_MEAN" /D "WIN32" /D "DEV_BUILD" /D "_MBCS" /D "_X86_" /FD /GZ /c
# ADD BASE RSC /l 0x41d /d "_DEBUG"
# ADD RSC /l 0x41d /d "_DEBUG"
BSC32=bscmake.exe

View File

@ -64,7 +64,7 @@ LIB32=link.exe -lib
# PROP Intermediate_Dir "debug\engine_ss"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../../src/include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_LIB" /D "WIN32_LEAN_AND_MEAN" /D "_X86_" /D "SUPERSERVER" /D "SERVER_SHUTDOWN" /D "DEV_BUILD" /FD /GZ /c
# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /Ob0 /I "../../../src/include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_LIB" /D "WIN32_LEAN_AND_MEAN" /D "_X86_" /D "SUPERSERVER" /D "SERVER_SHUTDOWN" /D "DEV_BUILD" /FD /GZ /c
# SUBTRACT CPP /YX
# ADD BASE RSC /l 0x419 /d "_DEBUG"
# ADD RSC /l 0x419 /d "_DEBUG"

View File

@ -64,7 +64,7 @@ LIB32=link.exe -lib
# PROP Intermediate_Dir "debug\engine_cs"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../../src/include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_LIB" /D "WIN32_LEAN_AND_MEAN" /D "_X86_" /D "SERVER_SHUTDOWN" /D "DEV_BUILD" /FD /GZ /c
# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /Ob0 /I "../../../src/include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_LIB" /D "WIN32_LEAN_AND_MEAN" /D "_X86_" /D "SERVER_SHUTDOWN" /D "DEV_BUILD" /FD /GZ /c
# SUBTRACT CPP /YX
# ADD BASE RSC /l 0x419 /d "_DEBUG"
# ADD RSC /l 0x419 /d "_DEBUG"

View File

@ -43,7 +43,7 @@ RSC=rc.exe
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /GZ /c
# ADD CPP /nologo /MDd /Gi /GX /Zi /Od /I "../../../src/include" /D "_DEBUG" /D "_WINDOWS" /D "WIN32_LEAN_AND_MEAN" /D "WIN32" /D "_MBCS" /D "_X86_" /D "DEV_BUILD" /FR /FD /GZ /c
# ADD CPP /nologo /MDd /Gi /GX /Zi /Od /Ob0 /I "../../../src/include" /D "_DEBUG" /D "_WINDOWS" /D "WIN32_LEAN_AND_MEAN" /D "WIN32" /D "_MBCS" /D "_X86_" /D "DEV_BUILD" /FR /FD /GZ /c
# SUBTRACT CPP /WX
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32

View File

@ -42,7 +42,7 @@ RSC=rc.exe
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "../../../src/include" /D "_DEBUG" /D "DEV_BUILD" /D "_WINDOWS" /D "CLIENT" /D "SUPERCLIENT" /D "WIN32_LEAN_AND_MEAN" /D "WIN32" /D "_MBCS" /D "_X86_" /FD /GZ /c
# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /Ob0 /I "../../../src/include" /D "_DEBUG" /D "DEV_BUILD" /D "_WINDOWS" /D "CLIENT" /D "SUPERCLIENT" /D "WIN32_LEAN_AND_MEAN" /D "WIN32" /D "_MBCS" /D "_X86_" /FD /GZ /c
# ADD BASE RSC /l 0x41d /d "_DEBUG"
# ADD RSC /l 0x41d /d "_DEBUG"
BSC32=bscmake.exe

View File

@ -43,7 +43,7 @@ RSC=rc.exe
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GDS32_EXPORTS" /YX /FD /GZ /c
# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "../../../src/include" /I "../../../src" /D "_DEBUG" /D "DEV_BUILD" /D "_WINDOWS" /D "_USRDLL" /D "GDS32_EXPORTS" /D "CLIENT" /D "SUPERCLIENT" /D "WIN32_LEAN_AND_MEAN" /D "SERVER_SHUTDOWN" /D "IPSERV" /D "GOVERNOR" /D "EXACT_NUMERICS" /D "WIN32" /D "_MBCS" /D "_X86_" /FR /FD /GZ /c
# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /Ob0 /I "../../../src/include" /I "../../../src" /D "_DEBUG" /D "DEV_BUILD" /D "_WINDOWS" /D "_USRDLL" /D "GDS32_EXPORTS" /D "CLIENT" /D "SUPERCLIENT" /D "WIN32_LEAN_AND_MEAN" /D "SERVER_SHUTDOWN" /D "IPSERV" /D "GOVERNOR" /D "EXACT_NUMERICS" /D "WIN32" /D "_MBCS" /D "_X86_" /FR /FD /GZ /c
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x41d /d "_DEBUG"

View File

@ -69,7 +69,7 @@ LINK32=link.exe
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "fbembed_EXPORTS" /YX /FD /GZ /c
# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../../src/include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "WIN32_LEAN_AND_MEAN" /D "_X86_" /D "SUPERSERVER" /D "SERVER_SHUTDOWN" /D "DEV_BUILD" /FD /GZ /c
# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /Ob0 /I "../../../src/include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "WIN32_LEAN_AND_MEAN" /D "_X86_" /D "SUPERSERVER" /D "SERVER_SHUTDOWN" /D "DEV_BUILD" /FD /GZ /c
# SUBTRACT CPP /YX
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32

View File

@ -43,7 +43,7 @@ RSC=rc.exe
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /GZ /c
# ADD CPP /nologo /MDd /Gi /GX /Zi /Od /I "../../../src/include" /D "_DEBUG" /D "_WINDOWS" /D "SUPERSERVER" /D "WIN32_LEAN_AND_MEAN" /D "WIN32" /D "_MBCS" /D "_X86_" /D "DEV_BUILD" /FR /FD /GZ /c
# ADD CPP /nologo /MDd /Gi /GX /Zi /Od /Ob0 /I "../../../src/include" /D "_DEBUG" /D "_WINDOWS" /D "SUPERSERVER" /D "WIN32_LEAN_AND_MEAN" /D "WIN32" /D "_MBCS" /D "_X86_" /D "DEV_BUILD" /FR /FD /GZ /c
# SUBTRACT CPP /WX
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32

View File

@ -1,4 +1,4 @@
dnl $Id: configure.in,v 1.97 2002-11-22 14:31:13 eku Exp $
dnl $Id: configure.in,v 1.98 2002-11-30 15:08:00 skidder Exp $
dnl ############################# INITIALISATION ###############################
@ -605,35 +605,29 @@ case "$PLATFORM" in
mkdir -p gen/install/scripts
mkdir -p gen/install/misc
INSTALL_SRC_DIR=src/install/arch-specific/linux/${FIREBIRD_ARCH_TYPE}
AC_CONFIG_FILES([
gen/install/makeInstallImage.sh:${INSTALL_SRC_DIR}/makeInstallImage.sh.in
gen/install/scripts/preinstall.sh:${INSTALL_SRC_DIR}/preinstall.sh.in
gen/install/scripts/tarinstall.sh:${INSTALL_SRC_DIR}/tarinstall.sh.in
gen/install/scripts/tarMainInstall.sh:${INSTALL_SRC_DIR}/tarMainInstall.sh.in
gen/install/scripts/taruninstall.sh:${INSTALL_SRC_DIR}/taruninstall.sh.in
gen/install/scripts/tarMainUninstall.sh:${INSTALL_SRC_DIR}/tarMainUninstall.sh.in
gen/install/scripts/postinstall.sh:${INSTALL_SRC_DIR}/postinstall.sh.in
gen/install/scripts/preuninstall.sh:${INSTALL_SRC_DIR}/preuninstall.sh.in
gen/install/scripts/postuninstall.sh:${INSTALL_SRC_DIR}/postuninstall.sh.in
gen/install/scripts/rpmheader.txt:${INSTALL_SRC_DIR}/rpmheader.txt.in
gen/install/scripts/rpmfiles.txt:${INSTALL_SRC_DIR}/rpmfiles.txt.in
gen/install/misc/firebird.xinetd:src/install/arch-specific/linux/misc/firebird.xinetd.in
gen/install/misc/changeDBAPassword.sh:src/install/arch-specific/linux/misc/changeDBAPassword.sh.in
],[
chmod a+x gen/install/scripts/*.sh gen/install/*sh 2>/dev/null
])
AC_CONFIG_FILES([gen/install/makeInstallImage.sh:${INSTALL_SRC_DIR}/makeInstallImage.sh.in
gen/install/scripts/preinstall.sh:${INSTALL_SRC_DIR}/preinstall.sh.in
gen/install/scripts/tarinstall.sh:${INSTALL_SRC_DIR}/tarinstall.sh.in
gen/install/scripts/tarMainInstall.sh:${INSTALL_SRC_DIR}/tarMainInstall.sh.in
gen/install/scripts/taruninstall.sh:${INSTALL_SRC_DIR}/taruninstall.sh.in
gen/install/scripts/tarMainUninstall.sh:${INSTALL_SRC_DIR}/tarMainUninstall.sh.in
gen/install/scripts/postinstall.sh:${INSTALL_SRC_DIR}/postinstall.sh.in
gen/install/scripts/preuninstall.sh:${INSTALL_SRC_DIR}/preuninstall.sh.in
gen/install/scripts/postuninstall.sh:${INSTALL_SRC_DIR}/postuninstall.sh.in
gen/install/scripts/rpmheader.txt:${INSTALL_SRC_DIR}/rpmheader.txt.in
gen/install/scripts/rpmfiles.txt:${INSTALL_SRC_DIR}/rpmfiles.txt.in
gen/install/misc/firebird.xinetd:src/install/arch-specific/linux/misc/firebird.xinetd.in
gen/install/misc/changeDBAPassword.sh:src/install/arch-specific/linux/misc/changeDBAPassword.sh.in
],[chmod a+x gen/install/scripts/*.sh gen/install/*sh 2>/dev/null])
;;
SINIX-Z)
AC_CONFIG_FILES([
gen/install/pkginfo:src/install/arch-specific/sinixz/pkginfo.in
gen/install/prototype:src/install/arch-specific/sinixz/prototype.in
gen/install/preinstall:src/install/arch-specific/sinixz/preinstall.in
gen/install/postinstall:src/install/arch-specific/sinixz/postinstall.in
gen/install/postremove:src/install/arch-specific/sinixz/postremove.in
],[
chmod a+x gen/install/pre* gen/install/post* 2>/dev/null
])
AC_CONFIG_FILES([gen/install/pkginfo:src/install/arch-specific/sinixz/pkginfo.in
gen/install/prototype:src/install/arch-specific/sinixz/prototype.in
gen/install/preinstall:src/install/arch-specific/sinixz/preinstall.in
gen/install/postinstall:src/install/arch-specific/sinixz/postinstall.in
gen/install/postremove:src/install/arch-specific/sinixz/postremove.in
],[chmod a+x gen/install/pre* gen/install/post* 2>/dev/null])
;;
esac

View File

@ -27,6 +27,7 @@
#ifdef _MSC_VER
#pragma warning (disable: 4786) // debug identifier truncated
#pragma warning (disable: 4800) // forcing value to bool 'true' or 'false'
#endif
#include "../../common/config/config.h"
@ -40,20 +41,20 @@
#include "../jrd/gdsassert.h"
typedef Firebird::string string;
typedef Firebird::vector<string> string_vector;
/******************************************************************************
*
* Configuration keys (physical names)
* Configuration entries
*/
const string keys[] = {
"RootDirectory", // 0
"SortMemBlockSize", // 1
"SortMemUpperLimit", // 2
"RemoteFileOpenAbility", // 3
"TempDirectories", // 4
"GuardianOption" // 5
const ConfigImpl::ConfigEntry ConfigImpl::entries[] =
{
{TYPE_STRING, "RootDirectory", (ConfigValue) 0},
{TYPE_INTEGER, "SortMemBlockSize", (ConfigValue) 1048576},
{TYPE_INTEGER, "SortMemUpperLimit", (ConfigValue) 268435456},
{TYPE_BOOLEAN, "RemoteFileOpenAbility", (ConfigValue) false},
{TYPE_INTEGER, "GuardianOption", (ConfigValue) 1},
{TYPE_INTEGER, "CpuAffinityMask", (ConfigValue) 1}
};
/******************************************************************************
@ -61,11 +62,7 @@ const string keys[] = {
* Static instance of the system configuration file
*/
ConfigImpl& ConfigImpl::instance()
{
static ConfigImpl sysConfig;
return sysConfig;
}
const static ConfigImpl sysConfig;
/******************************************************************************
*
@ -74,76 +71,96 @@ ConfigImpl& ConfigImpl::instance()
ConfigImpl::ConfigImpl()
{
/* Prepare some stuff */
ConfigFile file;
root_dir = getRootDirectory().c_str();
MemoryPool *pool = getDefaultMemoryPool();
int size = sizeof(entries) / sizeof(entries[0]);
values = FB_NEW(*pool) ConfigValue[size];
string val_sep = ",";
file.setConfigFile(getConfigFile());
val_sep = ",";
}
void ConfigImpl::validateKey(ConfigKey key)
{
assert(key >= 0 && key < (sizeof(keys) / sizeof(string)));
}
/* Iterate through the known configuration entries */
void ConfigImpl::getValue(ConfigKey key, string &result)
{
validateKey(key);
if (file.doesKeyExist(keys[key]))
for (int i = 0; i < size; i++)
{
result = file.getString(keys[key]);
}
}
ConfigEntry entry = entries[i];
string value = getValue(file, entries[i].key);
void ConfigImpl::getValue(ConfigKey key, int &result)
{
validateKey(key);
if (file.doesKeyExist(keys[key]))
{
result = atoi(file.getString(keys[key]).data());
}
}
void ConfigImpl::getValue(ConfigKey key, bool &result)
{
validateKey(key);
if (file.doesKeyExist(keys[key]))
{
result = (atoi(file.getString(keys[key]).data()) != 0);
}
}
void ConfigImpl::getValueList(ConfigKey key, Firebird::vector<string> &result)
{
validateKey(key);
string value = result[0];
if (file.doesKeyExist(keys[key]))
{
value = file.getString(keys[key]);
}
result.empty();
int index = value.find(val_sep);
while (index != string::npos)
{
string temp = value.substr(0, index);
ConfigFile::stripLeadingWhiteSpace(temp);
ConfigFile::stripTrailingWhiteSpace(temp);
if (temp.length())
if (!value.length())
{
result.push_back(temp);
/* Assign the default value */
values[i] = entries[i].default_value;
continue;
}
/* Assign the actual value */
switch (entry.data_type)
{
case TYPE_BOOLEAN:
values[i] = (ConfigValue) asBoolean(value);
break;
case TYPE_INTEGER:
values[i] = (ConfigValue) asInteger(value);
break;
case TYPE_STRING:
{
const char *src = asString(value);
char *dst = FB_NEW(*pool) char[strlen(src) + 1];
strcpy(dst, src);
values[i] = (ConfigValue) dst;
}
break;
case TYPE_STRING_VECTOR:
;
}
value = value.substr(index + 1, value.length());
index = value.find(val_sep);
}
ConfigFile::stripLeadingWhiteSpace(value);
ConfigFile::stripTrailingWhiteSpace(value);
if (value.length())
}
ConfigImpl::~ConfigImpl()
{
/* Free allocated memory */
for (int i = 0; i < sizeof(entries) / sizeof(entries[0]); i++)
{
result.push_back(value);
if (values[i] == entries[i].default_value)
continue;
switch (entries[i].data_type)
{
case TYPE_STRING:
delete[] values[i];
break;
case TYPE_STRING_VECTOR:
;
}
}
delete[] values;
}
string ConfigImpl::getValue(ConfigFile file, ConfigKey key)
{
return file.doesKeyExist(key) ? file.getString(key) : "";
}
int ConfigImpl::asInteger(const string &value)
{
return atoi(value.data());
}
bool ConfigImpl::asBoolean(const string &value)
{
return (atoi(value.data()) != 0);
}
const char* ConfigImpl::asString(const string &value)
{
return value.c_str();
}
/******************************************************************************
@ -151,45 +168,33 @@ void ConfigImpl::getValueList(ConfigKey key, Firebird::vector<string> &result)
* Public interface
*/
string Config::getRootDirectory()
const char* Config::getRootDirectory()
{
string result = ConfigImpl::instance().getRootDirectory();
ConfigImpl::instance().getValue(ROOT_DIRECTORY, result);
return result;
const char* result = (char*) sysConfig.values[KEY_ROOT_DIRECTORY];
return result ? result : sysConfig.root_dir;
}
int Config::getSortMemBlockSize(int default_value)
int Config::getSortMemBlockSize()
{
int result = default_value;
ConfigImpl::instance().getValue(SORT_MEM_BLOCK_SIZE, result);
return result;
return (int) sysConfig.values[KEY_SORT_MEM_BLOCK_SIZE];
}
int Config::getSortMemUpperLimit(int default_value)
int Config::getSortMemUpperLimit()
{
int result = default_value;
ConfigImpl::instance().getValue(SORT_MEM_UPPER_LIMIT, result);
return result;
return (int) sysConfig.values[KEY_SORT_MEM_UPPER_LIMIT];
}
bool Config::getRemoteFileOpenAbility(bool default_value)
bool Config::getRemoteFileOpenAbility()
{
bool result = default_value;
ConfigImpl::instance().getValue(REMOTE_FILE_OPEN_ABILITY, result);
return result;
return (bool) sysConfig.values[KEY_REMOTE_FILE_OPEN_ABILITY];
}
string_vector Config::getTempDirectories(string default_value)
int Config::getGuardianOption()
{
string_vector result(0);
result.push_back(default_value);
ConfigImpl::instance().getValueList(TEMP_DIRECTORIES, result);
return result;
return (int) sysConfig.values[KEY_GUARDIAN_OPTION];
}
int Config::getGuardianOption(int default_value)
int Config::getCpuAffinityMask()
{
int result = default_value;
ConfigImpl::instance().getValue(GUARDIAN_OPTION, result);
return result;
return (int) sysConfig.values[KEY_CPU_AFFINITY_MASK];
}

View File

@ -39,7 +39,7 @@
functions. Each of these functions corresponds to one and only one key
and has one input argument - default value, which is used when the
requested key is missing or the configuration file is not found. Supported
value datatypes are "string", "int" and "bool". Usual default values for
value datatypes are "const char*", "int" and "bool". Usual default values for
these datatypes are empty string, zero and false respectively. There are
two types of member functions - scalar and vector. The former ones return
single value of the given type. The latter ones return vector which
@ -47,12 +47,13 @@
There's one exception - getRootDirectory() member function, which returns
root pathname of the current installation. This value isn't stored in the
configuration file, but is managed by the code itself.
configuration file, but is managed by the code itself. But there's a way
to override this value via the configuration file as well.
To add new configuration item, you have to take the following steps:
1. Add physical key to keys[] array (config.cpp)
2. Add logical key to ConfigKey enumeration (config_impl.h)
1. Add key description to ConfigImpl::entries[] array (config.cpp)
2. Add logical key to Config::ConfigKey enumeration (config.h)
(note: both physical and logical keys MUST have the same ordinal
position within appropriate structures)
3. Add member function to Config class (config.h) and implement it
@ -61,40 +62,47 @@
class Config
{
typedef Firebird::string string;
typedef Firebird::vector<string> string_vector;
enum ConfigKey
{
KEY_ROOT_DIRECTORY, // 0
KEY_SORT_MEM_BLOCK_SIZE, // 1
KEY_SORT_MEM_UPPER_LIMIT, // 2
KEY_REMOTE_FILE_OPEN_ABILITY, // 3
KEY_GUARDIAN_OPTION, // 4
KEY_CPU_AFFINITY_MASK // 5
};
public:
/*
Root directory of current installation
*/
static string getRootDirectory();
static const char* getRootDirectory();
/*
Block size for the sorting manager
*/
static int getSortMemBlockSize(int default_value = 0);
static int getSortMemBlockSize();
/*
Memory usage limit for the sorting manager
*/
static int getSortMemUpperLimit(int default_value = 0);
static int getSortMemUpperLimit();
/*
Whether remote (NFS) files can be opened
*/
static bool getRemoteFileOpenAbility(bool default_value = false);
/*
List of directories to store temporary files in
*/
static string_vector getTempDirectories(string default_value = "");
static bool getRemoteFileOpenAbility();
/*
Startup option for the guardian
*/
static int getGuardianOption(int default_value = 0);
static int getGuardianOption();
/*
CPU affinity mask
*/
static int getCpuAffinityMask();
};
#endif // CONFIG_H

View File

@ -33,21 +33,6 @@
#include "../../common/config/config_file.h"
#include "../jrd/os/config_root.h"
/******************************************************************************
*
* Configuration keys (logical names)
*/
enum ConfigKey
{
ROOT_DIRECTORY, // 0
SORT_MEM_BLOCK_SIZE, // 1
SORT_MEM_UPPER_LIMIT, // 2
REMOTE_FILE_OPEN_ABILITY, // 3
TEMP_DIRECTORIES, // 4
GUARDIAN_OPTION // 5
};
/******************************************************************************
*
* Main implementation class
@ -55,25 +40,42 @@ enum ConfigKey
class ConfigImpl : public ConfigRoot
{
friend class Config;
typedef Firebird::string string;
typedef Firebird::vector<string> string_vector;
enum ConfigType
{
TYPE_BOOLEAN,
TYPE_INTEGER,
TYPE_STRING,
TYPE_STRING_VECTOR
};
typedef char* ConfigKey;
typedef void* ConfigValue;
struct ConfigEntry
{
ConfigType data_type;
ConfigKey key;
ConfigValue default_value;
};
public:
ConfigImpl();
~ConfigImpl();
static void validateKey(ConfigKey);
static string getValue(ConfigFile, ConfigKey);
void getValue(ConfigKey, string&);
void getValue(ConfigKey, int&);
void getValue(ConfigKey, bool&);
void getValueList(ConfigKey key, string_vector&);
static ConfigImpl& instance();
static int asInteger(const string&);
static bool asBoolean(const string&);
static const char* asString(const string&);
private:
ConfigFile file;
string val_sep;
const static ConfigEntry entries[];
const char *root_dir;
ConfigValue *values;
ConfigImpl(const ConfigImpl&);
void operator=(const ConfigImpl&);

View File

@ -24,7 +24,7 @@
//
//____________________________________________________________
//
// $Id: ftn.cpp,v 1.11 2002-11-20 23:13:21 hippoman Exp $
// $Id: ftn.cpp,v 1.12 2002-11-30 15:08:04 skidder Exp $
//
// 2002.10.28 Sean Leyne - Completed removal of obsolete "DGUX" port
// 2002.10.28 Sean Leyne - Completed removal of obsolete "SGI" port
@ -50,7 +50,9 @@
#include <string.h>
#endif
extern UCHAR fortran_labels[];
extern "C" {
extern UCHAR fortran_labels[];
} /* extern "C" */
extern DBB isc_databases;
extern GPRE_REQ requests;
extern IB_FILE *out_file;
@ -273,6 +275,25 @@ static ADL array_decl_list;
#define COMMA ","
#endif
#ifdef WIN_NT
#define INCLUDE_ISC_FTN " INCLUDE \'%s\' \n\n"
#define INCLUDE_FTN_FILE "include/gds.f"
#define DOUBLE_DCL "DOUBLE PRECISION"
#define I2CONST_1 ""
#define I2CONST_2 ""
#define I2_1 ""
#define I2_2 ""
#define VAL_1 ""
#define VAL_2 ""
#define REF_1 ""
#define REF_2 ""
#define I4CONST_1 ""
#define I4CONST_2 ""
#define COMMENT "* "
#define INLINE_COMMENT "\n* "
#define COMMA ","
#endif
#if defined FREEBSD || defined NETBSD
#define INCLUDE_ISC_FTN " INCLUDE '/usr/interbase/include/gds.f\' \n\n"
#define INCLUDE_FTN_FILE "include/gds.f"

View File

@ -544,8 +544,8 @@ void start_and_watch_server(char *server_name)
SC_HANDLE hScManager = 0, hService = 0;
/* get the guardian startup information */
option = Config::getGuardianOption(START_FOREVER);
strcpy(path, Config::getRootDirectory().c_str());
option = Config::getGuardianOption();
strcpy(path, Config::getRootDirectory());
sprintf(prog_name, "%s%s%s -a -n", path, "bin\\", server_name);
sprintf(path, "%s%s%s", path, "bin\\", FBSERVER);

View File

@ -389,6 +389,10 @@ static ULONG free_memory(void *);
static void init(void);
static int yday(struct tm *);
/*#if (defined SOLARIS )
static UCHAR* mmap_anon(SLONG);
#endif
*/
static void ndate(SLONG, struct tm *);
static GDS_DATE nday(struct tm *);
static void sanitize(TEXT *);
@ -2362,14 +2366,14 @@ void API_ROUTINE gds__prefix(TEXT *resultString, TEXT *file)
#endif
{
// Try and get value from config file
const Firebird::string regPrefix = Config::getRootDirectory();
const char *regPrefix = Config::getRootDirectory();
size_t len = regPrefix.length();
size_t len = strlen(regPrefix);
if (len > 0) {
if (len > sizeof(ib_prefix_val)) {
ib_perror("ib_prefix path size too large - truncated");
}
strncpy(ib_prefix_val, regPrefix.c_str(), sizeof(ib_prefix_val) -1);
strncpy(ib_prefix_val, regPrefix, sizeof(ib_prefix_val) -1);
ib_prefix_val[sizeof(ib_prefix_val) -1] = 0;
ib_prefix = ib_prefix_val;
}
@ -4686,7 +4690,7 @@ UCHAR *mmap_anon(SLONG size)
**************************************/
char *memory, *va, *va_end, *va1;
ULONG chunk, errno1;
int anon_fd=-1, page_size=-1;
int anon_fd, page_size;
/* Choose SYS_ALLOC_CHUNK such that it is always valid for the
underlying mapped file and is a multiple of any conceivable
memory page size that a hardware platform might support. */
@ -4710,8 +4714,7 @@ UCHAR *mmap_anon(SLONG size)
/* Get memory page size for virtual memory checking. */
if ((page_size = sysconf(_SC_PAGESIZE)) == -1)
if (page_size == -1 && (page_size = sysconf(_SC_PAGESIZE)) == -1)
ERR_post(isc_sys_request, isc_arg_string, "sysconf", isc_arg_unix,
errno, 0);

View File

@ -36,7 +36,7 @@
typedef Firebird::string string;
const string CONFIG_FILE = "firebird.conf";
const char *CONFIG_FILE = "firebird.conf";
/******************************************************************************
*
@ -98,4 +98,3 @@ string ConfigRoot::getConfigFile() const
{
return root_dir + CONFIG_FILE;
}

View File

@ -34,9 +34,6 @@
#include "../jrd/gdsassert.h"
#include "../jrd/sort_mem.h"
const size_t DEFAULT_BLOCK_SIZE = 1048576; // 1MB
const size_t DEFAULT_UPPER_LIMIT = 1048576 * 256; // 256MB
bool SortMem::is_initialized = false;
size_t SortMem::mem_block_size;
@ -150,11 +147,11 @@ size_t SortMem::FileBlock::write(STATUS *status, size_t position, char *buffer,
SortMem::SortMem(struct sfb *blk, size_t size)
: internal(blk), logical_size(0), physical_size(0), file_size(0), head(0), tail(0)
{
// Override defaults with the configuration values, if they exist
// Initialize itself
if (!is_initialized)
{
mem_block_size = Config::getSortMemBlockSize(DEFAULT_BLOCK_SIZE);
mem_upper_limit = Config::getSortMemUpperLimit(DEFAULT_UPPER_LIMIT);
mem_block_size = Config::getSortMemBlockSize();
mem_upper_limit = Config::getSortMemUpperLimit();
is_initialized = true;
}

View File

@ -107,8 +107,8 @@
#include "../jrd/thd_proto.h"
#include "../jrd/jrd_proto.h"
#include "../jrd/isc_i_proto.h"
#include "../jrd/isc.h"
#include "../jrd/file_params.h"
#include "../common/config/config.h"
static void THREAD_ROUTINE process_connection_thread(PORT);
static void THREAD_ROUTINE inet_connect_wait_thread(void *);
@ -129,23 +129,12 @@ static SERVICE_TABLE_ENTRY service_table[] = {
NULL, NULL
};
/* CPU affinity setting - default is first CPU only */
static SLONG g_CPU_affinity_mask = ISCCFG_CPU_AFFINITY_DEF;
static struct ipccfg CPU_affinity_setting[] =
{
{ ISCCFG_CPU_AFFINITY_TAG, 0, &g_CPU_affinity_mask, 0, 0 },
{ NULL, 0, NULL, 0, 0 }
};
#ifdef XNET
/* put into ensure that we have a parent port for the XNET connections */
static int xnet_server_set = FALSE;
#endif /* XNET */
int WINAPI WinMain(HINSTANCE hThisInst,
HINSTANCE hPrevInst,
LPSTR lpszArgs,
@ -186,9 +175,8 @@ int WINAPI WinMain(HINSTANCE hThisInst,
GetProcAddress(GetModuleHandle("KERNEL32.DLL"), "SetProcessAffinityMask");
if (SetProcessAffinityMask) {
/* Mike Nordell - 11 Jun 2001: CPU affinity. */
ISC_get_config (LOCK_HEADER, CPU_affinity_setting);
(*SetProcessAffinityMask)(GetCurrentProcess(),
static_cast<DWORD>(g_CPU_affinity_mask));
static_cast<DWORD>(Config::getCpuAffinityMask()));
}
}
else {