3086 lines
91 KiB
Diff
3086 lines
91 KiB
Diff
From b818db3c9b3f553752ad1fb6f818f84e3d07b971 Mon Sep 17 00:00:00 2001
|
|
From: Alexpux <alexey.pawlow@gmail.com>
|
|
Date: Tue, 25 Nov 2014 12:59:43 +0300
|
|
Subject: [PATCH] our mingw-w64 have different icu libs naming.
|
|
|
|
---
|
|
src/common/unicode_util.cpp | 5 +++++
|
|
1 file changed, 5 insertions(+)
|
|
|
|
diff --git a/src/common/unicode_util.cpp b/src/common/unicode_util.cpp
|
|
index ba77825..d93cd7a 100644
|
|
--- a/src/common/unicode_util.cpp
|
|
+++ b/src/common/unicode_util.cpp
|
|
@@ -58,8 +58,13 @@ using namespace Firebird;
|
|
|
|
namespace {
|
|
#if defined(WIN_NT)
|
|
+#ifdef __MINGW32__
|
|
+const char* const inTemplate = "libicuin%s.dll";
|
|
+const char* const ucTemplate = "libicuuc%s.dll";
|
|
+#else
|
|
const char* const inTemplate = "icuin%s.dll";
|
|
const char* const ucTemplate = "icuuc%s.dll";
|
|
+#endif
|
|
#elif defined(DARWIN)
|
|
//const char* const inTemplate = "/Library/Frameworks/Firebird.framework/Versions/A/Libraries/libicui18n.dylib";
|
|
//const char* const ucTemplate = "/Library/Frameworks/Firebird.framework/versions/A/Libraries/libicuuc.dylib";
|
|
--
|
|
2.4.3
|
|
|
|
From 7596d4f99639877213e38c6c2b36f57e20345dfe Mon Sep 17 00:00:00 2001
|
|
From: Alexpux <alexey.pawlow@gmail.com>
|
|
Date: Wed, 19 Nov 2014 23:15:45 +0300
|
|
Subject: [PATCH] Fix UNIX path for mingw compiler.
|
|
|
|
---
|
|
src/misc/writeBuildNum.sh | 4 ++++
|
|
1 file changed, 4 insertions(+)
|
|
|
|
diff --git a/src/misc/writeBuildNum.sh b/src/misc/writeBuildNum.sh
|
|
index 45fb208..ae29b45 100755
|
|
--- a/src/misc/writeBuildNum.sh
|
|
+++ b/src/misc/writeBuildNum.sh
|
|
@@ -96,6 +96,10 @@ createMakeVersion() {
|
|
|
|
OdsH="${Root}/src/jrd/ods.h"
|
|
Mini="/tmp/miniods.h"
|
|
+if [ -n $MSYSTEM ]
|
|
+ then
|
|
+ Mini=$(cygpath -wm $Mini)
|
|
+fi
|
|
TestCpp="/tmp/test.cpp"
|
|
AOut="/tmp/a.out"
|
|
|
|
--
|
|
2.4.3
|
|
|
|
From 1a76d754fce9287ff93040bfb35846a072e5133b Mon Sep 17 00:00:00 2001
|
|
From: Alexpux <alexey.pawlow@gmail.com>
|
|
Date: Mon, 25 May 2015 15:14:47 +0300
|
|
Subject: [PATCH] cloop: Fix building with mingw.
|
|
|
|
---
|
|
extern/cloop/Makefile | 14 +++++++-------
|
|
1 file changed, 7 insertions(+), 7 deletions(-)
|
|
|
|
diff --git a/extern/cloop/Makefile b/extern/cloop/Makefile
|
|
index 2056e4a..11e0901 100644
|
|
--- a/extern/cloop/Makefile
|
|
+++ b/extern/cloop/Makefile
|
|
@@ -11,7 +11,7 @@ LD := $(CXX)
|
|
SRC_DIR := src
|
|
BUILD_DIR := build
|
|
OUT_DIR := output
|
|
-SHRLIB_EXT := .so
|
|
+SHRLIB_EXT := .dll
|
|
EXE_EXT :=
|
|
|
|
OBJ_DIR := $(BUILD_DIR)/$(TARGET)
|
|
@@ -27,7 +27,7 @@ SRCS_CPP := $(foreach sdir,$(SRC_DIRS),$(wildcard $(sdir)/*.cpp))
|
|
OBJS_C := $(patsubst $(SRC_DIR)/%.c,$(OBJ_DIR)/%.o,$(SRCS_C))
|
|
OBJS_CPP := $(patsubst $(SRC_DIR)/%.cpp,$(OBJ_DIR)/%.o,$(SRCS_CPP))
|
|
|
|
-C_FLAGS := -ggdb -fPIC -MMD -MP -W -Wall -Wno-unused-parameter
|
|
+C_FLAGS := -ggdb -MMD -MP -W -Wall -Wno-unused-parameter
|
|
CXX_FLAGS := $(C_FLAGS)
|
|
FPC_FLAGS := -Mdelphi
|
|
|
|
@@ -106,23 +106,23 @@ $(BIN_DIR)/test1-c$(SHRLIB_EXT): \
|
|
$(OBJ_DIR)/tests/test1/CalcCApi.o \
|
|
$(OBJ_DIR)/tests/test1/CTest.o \
|
|
|
|
- $(LD) $^ -shared -ldl -o $@
|
|
+ $(LD) $^ -shared -o $@
|
|
|
|
$(BIN_DIR)/test1-c$(EXE_EXT): \
|
|
$(OBJ_DIR)/tests/test1/CalcCApi.o \
|
|
$(OBJ_DIR)/tests/test1/CTest.o \
|
|
|
|
- $(LD) $^ -ldl -o $@
|
|
+ $(LD) $^ -o $@
|
|
|
|
$(BIN_DIR)/test1-cpp$(SHRLIB_EXT): \
|
|
$(OBJ_DIR)/tests/test1/CppTest.o \
|
|
|
|
- $(LD) $^ -shared -ldl -o $@
|
|
+ $(LD) $^ -shared -o $@
|
|
|
|
$(BIN_DIR)/test1-cpp$(EXE_EXT): \
|
|
$(OBJ_DIR)/tests/test1/CppTest.o \
|
|
|
|
- $(LD) $^ -ldl -o $@
|
|
+ $(LD) $^ -o $@
|
|
|
|
$(BIN_DIR)/test1-pascal$(SHRLIB_EXT): \
|
|
$(SRC_DIR)/tests/test1/PascalClasses.pas \
|
|
@@ -130,7 +130,7 @@ $(BIN_DIR)/test1-pascal$(SHRLIB_EXT): \
|
|
$(SRC_DIR)/tests/test1/CalcPascalApi.pas \
|
|
|
|
ifeq ($(WITH_FPC),1)
|
|
- fpc $(FPC_FLAGS) -fPIC -FU$(OBJ_DIR)/tests/test1 -o$(BIN_DIR)/test1-pascal$(SHRLIB_EXT) $(SRC_DIR)/tests/test1/PascalLibrary.dpr
|
|
+ fpc $(FPC_FLAGS) -FU$(OBJ_DIR)/tests/test1 -o$(BIN_DIR)/test1-pascal$(SHRLIB_EXT) $(SRC_DIR)/tests/test1/PascalLibrary.dpr
|
|
endif
|
|
|
|
$(BIN_DIR)/test1-pascal$(EXE_EXT): \
|
|
--
|
|
2.4.3
|
|
|
|
From 87f08e2232a80c0d10c47c7892cbe4c525d8d718 Mon Sep 17 00:00:00 2001
|
|
From: Alexpux <alexey.pawlow@gmail.com>
|
|
Date: Thu, 18 Dec 2014 23:47:12 +0300
|
|
Subject: [PATCH] Resolve conflict with STRING type from mingw-w64
|
|
|
|
---
|
|
src/dsql/Parser.cpp | 6 +++---
|
|
src/dsql/parse.y | 16 ++++++++--------
|
|
src/yvalve/preparse.cpp | 10 +++++-----
|
|
3 files changed, 16 insertions(+), 16 deletions(-)
|
|
|
|
diff --git a/src/dsql/Parser.cpp b/src/dsql/Parser.cpp
|
|
index 0f1b0d1..65e9d75 100644
|
|
--- a/src/dsql/Parser.cpp
|
|
+++ b/src/dsql/Parser.cpp
|
|
@@ -548,7 +548,7 @@ int Parser::yylexAux()
|
|
mark.str = yylval.intlStringPtr;
|
|
strMarks.put(mark.str, mark);
|
|
|
|
- return STRING;
|
|
+ return TOK_STRING;
|
|
}
|
|
|
|
/*
|
|
@@ -676,7 +676,7 @@ int Parser::yylexAux()
|
|
|
|
yylval.intlStringPtr = newIntlString(temp, "BINARY");
|
|
|
|
- return STRING;
|
|
+ return TOK_STRING;
|
|
} // if (!hexerror)...
|
|
|
|
// If we got here, there was a parsing error. Set the
|
|
@@ -731,7 +731,7 @@ int Parser::yylexAux()
|
|
mark.str = yylval.intlStringPtr;
|
|
strMarks.put(mark.str, mark);
|
|
|
|
- return STRING;
|
|
+ return TOK_STRING;
|
|
}
|
|
}
|
|
|
|
diff --git a/src/dsql/parse.y b/src/dsql/parse.y
|
|
index 9dd9c0c..8c8f281 100644
|
|
--- a/src/dsql/parse.y
|
|
+++ b/src/dsql/parse.y
|
|
@@ -336,7 +336,7 @@ using namespace Firebird;
|
|
%token <metaNamePtr> SYMBOL
|
|
%token <int32Val> NUMBER
|
|
|
|
-%token <intlStringPtr> STRING
|
|
+%token <intlStringPtr> TOK_STRING
|
|
%token <metaNamePtr> INTRODUCER
|
|
|
|
// New tokens added v5.0
|
|
@@ -3202,7 +3202,7 @@ err($exceptionArray)
|
|
item.type = ExceptionItem::SQL_CODE;
|
|
item.code = $2;
|
|
}
|
|
- | SQLSTATE STRING
|
|
+ | SQLSTATE TOK_STRING
|
|
{
|
|
ExceptionItem& item = $exceptionArray->add();
|
|
item.type = ExceptionItem::SQL_STATE;
|
|
@@ -6381,7 +6381,7 @@ map_from_symbol_name
|
|
|
|
%type <intlStringPtr> map_logoninfo
|
|
map_logoninfo
|
|
- : STRING
|
|
+ : TOK_STRING
|
|
| valid_symbol_name { $$ = newNode<IntlString>($1->c_str()); }
|
|
;
|
|
|
|
@@ -6629,7 +6629,7 @@ u_constant
|
|
: u_numeric_constant
|
|
| sql_string
|
|
{ $$ = MAKE_str_constant($1, lex.att_charset); }
|
|
- | DATE STRING
|
|
+ | DATE TOK_STRING
|
|
{
|
|
if (client_dialect < SQL_DIALECT_V6_TRANSITION)
|
|
{
|
|
@@ -6645,7 +6645,7 @@ u_constant
|
|
}
|
|
$$ = MAKE_constant($2->getString().c_str(), CONSTANT_DATE);
|
|
}
|
|
- | TIME STRING
|
|
+ | TIME TOK_STRING
|
|
{
|
|
if (client_dialect < SQL_DIALECT_V6_TRANSITION)
|
|
{
|
|
@@ -6661,7 +6661,7 @@ u_constant
|
|
}
|
|
$$ = MAKE_constant($2->getString().c_str(), CONSTANT_TIME);
|
|
}
|
|
- | TIMESTAMP STRING
|
|
+ | TIMESTAMP TOK_STRING
|
|
{ $$ = MAKE_constant($2->getString().c_str(), CONSTANT_TIMESTAMP); }
|
|
;
|
|
|
|
@@ -6705,8 +6705,8 @@ internal_info
|
|
|
|
%type <intlStringPtr> sql_string
|
|
sql_string
|
|
- : STRING // string in current charset
|
|
- | INTRODUCER STRING // string in specific charset
|
|
+ : TOK_STRING // string in current charset
|
|
+ | INTRODUCER TOK_STRING // string in specific charset
|
|
{
|
|
$$ = $2;
|
|
$$->setCharSet(*$1);
|
|
diff --git a/src/yvalve/preparse.cpp b/src/yvalve/preparse.cpp
|
|
index 3fa672b..6b730ac 100644
|
|
--- a/src/yvalve/preparse.cpp
|
|
+++ b/src/yvalve/preparse.cpp
|
|
@@ -89,7 +89,7 @@ enum token_vals {
|
|
TOKEN_TOO_LONG = -2,
|
|
UNEXPECTED_END_OF_COMMAND = -3,
|
|
UNEXPECTED_TOKEN = -4,
|
|
- STRING = 257,
|
|
+ TOK_STRING = 257,
|
|
NUMERIC = 258,
|
|
SYMBOL = 259
|
|
};
|
|
@@ -112,7 +112,7 @@ static NoCaseString getToken(unsigned& pos, const Tokens& toks, int symbol = SYM
|
|
case SYMBOL:
|
|
break;
|
|
|
|
- case STRING:
|
|
+ case TOK_STRING:
|
|
if (!strchr(quotes, toks[pos].text[0]))
|
|
generate_error(curTok, UNEXPECTED_TOKEN);
|
|
return toks[pos++].stripped().ToNoCaseString();
|
|
@@ -186,7 +186,7 @@ bool PREPARSE_execute(CheckStatusWrapper* status, Why::YAttachment** ptrAtt,
|
|
return false;
|
|
}
|
|
|
|
- PathName file_name(getToken(pos, tks, STRING).ToPathName());
|
|
+ PathName file_name(getToken(pos, tks, TOK_STRING).ToPathName());
|
|
*stmt_eaten = false;
|
|
ClumpletWriter dpb(ClumpletReader::Tagged, MAX_DPB_SIZE, isc_dpb_version1);
|
|
|
|
@@ -235,7 +235,7 @@ bool PREPARSE_execute(CheckStatusWrapper* status, Why::YAttachment** ptrAtt,
|
|
break;
|
|
|
|
case PP_PASSWORD:
|
|
- token = getToken(pos, tks, STRING);
|
|
+ token = getToken(pos, tks, TOK_STRING);
|
|
|
|
dpb.insertString(isc_dpb_password, token.ToString());
|
|
matched = true;
|
|
@@ -252,7 +252,7 @@ bool PREPARSE_execute(CheckStatusWrapper* status, Why::YAttachment** ptrAtt,
|
|
token = getToken(pos, tks);
|
|
if (token != pp_symbols[PP_NAMES].symbol)
|
|
generate_error(token, UNEXPECTED_TOKEN);
|
|
- token = getToken(pos, tks, STRING);
|
|
+ token = getToken(pos, tks, TOK_STRING);
|
|
|
|
dpb.insertString(isc_dpb_lc_ctype, token.ToString());
|
|
matched = true;
|
|
--
|
|
2.4.3
|
|
|
|
From 2edbfe6304c4dd86eb53018b00a0cb54abaca42d Mon Sep 17 00:00:00 2001
|
|
From: Alexpux <alexey.pawlow@gmail.com>
|
|
Date: Mon, 24 Nov 2014 22:12:17 +0300
|
|
Subject: [PATCH] mingw-w64 have matherr routine
|
|
|
|
---
|
|
src/extlib/ib_udf.cpp | 2 ++
|
|
1 file changed, 2 insertions(+)
|
|
|
|
diff --git a/src/extlib/ib_udf.cpp b/src/extlib/ib_udf.cpp
|
|
index fc6d69c..5a6f21b 100644
|
|
--- a/src/extlib/ib_udf.cpp
|
|
+++ b/src/extlib/ib_udf.cpp
|
|
@@ -50,10 +50,12 @@ extern "C"
|
|
#else
|
|
#define exception_type __exception
|
|
#endif
|
|
+#ifndef matherr
|
|
int MATHERR(struct exception_type*)
|
|
{
|
|
return 1;
|
|
}
|
|
+#endif
|
|
#undef exception_type
|
|
#endif // SOLARIS
|
|
#endif //__ICC
|
|
--
|
|
2.4.3
|
|
|
|
From 3ffc447fac451d7811234c769375f04601122eeb Mon Sep 17 00:00:00 2001
|
|
From: Alexpux <alexey.pawlow@gmail.com>
|
|
Date: Fri, 28 Nov 2014 12:28:31 +0300
|
|
Subject: [PATCH] Fix linkng error for mingw.
|
|
|
|
---
|
|
src/utilities/install/services.cpp | 2 ++
|
|
1 file changed, 2 insertions(+)
|
|
|
|
diff --git a/src/utilities/install/services.cpp b/src/utilities/install/services.cpp
|
|
index 04abff3..f28e7fa 100644
|
|
--- a/src/utilities/install/services.cpp
|
|
+++ b/src/utilities/install/services.cpp
|
|
@@ -563,6 +563,7 @@ USHORT SERVICES_grant_access_rights(const char* service_name, const TEXT* accoun
|
|
// Until the fb_assert could be converted to a function/object linked with each module
|
|
// we need this ugly workaround.
|
|
//
|
|
+#ifndef __MINGW32__
|
|
extern "C" void API_ROUTINE gds__log(const TEXT* text, ...)
|
|
{
|
|
va_list ptr;
|
|
@@ -572,6 +573,7 @@ extern "C" void API_ROUTINE gds__log(const TEXT* text, ...)
|
|
va_end(ptr);
|
|
printf("\n\n");
|
|
}
|
|
+#endif
|
|
|
|
//
|
|
// EOF
|
|
--
|
|
2.4.3
|
|
|
|
From dc63f831f10770211a635b09cb4027b0392a4e21 Mon Sep 17 00:00:00 2001
|
|
From: Alexpux <alexey.pawlow@gmail.com>
|
|
Date: Sun, 30 Nov 2014 15:26:04 +0300
|
|
Subject: [PATCH] DLL's are in BIN folder.
|
|
|
|
---
|
|
builds/posix/make.defaults | 2 +-
|
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
|
|
diff --git a/builds/posix/make.defaults b/builds/posix/make.defaults
|
|
index f68c44c..caa9930 100755
|
|
--- a/builds/posix/make.defaults
|
|
+++ b/builds/posix/make.defaults
|
|
@@ -202,7 +202,7 @@ include $(ROOT)/gen/Make.Version
|
|
|
|
vpath %.so $(LIB)
|
|
vpath %.a $(LIB)
|
|
-vpath %.dll $(LIB)
|
|
+vpath %.dll $(BIN)
|
|
|
|
#_____________________________________________________________________________
|
|
|
|
--
|
|
2.4.3
|
|
|
|
From b68ce6c68bcf734e244c9ca54ccaefd28db0271e Mon Sep 17 00:00:00 2001
|
|
From: Alexpux <alexey.pawlow@gmail.com>
|
|
Date: Sun, 30 Nov 2014 15:08:19 +0300
|
|
Subject: [PATCH] Auto detect WINDRES with autoconf.
|
|
|
|
Fix building .rc files.
|
|
---
|
|
builds/posix/make.defaults | 4 +++-
|
|
builds/posix/make.rules | 4 ++--
|
|
builds/posix/make.shared.targets | 14 +++++++-------
|
|
configure.ac | 10 ++++++++++
|
|
4 files changed, 22 insertions(+), 10 deletions(-)
|
|
|
|
diff --git a/builds/posix/make.defaults b/builds/posix/make.defaults
|
|
index caa9930..65f8c6c 100755
|
|
--- a/builds/posix/make.defaults
|
|
+++ b/builds/posix/make.defaults
|
|
@@ -151,9 +151,11 @@ ECHO= echo
|
|
QUIET_ECHO= @echo
|
|
CD= cd
|
|
CAT= cat
|
|
-AR= ar @AR_OPTIONS@
|
|
+AR= @AR@ @AR_OPTIONS@
|
|
LN= @LN_S@
|
|
+DLLTOOL= @DLLTOOL@
|
|
RANLIB= @RANLIB@
|
|
+RC= @RC@
|
|
BTYACC=$(ROOT)/extern/btyacc/btyacc
|
|
CLOOP=$(GEN_ROOT)/$(TARGET)/cloop/release/bin/cloop
|
|
|
|
diff --git a/builds/posix/make.rules b/builds/posix/make.rules
|
|
index 42c719d..601dc82 100644
|
|
--- a/builds/posix/make.rules
|
|
+++ b/builds/posix/make.rules
|
|
@@ -102,8 +102,8 @@ $(OBJ)/%.o: $(SRC_ROOT)/%.cpp
|
|
|
|
# Rules for making resource files
|
|
|
|
-$(GEN_ROOT)/%.res: $(SRC_ROOT)/%.rc
|
|
- windres --output-format=coff --include-dir=$(<D) $< $@
|
|
+$(OBJ)/%.res: $(SRC_ROOT)/%.rc
|
|
+ $(RC) --output-format=coff --include-dir=$(<D) $< $@
|
|
|
|
# Rule for making gbak files when cross-compiling
|
|
|
|
diff --git a/builds/posix/make.shared.targets b/builds/posix/make.shared.targets
|
|
index 07afa91..62097a7 100644
|
|
--- a/builds/posix/make.shared.targets
|
|
+++ b/builds/posix/make.shared.targets
|
|
@@ -75,16 +75,16 @@ $(OBJ)/dsql/PackageNodes.cpp: $(SRC_ROOT)/dsql/PackageNodes.epp
|
|
|
|
# Adding resources as prerequisite for some files
|
|
|
|
-$(FilesToAddVersionInfo): $(GEN_ROOT)/jrd/version.res
|
|
-$(FilesToAddDialog): $(GEN_ROOT)/remote/os/win32/window.res
|
|
-$(FilesToAddDialog2): $(GEN_ROOT)/iscguard/iscguard.res
|
|
+$(FilesToAddVersionInfo): $(OBJ)/jrd/version.res
|
|
+$(FilesToAddDialog): $(OBJ)/remote/server/os/win32/window.res
|
|
+$(FilesToAddDialog2): $(OBJ)/iscguard/iscguard.res
|
|
|
|
# Explicit dependence of resource script
|
|
-$(GEN_ROOT)/remote/os/win32/window.res: $(SRC_ROOT)/remote/os/win32/window.rc $(SRC_ROOT)/remote/os/win32/window.rh \
|
|
- $(SRC_ROOT)/jrd/version.rc $(SRC_ROOT)/jrd/build_no.h $(SRC_ROOT)/remote/os/win32/property.rc \
|
|
- $(SRC_ROOT)/remote/os/win32/property.rh
|
|
+$(OBJ)/remote/server/os/win32/window.res: $(SRC_ROOT)/remote/server/os/win32/window.rc $(SRC_ROOT)/remote/server/os/win32/window.rh \
|
|
+ $(SRC_ROOT)/jrd/version.rc $(SRC_ROOT)/jrd/build_no.h $(SRC_ROOT)/remote/server/os/win32/property.rc \
|
|
+ $(SRC_ROOT)/remote/server/os/win32/property.rh
|
|
|
|
-$(GEN_ROOT)/iscguard/iscguard.res: $(SRC_ROOT)/iscguard/iscguard.rc $(SRC_ROOT)/iscguard/iscguard.rh \
|
|
+$(OBJ)/iscguard/iscguard.res: $(SRC_ROOT)/iscguard/iscguard.rc $(SRC_ROOT)/iscguard/iscguard.rh \
|
|
$(SRC_ROOT)/jrd/version.rc
|
|
|
|
.PHONY: FORCE
|
|
diff --git a/configure.ac b/configure.ac
|
|
index 3e65f10..2e81f32 100644
|
|
--- a/configure.ac
|
|
+++ b/configure.ac
|
|
@@ -679,6 +679,16 @@ AC_PROG_INSTALL
|
|
AC_PROG_LN_S
|
|
AC_PROG_MAKE_SET
|
|
LT_INIT([dlopen win32-dll])
|
|
+if test $PLATFORM = win32; then
|
|
+ # Checks for mingw resource compiler.
|
|
+ AC_CHECK_PROGS([RC],
|
|
+ [$target-windres \
|
|
+ windres])
|
|
+
|
|
+ if test -z "${RC}"; then
|
|
+ AC_MSG_ERROR(windres command is not found.);
|
|
+ fi
|
|
+fi
|
|
|
|
dnl Check for system header files
|
|
AC_HEADER_DIRENT
|
|
--
|
|
2.4.3
|
|
|
|
From 45967f2bc150fc693284a616b3abae27b4d5015c Mon Sep 17 00:00:00 2001
|
|
From: Alexpux <alexey.pawlow@gmail.com>
|
|
Date: Wed, 19 Nov 2014 08:59:48 +0300
|
|
Subject: [PATCH] Define AMD64 for 64-bit mingw.
|
|
|
|
---
|
|
configure.ac | 5 +++++
|
|
1 file changed, 5 insertions(+)
|
|
|
|
diff --git a/configure.ac b/configure.ac
|
|
index 2e81f32..651ca3e 100644
|
|
--- a/configure.ac
|
|
+++ b/configure.ac
|
|
@@ -468,6 +468,11 @@ dnl CPU_TYPE=ppc64
|
|
EDITLINE_FLG=N
|
|
RAW_DEVICES_FLG=N
|
|
SHRLIB_EXT=dll
|
|
+ case "$target" in
|
|
+ x86_64-*-mingw*)
|
|
+ AC_DEFINE(AMD64, 1, [Define this if CPU is amd64])
|
|
+ ;;
|
|
+ esac
|
|
;;
|
|
|
|
*)
|
|
--
|
|
2.4.3
|
|
|
|
From 50fa75577518ce66d31ed9c6fa84bbb8a91c544b Mon Sep 17 00:00:00 2001
|
|
From: Alexpux <alexey.pawlow@gmail.com>
|
|
Date: Wed, 19 Nov 2014 23:16:18 +0300
|
|
Subject: [PATCH] Use mingw-w64 crt for Vista and later. Remove unneeded
|
|
|
|
flag "-Dlint". Use GCC built-in define for mingw
|
|
---
|
|
builds/posix/prefix.mingw | 4 ++--
|
|
src/common/classes/fb_atomic.h | 2 +-
|
|
src/iscguard/iscguard.cpp | 2 +-
|
|
src/isql/isql.epp | 4 ++--
|
|
src/jrd/ibsetjmp.h | 2 +-
|
|
src/remote/server/os/win32/srvr_w32.cpp | 2 +-
|
|
6 files changed, 8 insertions(+), 8 deletions(-)
|
|
|
|
diff --git a/builds/posix/prefix.mingw b/builds/posix/prefix.mingw
|
|
index 5f8dde8..09902f4 100644
|
|
--- a/builds/posix/prefix.mingw
|
|
+++ b/builds/posix/prefix.mingw
|
|
@@ -20,8 +20,8 @@
|
|
#
|
|
|
|
# -Wno-unused-variable is used due to unused gpre generated variables
|
|
-PROD_FLAGS=-O2 -DMINGW -Wall -Wshadow -Wundef -Wno-long-long -Wno-unused-variable -Wno-sign-compare -Wno-parentheses -Wno-switch -fmessage-length=0 -Dlint -DWIN32_LEAN_AND_MEAN -MMD -mthreads -Wno-non-virtual-dtor
|
|
-DEV_FLAGS=-ggdb -DMINGW -Wall -Wshadow -Wundef -Wno-long-long -Wno-unused-variable -Wno-sign-compare -Wno-parentheses -Wno-switch -fmessage-length=0 -Dlint -DWIN32_LEAN_AND_MEAN -MMD -mthreads -Wno-non-virtual-dtor
|
|
+PROD_FLAGS=-O2 -D_WIN32_WINNT=0x0600 -Wall -Wshadow -Wundef -Wno-long-long -Wno-unused-variable -Wno-sign-compare -Wno-parentheses -Wno-switch -fmessage-length=0 -DWIN32_LEAN_AND_MEAN -MMD -mthreads -Wno-non-virtual-dtor
|
|
+DEV_FLAGS=-ggdb -D_WIN32_WINNT=0x0600 -Wall -Wshadow -Wundef -Wno-long-long -Wno-unused-variable -Wno-sign-compare -Wno-parentheses -Wno-switch -fmessage-length=0 -DWIN32_LEAN_AND_MEAN -MMD -mthreads -Wno-non-virtual-dtor
|
|
|
|
PLATFORM_PATH=os/win32
|
|
|
|
diff --git a/src/common/classes/fb_atomic.h b/src/common/classes/fb_atomic.h
|
|
index f32b2b8..2e90ab6 100644
|
|
--- a/src/common/classes/fb_atomic.h
|
|
+++ b/src/common/classes/fb_atomic.h
|
|
@@ -99,7 +99,7 @@ public:
|
|
}
|
|
|
|
protected:
|
|
-#ifndef MINGW
|
|
+#ifndef __MINGW32__
|
|
volatile
|
|
#endif
|
|
counter_type counter;
|
|
diff --git a/src/iscguard/iscguard.cpp b/src/iscguard/iscguard.cpp
|
|
index b1cf0f6..6d21508 100644
|
|
--- a/src/iscguard/iscguard.cpp
|
|
+++ b/src/iscguard/iscguard.cpp
|
|
@@ -137,7 +137,7 @@ int WINAPI WinMain(HINSTANCE hInstance,
|
|
|
|
// BRS There is a error in MinGW (3.1.0) headers
|
|
// the parameter of StartServiceCtrlDispatcher is declared const in msvc headers
|
|
-#if defined(MINGW)
|
|
+#if defined(__MINGW32__)
|
|
if (!StartServiceCtrlDispatcher(const_cast<SERVICE_TABLE_ENTRY*>(service_table)))
|
|
#else
|
|
if (!StartServiceCtrlDispatcher(service_table))
|
|
diff --git a/src/isql/isql.epp b/src/isql/isql.epp
|
|
index c786f83..ae92c35 100644
|
|
--- a/src/isql/isql.epp
|
|
+++ b/src/isql/isql.epp
|
|
@@ -6943,7 +6943,7 @@ static unsigned print_item(TEXT** s, const IsqlVar* var, const unsigned length)
|
|
break;
|
|
}
|
|
|
|
-#if defined(MINGW)
|
|
+#if defined(__MINGW32__)
|
|
if (value == 0)
|
|
{
|
|
sprintf(p, "% #*.*g ", length, (int) MIN(8, (length - 6)) - 1, value);
|
|
@@ -7019,7 +7019,7 @@ static unsigned print_item(TEXT** s, const IsqlVar* var, const unsigned length)
|
|
}
|
|
else
|
|
{
|
|
-#if defined(MINGW)
|
|
+#if defined(__MINGW32__)
|
|
if (value == 0)
|
|
{
|
|
sprintf(p, "% #*.*g ", length, (int) MIN(16, (length - 7)) - 1, value);
|
|
diff --git a/src/jrd/ibsetjmp.h b/src/jrd/ibsetjmp.h
|
|
index 759f125..0ac3c54 100644
|
|
--- a/src/jrd/ibsetjmp.h
|
|
+++ b/src/jrd/ibsetjmp.h
|
|
@@ -50,7 +50,7 @@
|
|
|
|
#endif // UNIX
|
|
|
|
-#if defined(WIN_NT) && !defined(MINGW)
|
|
+#if defined(WIN_NT) && !defined(__MINGW32__)
|
|
#include <excpt.h>
|
|
|
|
#define START_CHECK_FOR_EXCEPTIONS(err) { \
|
|
diff --git a/src/remote/server/os/win32/srvr_w32.cpp b/src/remote/server/os/win32/srvr_w32.cpp
|
|
index a7f8ac5..3bc652f 100644
|
|
--- a/src/remote/server/os/win32/srvr_w32.cpp
|
|
+++ b/src/remote/server/os/win32/srvr_w32.cpp
|
|
@@ -322,7 +322,7 @@ int WINAPI WinMain(HINSTANCE hThisInst, HINSTANCE /*hPrevInst*/, LPSTR lpszArgs,
|
|
|
|
// BRS There is a error in MinGW (3.1.0) headers
|
|
// the parameter of StartServiceCtrlDispatcher is declared const in msvc headers
|
|
-#if defined(MINGW)
|
|
+#if defined(__MINGW32__)
|
|
if (!StartServiceCtrlDispatcher(const_cast<SERVICE_TABLE_ENTRY*>(service_table)))
|
|
{
|
|
#else
|
|
--
|
|
2.4.3
|
|
|
|
From 750a2202b62e16bf84f0bd2813bc5ebb02e3ee3f Mon Sep 17 00:00:00 2001
|
|
From: Alexpux <alexey.pawlow@gmail.com>
|
|
Date: Thu, 20 Nov 2014 07:31:40 +0300
|
|
Subject: [PATCH] Add AuthSspi to remote common - needed for win32 target.
|
|
|
|
---
|
|
builds/posix/make.shared.variables | 2 +-
|
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
|
|
diff --git a/builds/posix/make.shared.variables b/builds/posix/make.shared.variables
|
|
index 2d3143f..53597e6 100644
|
|
--- a/builds/posix/make.shared.variables
|
|
+++ b/builds/posix/make.shared.variables
|
|
@@ -52,7 +52,7 @@ AllObjects += $(YValve_Objects)
|
|
|
|
|
|
# Remote
|
|
-Remote_Common:= $(call dirObjects,remote) $(call dirObjects,auth/SecureRemotePassword)
|
|
+Remote_Common:= $(call dirObjects,remote) $(call dirObjects,auth/SecureRemotePassword) $(call dirObjects,auth/trusted)
|
|
Remote_Server:= $(call dirObjects,remote/server) $(call dirObjects,auth/SecureRemotePassword/server)
|
|
Remote_Client:= $(call dirObjects,remote/client) $(call dirObjects,auth/SecureRemotePassword/client) \
|
|
$(call makeObjects,auth/SecurityDatabase,LegacyClient.cpp) \
|
|
--
|
|
2.4.3
|
|
|
|
From fa8118fd2828e66de87d1625f5eed043ee825936 Mon Sep 17 00:00:00 2001
|
|
From: Alexpux <alexey.pawlow@gmail.com>
|
|
Date: Mon, 24 Nov 2014 09:08:35 +0300
|
|
Subject: [PATCH] Some utilities need to link with additional windows libraries
|
|
|
|
---
|
|
builds/posix/Makefile.in | 4 ++--
|
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/builds/posix/Makefile.in b/builds/posix/Makefile.in
|
|
index eac1ed5..85d4697 100644
|
|
--- a/builds/posix/Makefile.in
|
|
+++ b/builds/posix/Makefile.in
|
|
@@ -375,7 +375,7 @@ utilities: firebird_server fb_lock_print fbguard fbsvcmgr fbtracemgr gbak gfix g
|
|
firebird_server: $(FB_DAEMON)
|
|
|
|
$(FB_DAEMON): $(Remote_Server_Objects) $(COMMON_LIB)
|
|
- $(EXE_LINK) $(EXE_LINK_OPTIONS) $^ -o $@ $(FIREBIRD_LIBRARY_LINK) $(LINK_LIBS)
|
|
+ $(EXE_LINK) $(EXE_LINK_OPTIONS) $^ -o $@ $(FIREBIRD_LIBRARY_LINK) $(LINK_LIBS) $(LIB_GUI)
|
|
|
|
fb_lock_print: $(LOCKPRINT)
|
|
|
|
@@ -385,7 +385,7 @@ $(LOCKPRINT): $(LOCKPRINT_Objects) $(COMMON_LIB)
|
|
fbguard: $(FBGUARD)
|
|
|
|
$(FBGUARD): $(FBGUARD_Objects) $(COMMON_LIB)
|
|
- $(EXE_LINK) $(EXE_LINK_OPTIONS) $^ -o $@ $(FIREBIRD_LIBRARY_LINK) $(LINK_LIBS)
|
|
+ $(EXE_LINK) $(EXE_LINK_OPTIONS) $^ -o $@ $(FIREBIRD_LIBRARY_LINK) $(LINK_LIBS) $(LIB_GUI)
|
|
|
|
fbsvcmgr: $(FBSVCMGR)
|
|
|
|
--
|
|
2.4.3
|
|
|
|
From 9de828798a528614a938da3b3116d1a968716cf3 Mon Sep 17 00:00:00 2001
|
|
From: Alexpux <alexey.pawlow@gmail.com>
|
|
Date: Mon, 24 Nov 2014 10:10:35 +0300
|
|
Subject: [PATCH] Fix linking executables and libraries with resources.
|
|
Generate proper import libraries.
|
|
|
|
---
|
|
builds/posix/Makefile.in.plugins_examples | 2 +-
|
|
builds/posix/make.defaults | 14 +-
|
|
builds/posix/prefix.mingw | 40 ++--
|
|
builds/win32/defs/fbclient32.def | 372 ++++++++++++++++++++++++++++++
|
|
builds/win32/defs/fbclient64.def | 372 ++++++++++++++++++++++++++++++
|
|
5 files changed, 773 insertions(+), 27 deletions(-)
|
|
create mode 100644 builds/win32/defs/fbclient32.def
|
|
create mode 100644 builds/win32/defs/fbclient64.def
|
|
|
|
diff --git a/builds/posix/Makefile.in.plugins_examples b/builds/posix/Makefile.in.plugins_examples
|
|
index 40908f6..24fa138 100644
|
|
--- a/builds/posix/Makefile.in.plugins_examples
|
|
+++ b/builds/posix/Makefile.in.plugins_examples
|
|
@@ -73,7 +73,7 @@ ifeq ($(PLATFORM),DARWIN)
|
|
$(LIB_LINK) $(LIB_BUNDLE_OPTIONS) -o $@ $^ @PTHREAD_CFLAGS@ @PTHREAD_LIBS@ \
|
|
$(FIREBIRD_LIBRARY_LINK)
|
|
else
|
|
- $(LIB_LINK) $(LIB_LINK_OPTIONS) $(LIB_LINK_SONAME)udrcpp_example.$(SHRLIB_EXT) \
|
|
+ $(LIB_LINK) $(LIB_LINK_OPTIONS) $(call LIB_LINK_SONAME,$(LIB_PREFIX)udrcpp_example.$(SHRLIB_EXT)) \
|
|
$(LIB_PATH_OPTS) -o $@ $^ $(THR_LIBS) \
|
|
$(FIREBIRD_LIBRARY_LINK)
|
|
endif
|
|
diff --git a/builds/posix/make.defaults b/builds/posix/make.defaults
|
|
index 65f8c6c..bc18fc8 100755
|
|
--- a/builds/posix/make.defaults
|
|
+++ b/builds/posix/make.defaults
|
|
@@ -107,6 +107,11 @@ RTTI_FLAG:= -fno-rtti
|
|
IsDeveloper = @DEVEL_FLG@
|
|
|
|
CpuType=@CPU_TYPE@
|
|
+ifeq ($(CpuType), x86_64)
|
|
+ BITNESS_SUFFIX := 64
|
|
+else
|
|
+ BITNESS_SUFFIX := 32
|
|
+endif
|
|
PLATFORM=@PLATFORM@
|
|
SFIO_EXAMPLES=@SFIO_EXAMPLES@
|
|
|
|
@@ -218,7 +223,7 @@ vpath %.dll $(BIN)
|
|
#
|
|
|
|
#LibraryFileName=libfbclient
|
|
-LibraryFileName=libfbclient
|
|
+LibraryFileName=$(LIB_PREFIX)fbclient
|
|
LibraryFullName=$(LibraryFileName).${SHRLIB_EXT}.${FirebirdVersion}
|
|
LibrarySoName=$(LibraryFileName).${SHRLIB_EXT}.2
|
|
LibraryBaseName=$(LibraryFileName).${SHRLIB_EXT}
|
|
@@ -229,7 +234,7 @@ LIBFIREBIRD_BASENAME = $(LIB)/$(LibrarySoName)
|
|
|
|
# The firebird engine library name
|
|
|
|
-EngineFileName=libEngine${OdsVersion}
|
|
+EngineFileName=$(LIB_PREFIX)Engine${OdsVersion}
|
|
EngineSoName=$(EngineFileName).${SHRLIB_EXT}
|
|
ENGINE_SONAME = $(PLUGINS)/$(EngineSoName)
|
|
|
|
@@ -290,6 +295,7 @@ else
|
|
endif
|
|
LIB_PATH_OPTS = $(call LIB_LINK_RPATH,lib) $(call LIB_LINK_RPATH,intl)
|
|
LIB_LINK_SONAME= -Wl,-soname,$(1)
|
|
+LIB_LINK_IMPLIB=
|
|
LIB_LINK_MAPFILE= -Wl,--version-script,$(1)
|
|
FIREBIRD_LIBRARY_LINK= -L$(LIB) -lfbclient $(MATHLIB)
|
|
|
|
@@ -304,7 +310,7 @@ LINK_UDF = $(LIB_LINK) $(LIB_LINK_OPTIONS) $(call LIB_LINK_SONAME,$(1).$(SHRLIB_
|
|
LINK_UDF_LIBS = $(THR_LIBS) -L$(LIB) -lib_util $(SO_LINK_LIBS)
|
|
|
|
LINK_IB_UTIL = $(LIB_LINK) $(LINK_IBUTIL_SYMBOLS) $(LIB_LINK_OPTIONS) $(UNDEF_FLAGS)\
|
|
- $(call LIB_LINK_SONAME,$(IbUtilLibraryName)) $(call LIB_LINK_RPATH,lib)
|
|
+ $(call LIB_LINK_SONAME,$(IbUtilLibraryName)) $(call LIB_LINK_RPATH,lib) $(call LIB_LINK_IMPLIB,$(LIB)/lib$(IbUtilLibraryName).a)
|
|
LINK_IB_UTIL_LIBS = $(THR_LIBS)
|
|
|
|
LINK_INTL = $(LIB_LINK) $(LINK_FBINTL_SYMBOLS) $(LIB_LINK_OPTIONS) $(UNDEF_FLAGS)\
|
|
@@ -316,7 +322,7 @@ LINK_TRACE = $(LIB_LINK) $(LINK_PLUGIN_SYMBOLS) $(LIB_LINK_OPTIONS) $(UNDEF_FLAG
|
|
LINK_TRACE_LIBS = -L$(LIB) $(SO_LINK_LIBS)
|
|
|
|
LINK_FIREBIRD = $(LIB_LINK) $(LINK_FIREBIRD_SYMBOLS) $(LIB_LINK_OPTIONS) $(LIB_FIREBIRD_OPTIONS) $(UNDEF_FLAGS)\
|
|
- $(call LIB_LINK_SONAME,$(LibrarySoName)) $(call LIB_LINK_RPATH,lib)
|
|
+ $(call LIB_LINK_SONAME,$(LibrarySoName)) $(call LIB_LINK_RPATH,lib) $(call LIB_LINK_IMPLIB,$(LIB)/lib$(LibraryBaseName).a)
|
|
LINK_FIREBIRD_LIBS = -L$(LIB) $(LIB_GUI) $(SO_LINK_LIBS) $(MATHLIB)
|
|
|
|
LINK_ENGINE = $(LIB_LINK) $(LINK_PLUGIN_SYMBOLS) $(LIB_LINK_OPTIONS) $(LIB_FIREBIRD_OPTIONS) $(UNDEF_FLAGS)\
|
|
diff --git a/builds/posix/prefix.mingw b/builds/posix/prefix.mingw
|
|
index 09902f4..8dad1ce 100644
|
|
--- a/builds/posix/prefix.mingw
|
|
+++ b/builds/posix/prefix.mingw
|
|
@@ -28,42 +28,38 @@ PLATFORM_PATH=os/win32
|
|
# Override link command for implicit stdc++ linking
|
|
LIB_LINK=$(LD)
|
|
|
|
-LIB_LINK_OPTIONS+=-Wl,--enable-stdcall-fixup
|
|
-
|
|
# Strip symbols from release versions to decrease size
|
|
ifeq ($(IsProdTypeBuild),Y)
|
|
EXE_LINK_OPTIONS+=-Wl,-s
|
|
LIB_LINK_OPTIONS+=-Wl,-s
|
|
endif
|
|
|
|
-# Generation of fbclient_ms.lib
|
|
-LIB_LINK_IMPLIB:=-Wl,--out-implib,firebird/lib/fbclient_ms.lib
|
|
LIB_GUI:= -mwindows -lcomctl32 -lgdi32
|
|
|
|
# Add resources to some files
|
|
-FilesToAddVersionInfo=$(LIBFBEMBED_SO) $(LIBFBCLIENT_SO) $(LIBFBINTL_SO) \
|
|
- $(GSTAT) $(GSEC) $(GFIX) $(QLI) $(ISQL) $(GBAK) $(GPRE)
|
|
+FilesToAddVersionInfo=$(FBTRACEMGR) $(LIBFIREBIRD_FULLNAME) $(ENGINE_SONAME) $(LIBFBINTL_SO) \
|
|
+ $(FBSVCMGR) $(FBTRACEMGR) $(FBTRACE) $(FBUDF_SO) $(LIBIBUTIL_SO) \
|
|
+ $(GBAK) $(GFIX) $(GPRE) $(GSEC) $(GSPLIT) $(GSTAT) $(QLI) $(ISQL) $(NBACKUP)
|
|
# TODO: guardians also must be here
|
|
-FilesToAddDialog=$(FB_SUPER_SERVER) $(FB_CLASSIC_SERVER)
|
|
-FilesToAddDialog2=$(IBGUARD)
|
|
+FilesToAddDialog=$(FB_DAEMON)
|
|
+FilesToAddDialog2=$(FBGUARD)
|
|
|
|
# Suppress 'lib'-prefix
|
|
LIB_PREFIX=
|
|
|
|
# Override library names to suppress version suffix
|
|
-ClientLibraryNameFull := $(ClientLibraryName)
|
|
-ClientLibrarySoName := $(ClientLibraryName)
|
|
-
|
|
-# Looks like MinGW 3 does not support version scripts but support def-files
|
|
-LINK_FIREBIRD_SYMBOLS = $(BLD_ROOT)/win32/defs/fbclient_s.def $(BLD_ROOT)/win32/defs/fbclient.def
|
|
-
|
|
-# This is required for newly built executable to find newly built shared
|
|
-# libraries because on Win32 there is no such thing as LD_LIBRARY_PATH
|
|
-LIB=$(BIN)
|
|
+LibrarySoName := $(LibraryBaseName)
|
|
+LibraryFullName := $(LibraryBaseName)
|
|
+LIBFIREBIRD_FULLNAME = $(BIN)/$(LibraryBaseName)
|
|
+LIBFIREBIRD_SONAME = $(LIBFIREBIRD_FULLNAME)
|
|
+LIBFIREBIRD_BASENAME = $(LIBFIREBIRD_FULLNAME)
|
|
+LIBIBUTIL_SO = $(BIN)/$(IbUtilLibraryName)
|
|
|
|
-# Special options for UDF link
|
|
-LINK_UDF = $(LIB_LINK) $(LIB_LINK_OPTIONS) $(call LIB_LINK_SONAME,$(1).$(SHRLIB_EXT)) -L$(LIB) -lib_util
|
|
-LINK_UDF_LIBS =
|
|
+LINK_FIREBIRD_SYMBOLS = $(BLD_ROOT)/win32/defs/fbclient$(BITNESS_SUFFIX).def
|
|
+LINK_FBINTL_SYMBOLS =
|
|
+LINK_IBUTIL_SYMBOLS =
|
|
+LINK_UDRENG_SYMBOLS =
|
|
+LINK_EMPTY_SYMBOLS =
|
|
+LINK_PLUGIN_SYMBOLS =
|
|
+LIB_LINK_IMPLIB= -Wl,--out-implib,$(1)
|
|
|
|
-# Special options for trace plugin link
|
|
-LINK_TRACE_LIBS = -L$(LIB) $(SO_LINK_LIBS)
|
|
diff --git a/builds/win32/defs/fbclient32.def b/builds/win32/defs/fbclient32.def
|
|
new file mode 100644
|
|
index 0000000..fa8f733
|
|
--- /dev/null
|
|
+++ b/builds/win32/defs/fbclient32.def
|
|
@@ -0,0 +1,725 @@
|
|
+; The contents of this file are subject to the Interbase Public
|
|
+; License Version 1.0 (the "License"); you may not use this file
|
|
+; except in compliance with the License. You may obtain a copy
|
|
+; of the License at http://www.Inprise.com/IPL.html
|
|
+;
|
|
+; Software distributed under the License is distributed on an
|
|
+; "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express
|
|
+; or implied. See the License for the specific language governing
|
|
+; rights and limitations under the License.
|
|
+;
|
|
+; The Original Code was created by Inprise Corporation
|
|
+; and its predecessors. Portions created by Inprise Corporation are
|
|
+; Copyright (C) Inprise Corporation.
|
|
+;
|
|
+; All Rights Reserved.
|
|
+; Contributor(s): ______________________________________.
|
|
+
|
|
+LIBRARY "fbclient.dll"
|
|
+EXPORTS
|
|
+
|
|
+;-------------------
|
|
+; PRIVATE INTERFACE
|
|
+;-------------------
|
|
+
|
|
+ gds__alloc@4
|
|
+ gds__attach_database@24
|
|
+ gds__blob_info@24
|
|
+ gds__blob_size@16
|
|
+ gds__cancel_blob@8
|
|
+ gds__cancel_events@12
|
|
+ gds__close@8
|
|
+ gds__close_blob@8
|
|
+ gds__commit_retaining@8
|
|
+ gds__commit_transaction@8
|
|
+ gds__compile_request@20
|
|
+ gds__compile_request2@20
|
|
+ gds__create_blob@20
|
|
+ gds__create_blob2@28
|
|
+ gds__create_database@28
|
|
+ gds__database_cleanup@16
|
|
+ gds__database_info@24
|
|
+ gds__ddl@20
|
|
+ gds__declare@12
|
|
+ gds__decode@12
|
|
+ gds__decode_date@8
|
|
+ gds__describe@12
|
|
+ gds__describe_bind@12
|
|
+ gds__detach_database@8
|
|
+ gds__disable_subsystem@4
|
|
+ gds__dsql_finish@4
|
|
+ gds__edit@8
|
|
+ gds__enable_subsystem@4
|
|
+ gds__encode@8
|
|
+ gds__encode_date@8
|
|
+ gds__event_block@0
|
|
+ gds__event_counts@16
|
|
+ gds__event_wait@20
|
|
+ gds__execute@16
|
|
+ gds__execute_immediate@20
|
|
+ gds__fetch@12
|
|
+ gds__free@4
|
|
+ gds__ftof@16
|
|
+ gds__get_prefix@8
|
|
+ gds__get_segment@20
|
|
+ gds__get_slice@44
|
|
+ gds__interprete@8
|
|
+ gds__log@0
|
|
+ gds__log_status@8
|
|
+ gds__map_blobs@8
|
|
+ gds__msg_close@4
|
|
+ gds__msg_format@40
|
|
+ gds__msg_lookup@24
|
|
+ gds__msg_open@8
|
|
+ gds__msg_put@32
|
|
+ gds__open@16
|
|
+ gds__open_blob@20
|
|
+ gds__open_blob2@28
|
|
+ gds__parse_bpb@16
|
|
+ gds__prefix@8
|
|
+ gds__prefix_lock@8
|
|
+ gds__prefix_msg@8
|
|
+ gds__prepare@28
|
|
+ gds__prepare_transaction@8
|
|
+ gds__prepare_transaction2@16
|
|
+ gds__print_blr@16
|
|
+ gds__print_status@4
|
|
+ gds__put_error@4
|
|
+ gds__put_segment@16
|
|
+ gds__put_slice@40
|
|
+ gds__qtoq@8
|
|
+ gds__que_events@28
|
|
+ gds__receive@24
|
|
+ gds__reconnect_transaction@20
|
|
+ gds__register_cleanup@8
|
|
+ gds__release_request@8
|
|
+ gds__request_info@28
|
|
+ gds__rollback_transaction@8
|
|
+ gds__seek_blob@20
|
|
+ gds__send@24
|
|
+ gds__set_debug@4
|
|
+ gds__sqlcode@4
|
|
+ gds__start_and_send@28
|
|
+ gds__start_multiple@16
|
|
+ gds__start_request@16
|
|
+ gds__start_transaction@0
|
|
+ gds__temp_file@20
|
|
+ gds__thread_enable@4
|
|
+ gds__thread_enter@0
|
|
+ gds__thread_exit@0
|
|
+ gds__thread_start@20
|
|
+ gds__to_sqlda@20
|
|
+ gds__transaction_cleanup@16
|
|
+ gds__transaction_info@24
|
|
+ gds__unregister_cleanup@8
|
|
+ gds__unwind_request@12
|
|
+ gds__validate_lib_path@16
|
|
+ gds__vax_integer@8
|
|
+ gds__version@12
|
|
+ gds__vtof@12
|
|
+ gds__vtov@12
|
|
+ gds__default_printer@0
|
|
+
|
|
+ gds__alloc_debug@12
|
|
+
|
|
+ gds_alloc_flag_unfreed@4
|
|
+ gds_alloc_report@12
|
|
+
|
|
+ fb_shutdown@8
|
|
+ fb_shutdown_callback@16
|
|
+ fb_cancel_operation@12
|
|
+ fb_disconnect_transaction@8
|
|
+
|
|
+ perf_format@20
|
|
+ perf_get_info@8
|
|
+ perf_report@16
|
|
+
|
|
+ perf64_format@20
|
|
+ perf64_get_info@8
|
|
+ perf64_report@16
|
|
+
|
|
+;----------------------------
|
|
+; PUBLIC INTERFACE, i.e. API
|
|
+;----------------------------
|
|
+
|
|
+ ; Array functions
|
|
+
|
|
+ isc_array_gen_sdl@20
|
|
+ isc_array_get_slice@28
|
|
+ isc_array_lookup_bounds@24
|
|
+ isc_array_lookup_desc@24
|
|
+ isc_array_put_slice@28
|
|
+ isc_array_set_desc@28
|
|
+ isc_get_slice@44
|
|
+ isc_put_slice@40
|
|
+
|
|
+ ; BLOB functions
|
|
+
|
|
+ isc_blob_default_desc@12
|
|
+ isc_blob_gen_bpb@24
|
|
+ isc_blob_info@24
|
|
+ isc_blob_lookup_desc@28
|
|
+ isc_blob_set_desc@28
|
|
+ isc_cancel_blob@8
|
|
+ isc_close_blob@8
|
|
+ isc_create_blob@20
|
|
+ isc_create_blob2@28
|
|
+ isc_get_segment@20
|
|
+ isc_open_blob@20
|
|
+ isc_open_blob2@28
|
|
+ isc_put_segment@16
|
|
+
|
|
+ ; Database functions
|
|
+
|
|
+ isc_attach_database@24
|
|
+ isc_create_database@28
|
|
+ isc_database_info@24
|
|
+ isc_detach_database@8
|
|
+ isc_drop_database@8
|
|
+ isc_expand_dpb@0
|
|
+ isc_modify_dpb@20
|
|
+ isc_version@12
|
|
+ isc_get_client_major_version@0
|
|
+ isc_get_client_minor_version@0
|
|
+ isc_get_client_version@4
|
|
+
|
|
+ ; Conversion functions
|
|
+
|
|
+ isc_decode_date@8
|
|
+ isc_decode_sql_date@8
|
|
+ isc_decode_sql_time@8
|
|
+ isc_decode_timestamp@8
|
|
+ isc_encode_date@8
|
|
+ isc_encode_sql_date@8
|
|
+ isc_encode_sql_time@8
|
|
+ isc_encode_timestamp@8
|
|
+ isc_portable_integer@8
|
|
+ isc_vax_integer@8
|
|
+
|
|
+ ; DSQL functions
|
|
+
|
|
+ isc_dsql_allocate_statement@12
|
|
+ isc_dsql_alloc_statement2@12
|
|
+ isc_dsql_describe@16
|
|
+ isc_dsql_describe_bind@16
|
|
+ isc_dsql_execute@20
|
|
+ isc_dsql_execute2@24
|
|
+ isc_dsql_execute_m@32
|
|
+ isc_dsql_execute2_m@52
|
|
+ isc_dsql_execute_immediate@28
|
|
+ isc_dsql_exec_immed2@32
|
|
+ isc_dsql_execute_immediate_m@44
|
|
+ isc_dsql_exec_immed2_m@64
|
|
+ isc_dsql_exec_immed3_m@64
|
|
+ isc_dsql_fetch@16
|
|
+ isc_dsql_fetch_a@20
|
|
+ isc_dsql_fetch_m@28
|
|
+ isc_dsql_finish@4
|
|
+ isc_dsql_free_statement@12
|
|
+ isc_dsql_insert@16
|
|
+ isc_dsql_insert_m@28
|
|
+ isc_dsql_prepare@28
|
|
+ isc_dsql_prepare_m@40
|
|
+ isc_dsql_release@8
|
|
+ isc_dsql_set_cursor_name@16
|
|
+ isc_dsql_sql_info@24
|
|
+
|
|
+ ; ESQL functions
|
|
+
|
|
+ isc_embed_dsql_close@8
|
|
+ isc_embed_dsql_declare@12
|
|
+ isc_embed_dsql_describe@16
|
|
+ isc_embed_dsql_describe_bind@16
|
|
+ isc_embed_dsql_execute@20
|
|
+ isc_embed_dsql_execute2@24
|
|
+ isc_embed_dsql_execute_immed@28
|
|
+ isc_embed_dsql_exec_immed2@32
|
|
+ isc_embed_dsql_fetch@16
|
|
+ isc_embed_dsql_fetch_a@20
|
|
+ isc_embed_dsql_insert@16
|
|
+ isc_embed_dsql_open@20
|
|
+ isc_embed_dsql_open2@24
|
|
+ isc_embed_dsql_prepare@32
|
|
+ isc_embed_dsql_release@8
|
|
+ isc_embed_dsql_length@8
|
|
+
|
|
+ ; Error-handling functions
|
|
+
|
|
+ isc_interprete@8
|
|
+ fb_interpret@12
|
|
+ isc_print_sqlerror@8
|
|
+ isc_print_status@4
|
|
+ isc_sqlcode@4
|
|
+ isc_sql_interprete@12
|
|
+ isc_sqlcode_s@8
|
|
+ fb_sqlstate@8
|
|
+
|
|
+ ; Event functions
|
|
+
|
|
+ isc_cancel_events@12
|
|
+ isc_event_block@0
|
|
+ isc_event_counts@16
|
|
+ isc_que_events@28
|
|
+ isc_wait_for_event@20
|
|
+ isc_event_block_a@16
|
|
+ isc_event_block_s@20
|
|
+
|
|
+ ; Security functions
|
|
+
|
|
+ isc_add_user@8
|
|
+ isc_delete_user@8
|
|
+ isc_modify_user@8
|
|
+
|
|
+ ; Services functions
|
|
+
|
|
+ isc_service_attach@24
|
|
+ isc_service_detach@8
|
|
+ isc_service_query@36
|
|
+ isc_service_start@20
|
|
+
|
|
+ ; Transaction control functions
|
|
+
|
|
+ isc_commit_retaining@8
|
|
+ isc_commit_transaction@8
|
|
+ isc_prepare_transaction@8
|
|
+ isc_prepare_transaction2@16
|
|
+ isc_rollback_retaining@8
|
|
+ isc_rollback_transaction@8
|
|
+ isc_start_multiple@16
|
|
+ isc_start_transaction@0
|
|
+ isc_transaction_info@24
|
|
+
|
|
+ ; Other functions
|
|
+
|
|
+ isc_compile_request@20
|
|
+ isc_compile_request2@20
|
|
+ isc_ddl@20
|
|
+ isc_prepare@28
|
|
+ isc_receive@24
|
|
+ isc_reconnect_transaction@20
|
|
+ isc_release_request@8
|
|
+ isc_request_info@28
|
|
+ isc_seek_blob@20
|
|
+ isc_send@24
|
|
+ isc_start_and_send@28
|
|
+ isc_start_request@16
|
|
+ isc_transact_request@36
|
|
+ isc_unwind_request@12
|
|
+
|
|
+ ; Other SQL functions
|
|
+
|
|
+ isc_close@8
|
|
+ isc_declare@12
|
|
+ isc_describe@12
|
|
+ isc_describe_bind@12
|
|
+ isc_execute@16
|
|
+ isc_execute_immediate@20
|
|
+ isc_fetch@12
|
|
+ isc_fetch_a@16
|
|
+ isc_open@16
|
|
+
|
|
+ ; Other BLOB functions
|
|
+
|
|
+ BLOB_close@4
|
|
+ BLOB_display@16
|
|
+ BLOB_dump@16
|
|
+ BLOB_edit@16
|
|
+ BLOB_get@4
|
|
+ BLOB_load@16
|
|
+ BLOB_open@12
|
|
+ BLOB_put@8
|
|
+ BLOB_text_dump@16
|
|
+ BLOB_text_load@16
|
|
+ Bopen@16
|
|
+
|
|
+ ; Other misc functions
|
|
+
|
|
+ isc_ftof@16
|
|
+ isc_free@4
|
|
+ isc_print_blr@16
|
|
+ fb_print_blr@20
|
|
+ isc_qtoq@8
|
|
+ isc_reset_fpe@4
|
|
+ isc_set_debug@4
|
|
+ isc_to_sqlda@20
|
|
+ isc_vtof@12
|
|
+ isc_vtov@12
|
|
+ isc_baddress@4
|
|
+ isc_baddress_s@8
|
|
+
|
|
+ _isc_start_transaction = isc_start_transaction@0
|
|
+ _isc_expand_dpb = isc_expand_dpb@0
|
|
+ _isc_event_block = isc_event_block@0
|
|
+
|
|
+ fb_ping@8
|
|
+ fb_get_master_interface@0
|
|
+ fb_get_database_handle@12
|
|
+ fb_get_transaction_handle@12
|
|
+ fb_database_crypt_callback@8
|
|
+
|
|
+ gds__trace@4
|
|
+ gds__trace_raw@8
|
|
+ gds__trace_printer@0
|
|
+ gds__parse_bpb2@40
|
|
+
|
|
+;-----------------
|
|
+; OTHER FUNCTIONS
|
|
+;-----------------
|
|
+
|
|
+ CVT_move@12
|
|
+
|
|
+ KEYWORD_stringIsAToken@4
|
|
+ KEYWORD_getTokens@0
|
|
+
|
|
+;--------------------------------------
|
|
+; DUPLICATE FOR COMPATIBILITY WITH MSVC
|
|
+;--------------------------------------
|
|
+
|
|
+;-------------------
|
|
+; PRIVATE INTERFACE
|
|
+;-------------------
|
|
+
|
|
+ gds__alloc = gds__alloc@4 @1
|
|
+ gds__attach_database = gds__attach_database@24 @2
|
|
+ gds__blob_info = gds__blob_info@24 @3
|
|
+ gds__blob_size = gds__blob_size@16 @4
|
|
+ gds__cancel_blob = gds__cancel_blob@8 @5
|
|
+ gds__cancel_events = gds__cancel_events@12 @6
|
|
+ gds__close = gds__close@8 @7
|
|
+ gds__close_blob = gds__close_blob@8 @8
|
|
+ gds__commit_retaining = gds__commit_retaining@8 @9
|
|
+ gds__commit_transaction = gds__commit_transaction@8 @10
|
|
+ gds__compile_request = gds__compile_request@20 @11
|
|
+ gds__compile_request2 = gds__compile_request2@20 @12
|
|
+ gds__create_blob = gds__create_blob@20 @13
|
|
+ gds__create_blob2 = gds__create_blob2@28 @14
|
|
+ gds__create_database = gds__create_database@28 @15
|
|
+ gds__database_cleanup = gds__database_cleanup@16 @16
|
|
+ gds__database_info = gds__database_info@24 @17
|
|
+ gds__ddl = gds__ddl@20 @18
|
|
+ gds__declare = gds__declare@12 @19
|
|
+ gds__decode = gds__decode@12 @20
|
|
+ gds__decode_date = gds__decode_date@8 @21
|
|
+ gds__describe = gds__describe@12 @22
|
|
+ gds__describe_bind = gds__describe_bind@12 @23
|
|
+ gds__detach_database = gds__detach_database@8 @24
|
|
+ gds__disable_subsystem = gds__disable_subsystem@4 @25
|
|
+ gds__dsql_finish = gds__dsql_finish@4 @26
|
|
+ gds__edit = gds__edit@8 @27
|
|
+ gds__enable_subsystem = gds__enable_subsystem@4 @28
|
|
+ gds__encode = gds__encode@8 @29
|
|
+ gds__encode_date = gds__encode_date@8 @30
|
|
+ gds__event_block = gds__event_block@0 @31
|
|
+ gds__event_counts = gds__event_counts@16 @32
|
|
+ gds__event_wait = gds__event_wait@20 @33
|
|
+ gds__execute = gds__execute@16 @34
|
|
+ gds__execute_immediate = gds__execute_immediate@20 @35
|
|
+ gds__fetch = gds__fetch@12 @36
|
|
+ gds__free = gds__free@4 @37
|
|
+ gds__ftof = gds__ftof@16 @38
|
|
+ gds__get_prefix = gds__get_prefix@8 @248
|
|
+ gds__get_segment = gds__get_segment@20 @39
|
|
+ gds__get_slice = gds__get_slice@44 @40
|
|
+ gds__interprete = gds__interprete@8 @41
|
|
+ gds__log = gds__log@0 @42
|
|
+ gds__log_status = gds__log_status@8 @142
|
|
+ gds__map_blobs = gds__map_blobs@8 @240
|
|
+ gds__msg_close = gds__msg_close@4 @223
|
|
+ gds__msg_format = gds__msg_format@40 @43
|
|
+ gds__msg_lookup = gds__msg_lookup@24 @44
|
|
+ gds__msg_open = gds__msg_open@8 @45
|
|
+ gds__msg_put = gds__msg_put@32 @46
|
|
+ gds__open = gds__open@16 @47
|
|
+ gds__open_blob = gds__open_blob@20 @48
|
|
+ gds__open_blob2 = gds__open_blob2@28 @49
|
|
+ gds__parse_bpb = gds__parse_bpb@16 @50
|
|
+ gds__prefix = gds__prefix@8 @51
|
|
+ gds__prefix_lock = gds__prefix_lock@8 @249
|
|
+ gds__prefix_msg = gds__prefix_msg@8 @250
|
|
+ gds__prepare = gds__prepare@28 @52
|
|
+ gds__prepare_transaction = gds__prepare_transaction@8 @53
|
|
+ gds__prepare_transaction2 = gds__prepare_transaction2@16 @54
|
|
+ gds__print_blr = gds__print_blr@16 @55
|
|
+ gds__print_status = gds__print_status@4 @56
|
|
+ gds__put_error = gds__put_error@4 @57
|
|
+ gds__put_segment = gds__put_segment@16 @58
|
|
+ gds__put_slice = gds__put_slice@40 @59
|
|
+ gds__qtoq = gds__qtoq@8 @60
|
|
+ gds__que_events = gds__que_events@28 @61
|
|
+ gds__receive = gds__receive@24 @62
|
|
+ gds__reconnect_transaction = gds__reconnect_transaction@20 @63
|
|
+ gds__register_cleanup = gds__register_cleanup@8 @64
|
|
+ gds__release_request = gds__release_request@8 @65
|
|
+ gds__request_info = gds__request_info@28 @66
|
|
+ gds__rollback_transaction = gds__rollback_transaction@8 @67
|
|
+ gds__seek_blob = gds__seek_blob@20 @68
|
|
+ gds__send = gds__send@24 @69
|
|
+ gds__set_debug = gds__set_debug@4 @70
|
|
+ gds__sqlcode = gds__sqlcode@4 @71
|
|
+ gds__start_and_send = gds__start_and_send@28 @72
|
|
+ gds__start_multiple = gds__start_multiple@16 @73
|
|
+ gds__start_request = gds__start_request@16 @74
|
|
+ gds__start_transaction = gds__start_transaction@0 @75
|
|
+ gds__temp_file = gds__temp_file@20 @231
|
|
+ gds__thread_enable = gds__thread_enable@4 @76
|
|
+ gds__thread_enter = gds__thread_enter@0 @77
|
|
+ gds__thread_exit = gds__thread_exit@0 @78
|
|
+ gds__thread_start = gds__thread_start@20 @79
|
|
+ gds__to_sqlda = gds__to_sqlda@20 @80
|
|
+ gds__transaction_cleanup = gds__transaction_cleanup@16 @235
|
|
+ gds__transaction_info = gds__transaction_info@24 @81
|
|
+ gds__unregister_cleanup = gds__unregister_cleanup@8 @224
|
|
+ gds__unwind_request = gds__unwind_request@12 @82
|
|
+ gds__validate_lib_path = gds__validate_lib_path@16 @255
|
|
+ gds__vax_integer = gds__vax_integer@8 @83
|
|
+ gds__version = gds__version@12 @84
|
|
+ gds__vtof = gds__vtof@12 @85
|
|
+ gds__vtov = gds__vtov@12 @86
|
|
+ gds__default_printer = gds__default_printer@0 @87
|
|
+
|
|
+ gds__alloc_debug = gds__alloc_debug@12
|
|
+
|
|
+ gds_alloc_flag_unfreed = gds_alloc_flag_unfreed@4
|
|
+ gds_alloc_report = gds_alloc_report@12
|
|
+
|
|
+ fb_shutdown = fb_shutdown@8
|
|
+ fb_shutdown_callback = fb_shutdown_callback@16
|
|
+ fb_cancel_operation = fb_cancel_operation@12
|
|
+ fb_disconnect_transaction = fb_disconnect_transaction@8
|
|
+
|
|
+ perf_format = perf_format@20 @100
|
|
+ perf_get_info = perf_get_info@8 @101
|
|
+ perf_report = perf_report@16 @102
|
|
+
|
|
+ perf64_format = perf64_format@20
|
|
+ perf64_get_info = perf64_get_info@8
|
|
+ perf64_report = perf64_report@16
|
|
+
|
|
+;----------------------------
|
|
+; PUBLIC INTERFACE, i.e. API
|
|
+;----------------------------
|
|
+
|
|
+ ; Array functions
|
|
+
|
|
+ isc_array_gen_sdl = isc_array_gen_sdl@20 @217
|
|
+ isc_array_get_slice = isc_array_get_slice@28 @218
|
|
+ isc_array_lookup_bounds = isc_array_lookup_bounds@24 @219
|
|
+ isc_array_lookup_desc = isc_array_lookup_desc@24 @220
|
|
+ isc_array_put_slice = isc_array_put_slice@28 @221
|
|
+ isc_array_set_desc = isc_array_set_desc@28 @222
|
|
+ isc_get_slice = isc_get_slice@44 @140
|
|
+ isc_put_slice = isc_put_slice@40 @153
|
|
+
|
|
+ ; BLOB functions
|
|
+
|
|
+ isc_blob_default_desc = isc_blob_default_desc@12 @239
|
|
+ isc_blob_gen_bpb = isc_blob_gen_bpb@24 @236
|
|
+ isc_blob_info = isc_blob_info@24 @108
|
|
+ isc_blob_lookup_desc = isc_blob_lookup_desc@28 @237
|
|
+ isc_blob_set_desc = isc_blob_set_desc@28 @238
|
|
+ isc_cancel_blob = isc_cancel_blob@8 @110
|
|
+ isc_close_blob = isc_close_blob@8 @113
|
|
+ isc_create_blob = isc_create_blob@20 @118
|
|
+ isc_create_blob2 = isc_create_blob2@28 @119
|
|
+ isc_get_segment = isc_get_segment@20 @139
|
|
+ isc_open_blob = isc_open_blob@20 @144
|
|
+ isc_open_blob2 = isc_open_blob2@28 @145
|
|
+ isc_put_segment = isc_put_segment@16 @152
|
|
+
|
|
+ ; Database functions
|
|
+
|
|
+ isc_attach_database = isc_attach_database@24 @103
|
|
+ isc_create_database = isc_create_database@28 @120
|
|
+ isc_database_info = isc_database_info@24 @122
|
|
+ isc_detach_database = isc_detach_database@8 @128
|
|
+ isc_drop_database = isc_drop_database@8 @229
|
|
+ isc_expand_dpb = isc_expand_dpb@0 @135
|
|
+ isc_modify_dpb = isc_modify_dpb@20 @244
|
|
+ isc_version = isc_version@12 @174
|
|
+ isc_get_client_major_version = isc_get_client_major_version@0 @268
|
|
+ isc_get_client_minor_version = isc_get_client_minor_version@0 @269
|
|
+ isc_get_client_version = isc_get_client_version@4 @270
|
|
+
|
|
+ ; Conversion functions
|
|
+
|
|
+ isc_decode_date = isc_decode_date@8 @125
|
|
+ isc_decode_sql_date = isc_decode_sql_date@8 @261
|
|
+ isc_decode_sql_time = isc_decode_sql_time@8 @262
|
|
+ isc_decode_timestamp = isc_decode_timestamp@8 @263
|
|
+ isc_encode_date = isc_encode_date@8 @129
|
|
+ isc_encode_sql_date = isc_encode_sql_date@8 @264
|
|
+ isc_encode_sql_time = isc_encode_sql_time@8 @265
|
|
+ isc_encode_timestamp = isc_encode_timestamp@8 @266
|
|
+ isc_portable_integer = isc_portable_integer@8 @259
|
|
+ isc_vax_integer = isc_vax_integer@8 @173
|
|
+
|
|
+ ; DSQL functions
|
|
+
|
|
+ isc_dsql_allocate_statement = isc_dsql_allocate_statement@12 @178
|
|
+ isc_dsql_alloc_statement2 = isc_dsql_alloc_statement2@12 @179
|
|
+ isc_dsql_describe = isc_dsql_describe@16 @180
|
|
+ isc_dsql_describe_bind = isc_dsql_describe_bind@16 @181
|
|
+ isc_dsql_execute = isc_dsql_execute@20 @182
|
|
+ isc_dsql_execute2 = isc_dsql_execute2@24 @183
|
|
+ isc_dsql_execute_m = isc_dsql_execute_m@32 @184
|
|
+ isc_dsql_execute2_m = isc_dsql_execute2_m@52 @185
|
|
+ isc_dsql_execute_immediate = isc_dsql_execute_immediate@28 @186
|
|
+ isc_dsql_exec_immed2 = isc_dsql_exec_immed2@32 @187
|
|
+ isc_dsql_execute_immediate_m = isc_dsql_execute_immediate_m@44 @188
|
|
+ isc_dsql_exec_immed2_m = isc_dsql_exec_immed2_m@64 @189
|
|
+ isc_dsql_exec_immed3_m = isc_dsql_exec_immed3_m@64 @230
|
|
+ isc_dsql_fetch = isc_dsql_fetch@16 @190
|
|
+ isc_dsql_fetch_a = isc_dsql_fetch_a@20 @191
|
|
+ isc_dsql_fetch_m = isc_dsql_fetch_m@28 @192
|
|
+ isc_dsql_finish = isc_dsql_finish@4 @193
|
|
+ isc_dsql_free_statement = isc_dsql_free_statement@12 @194
|
|
+ isc_dsql_insert = isc_dsql_insert@16 @195
|
|
+ isc_dsql_insert_m = isc_dsql_insert_m@28 @196
|
|
+ isc_dsql_prepare = isc_dsql_prepare@28 @197
|
|
+ isc_dsql_prepare_m = isc_dsql_prepare_m@40 @198
|
|
+ isc_dsql_release = isc_dsql_release@8 @199
|
|
+ isc_dsql_set_cursor_name = isc_dsql_set_cursor_name@16 @200
|
|
+ isc_dsql_sql_info = isc_dsql_sql_info@24 @201
|
|
+
|
|
+ ; ESQL functions
|
|
+
|
|
+ isc_embed_dsql_close = isc_embed_dsql_close@8 @202
|
|
+ isc_embed_dsql_declare = isc_embed_dsql_declare@12 @203
|
|
+ isc_embed_dsql_describe = isc_embed_dsql_describe@16 @204
|
|
+ isc_embed_dsql_describe_bind = isc_embed_dsql_describe_bind@16 @205
|
|
+ isc_embed_dsql_execute = isc_embed_dsql_execute@20 @206
|
|
+ isc_embed_dsql_execute2 = isc_embed_dsql_execute2@24 @207
|
|
+ isc_embed_dsql_execute_immed = isc_embed_dsql_execute_immed@28 @208
|
|
+ isc_embed_dsql_exec_immed2 = isc_embed_dsql_exec_immed2@32 @209
|
|
+ isc_embed_dsql_fetch = isc_embed_dsql_fetch@16 @210
|
|
+ isc_embed_dsql_fetch_a = isc_embed_dsql_fetch_a@20 @211
|
|
+ isc_embed_dsql_insert = isc_embed_dsql_insert@16 @212
|
|
+ isc_embed_dsql_open = isc_embed_dsql_open@20 @213
|
|
+ isc_embed_dsql_open2 = isc_embed_dsql_open2@24 @214
|
|
+ isc_embed_dsql_prepare = isc_embed_dsql_prepare@32 @215
|
|
+ isc_embed_dsql_release = isc_embed_dsql_release@8 @216
|
|
+ isc_embed_dsql_length = isc_embed_dsql_length@8 @273
|
|
+
|
|
+ ; Error-handling functions
|
|
+
|
|
+ isc_interprete = isc_interprete@8 @141
|
|
+ fb_interpret = fb_interpret@12
|
|
+ isc_print_sqlerror = isc_print_sqlerror@8 @150
|
|
+ isc_print_status = isc_print_status@4 @151
|
|
+ isc_sqlcode = isc_sqlcode@4 @165
|
|
+ isc_sql_interprete = isc_sql_interprete@12 @164
|
|
+ isc_sqlcode_s = isc_sqlcode_s@8 @278
|
|
+ fb_sqlstate = fb_sqlstate@8 @279
|
|
+
|
|
+ ; Event functions
|
|
+
|
|
+ isc_cancel_events = isc_cancel_events@12 @111
|
|
+ isc_event_block = isc_event_block@0 @130
|
|
+ isc_event_counts = isc_event_counts@16 @131
|
|
+ isc_que_events = isc_que_events@28 @155
|
|
+ isc_wait_for_event = isc_wait_for_event@20 @177
|
|
+ isc_event_block_a = isc_event_block_a@16 @274
|
|
+ isc_event_block_s = isc_event_block_s@20 @275
|
|
+
|
|
+ ; Security functions
|
|
+
|
|
+ isc_add_user = isc_add_user@8 @256
|
|
+ isc_delete_user = isc_delete_user@8 @257
|
|
+ isc_modify_user = isc_modify_user@8 @258
|
|
+
|
|
+ ; Services functions
|
|
+
|
|
+ isc_service_attach = isc_service_attach@24 @225
|
|
+ isc_service_detach = isc_service_detach@8 @226
|
|
+ isc_service_query = isc_service_query@36 @227
|
|
+ isc_service_start = isc_service_start@20 @228
|
|
+
|
|
+ ; Transaction control functions
|
|
+
|
|
+ isc_commit_retaining = isc_commit_retaining@8 @114
|
|
+ isc_commit_transaction = isc_commit_transaction@8 @115
|
|
+ isc_prepare_transaction = isc_prepare_transaction@8 @147
|
|
+ isc_prepare_transaction2 = isc_prepare_transaction2@16 @148
|
|
+ isc_rollback_retaining = isc_rollback_retaining@8 @260
|
|
+ isc_rollback_transaction = isc_rollback_transaction@8 @160
|
|
+ isc_start_multiple = isc_start_multiple@16 @167
|
|
+ isc_start_transaction = isc_start_transaction@0 @169
|
|
+ isc_transaction_info = isc_transaction_info@24 @171
|
|
+
|
|
+ ; Other functions
|
|
+
|
|
+ isc_compile_request = isc_compile_request@20 @116
|
|
+ isc_compile_request2 = isc_compile_request2@20 @117
|
|
+ isc_ddl = isc_ddl@20 @123
|
|
+ isc_prepare = isc_prepare@28 @146
|
|
+ isc_receive = isc_receive@24 @156
|
|
+ isc_reconnect_transaction = isc_reconnect_transaction@20 @157
|
|
+ isc_release_request = isc_release_request@8 @158
|
|
+ isc_request_info = isc_request_info@28 @159
|
|
+ isc_seek_blob = isc_seek_blob@20 @161
|
|
+ isc_send = isc_send@24 @162
|
|
+ isc_start_and_send = isc_start_and_send@28 @166
|
|
+ isc_start_request = isc_start_request@16 @168
|
|
+ isc_transact_request = isc_transact_request@36 @132
|
|
+ isc_unwind_request = isc_unwind_request@12 @172
|
|
+
|
|
+ ; Other SQL functions
|
|
+
|
|
+ isc_close = isc_close@8 @112
|
|
+ isc_declare = isc_declare@12 @124
|
|
+ isc_describe = isc_describe@12 @126
|
|
+ isc_describe_bind = isc_describe_bind@12 @127
|
|
+ isc_execute = isc_execute@16 @133
|
|
+ isc_execute_immediate = isc_execute_immediate@20 @134
|
|
+ isc_fetch = isc_fetch@12 @136
|
|
+ isc_fetch_a = isc_fetch_a@16 @137
|
|
+ isc_open = isc_open@16 @143
|
|
+
|
|
+ ; Other BLOB functions
|
|
+
|
|
+ BLOB_close = BLOB_close@4 @91
|
|
+ BLOB_display = BLOB_display@16 @92
|
|
+ BLOB_dump = BLOB_dump@16 @93
|
|
+ BLOB_edit = BLOB_edit@16 @94
|
|
+ BLOB_get = BLOB_get@4 @95
|
|
+ BLOB_load = BLOB_load@16 @96
|
|
+ BLOB_open = BLOB_open@12 @97
|
|
+ BLOB_put = BLOB_put@8 @98
|
|
+ BLOB_text_dump = BLOB_text_dump@16 @242
|
|
+ BLOB_text_load = BLOB_text_load@16 @243
|
|
+ Bopen = Bopen@16 @99
|
|
+
|
|
+ ; Other misc functions
|
|
+
|
|
+ isc_ftof = isc_ftof@16 @138
|
|
+ isc_free = isc_free@4 @241
|
|
+ isc_print_blr = isc_print_blr@16 @149
|
|
+ fb_print_blr = fb_print_blr@20 @280
|
|
+ isc_qtoq = isc_qtoq@8 @154
|
|
+ isc_reset_fpe = isc_reset_fpe@4
|
|
+ isc_set_debug = isc_set_debug@4 @163
|
|
+ isc_to_sqlda = isc_to_sqlda@20 @170
|
|
+ isc_vtof = isc_vtof@12 @175
|
|
+ isc_vtov = isc_vtov@12 @176
|
|
+ isc_baddress = isc_baddress@4 @276
|
|
+ isc_baddress_s = isc_baddress_s@8 @277
|
|
+
|
|
+ fb_ping = fb_ping@8
|
|
+ fb_get_master_interface = fb_get_master_interface@0
|
|
+ fb_get_database_handle = fb_get_database_handle@12
|
|
+ fb_get_transaction_handle = fb_get_transaction_handle@12
|
|
+ fb_database_crypt_callback = fb_database_crypt_callback@8
|
|
+
|
|
+ gds__trace = gds__trace@4
|
|
+ gds__trace_raw = gds__trace_raw@8
|
|
+ gds__trace_printer = gds__trace_printer@0
|
|
+ gds__parse_bpb2 = gds__parse_bpb2@40
|
|
+
|
|
+;-----------------
|
|
+; OTHER FUNCTIONS
|
|
+;-----------------
|
|
+
|
|
+ CVT_move = CVT_move@12 @267
|
|
+
|
|
+ KEYWORD_stringIsAToken = KEYWORD_stringIsAToken@4 @271
|
|
+ KEYWORD_getTokens = KEYWORD_getTokens@0 @272
|
|
diff --git a/builds/win32/defs/fbclient64.def b/builds/win32/defs/fbclient64.def
|
|
new file mode 100644
|
|
index 0000000..ed0b91e
|
|
--- /dev/null
|
|
+++ b/builds/win32/defs/fbclient64.def
|
|
@@ -0,0 +1,372 @@
|
|
+; The contents of this file are subject to the Interbase Public
|
|
+; License Version 1.0 (the "License"); you may not use this file
|
|
+; except in compliance with the License. You may obtain a copy
|
|
+; of the License at http://www.Inprise.com/IPL.html
|
|
+;
|
|
+; Software distributed under the License is distributed on an
|
|
+; "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express
|
|
+; or implied. See the License for the specific language governing
|
|
+; rights and limitations under the License.
|
|
+;
|
|
+; The Original Code was created by Inprise Corporation
|
|
+; and its predecessors. Portions created by Inprise Corporation are
|
|
+; Copyright (C) Inprise Corporation.
|
|
+;
|
|
+; All Rights Reserved.
|
|
+; Contributor(s): ______________________________________.
|
|
+
|
|
+LIBRARY "fbclient.dll"
|
|
+EXPORTS
|
|
+
|
|
+;-------------------
|
|
+; PRIVATE INTERFACE
|
|
+;-------------------
|
|
+
|
|
+ gds__alloc @1
|
|
+ gds__attach_database @2
|
|
+ gds__blob_info @3
|
|
+ gds__blob_size @4
|
|
+ gds__cancel_blob @5
|
|
+ gds__cancel_events @6
|
|
+ gds__close @7
|
|
+ gds__close_blob @8
|
|
+ gds__commit_retaining @9
|
|
+ gds__commit_transaction @10
|
|
+ gds__compile_request @11
|
|
+ gds__compile_request2 @12
|
|
+ gds__create_blob @13
|
|
+ gds__create_blob2 @14
|
|
+ gds__create_database @15
|
|
+ gds__database_cleanup @16
|
|
+ gds__database_info @17
|
|
+ gds__ddl @18
|
|
+ gds__declare @19
|
|
+ gds__decode @20
|
|
+ gds__decode_date @21
|
|
+ gds__describe @22
|
|
+ gds__describe_bind @23
|
|
+ gds__detach_database @24
|
|
+ gds__disable_subsystem @25
|
|
+ gds__dsql_finish @26
|
|
+ gds__edit @27
|
|
+ gds__enable_subsystem @28
|
|
+ gds__encode @29
|
|
+ gds__encode_date @30
|
|
+ gds__event_block @31
|
|
+ gds__event_counts @32
|
|
+ gds__event_wait @33
|
|
+ gds__execute @34
|
|
+ gds__execute_immediate @35
|
|
+ gds__fetch @36
|
|
+ gds__free @37
|
|
+ gds__ftof @38
|
|
+ gds__get_prefix @248
|
|
+ gds__get_segment @39
|
|
+ gds__get_slice @40
|
|
+ gds__interprete @41
|
|
+ gds__log @42
|
|
+ gds__log_status @142
|
|
+ gds__map_blobs @240
|
|
+ gds__msg_close @223
|
|
+ gds__msg_format @43
|
|
+ gds__msg_lookup @44
|
|
+ gds__msg_open @45
|
|
+ gds__msg_put @46
|
|
+ gds__open @47
|
|
+ gds__open_blob @48
|
|
+ gds__open_blob2 @49
|
|
+ gds__parse_bpb @50
|
|
+ gds__prefix @51
|
|
+ gds__prefix_lock @249
|
|
+ gds__prefix_msg @250
|
|
+ gds__prepare @52
|
|
+ gds__prepare_transaction @53
|
|
+ gds__prepare_transaction2 @54
|
|
+ gds__print_blr @55
|
|
+ gds__print_status @56
|
|
+ gds__put_error @57
|
|
+ gds__put_segment @58
|
|
+ gds__put_slice @59
|
|
+ gds__qtoq @60
|
|
+ gds__que_events @61
|
|
+ gds__receive @62
|
|
+ gds__reconnect_transaction @63
|
|
+ gds__register_cleanup @64
|
|
+ gds__release_request @65
|
|
+ gds__request_info @66
|
|
+ gds__rollback_transaction @67
|
|
+ gds__seek_blob @68
|
|
+ gds__send @69
|
|
+ gds__set_debug @70
|
|
+ gds__sqlcode @71
|
|
+ gds__start_and_send @72
|
|
+ gds__start_multiple @73
|
|
+ gds__start_request @74
|
|
+ gds__start_transaction @75
|
|
+ gds__temp_file @231
|
|
+ gds__thread_enable @76
|
|
+ gds__thread_enter @77
|
|
+ gds__thread_exit @78
|
|
+ gds__thread_start @79
|
|
+ gds__to_sqlda @80
|
|
+ gds__transaction_cleanup @235
|
|
+ gds__transaction_info @81
|
|
+ gds__unregister_cleanup @224
|
|
+ gds__unwind_request @82
|
|
+ gds__validate_lib_path @255
|
|
+ gds__vax_integer @83
|
|
+ gds__version @84
|
|
+ gds__vtof @85
|
|
+ gds__vtov @86
|
|
+ gds__default_printer @87
|
|
+
|
|
+ gds__alloc_debug
|
|
+
|
|
+ gds_alloc_flag_unfreed
|
|
+ gds_alloc_report
|
|
+
|
|
+ fb_shutdown
|
|
+ fb_shutdown_callback
|
|
+ fb_cancel_operation
|
|
+ fb_disconnect_transaction
|
|
+
|
|
+ perf_format @100
|
|
+ perf_get_info @101
|
|
+ perf_report @102
|
|
+
|
|
+ perf64_format
|
|
+ perf64_get_info
|
|
+ perf64_report
|
|
+
|
|
+;----------------------------
|
|
+; PUBLIC INTERFACE, i.e. API
|
|
+;----------------------------
|
|
+
|
|
+ ; Array functions
|
|
+
|
|
+ isc_array_gen_sdl @217
|
|
+ isc_array_get_slice @218
|
|
+ isc_array_lookup_bounds @219
|
|
+ isc_array_lookup_desc @220
|
|
+ isc_array_put_slice @221
|
|
+ isc_array_set_desc @222
|
|
+ isc_get_slice @140
|
|
+ isc_put_slice @153
|
|
+
|
|
+ ; BLOB functions
|
|
+
|
|
+ isc_blob_default_desc @239
|
|
+ isc_blob_gen_bpb @236
|
|
+ isc_blob_info @108
|
|
+ isc_blob_lookup_desc @237
|
|
+ isc_blob_set_desc @238
|
|
+ isc_cancel_blob @110
|
|
+ isc_close_blob @113
|
|
+ isc_create_blob @118
|
|
+ isc_create_blob2 @119
|
|
+ isc_get_segment @139
|
|
+ isc_open_blob @144
|
|
+ isc_open_blob2 @145
|
|
+ isc_put_segment @152
|
|
+
|
|
+ ; Database functions
|
|
+
|
|
+ isc_attach_database @103
|
|
+ isc_create_database @120
|
|
+ isc_database_info @122
|
|
+ isc_detach_database @128
|
|
+ isc_drop_database @229
|
|
+ isc_expand_dpb @135
|
|
+ isc_modify_dpb @244
|
|
+ isc_version @174
|
|
+ isc_get_client_major_version @268
|
|
+ isc_get_client_minor_version @269
|
|
+ isc_get_client_version @270
|
|
+
|
|
+ ; Conversion functions
|
|
+
|
|
+ isc_decode_date @125
|
|
+ isc_decode_sql_date @261
|
|
+ isc_decode_sql_time @262
|
|
+ isc_decode_timestamp @263
|
|
+ isc_encode_date @129
|
|
+ isc_encode_sql_date @264
|
|
+ isc_encode_sql_time @265
|
|
+ isc_encode_timestamp @266
|
|
+ isc_portable_integer @259
|
|
+ isc_vax_integer @173
|
|
+
|
|
+ ; DSQL functions
|
|
+
|
|
+ isc_dsql_allocate_statement @178
|
|
+ isc_dsql_alloc_statement2 @179
|
|
+ isc_dsql_describe @180
|
|
+ isc_dsql_describe_bind @181
|
|
+ isc_dsql_execute @182
|
|
+ isc_dsql_execute2 @183
|
|
+ isc_dsql_execute_m @184
|
|
+ isc_dsql_execute2_m @185
|
|
+ isc_dsql_execute_immediate @186
|
|
+ isc_dsql_exec_immed2 @187
|
|
+ isc_dsql_execute_immediate_m @188
|
|
+ isc_dsql_exec_immed2_m @189
|
|
+ isc_dsql_exec_immed3_m @230
|
|
+ isc_dsql_fetch @190
|
|
+ isc_dsql_fetch_a @191
|
|
+ isc_dsql_fetch_m @192
|
|
+ isc_dsql_finish @193
|
|
+ isc_dsql_free_statement @194
|
|
+ isc_dsql_insert @195
|
|
+ isc_dsql_insert_m @196
|
|
+ isc_dsql_prepare @197
|
|
+ isc_dsql_prepare_m @198
|
|
+ isc_dsql_release @199
|
|
+ isc_dsql_set_cursor_name @200
|
|
+ isc_dsql_sql_info @201
|
|
+
|
|
+ ; ESQL functions
|
|
+
|
|
+ isc_embed_dsql_close @202
|
|
+ isc_embed_dsql_declare @203
|
|
+ isc_embed_dsql_describe @204
|
|
+ isc_embed_dsql_describe_bind @205
|
|
+ isc_embed_dsql_execute @206
|
|
+ isc_embed_dsql_execute2 @207
|
|
+ isc_embed_dsql_execute_immed @208
|
|
+ isc_embed_dsql_exec_immed2 @209
|
|
+ isc_embed_dsql_fetch @210
|
|
+ isc_embed_dsql_fetch_a @211
|
|
+ isc_embed_dsql_insert @212
|
|
+ isc_embed_dsql_open @213
|
|
+ isc_embed_dsql_open2 @214
|
|
+ isc_embed_dsql_prepare @215
|
|
+ isc_embed_dsql_release @216
|
|
+ isc_embed_dsql_length @273
|
|
+
|
|
+ ; Error-handling functions
|
|
+
|
|
+ isc_interprete @141
|
|
+ fb_interpret
|
|
+ isc_print_sqlerror @150
|
|
+ isc_print_status @151
|
|
+ isc_sqlcode @165
|
|
+ isc_sql_interprete @164
|
|
+ isc_sqlcode_s @278
|
|
+ fb_sqlstate @279
|
|
+
|
|
+ ; Event functions
|
|
+
|
|
+ isc_cancel_events @111
|
|
+ isc_event_block @130
|
|
+ isc_event_counts @131
|
|
+ isc_que_events @155
|
|
+ isc_wait_for_event @177
|
|
+ isc_event_block_a @274
|
|
+ isc_event_block_s @275
|
|
+
|
|
+ ; Security functions
|
|
+
|
|
+ isc_add_user @256
|
|
+ isc_delete_user @257
|
|
+ isc_modify_user @258
|
|
+
|
|
+ ; Services functions
|
|
+
|
|
+ isc_service_attach @225
|
|
+ isc_service_detach @226
|
|
+ isc_service_query @227
|
|
+ isc_service_start @228
|
|
+
|
|
+ ; Transaction control functions
|
|
+
|
|
+ isc_commit_retaining @114
|
|
+ isc_commit_transaction @115
|
|
+ isc_prepare_transaction @147
|
|
+ isc_prepare_transaction2 @148
|
|
+ isc_rollback_retaining @260
|
|
+ isc_rollback_transaction @160
|
|
+ isc_start_multiple @167
|
|
+ isc_start_transaction @169
|
|
+ isc_transaction_info @171
|
|
+
|
|
+ ; Other functions
|
|
+
|
|
+ isc_compile_request @116
|
|
+ isc_compile_request2 @117
|
|
+ isc_ddl @123
|
|
+ isc_prepare @146
|
|
+ isc_receive @156
|
|
+ isc_reconnect_transaction @157
|
|
+ isc_release_request @158
|
|
+ isc_request_info @159
|
|
+ isc_seek_blob @161
|
|
+ isc_send @162
|
|
+ isc_start_and_send @166
|
|
+ isc_start_request @168
|
|
+ isc_transact_request @132
|
|
+ isc_unwind_request @172
|
|
+
|
|
+ ; Other SQL functions
|
|
+
|
|
+ isc_close @112
|
|
+ isc_declare @124
|
|
+ isc_describe @126
|
|
+ isc_describe_bind @127
|
|
+ isc_execute @133
|
|
+ isc_execute_immediate @134
|
|
+ isc_fetch @136
|
|
+ isc_fetch_a @137
|
|
+ isc_open @143
|
|
+
|
|
+ ; Other BLOB functions
|
|
+
|
|
+ BLOB_close @91
|
|
+ BLOB_display @92
|
|
+ BLOB_dump @93
|
|
+ BLOB_edit @94
|
|
+ BLOB_get @95
|
|
+ BLOB_load @96
|
|
+ BLOB_open @97
|
|
+ BLOB_put @98
|
|
+ BLOB_text_dump @242
|
|
+ BLOB_text_load @243
|
|
+ Bopen @99
|
|
+
|
|
+ ; Other misc functions
|
|
+
|
|
+ isc_ftof @138
|
|
+ isc_free @241
|
|
+ isc_print_blr @149
|
|
+ fb_print_blr @280
|
|
+ isc_qtoq @154
|
|
+ isc_reset_fpe
|
|
+ isc_set_debug @163
|
|
+ isc_to_sqlda @170
|
|
+ isc_vtof @175
|
|
+ isc_vtov @176
|
|
+ isc_baddress @276
|
|
+ isc_baddress_s @277
|
|
+
|
|
+ _isc_start_transaction=isc_start_transaction
|
|
+ _isc_expand_dpb=isc_expand_dpb
|
|
+ _isc_event_block=isc_event_block
|
|
+
|
|
+ fb_ping
|
|
+ fb_get_master_interface
|
|
+ fb_get_database_handle
|
|
+ fb_get_transaction_handle
|
|
+ fb_database_crypt_callback
|
|
+
|
|
+ gds__trace
|
|
+ gds__trace_raw
|
|
+ gds__trace_printer
|
|
+ gds__parse_bpb2
|
|
+
|
|
+;-----------------
|
|
+; OTHER FUNCTIONS
|
|
+;-----------------
|
|
+
|
|
+ CVT_move @267
|
|
+
|
|
+ KEYWORD_stringIsAToken @271
|
|
+ KEYWORD_getTokens @272
|
|
--
|
|
2.4.3
|
|
|
|
From 42461b606d8ea8409f91f785a973125645feb86d Mon Sep 17 00:00:00 2001
|
|
From: Alexpux <alexey.pawlow@gmail.com>
|
|
Date: Mon, 24 Nov 2014 11:12:17 +0300
|
|
Subject: [PATCH] Windows have another sources for FBGUARD.
|
|
|
|
---
|
|
builds/posix/make.shared.variables | 4 ++++
|
|
1 file changed, 4 insertions(+)
|
|
|
|
diff --git a/builds/posix/make.shared.variables b/builds/posix/make.shared.variables
|
|
index 53597e6..ef25f37 100644
|
|
--- a/builds/posix/make.shared.variables
|
|
+++ b/builds/posix/make.shared.variables
|
|
@@ -122,7 +122,11 @@ AllObjects += $(LOCKPRINT_Objects)
|
|
|
|
|
|
# Guardian
|
|
+ifeq ($(PLATFORM),win32)
|
|
+FBGUARD_Objects:= $(call dirObjects,iscguard) $(call makeObjects,remote/server/os/win32,chop.cpp)
|
|
+else
|
|
FBGUARD_Objects:= $(call dirObjects,utilities/guard)
|
|
+endif
|
|
|
|
AllObjects += $(FBGUARD_Objects)
|
|
|
|
--
|
|
2.4.3
|
|
|
|
From aa46551df08a769daffd9a2d1acfe394aa214ab6 Mon Sep 17 00:00:00 2001
|
|
From: Alexpux <alexey.pawlow@gmail.com>
|
|
Date: Thu, 27 Nov 2014 15:57:53 +0300
|
|
Subject: [PATCH] Do not install posix scripts for win32 platform.
|
|
|
|
---
|
|
configure.ac | 9 ++++++++-
|
|
1 file changed, 8 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/configure.ac b/configure.ac
|
|
index 651ca3e..72f43d6 100644
|
|
--- a/configure.ac
|
|
+++ b/configure.ac
|
|
@@ -1195,6 +1195,7 @@ if test "x$CROSS" != "x"; then
|
|
AC_CONFIG_FILES([gen/make.crossPlatform:builds/posix/make.$CROSS])
|
|
fi
|
|
|
|
+if test "$PLATFORM" != "win32"; then
|
|
AC_CONFIG_FILES([
|
|
gen/Release/firebird/bin/fb_config:builds/install/posix-common/fb_config.in
|
|
gen/Release/firebird/bin/posixLibrary.sh:builds/install/posix-common/posixLibrary.sh.in
|
|
@@ -1208,8 +1209,9 @@ gen/Release/firebird/bin/taruninstall.sh:builds/install/posix-common/taruninstal
|
|
gen/Release/firebird/bin/tarMainUninstall.sh:builds/install/posix-common/tarMainUninstall.sh.in
|
|
gen/Release/firebird/bin/changeServerMode.sh:builds/install/posix-common/changeServerMode.sh.in
|
|
gen/Release/firebird/bin/registerDatabase.sh:builds/install/posix-common/registerDatabase.sh.in
|
|
-gen/vers.sh:builds/posix/vers.sh.in
|
|
])
|
|
+fi
|
|
+AC_CONFIG_FILES(gen/vers.sh:builds/posix/vers.sh.in)
|
|
|
|
dnl: Platform Specific Files
|
|
|
|
@@ -1304,6 +1306,11 @@ case "$PLATFORM" in
|
|
|
|
DARWIN)
|
|
;;
|
|
+ win32)
|
|
+ AC_CONFIG_FILES(gen/install/install_classic.bat:builds/install/arch-specific/win32/install_classic.bat
|
|
+ gen/install/install_super.bat:builds/install/arch-specific/win32/install_super.bat
|
|
+ gen/install/uninstall.bat:builds/install/arch-specific/win32/uninstall.bat)
|
|
+ ;;
|
|
esac
|
|
if test -f ${MAKE_SRC_DIR}/postfix.${MAKEFILE_POSTFIX};then
|
|
POSTFIX_FILE=gen/make.platform.postfix:${MAKE_SRC_DIR}/postfix.${MAKEFILE_POSTFIX}
|
|
--
|
|
2.4.3
|
|
|
|
From 2939db0d6f51e983620e0f7b2b41fd37adcc5764 Mon Sep 17 00:00:00 2001
|
|
From: Alexpux <alexey.pawlow@gmail.com>
|
|
Date: Thu, 27 Nov 2014 17:04:52 +0300
|
|
Subject: [PATCH] Use variables everywhere.
|
|
|
|
---
|
|
builds/posix/Makefile.in.examples | 12 ++++++------
|
|
1 file changed, 6 insertions(+), 6 deletions(-)
|
|
|
|
diff --git a/builds/posix/Makefile.in.examples b/builds/posix/Makefile.in.examples
|
|
index ec5c19c..49f6c9f 100644
|
|
--- a/builds/posix/Makefile.in.examples
|
|
+++ b/builds/posix/Makefile.in.examples
|
|
@@ -123,7 +123,7 @@ $(EXAMPLES_DEST)% : $(EXAMPLES_SRC)%
|
|
|
|
$(EMPLOYEE_DB): $(EXAMPLES_DEST)/empbuild$(EXEC_EXT) $(INPUT_Sources) $(EXAMPLES_DEST)/isql$(EXEC_EXT)
|
|
-$(RM) $(EMPLOYEE_DB)
|
|
- ./empbuild $(EMPLOYEE_DB)
|
|
+ $(EXAMPLES_DEST)/empbuild$(EXEC_EXT) $(EMPLOYEE_DB)
|
|
$(GFIX) -write sync $(EMPLOYEE_DB)
|
|
-$(CHMOD_6) $(EMPLOYEE_DB)
|
|
|
|
@@ -147,9 +147,9 @@ $(EXAMPLES_DEST)/empbuild.fdb : $(EXAMPLES_DEST)/empddl.sql $(EXAMPLES_DEST)/emp
|
|
# the intlemp.fdb database.
|
|
|
|
$(EXAMPLES_DEST)/intlemp.fdb: $(EXAMPLES_DEST)/intlbld$(EXEC_EXT) $(INTL_Sources) $(EXAMPLES_DEST)/isql$(EXEC_EXT)
|
|
- -$(RM) intlemp.fdb
|
|
- ./intlbld intlemp.fdb
|
|
- -$(CHMOD_6) intlemp.fdb
|
|
+ -$(RM) $(EXAMPLES_DEST)/intlemp.fdb
|
|
+ $(EXAMPLES_DEST)/intlbld$(EXEC_EXT) intlemp.fdb
|
|
+ -$(CHMOD_6) $(EXAMPLES_DEST)/intlemp.fdb
|
|
|
|
$(EXAMPLES_DEST)/intlbld$(EXEC_EXT): $(INTLBLD_Objects) $(COMMON_LIB)
|
|
$(EXE_LINK) $(EXE_LINK_OPTIONS) @^ -o $@ -L$(LIB) $(FIREBIRD_LIBRARY_LINK) $(LINK_LIBS)
|
|
@@ -157,8 +157,8 @@ $(EXAMPLES_DEST)/intlbld$(EXEC_EXT): $(INTLBLD_Objects) $(COMMON_LIB)
|
|
$(EXAMPLES_DEST)/intlbld.c: $(EXAMPLES_DEST)/intlbuild.fdb $(EXAMPLES_DEST)/intlbld.e
|
|
|
|
$(EXAMPLES_DEST)/intlbuild.fdb : $(EXAMPLES_DEST)/intlddl.sql $(EXAMPLES_DEST)/intlbld.sql $(EXAMPLES_DEST)/isql$(EXEC_EXT)
|
|
- -$(RM) intlbuild.fdb
|
|
- $(EXAMPLES_DEST)/isql$(EXEC_EXT) -i intlbld.sql
|
|
+ -$(RM) $(EXAMPLES_DEST)/intlbuild.fdb
|
|
+ $(EXAMPLES_DEST)/isql$(EXEC_EXT) -i $(EXAMPLES_DEST)/intlbld.sql
|
|
|
|
|
|
$(EXAMPLES_DEST)/%.sql: $(EXAMPLES_SRC)/empbuild/%.sql
|
|
--
|
|
2.4.3
|
|
|
|
From 94c47c8fcd14d1ebdc600fbb130d551b5d1fc295 Mon Sep 17 00:00:00 2001
|
|
From: Alexpux <alexey.pawlow@gmail.com>
|
|
Date: Fri, 28 Nov 2014 12:28:31 +0300
|
|
Subject: [PATCH] Build windows specific utilities for mingw.
|
|
|
|
---
|
|
builds/posix/Makefile.in | 26 ++++++++++++++++++++++++++
|
|
builds/posix/make.defaults | 1 +
|
|
builds/posix/make.shared.variables | 9 +++++++++
|
|
builds/posix/prefix.mingw | 3 ++-
|
|
4 files changed, 38 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/builds/posix/Makefile.in b/builds/posix/Makefile.in
|
|
index 85d4697..79659d2 100644
|
|
--- a/builds/posix/Makefile.in
|
|
+++ b/builds/posix/Makefile.in
|
|
@@ -168,6 +168,9 @@ endif
|
|
$(MAKE) plugins
|
|
$(MAKE) examples
|
|
$(MAKE) rest
|
|
+ifeq ($(PLATFORM), win32)
|
|
+ $(MAKE) helpers
|
|
+endif
|
|
|
|
|
|
cross_process:
|
|
@@ -434,6 +437,29 @@ $(NBACKUP): $(NBACKUP_Objects) $(COMMON_LIB)
|
|
|
|
|
|
#___________________________________________________________________________
|
|
+# install helpers - utilities for Windows to install/uninstall services and etc
|
|
+#
|
|
+
|
|
+.PHONY: instclient instreg instsvc
|
|
+
|
|
+helpers: instclient instreg instsvc
|
|
+
|
|
+instclient: $(INSTCLI)
|
|
+
|
|
+$(INSTCLI): $(INSTCLIENT_Objects)
|
|
+ $(STATICEXE_LINK) $(EXE_LINK_OPTIONS) $^ -o $@ -L$(LIB) $(LINK_LIBS)
|
|
+
|
|
+instreg: $(INSTREG)
|
|
+
|
|
+$(INSTREG): $(INSTREG_Objects)
|
|
+ $(STATICEXE_LINK) $(EXE_LINK_OPTIONS) $^ -o $@ -L$(LIB) $(LINK_LIBS)
|
|
+
|
|
+instsvc: $(INSTSVC)
|
|
+
|
|
+$(INSTSVC): $(INSTSVC_Objects) $(YValve_Objects) $(Common_Objects) $(Remote_Client_Objects)
|
|
+ $(STATICEXE_LINK) $(EXE_LINK_OPTIONS) $^ -o $@ -L$(LIB) $(LINK_LIBS) $(MATHLIB)
|
|
+
|
|
+#___________________________________________________________________________
|
|
# plugins - some of them are required to build examples, use separate entry for them
|
|
#
|
|
|
|
diff --git a/builds/posix/make.defaults b/builds/posix/make.defaults
|
|
index bc18fc8..65cd4f9 100755
|
|
--- a/builds/posix/make.defaults
|
|
+++ b/builds/posix/make.defaults
|
|
@@ -356,6 +356,7 @@ GDS_INSTALL = $(BIN)/gds_install_service$(EXEC_EXT)
|
|
FBGUARD = $(BIN)/fbguard$(EXEC_EXT)
|
|
IBGUARD = $(BIN)/ibguard$(EXEC_EXT)
|
|
FBMGR_BIN = $(BIN)/fbmgr.bin$(EXEC_EXT)
|
|
+INSTCLI = $(BIN)/instclient$(EXEC_EXT)
|
|
INSTREG = $(BIN)/instreg$(EXEC_EXT)
|
|
INSTSVC = $(BIN)/instsvc$(EXEC_EXT)
|
|
|
|
diff --git a/builds/posix/make.shared.variables b/builds/posix/make.shared.variables
|
|
index ef25f37..18903b9 100644
|
|
--- a/builds/posix/make.shared.variables
|
|
+++ b/builds/posix/make.shared.variables
|
|
@@ -219,3 +219,12 @@ AllObjects += $(CODES_Objects)
|
|
BUILD_Objects:= $(call makeObjects,msgs,build_file.epp)
|
|
|
|
AllObjects += $(BUILD_Objects)
|
|
+
|
|
+# Install helpers
|
|
+ifeq ($(PLATFORM),win32)
|
|
+INSTCLIENT_Objects:= $(call makeObjects,utilities/install,install.cpp install_client.cpp)
|
|
+INSTREG_Objects:= $(call makeObjects,utilities/install,install_reg.cpp registry.cpp)
|
|
+INSTSVC_Objects:= $(call makeObjects,utilities/install,install_svc.cpp services.cpp)
|
|
+
|
|
+AllObjects += $(INSTCLIENT_Objects) $(INSTREG_Objects) $(INSTSVC_Objects)
|
|
+endif
|
|
diff --git a/builds/posix/prefix.mingw b/builds/posix/prefix.mingw
|
|
index 8dad1ce..7fd569a 100644
|
|
--- a/builds/posix/prefix.mingw
|
|
+++ b/builds/posix/prefix.mingw
|
|
@@ -39,7 +39,8 @@ LIB_GUI:= -mwindows -lcomctl32 -lgdi32
|
|
# Add resources to some files
|
|
FilesToAddVersionInfo=$(FBTRACEMGR) $(LIBFIREBIRD_FULLNAME) $(ENGINE_SONAME) $(LIBFBINTL_SO) \
|
|
$(FBSVCMGR) $(FBTRACEMGR) $(FBTRACE) $(FBUDF_SO) $(LIBIBUTIL_SO) \
|
|
- $(GBAK) $(GFIX) $(GPRE) $(GSEC) $(GSPLIT) $(GSTAT) $(QLI) $(ISQL) $(NBACKUP)
|
|
+ $(GBAK) $(GFIX) $(GPRE) $(GSEC) $(GSPLIT) $(GSTAT) $(QLI) $(ISQL) $(NBACKUP) \
|
|
+ $(INSTCLI) $(INSTREG) $(INSTSVC)
|
|
# TODO: guardians also must be here
|
|
FilesToAddDialog=$(FB_DAEMON)
|
|
FilesToAddDialog2=$(FBGUARD)
|
|
--
|
|
2.4.3
|
|
|
|
From 7a92d1dcf2626da10784eb50f370a3e4d99a1dcf Mon Sep 17 00:00:00 2001
|
|
From: Alexpux <alexey.pawlow@gmail.com>
|
|
Date: Fri, 28 Nov 2014 12:28:31 +0300
|
|
Subject: [PATCH] Fix using mutex.
|
|
|
|
---
|
|
src/extlib/fbudf/fbudf.cpp | 4 ++--
|
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/src/extlib/fbudf/fbudf.cpp b/src/extlib/fbudf/fbudf.cpp
|
|
index d3a5a96..2855fe9 100644
|
|
--- a/src/extlib/fbudf/fbudf.cpp
|
|
+++ b/src/extlib/fbudf/fbudf.cpp
|
|
@@ -581,7 +581,7 @@ FBUDF_API void getExactTimestamp(ISC_TIMESTAMP* rc)
|
|
#if defined(HAVE_LOCALTIME_R)
|
|
tm* times = localtime_r(&seconds, &timex);
|
|
#else
|
|
- timeMutex.enter();
|
|
+ timeMutex.enter(FB_FUNCTION);
|
|
tm* times = localtime(&seconds);
|
|
if (times)
|
|
{
|
|
@@ -628,7 +628,7 @@ FBUDF_API void getExactTimestampUTC(ISC_TIMESTAMP* rc)
|
|
#if defined(HAVE_GMTIME_R)
|
|
tm* times = gmtime_r(&seconds, &timex);
|
|
#else
|
|
- timeMutex.enter();
|
|
+ timeMutex.enter(FB_FUNCTION);
|
|
tm* times = gmtime(&seconds);
|
|
if (times)
|
|
{
|
|
--
|
|
2.4.3
|
|
|
|
From 1c21afa3c185b2e7fee937e0d66e225797e40510 Mon Sep 17 00:00:00 2001
|
|
From: Alexpux <alexey.pawlow@gmail.com>
|
|
Date: Tue, 16 Jun 2015 10:34:21 +0300
|
|
Subject: [PATCH] mod_loader: mingw always link to msvcrt.dll
|
|
|
|
---
|
|
src/common/os/win32/mod_loader.cpp | 6 ++++--
|
|
1 file changed, 4 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/src/common/os/win32/mod_loader.cpp b/src/common/os/win32/mod_loader.cpp
|
|
index a79313f..2008d7a 100644
|
|
--- a/src/common/os/win32/mod_loader.cpp
|
|
+++ b/src/common/os/win32/mod_loader.cpp
|
|
@@ -76,7 +76,7 @@ public:
|
|
// if we don't use MSVC then we don't use MS CRT ?
|
|
// NS: versions of MSVC before 2005 and, as preliminary reports suggest,
|
|
// after 2008 do not need this hack
|
|
-#if !defined(_MSC_VER) || (_MSC_VER < 1400)
|
|
+#if (!defined(_MSC_VER) || (_MSC_VER < 1400)) && !defined(__MINGW32__)
|
|
return;
|
|
#else
|
|
|
|
@@ -91,7 +91,9 @@ public:
|
|
if ((*mFindActCtxSectionString)
|
|
(0, NULL,
|
|
ACTIVATION_CONTEXT_SECTION_DLL_REDIRECTION,
|
|
-#if _MSC_VER == 1400
|
|
+#if defined(__MINGW32__)
|
|
+ "msvcrt.dll",
|
|
+#elif _MSC_VER == 1400
|
|
"msvcr80.dll",
|
|
#elif _MSC_VER == 1500
|
|
"msvcr90.dll",
|
|
--
|
|
2.4.3
|
|
|
|
From 9e1d9ea0e8fe4fe4033e8073b46876962b9ac973 Mon Sep 17 00:00:00 2001
|
|
From: Alexpux <alexey.pawlow@gmail.com>
|
|
Date: Tue, 16 Jun 2015 13:35:36 +0300
|
|
Subject: [PATCH] Relocate paths for unix-like files layout.
|
|
|
|
---
|
|
src/common/os/win32/path_utils.cpp | 10 +-
|
|
src/common/pathtools.cpp | 538 +++++++++++++++++++++++++++++
|
|
src/common/pathtools.h | 53 +++
|
|
src/common/utils.cpp | 21 +-
|
|
src/yvalve/config/os/win32/config_root.cpp | 3 +-
|
|
src/yvalve/gds.cpp | 7 +-
|
|
6 files changed, 623 insertions(+), 9 deletions(-)
|
|
create mode 100644 src/common/pathtools.cpp
|
|
create mode 100644 src/common/pathtools.h
|
|
|
|
diff --git a/src/common/os/win32/path_utils.cpp b/src/common/os/win32/path_utils.cpp
|
|
index ad592ac..5ac2431 100644
|
|
--- a/src/common/os/win32/path_utils.cpp
|
|
+++ b/src/common/os/win32/path_utils.cpp
|
|
@@ -6,7 +6,13 @@
|
|
|
|
/// The Win32 implementation of the path_utils abstraction.
|
|
|
|
+#if defined(__MINGW32__)
|
|
+const char PathUtils::dir_sep = '/';
|
|
+const char alt_sep_dir = '\\';
|
|
+#else
|
|
const char PathUtils::dir_sep = '\\';
|
|
+const char alt_sep_dir = '/';
|
|
+#endif
|
|
const char* PathUtils::up_dir_link = "..";
|
|
const char PathUtils::dir_list_sep = ';';
|
|
|
|
@@ -155,7 +161,7 @@ bool PathUtils::isRelative(const Firebird::PathName& path)
|
|
if (path.length() > 0)
|
|
{
|
|
const char ds = hasDriveLetter(path) ? path[2] : path[0];
|
|
- return ds != PathUtils::dir_sep && ds != '/';
|
|
+ return ds != PathUtils::dir_sep && ds != alt_sep_dir;
|
|
}
|
|
return true;
|
|
}
|
|
@@ -168,7 +174,7 @@ void PathUtils::splitPrefix(Firebird::PathName& path, Firebird::PathName& prefix
|
|
prefix = path.substr(0, 2);
|
|
path.erase(0, 2);
|
|
}
|
|
- if (path.hasData() && (path[0] == PathUtils::dir_sep || path[0] == '/'))
|
|
+ if (path.hasData() && (path[0] == PathUtils::dir_sep || path[0] == alt_sep_dir))
|
|
{
|
|
prefix += path[0];
|
|
path.erase(0, 1);
|
|
diff --git a/src/common/pathtools.cpp b/src/common/pathtools.cpp
|
|
new file mode 100644
|
|
index 0000000..9291ffd
|
|
--- /dev/null
|
|
+++ b/src/common/pathtools.cpp
|
|
@@ -0,0 +1,538 @@
|
|
+/*
|
|
+ .Some useful path tools.
|
|
+ .ASCII only for now.
|
|
+ .Written by Ray Donnelly in 2014.
|
|
+ .Licensed under CC0 (and anything.
|
|
+ .else you need to license it under).
|
|
+ .No warranties whatsoever.
|
|
+ .email: <mingw.android@gmail.com>.
|
|
+ */
|
|
+
|
|
+#if defined(__APPLE__)
|
|
+#include <stdlib.h>
|
|
+#else
|
|
+#include <malloc.h>
|
|
+#endif
|
|
+#include <limits.h>
|
|
+#include <stdio.h>
|
|
+#include <string.h>
|
|
+#if defined(__linux__) || defined(__CYGWIN__) || defined(__MSYS__)
|
|
+#include <alloca.h>
|
|
+#endif
|
|
+#include <unistd.h>
|
|
+
|
|
+/* If you don't define this, then get_executable_path()
|
|
+ can only use argv[0] which will often not work well */
|
|
+#define IMPLEMENT_SYS_GET_EXECUTABLE_PATH
|
|
+
|
|
+#if defined(IMPLEMENT_SYS_GET_EXECUTABLE_PATH)
|
|
+#if defined(__linux__) || defined(__CYGWIN__) || defined(__MSYS__)
|
|
+/* Nothing needed, unistd.h is enough. */
|
|
+#elif defined(__APPLE__)
|
|
+#include <mach-o/dyld.h>
|
|
+#elif defined(_WIN32)
|
|
+#define WIN32_MEAN_AND_LEAN
|
|
+#include <windows.h>
|
|
+#include <psapi.h>
|
|
+#endif
|
|
+#endif /* defined(IMPLEMENT_SYS_GET_EXECUTABLE_PATH) */
|
|
+
|
|
+#include "pathtools.h"
|
|
+
|
|
+char *
|
|
+malloc_copy_string(char const * original)
|
|
+{
|
|
+ char * result = (char *) malloc (sizeof (char*) * strlen (original)+1);
|
|
+ if (result != NULL)
|
|
+ {
|
|
+ strcpy (result, original);
|
|
+ }
|
|
+ return result;
|
|
+}
|
|
+
|
|
+void
|
|
+sanitise_path(char * path)
|
|
+{
|
|
+ size_t path_size = strlen (path);
|
|
+
|
|
+ /* Replace any '\' with '/' */
|
|
+ char * path_p = path;
|
|
+ while ((path_p = strchr (path_p, '\\')) != NULL)
|
|
+ {
|
|
+ *path_p = '/';
|
|
+ }
|
|
+ /* Replace any '//' with '/' */
|
|
+ path_p = path;
|
|
+ while ((path_p = strstr (path_p, "//")) != NULL)
|
|
+ {
|
|
+ memmove (path_p, path_p + 1, path_size--);
|
|
+ }
|
|
+ return;
|
|
+}
|
|
+
|
|
+char *
|
|
+get_relative_path(char const * from_in, char const * to_in)
|
|
+{
|
|
+ size_t from_size = (from_in == NULL) ? 0 : strlen (from_in);
|
|
+ size_t to_size = (to_in == NULL) ? 0 : strlen (to_in);
|
|
+ size_t max_size = (from_size + to_size) * 2 + 4;
|
|
+ char * scratch_space = (char *) alloca (from_size + 1 + to_size + 1 + max_size + max_size);
|
|
+ char * from;
|
|
+ char * to;
|
|
+ char * common_part;
|
|
+ char * result;
|
|
+ size_t count;
|
|
+
|
|
+ /* No to, return "./" */
|
|
+ if (to_in == NULL)
|
|
+ {
|
|
+ return malloc_copy_string ("./");
|
|
+ }
|
|
+
|
|
+ /* If alloca failed or no from was given return a copy of to */
|
|
+ if ( from_in == NULL
|
|
+ || scratch_space == NULL )
|
|
+ {
|
|
+ return malloc_copy_string (to_in);
|
|
+ }
|
|
+
|
|
+ from = scratch_space;
|
|
+ strcpy (from, from_in);
|
|
+ to = from + from_size + 1;
|
|
+ strcpy (to, to_in);
|
|
+ common_part = to + to_size + 1;
|
|
+ result = common_part + max_size;
|
|
+ simplify_path (from);
|
|
+ simplify_path (to);
|
|
+
|
|
+ result[0] = '\0';
|
|
+
|
|
+ size_t match_size_dirsep = 0; /* The match size up to the last /. Always wind back to this - 1 */
|
|
+ size_t match_size = 0; /* The running (and final) match size. */
|
|
+ size_t largest_size = (from_size > to_size) ? from_size : to_size;
|
|
+ int to_final_is_slash = (to[to_size-1] == '/') ? 1 : 0;
|
|
+ char from_c;
|
|
+ char to_c;
|
|
+ for (match_size = 0; match_size < largest_size; ++match_size)
|
|
+ {
|
|
+ /* To simplify the logic, always pretend the strings end with '/' */
|
|
+ from_c = (match_size < from_size) ? from[match_size] : '/';
|
|
+ to_c = (match_size < to_size) ? to[match_size] : '/';
|
|
+
|
|
+ if (from_c != to_c)
|
|
+ {
|
|
+ if (from_c != '\0' || to_c != '\0')
|
|
+ {
|
|
+ match_size = match_size_dirsep;
|
|
+ }
|
|
+ break;
|
|
+ }
|
|
+ else if (from_c == '/')
|
|
+ {
|
|
+ match_size_dirsep = match_size;
|
|
+ }
|
|
+ }
|
|
+ strncpy (common_part, from, match_size);
|
|
+ common_part[match_size] = '\0';
|
|
+ from += match_size;
|
|
+ to += match_size;
|
|
+ size_t ndotdots = 0;
|
|
+ char const* from_last = from + strlen(from) - 1;
|
|
+ while ((from = strchr (from, '/')) && from != from_last)
|
|
+ {
|
|
+ ++ndotdots;
|
|
+ ++from;
|
|
+ }
|
|
+ for (count = 0; count < ndotdots; ++count)
|
|
+ {
|
|
+ strcat(result, "../");
|
|
+ }
|
|
+ if (strlen(to) > 0)
|
|
+ {
|
|
+ strcat(result, to+1);
|
|
+ }
|
|
+ /* Make sure that if to ends with '/' result does the same, and
|
|
+ vice-versa. */
|
|
+ size_t size_result = strlen(result);
|
|
+ if ((to_final_is_slash == 1)
|
|
+ && (!size_result || result[size_result-1] != '/'))
|
|
+ {
|
|
+ strcat (result, "/");
|
|
+ }
|
|
+ else if (!to_final_is_slash
|
|
+ && size_result && result[size_result-1] == '/')
|
|
+ {
|
|
+ result[size_result-1] = '\0';
|
|
+ }
|
|
+
|
|
+ return malloc_copy_string (result);
|
|
+}
|
|
+
|
|
+void
|
|
+simplify_path(char * path)
|
|
+{
|
|
+ ssize_t n_toks = 1; /* in-case we need an empty initial token. */
|
|
+ ssize_t i, j;
|
|
+ size_t tok_size;
|
|
+ size_t in_size = strlen (path);
|
|
+ int it_ended_with_a_slash = (path[in_size - 1] == '/') ? 1 : 0;
|
|
+ char * result = path;
|
|
+ sanitise_path(result);
|
|
+ char * result_p = result;
|
|
+
|
|
+ do
|
|
+ {
|
|
+ ++n_toks;
|
|
+ ++result_p;
|
|
+ } while ((result_p = strchr (result_p, '/')) != NULL);
|
|
+
|
|
+ result_p = result;
|
|
+ char const ** toks = (char const **) alloca (sizeof (char const*) * n_toks);
|
|
+ n_toks = 0;
|
|
+ do
|
|
+ {
|
|
+ if (result_p > result)
|
|
+ {
|
|
+ *result_p++ = '\0';
|
|
+ }
|
|
+ else if (*result_p == '/')
|
|
+ {
|
|
+ /* A leading / creates an empty initial token. */
|
|
+ toks[n_toks++] = result_p;
|
|
+ *result_p++ = '\0';
|
|
+ }
|
|
+ toks[n_toks++] = result_p;
|
|
+ } while ((result_p = strchr (result_p, '/')) != NULL);
|
|
+
|
|
+ /* Remove all non-leading '.' and any '..' we can match
|
|
+ with an earlier forward path (i.e. neither '.' nor '..') */
|
|
+ for (i = 1; i < n_toks; ++i)
|
|
+ {
|
|
+ int removals[2] = { -1, -1 };
|
|
+ if ( strcmp (toks[i], "." ) == 0)
|
|
+ {
|
|
+ removals[0] = i;
|
|
+ }
|
|
+ else if ( strcmp (toks[i], ".." ) == 0)
|
|
+ {
|
|
+ /* Search backwards for a forward path to collapse.
|
|
+ If none are found then the .. also stays. */
|
|
+ for (j = i - 1; j > -1; --j)
|
|
+ {
|
|
+ if ( strcmp (toks[j], "." )
|
|
+ && strcmp (toks[j], ".." ) )
|
|
+ {
|
|
+ removals[0] = j;
|
|
+ removals[1] = i;
|
|
+ break;
|
|
+ }
|
|
+ }
|
|
+ }
|
|
+ for (j = 0; j < 2; ++j)
|
|
+ {
|
|
+ if (removals[j] >= 0) /* Can become -2 */
|
|
+ {
|
|
+ --n_toks;
|
|
+ memmove (&toks[removals[j]], &toks[removals[j]+1], (n_toks - removals[j])*sizeof (char*));
|
|
+ --i;
|
|
+ if (!j)
|
|
+ {
|
|
+ --removals[1];
|
|
+ }
|
|
+ }
|
|
+ }
|
|
+ }
|
|
+ result_p = result;
|
|
+ for (i = 0; i < n_toks; ++i)
|
|
+ {
|
|
+ tok_size = strlen(toks[i]);
|
|
+ memcpy (result_p, toks[i], tok_size);
|
|
+ result_p += tok_size;
|
|
+ if ((!i || tok_size) && ((i < n_toks - 1) || it_ended_with_a_slash == 1))
|
|
+ {
|
|
+ *result_p = '/';
|
|
+ ++result_p;
|
|
+ }
|
|
+ }
|
|
+ *result_p = '\0';
|
|
+}
|
|
+
|
|
+/* Returns actual_to by calculating the relative path from -> to and
|
|
+ applying that to actual_from. An assumption that actual_from is a
|
|
+ dir is made, and it may or may not end with a '/' */
|
|
+char const *
|
|
+get_relocated_path (char const * from, char const * to, char const * actual_from)
|
|
+{
|
|
+ char const * relative_from_to = get_relative_path (from, to);
|
|
+ char * actual_to = (char *) malloc (strlen(actual_from) + 2 + strlen(relative_from_to));
|
|
+ return actual_to;
|
|
+}
|
|
+
|
|
+int
|
|
+get_executable_path(char const * argv0, char * result, ssize_t max_size)
|
|
+{
|
|
+ char * system_result = (char *) alloca (max_size);
|
|
+ ssize_t system_result_size = -1;
|
|
+ ssize_t result_size = -1;
|
|
+
|
|
+ if (system_result != NULL)
|
|
+ {
|
|
+#if defined(IMPLEMENT_SYS_GET_EXECUTABLE_PATH)
|
|
+#if defined(__linux__) || defined(__CYGWIN__) || defined(__MSYS__)
|
|
+ system_result_size = readlink("/proc/self/exe", system_result, max_size);
|
|
+#elif defined(__APPLE__)
|
|
+ uint32_t bufsize = (uint32_t)max_size;
|
|
+ if (_NSGetExecutablePath(system_result, &bufsize) == 0)
|
|
+ {
|
|
+ system_result_size = (ssize_t)bufsize;
|
|
+ }
|
|
+#elif defined(_WIN32)
|
|
+ unsigned long bufsize = (unsigned long)max_size;
|
|
+ system_result_size = GetModuleFileNameA(NULL, system_result, bufsize);
|
|
+ if (system_result_size == 0 || system_result_size == (ssize_t)bufsize)
|
|
+ {
|
|
+ /* Error, possibly not enough space. */
|
|
+ system_result_size = -1;
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ /* Early conversion to unix slashes instead of more changes
|
|
+ everywhere else .. */
|
|
+ char * winslash;
|
|
+ system_result[system_result_size] = '\0';
|
|
+ while ((winslash = strchr (system_result, '\\')) != NULL)
|
|
+ {
|
|
+ *winslash = '/';
|
|
+ }
|
|
+ }
|
|
+#else
|
|
+#warning "Don't know how to get executable path on this system"
|
|
+#endif
|
|
+#endif /* defined(IMPLEMENT_SYS_GET_EXECUTABLE_PATH) */
|
|
+ }
|
|
+ /* Use argv0 as a default in-case of failure */
|
|
+ if (system_result_size != -1)
|
|
+ {
|
|
+ strncpy (result, system_result, system_result_size);
|
|
+ result[system_result_size] = '\0';
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ if (argv0 != NULL)
|
|
+ {
|
|
+ strncpy (result, argv0, max_size);
|
|
+ result[max_size-1] = '\0';
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ result[0] = '\0';
|
|
+ }
|
|
+ }
|
|
+ result_size = strlen (result);
|
|
+ return result_size;
|
|
+}
|
|
+
|
|
+char const *
|
|
+strip_n_prefix_folders(char const * path, size_t n)
|
|
+{
|
|
+ if (path == NULL)
|
|
+ {
|
|
+ return NULL;
|
|
+ }
|
|
+
|
|
+ if (path[0] != '/')
|
|
+ {
|
|
+ return path;
|
|
+ }
|
|
+
|
|
+ char const * last = path;
|
|
+ while (n-- && path != NULL)
|
|
+ {
|
|
+ last = path;
|
|
+ path = strchr (path + 1, '/');
|
|
+ }
|
|
+ return (path == NULL) ? last : path;
|
|
+}
|
|
+
|
|
+void
|
|
+strip_n_suffix_folders(char * path, size_t n)
|
|
+{
|
|
+ if (path == NULL)
|
|
+ {
|
|
+ return;
|
|
+ }
|
|
+ while (n--)
|
|
+ {
|
|
+ if (strrchr (path + 1, '/'))
|
|
+ {
|
|
+ *strrchr (path + 1, '/') = '\0';
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ return;
|
|
+ }
|
|
+ }
|
|
+ return;
|
|
+}
|
|
+
|
|
+size_t
|
|
+split_path_list(char const * path_list, char split_char, char *** arr)
|
|
+{
|
|
+ size_t path_count;
|
|
+ size_t path_list_size;
|
|
+ char const * path_list_p;
|
|
+
|
|
+ path_list_p = path_list;
|
|
+ if (path_list == NULL || path_list[0] == '\0')
|
|
+ {
|
|
+ return 0;
|
|
+ }
|
|
+ path_list_size = strlen (path_list);
|
|
+
|
|
+ path_count = 0;
|
|
+ do
|
|
+ {
|
|
+ ++path_count;
|
|
+ ++path_list_p;
|
|
+ }
|
|
+ while ((path_list_p = strchr (path_list_p, split_char)) != NULL);
|
|
+
|
|
+ /* allocate everything in one go. */
|
|
+ char * all_memory = (char *) malloc (sizeof (char *) * path_count + strlen(path_list) + 1);
|
|
+ if (all_memory == NULL)
|
|
+ return 0;
|
|
+ *arr = (char **)all_memory;
|
|
+ all_memory += sizeof (char *) * path_count;
|
|
+
|
|
+ path_count = 0;
|
|
+ path_list_p = path_list;
|
|
+ char const * next_path_list_p = 0;
|
|
+ do
|
|
+ {
|
|
+ next_path_list_p = strchr (path_list_p, split_char);
|
|
+ if (next_path_list_p != NULL)
|
|
+ {
|
|
+ ++next_path_list_p;
|
|
+ }
|
|
+ size_t this_size = (next_path_list_p != NULL)
|
|
+ ? next_path_list_p - path_list_p - 1
|
|
+ : &path_list[path_list_size] - path_list_p;
|
|
+ memcpy (all_memory, path_list_p, this_size);
|
|
+ all_memory[this_size] = '\0';
|
|
+ (*arr)[path_count++] = all_memory;
|
|
+ all_memory += this_size + 1;
|
|
+ } while ((path_list_p = next_path_list_p) != NULL);
|
|
+
|
|
+ return path_count;
|
|
+}
|
|
+
|
|
+char *
|
|
+get_relocated_path_list(char const * from, char const * to_path_list)
|
|
+{
|
|
+ char exe_path[MAX_PATH];
|
|
+ char * temp;
|
|
+ get_executable_path (NULL, &exe_path[0], sizeof (exe_path) / sizeof (exe_path[0]));
|
|
+ if ((temp = strrchr (exe_path, '/')) != NULL)
|
|
+ {
|
|
+ temp[1] = '\0';
|
|
+ }
|
|
+
|
|
+ char **arr = NULL;
|
|
+ /* Ask Alexey why he added this. Are we not 100% sure
|
|
+ that we're dealing with unix paths here? */
|
|
+ char split_char = ':';
|
|
+ if (strchr (to_path_list, ';'))
|
|
+ {
|
|
+ split_char = ';';
|
|
+ }
|
|
+ size_t count = split_path_list (to_path_list, split_char, &arr);
|
|
+ int result_size = 1 + (count - 1); /* count - 1 is for ; delim. */
|
|
+ size_t exe_path_size = strlen (exe_path);
|
|
+ size_t i;
|
|
+ /* Space required is:
|
|
+ count * (exe_path_size + strlen (rel_to_datadir))
|
|
+ rel_to_datadir upper bound is:
|
|
+ (count * strlen (from)) + (3 * num_slashes (from))
|
|
+ + strlen(arr[i]) + 1.
|
|
+ .. pathalogically num_slashes (from) is strlen (from)
|
|
+ (from = ////////) */
|
|
+ size_t space_required = (count * (exe_path_size + 4 * strlen (from))) + count - 1;
|
|
+ for (i = 0; i < count; ++i)
|
|
+ {
|
|
+ space_required += strlen (arr[i]);
|
|
+ }
|
|
+ char * scratch = (char *) alloca (space_required);
|
|
+ if (scratch == NULL)
|
|
+ return NULL;
|
|
+ for (i = 0; i < count; ++i)
|
|
+ {
|
|
+ char * rel_to_datadir = get_relative_path (from, arr[i]);
|
|
+ scratch[0] = '\0';
|
|
+ arr[i] = scratch;
|
|
+ strcat (scratch, exe_path);
|
|
+ strcat (scratch, rel_to_datadir);
|
|
+ simplify_path (arr[i]);
|
|
+ size_t arr_i_size = strlen (arr[i]);
|
|
+ result_size += arr_i_size;
|
|
+ scratch = arr[i] + arr_i_size + 1;
|
|
+ }
|
|
+ char * result = (char *) malloc (result_size);
|
|
+ if (result == NULL)
|
|
+ {
|
|
+ return NULL;
|
|
+ }
|
|
+ result[0] = '\0';
|
|
+ for (i = 0; i < count; ++i)
|
|
+ {
|
|
+ strcat (result, arr[i]);
|
|
+ if (i != count-1)
|
|
+ {
|
|
+#if defined(_WIN32)
|
|
+ strcat (result, ";");
|
|
+#else
|
|
+ strcat (result, ":");
|
|
+#endif
|
|
+ }
|
|
+ }
|
|
+ free ((void*)arr);
|
|
+ return result;
|
|
+}
|
|
+
|
|
+char *
|
|
+single_path_relocation(const char *from, const char *to)
|
|
+{
|
|
+#if defined(__MINGW32__)
|
|
+ char exe_path[PATH_MAX];
|
|
+ get_executable_path (NULL, &exe_path[0], sizeof(exe_path)/sizeof(exe_path[0]));
|
|
+ if (strrchr (exe_path, '/') != NULL)
|
|
+ {
|
|
+ strrchr (exe_path, '/')[1] = '\0';
|
|
+ }
|
|
+ char * rel_to_datadir = get_relative_path (from, to);
|
|
+ strcat (exe_path, rel_to_datadir);
|
|
+ simplify_path (&exe_path[0]);
|
|
+ return malloc_copy_string(exe_path);
|
|
+#else
|
|
+ return malloc_copy_string(to);
|
|
+#endif
|
|
+}
|
|
+
|
|
+char *
|
|
+pathlist_relocation(const char *from_path, const char *to_path_list)
|
|
+{
|
|
+#if defined(__MINGW32__)
|
|
+ static char stored_path[PATH_MAX];
|
|
+ static int stored = 0;
|
|
+ if (stored == 0)
|
|
+ {
|
|
+ char const * relocated = get_relocated_path_list(from_path, to_path_list);
|
|
+ strncpy (stored_path, relocated, PATH_MAX);
|
|
+ stored_path[PATH_MAX-1] = '\0';
|
|
+ free ((void *)relocated);
|
|
+ stored = 1;
|
|
+ }
|
|
+ return stored_path;
|
|
+#else
|
|
+ return (to_path_list);
|
|
+#endif
|
|
+}
|
|
diff --git a/src/common/pathtools.h b/src/common/pathtools.h
|
|
new file mode 100644
|
|
index 0000000..139b7c2
|
|
--- /dev/null
|
|
+++ b/src/common/pathtools.h
|
|
@@ -0,0 +1,53 @@
|
|
+/*
|
|
+ .Some useful path tools.
|
|
+ .ASCII only for now.
|
|
+ .Written by Ray Donnelly in 2014.
|
|
+ .Licensed under CC0 (and anything.
|
|
+ .else you need to license it under).
|
|
+ .No warranties whatsoever.
|
|
+ .email: <mingw.android@gmail.com>.
|
|
+ */
|
|
+
|
|
+#ifndef PATHTOOLS_H
|
|
+#define PATHTOOLS_H
|
|
+
|
|
+#include <unistd.h>
|
|
+#if defined(__APPLE__)
|
|
+#include <stdlib.h>
|
|
+#else
|
|
+#include <malloc.h>
|
|
+#endif
|
|
+#include <stdio.h>
|
|
+
|
|
+char * malloc_copy_string(char const * original);
|
|
+
|
|
+/* In-place replaces any '\' with '/' and any '//' with '/' */
|
|
+void sanitise_path(char * path);
|
|
+
|
|
+/* Uses a host OS specific function to determine the path of the executable,
|
|
+ if IMPLEMENT_SYS_GET_EXECUTABLE_PATH is defined, otherwise uses argv0. */
|
|
+int get_executable_path(char const * argv0, char * result, ssize_t max_size);
|
|
+
|
|
+/* Where possible, in-place removes occourances of '.' and 'path/..' */
|
|
+void simplify_path(char * path);
|
|
+
|
|
+/* Allocates (via malloc) and returns the path to get from from to to. */
|
|
+char * get_relative_path(char const * from, char const * to);
|
|
+
|
|
+size_t split_path_list(char const * path_list, char split_char, char *** arr);
|
|
+
|
|
+/* Advances path along by the amount that removes n prefix folders. */
|
|
+char const *
|
|
+strip_n_prefix_folders(char const * path, size_t n);
|
|
+
|
|
+/* NULL terminates path to remove n suffix folders. */
|
|
+void
|
|
+strip_n_suffix_folders(char * path, size_t n);
|
|
+
|
|
+char const * get_relocated_path (char const * from, char const * to, char const * actual_from);
|
|
+char * get_relocated_path_list(char const * from, char const * to_path_list);
|
|
+
|
|
+char * single_path_relocation(const char *from, const char *to);
|
|
+char * pathlist_relocation(const char *from_path, const char *to_path_list);
|
|
+
|
|
+#endif /* PATHTOOLS_H */
|
|
diff --git a/src/common/utils.cpp b/src/common/utils.cpp
|
|
index df73d9c..473629a 100644
|
|
--- a/src/common/utils.cpp
|
|
+++ b/src/common/utils.cpp
|
|
@@ -51,6 +51,7 @@
|
|
#include "../common/os/fbsyslog.h"
|
|
#include "../common/StatusArg.h"
|
|
#include "../common/os/os_utils.h"
|
|
+#include "../common/pathtools.h"
|
|
#include "../dsql/sqlda_pub.h"
|
|
|
|
#ifdef WIN_NT
|
|
@@ -1008,9 +1009,23 @@ Firebird::PathName getPrefix(unsigned int prefType, const char* name)
|
|
char tmp[MAXPATHLEN];
|
|
|
|
const char* configDir[] = {
|
|
- FB_BINDIR, FB_SBINDIR, FB_CONFDIR, FB_LIBDIR, FB_INCDIR, FB_DOCDIR, FB_UDFDIR, FB_SAMPLEDIR,
|
|
- FB_SAMPLEDBDIR, FB_HELPDIR, FB_INTLDIR, FB_MISCDIR, FB_SECDBDIR, FB_MSGDIR, FB_LOGDIR,
|
|
- FB_GUARDDIR, FB_PLUGDIR
|
|
+ single_path_relocation(FB_BINDIR,FB_BINDIR),
|
|
+ single_path_relocation(FB_BINDIR,FB_SBINDIR),
|
|
+ single_path_relocation(FB_BINDIR,FB_CONFDIR),
|
|
+ single_path_relocation(FB_BINDIR,FB_LIBDIR),
|
|
+ single_path_relocation(FB_BINDIR,FB_INCDIR),
|
|
+ single_path_relocation(FB_BINDIR,FB_DOCDIR),
|
|
+ single_path_relocation(FB_BINDIR,FB_UDFDIR),
|
|
+ single_path_relocation(FB_BINDIR,FB_SAMPLEDIR),
|
|
+ single_path_relocation(FB_BINDIR,FB_SAMPLEDBDIR),
|
|
+ single_path_relocation(FB_BINDIR,FB_HELPDIR),
|
|
+ single_path_relocation(FB_BINDIR,FB_INTLDIR),
|
|
+ single_path_relocation(FB_BINDIR,FB_MISCDIR),
|
|
+ single_path_relocation(FB_BINDIR,FB_SECDBDIR),
|
|
+ single_path_relocation(FB_BINDIR,FB_MSGDIR),
|
|
+ single_path_relocation(FB_BINDIR,FB_LOGDIR),
|
|
+ single_path_relocation(FB_BINDIR,FB_GUARDDIR),
|
|
+ single_path_relocation(FB_BINDIR,FB_PLUGDIR)
|
|
};
|
|
|
|
fb_assert(FB_NELEM(configDir) == Firebird::IConfigManager::DIR_COUNT);
|
|
diff --git a/src/yvalve/config/os/win32/config_root.cpp b/src/yvalve/config/os/win32/config_root.cpp
|
|
index d4641c7..e3ae8d9 100644
|
|
--- a/src/yvalve/config/os/win32/config_root.cpp
|
|
+++ b/src/yvalve/config/os/win32/config_root.cpp
|
|
@@ -28,6 +28,7 @@
|
|
#include "fb_types.h"
|
|
#include "../../../../common/classes/fb_string.h"
|
|
#include "../../../../common/dllinst.h"
|
|
+#include "../../../../common/pathtools.h"
|
|
#include "../../../../yvalve/config/os/config_root.h"
|
|
|
|
using Firebird::PathName;
|
|
@@ -107,7 +108,7 @@ void ConfigRoot::osConfigInstallDir()
|
|
if (install_dir.isEmpty())
|
|
{
|
|
// As a last resort get it from the default install directory
|
|
- install_dir = FB_PREFIX;
|
|
+ install_dir = single_path_relocation(FB_BINDIR,FB_PREFIX);
|
|
}
|
|
|
|
PathUtils::ensureSeparator(install_dir);
|
|
diff --git a/src/yvalve/gds.cpp b/src/yvalve/gds.cpp
|
|
index 5cc5dcb..c7681d2 100644
|
|
--- a/src/yvalve/gds.cpp
|
|
+++ b/src/yvalve/gds.cpp
|
|
@@ -57,6 +57,7 @@
|
|
#include "../common/classes/init.h"
|
|
#include "../common/classes/TempFile.h"
|
|
#include "../common/utils_proto.h"
|
|
+#include "../common/pathtools.h"
|
|
|
|
#ifdef HAVE_UNISTD_H
|
|
#include <unistd.h>
|
|
@@ -3739,13 +3740,13 @@ public:
|
|
{
|
|
prefix = Config::getRootDirectory();
|
|
if (prefix.isEmpty() && !GetProgramFilesDir(prefix))
|
|
- prefix = FB_CONFDIR[0] ? FB_CONFDIR : FB_PREFIX;
|
|
+ prefix = FB_CONFDIR[0] ? single_path_relocation(FB_BINDIR,FB_CONFDIR) : single_path_relocation(FB_BINDIR,FB_PREFIX);
|
|
}
|
|
catch (const Firebird::Exception&)
|
|
{
|
|
// CVC: Presumably here we failed because the config file can't be located.
|
|
if (!GetProgramFilesDir(prefix))
|
|
- prefix = FB_CONFDIR[0] ? FB_CONFDIR : FB_PREFIX;
|
|
+ prefix = FB_CONFDIR[0] ? single_path_relocation(FB_BINDIR,FB_CONFDIR) : single_path_relocation(FB_BINDIR,FB_PREFIX);
|
|
}
|
|
prefix.copyTo(fb_prefix_val, sizeof(fb_prefix_val));
|
|
fb_prefix = fb_prefix_val;
|
|
@@ -3828,7 +3829,7 @@ public:
|
|
Firebird::PathName msgPrefix;
|
|
if (!fb_utils::readenv(FB_MSG_ENV, msgPrefix))
|
|
{
|
|
- msgPrefix = FB_MSGDIR[0] ? FB_MSGDIR : prefix;
|
|
+ msgPrefix = FB_MSGDIR[0] ? single_path_relocation(FB_BINDIR,FB_MSGDIR) : prefix;
|
|
}
|
|
msgPrefix.copyTo(fb_prefix_msg_val, sizeof(fb_prefix_msg_val));
|
|
fb_prefix_msg = fb_prefix_msg_val;
|
|
--
|
|
2.4.3
|
|
|
|
From b3c77d3f7c0cb477e540a310692a257c5fd5d3f1 Mon Sep 17 00:00:00 2001
|
|
From: Alexpux <alexey.pawlow@gmail.com>
|
|
Date: Tue, 16 Jun 2015 13:36:14 +0300
|
|
Subject: [PATCH] Fix linking Engine dll for mingw.
|
|
|
|
---
|
|
builds/posix/make.shared.variables | 1 +
|
|
1 file changed, 1 insertion(+)
|
|
|
|
diff --git a/builds/posix/make.shared.variables b/builds/posix/make.shared.variables
|
|
index 18903b9..cc00a80 100644
|
|
--- a/builds/posix/make.shared.variables
|
|
+++ b/builds/posix/make.shared.variables
|
|
@@ -67,6 +67,7 @@ AllObjects += $(Remote_Common) $(Remote_Server) $(Remote_Client)
|
|
Engine_Objects:= $(call dirObjects,jrd) $(call dirObjects,dsql) $(call dirObjects,jrd/extds) \
|
|
$(call dirObjects,jrd/recsrc) $(call dirObjects,jrd/trace) \
|
|
$(call makeObjects,lock,lock.cpp)
|
|
+Engine_Objects:= $(filter-out $(call makeObjects,jrd/$(PLATFORM_PATH),ibinitdll.cpp), $(Engine_Objects))
|
|
|
|
AllObjects += $(Engine_Objects)
|
|
|
|
--
|
|
2.4.3
|
|
|
|
From e09c3e5489366841c76627a8dc72cb3a55c02c0a Mon Sep 17 00:00:00 2001
|
|
From: Alexpux <alexey.pawlow@gmail.com>
|
|
Date: Tue, 16 Jun 2015 14:07:13 +0300
|
|
Subject: [PATCH] cmake: Mingw use external ICU. Customize files layout.
|
|
|
|
---
|
|
CMakeLists.txt | 10 ++++++----
|
|
src/CMakeLists.txt | 2 +-
|
|
2 files changed, 7 insertions(+), 5 deletions(-)
|
|
|
|
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
|
index e8cb276..2f8b4fe 100644
|
|
--- a/CMakeLists.txt
|
|
+++ b/CMakeLists.txt
|
|
@@ -98,7 +98,7 @@ if (XCODE)
|
|
string(TOUPPER ${conf} conf2)
|
|
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_${conf2} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${conf}/bin)
|
|
endforeach()
|
|
-elseif (UNIX)
|
|
+elseif (UNIX OR MINGW)
|
|
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${output_dir}/bin)
|
|
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${output_dir}/bin)
|
|
endif()
|
|
@@ -113,7 +113,7 @@ endif()
|
|
# icu
|
|
########################################
|
|
|
|
-if (UNIX)
|
|
+if (UNIX OR MINGW)
|
|
if (NOT ICU_INCLUDE_DIR)
|
|
find_path(ICU_INCLUDE_DIR unicode/ucnv.h
|
|
PATHS
|
|
@@ -159,7 +159,9 @@ set(FB_SERVICE_NAME "gds_db")
|
|
set(FB_SERVICE_PORT 3050)
|
|
|
|
if (WIN32)
|
|
+ if (NOT MINGW)
|
|
set(FB_PREFIX "c:\\\\Program Files\\\\Firebird\\\\")
|
|
+ endif()
|
|
set(FB_IPC_NAME "FIREBIRD")
|
|
endif()
|
|
|
|
@@ -192,7 +194,7 @@ if (WIN32)
|
|
endif()
|
|
endif(MSVC)
|
|
|
|
- set(LIB_Ws2_32 Ws2_32)
|
|
+ set(LIB_Ws2_32 ws2_32)
|
|
set(LIB_comctl32 comctl32)
|
|
set(LIB_mpr mpr)
|
|
set(LIB_version version)
|
|
@@ -249,7 +251,7 @@ endif()
|
|
#
|
|
################################################################################
|
|
|
|
-if (WIN32)
|
|
+if (MSVC)
|
|
# icu
|
|
if (NOT ICU_EXTRACT)
|
|
message(STATUS "Extracting pre-built ICU")
|
|
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
|
|
index 9ca8421..414ea01 100644
|
|
--- a/src/CMakeLists.txt
|
|
+++ b/src/CMakeLists.txt
|
|
@@ -852,7 +852,7 @@ project_group (boot_isql Boot)
|
|
|
|
endif() # if (NOT CMAKE_CROSSCOMPILING)
|
|
|
|
-if (WIN32)
|
|
+if (MSVC)
|
|
add_custom_command(
|
|
TARGET boot_isql
|
|
POST_BUILD
|
|
--
|
|
2.4.3
|
|
|