3038 lines
95 KiB
Diff
3038 lines
95 KiB
Diff
From 040e7991a66b7a116c2b2aec3845070feae9b1d6 Mon Sep 17 00:00:00 2001
|
|
From: Alexpux <alexey.pawlow@gmail.com>
|
|
Date: Wed, 19 Nov 2014 07:39:37 +0300
|
|
Subject: [PATCH] Remove hardcoded march to allow 64-bit builds.
|
|
|
|
---
|
|
builds/posix/prefix.mingw | 4 ++--
|
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/builds/posix/prefix.mingw b/builds/posix/prefix.mingw
|
|
index fd36abe..04e0978 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 -march=i586 -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
|
|
-DEV_FLAGS=-ggdb -march=i586 -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
|
|
+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
|
|
+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
|
|
|
|
PLATFORM_PATH=os/win32
|
|
|
|
--
|
|
2.4.3
|
|
|
|
From 388764fb68898fe4f2d2c2032eb20dd537221b32 Mon Sep 17 00:00:00 2001
|
|
From: Alexpux <alexey.pawlow@gmail.com>
|
|
Date: Wed, 19 Nov 2014 06:18:02 +0300
|
|
Subject: [PATCH] Always use Win32 threads for mingw.
|
|
|
|
---
|
|
src/jrd/common.h | 2 +-
|
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
|
|
diff --git a/src/jrd/common.h b/src/jrd/common.h
|
|
index ae54880..49e8b60 100644
|
|
--- a/src/jrd/common.h
|
|
+++ b/src/jrd/common.h
|
|
@@ -65,7 +65,7 @@
|
|
#include <unistd.h>
|
|
#endif
|
|
|
|
-#if defined(_POSIX_THREADS) && _POSIX_THREADS >= 200112L
|
|
+#if defined(_POSIX_THREADS) && _POSIX_THREADS >= 200112L && !defined(WIN_NT)
|
|
// above check is generally true. However, we use pthreads on some platforms
|
|
// where _POSIX_THREADS is defined to "1" or not even defined at all!
|
|
#define USE_POSIX_THREADS
|
|
--
|
|
2.4.3
|
|
|
|
From 25ab2a5c3452e500fb88929f8b31b4b15e9e37ad Mon Sep 17 00:00:00 2001
|
|
From: Alexpux <alexey.pawlow@gmail.com>
|
|
Date: Wed, 19 Nov 2014 08:56:28 +0300
|
|
Subject: [PATCH] Define AMD64 for 64-bit mingw.
|
|
|
|
---
|
|
configure.in | 7 ++++++-
|
|
1 file changed, 6 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/configure.in b/configure.in
|
|
index 86e89f1..d345348 100644
|
|
--- a/configure.in
|
|
+++ b/configure.in
|
|
@@ -463,7 +463,12 @@ dnl CPU_TYPE=ppc64
|
|
EDITLINE_FLG=N
|
|
RAW_DEVICES_FLG=N
|
|
SHRLIB_EXT=dll
|
|
- ICU_PLATFORM=MinGW
|
|
+ ICU_PLATFORM=MinGW
|
|
+ case "$target" in
|
|
+ x86_64-*-mingw*)
|
|
+ AC_DEFINE(AMD64, 1, [Define this if CPU is amd64])
|
|
+ ;;
|
|
+ esac
|
|
;;
|
|
|
|
*)
|
|
--
|
|
2.4.3
|
|
|
|
From eebccb1a6b54c304e71295b4e0681fb1bc06fc59 Mon Sep 17 00:00:00 2001
|
|
From: Alexpux <alexey.pawlow@gmail.com>
|
|
Date: Wed, 19 Nov 2014 09:20:35 +0300
|
|
Subject: [PATCH] mingw-w64 have isinf
|
|
|
|
---
|
|
src/common/classes/FpeControl.h | 2 +-
|
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
|
|
diff --git a/src/common/classes/FpeControl.h b/src/common/classes/FpeControl.h
|
|
index e0e36ac..363cad5 100644
|
|
--- a/src/common/classes/FpeControl.h
|
|
+++ b/src/common/classes/FpeControl.h
|
|
@@ -217,7 +217,7 @@ private:
|
|
|
|
|
|
// getting a portable isinf() is harder than you would expect
|
|
-#ifdef WIN_NT
|
|
+#if defined(WIN_NT) && !defined(__MINGW32__)
|
|
inline bool isinf(double x)
|
|
{
|
|
return (!_finite (x) && !isnan(x));
|
|
--
|
|
2.4.3
|
|
|
|
From 74d9460e370d88aace248cb83a77c70c998c6d9b Mon Sep 17 00:00:00 2001
|
|
From: Alexpux <alexey.pawlow@gmail.com>
|
|
Date: Wed, 19 Nov 2014 09:57:27 +0300
|
|
Subject: [PATCH] Fix cast error.
|
|
|
|
---
|
|
src/remote/inet.cpp | 4 ++--
|
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/src/remote/inet.cpp b/src/remote/inet.cpp
|
|
index c3816a8..f05de04 100644
|
|
--- a/src/remote/inet.cpp
|
|
+++ b/src/remote/inet.cpp
|
|
@@ -1851,7 +1851,7 @@ static void wsaExitHandler(void*)
|
|
}
|
|
|
|
|
|
-static int fork(SOCKET old_handle, USHORT flag)
|
|
+static int fork(SOCKET old_handle, DWORD flag)
|
|
{
|
|
/**************************************
|
|
*
|
|
@@ -1908,7 +1908,7 @@ static int fork(SOCKET old_handle, USHORT flag)
|
|
|
|
THREAD_ENTRY_DECLARE forkThread(THREAD_ENTRY_PARAM arg)
|
|
{
|
|
- const USHORT flag = (USHORT) arg;
|
|
+ const DWORD flag = (uintptr_t) arg;
|
|
|
|
while (!INET_shutting_down)
|
|
{
|
|
--
|
|
2.4.3
|
|
|
|
From ca424f7f14051b4bb2dcb6f2a78f62dec372ed47 Mon Sep 17 00:00:00 2001
|
|
From: Alexpux <alexey.pawlow@gmail.com>
|
|
Date: Wed, 19 Nov 2014 10:08:42 +0300
|
|
Subject: [PATCH] mingw-w64 don't need hack for SecPkgContext_AccessToken
|
|
|
|
---
|
|
src/auth/trusted/AuthSspi.cpp | 2 +-
|
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
|
|
diff --git a/src/auth/trusted/AuthSspi.cpp b/src/auth/trusted/AuthSspi.cpp
|
|
index d420041..15b859c 100644
|
|
--- a/src/auth/trusted/AuthSspi.cpp
|
|
+++ b/src/auth/trusted/AuthSspi.cpp
|
|
@@ -87,7 +87,7 @@ AuthSspi::~AuthSspi()
|
|
|
|
bool AuthSspi::checkAdminPrivilege(PCtxtHandle phContext) const
|
|
{
|
|
-#if defined (__GNUC__)
|
|
+#if defined (__GNUC__) && !defined(__MINGW64_VERSION_MAJOR)
|
|
// ASF: MinGW hack.
|
|
struct SecPkgContext_AccessToken
|
|
{
|
|
--
|
|
2.4.3
|
|
|
|
From ee27fb5a5b44aaa6c8cdf2e9bb98a8cafc85e51f Mon Sep 17 00:00:00 2001
|
|
From: Alexpux <alexey.pawlow@gmail.com>
|
|
Date: Wed, 19 Nov 2014 10:09:19 +0300
|
|
Subject: [PATCH] Use modern ICU libraries when link with system wide ICU.
|
|
|
|
---
|
|
builds/posix/prefix.mingw | 4 ++++
|
|
1 file changed, 4 insertions(+)
|
|
|
|
diff --git a/builds/posix/prefix.mingw b/builds/posix/prefix.mingw
|
|
index 04e0978..7523670 100644
|
|
--- a/builds/posix/prefix.mingw
|
|
+++ b/builds/posix/prefix.mingw
|
|
@@ -19,6 +19,10 @@
|
|
# 2003-Sep-27 BRS Removed IPSERVER after XNET is included
|
|
#
|
|
|
|
+ifeq ($(STD_ICU),true)
|
|
+ ICU_LIBS= -licuuc -licudt -licuin
|
|
+endif
|
|
+
|
|
# -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
|
|
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
|
|
--
|
|
2.4.3
|
|
|
|
From 091fa8c6af051c2b2c28cc3fe7151fdcfbada1a7 Mon Sep 17 00:00:00 2001
|
|
From: Alexpux <alexey.pawlow@gmail.com>
|
|
Date: Wed, 19 Nov 2014 13:28:03 +0300
|
|
Subject: [PATCH] mingw-w64 don't have win98 support.
|
|
|
|
---
|
|
src/common/classes/locks.cpp | 2 +-
|
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
|
|
diff --git a/src/common/classes/locks.cpp b/src/common/classes/locks.cpp
|
|
index bbb9440..de6b2f8 100644
|
|
--- a/src/common/classes/locks.cpp
|
|
+++ b/src/common/classes/locks.cpp
|
|
@@ -28,7 +28,7 @@
|
|
#include "../../include/firebird.h"
|
|
#include "../../jrd/common.h"
|
|
|
|
-#if defined(WIN_NT)
|
|
+#if defined(WIN_NT) && !defined(__MINGW64_VERSION_MAJOR)
|
|
// minimum win32 version: win98 / winnt4 SP3
|
|
#define _WIN32_WINNT 0x0403
|
|
#endif
|
|
--
|
|
2.4.3
|
|
|
|
From 0d645a60d9428071de004b66a5b42da71be6b44c Mon Sep 17 00:00:00 2001
|
|
From: Alexpux <alexey.pawlow@gmail.com>
|
|
Date: Wed, 19 Nov 2014 15:47:34 +0300
|
|
Subject: [PATCH] Fix using function pointer.
|
|
|
|
---
|
|
src/common/classes/locks.cpp | 2 +-
|
|
src/common/classes/locks.h | 7 +++----
|
|
2 files changed, 4 insertions(+), 5 deletions(-)
|
|
|
|
diff --git a/src/common/classes/locks.cpp b/src/common/classes/locks.cpp
|
|
index de6b2f8..321da36 100644
|
|
--- a/src/common/classes/locks.cpp
|
|
+++ b/src/common/classes/locks.cpp
|
|
@@ -124,7 +124,7 @@ BOOL WINAPI TryEnterCriticalSection_Win9X(CRITICAL_SECTION* cs)
|
|
|
|
// On Win 98 and Win ME TryEnterCriticalSection is defined, but not implemented
|
|
// So direct linking to it won't hurt and will signal our incompatibility with Win 95
|
|
-TryEnterCS::tTryEnterCriticalSection* TryEnterCS::m_funct = &TryEnterCriticalSection;
|
|
+TryEnterCS::tTryEnterCriticalSection TryEnterCS::m_funct = TryEnterCriticalSection;
|
|
|
|
static TryEnterCS tryEnterCS;
|
|
|
|
diff --git a/src/common/classes/locks.h b/src/common/classes/locks.h
|
|
index 75ba194..d2ddb7d 100644
|
|
--- a/src/common/classes/locks.h
|
|
+++ b/src/common/classes/locks.h
|
|
@@ -60,14 +60,13 @@ public:
|
|
|
|
static bool tryEnter(LPCRITICAL_SECTION lpCS)
|
|
{
|
|
- return ((*m_funct) (lpCS) == TRUE);
|
|
+ return ((m_funct) (lpCS) == TRUE);
|
|
}
|
|
|
|
private:
|
|
- typedef WINBASEAPI BOOL WINAPI tTryEnterCriticalSection
|
|
- (LPCRITICAL_SECTION lpCriticalSection);
|
|
+ typedef BOOL WINAPI (*tTryEnterCriticalSection)(LPCRITICAL_SECTION lpCriticalSection);
|
|
|
|
- static tTryEnterCriticalSection* m_funct;
|
|
+ static tTryEnterCriticalSection m_funct;
|
|
};
|
|
|
|
class Mutex
|
|
--
|
|
2.4.3
|
|
|
|
From fe9183946307439cf80717e0a5d73834ff82cde1 Mon Sep 17 00:00:00 2001
|
|
From: Alexpux <alexey.pawlow@gmail.com>
|
|
Date: Wed, 19 Nov 2014 18:54:37 +0300
|
|
Subject: [PATCH] Fix redefinition of matherr.
|
|
|
|
---
|
|
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 c5a620d..9017228 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 1f2879b2cd476e9260c335951a21f0d5d9876618 Mon Sep 17 00:00:00 2001
|
|
From: Alexpux <alexey.pawlow@gmail.com>
|
|
Date: Wed, 19 Nov 2014 21:44:53 +0300
|
|
Subject: [PATCH] Don't export gds__print_pool as it not part of API according
|
|
to gds_proto.h:135
|
|
|
|
---
|
|
src/jrd/gds.cpp | 2 +-
|
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
|
|
diff --git a/src/jrd/gds.cpp b/src/jrd/gds.cpp
|
|
index e3949fc..0b6852f 100644
|
|
--- a/src/jrd/gds.cpp
|
|
+++ b/src/jrd/gds.cpp
|
|
@@ -1226,7 +1226,7 @@ void API_ROUTINE gds__log(const TEXT* text, ...)
|
|
#endif
|
|
}
|
|
|
|
-void API_ROUTINE gds__print_pool(MemoryPool* pool, const TEXT* text, ...)
|
|
+void gds__print_pool(MemoryPool* pool, const TEXT* text, ...)
|
|
{
|
|
/**************************************
|
|
*
|
|
--
|
|
2.4.3
|
|
|
|
From 0bfbf421ab2e5dcfe9af435c88c86a114f38c94e Mon Sep 17 00:00:00 2001
|
|
From: Alexpux <alexey.pawlow@gmail.com>
|
|
Date: Wed, 19 Nov 2014 22:06:27 +0300
|
|
Subject: [PATCH] mingw-w64 have fenv.h
|
|
|
|
---
|
|
src/common/classes/FpeControl.h | 4 ++--
|
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/src/common/classes/FpeControl.h b/src/common/classes/FpeControl.h
|
|
index 363cad5..93e48be 100644
|
|
--- a/src/common/classes/FpeControl.h
|
|
+++ b/src/common/classes/FpeControl.h
|
|
@@ -30,7 +30,7 @@
|
|
#define CLASSES_FPE_CONTROL_H
|
|
|
|
#include <math.h>
|
|
-#if defined(WIN_NT)
|
|
+#if defined(_MSC_VER)
|
|
#include <float.h>
|
|
#else
|
|
#include <fenv.h>
|
|
@@ -78,7 +78,7 @@ public:
|
|
}
|
|
}
|
|
|
|
-#if defined(WIN_NT)
|
|
+#if defined(_MSC_VER)
|
|
static void maskAll() throw()
|
|
{
|
|
_clearfp(); // always call _clearfp() before setting control word
|
|
--
|
|
2.4.3
|
|
|
|
From 2451d9f71a68b84d3256d8e71b2feefc2508829e Mon Sep 17 00:00:00 2001
|
|
From: Alexpux <alexey.pawlow@gmail.com>
|
|
Date: Fri, 21 Nov 2014 12:38:29 +0300
|
|
Subject: [PATCH] Fix cast error for 64-bit.
|
|
|
|
---
|
|
src/remote/os/win32/srvr_w32.cpp | 2 +-
|
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
|
|
diff --git a/src/remote/os/win32/srvr_w32.cpp b/src/remote/os/win32/srvr_w32.cpp
|
|
index fd0f75c..a0bf167 100644
|
|
--- a/src/remote/os/win32/srvr_w32.cpp
|
|
+++ b/src/remote/os/win32/srvr_w32.cpp
|
|
@@ -269,7 +269,7 @@ int WINAPI WinMain(HINSTANCE hThisInst, HINSTANCE /*hPrevInst*/, LPSTR lpszArgs,
|
|
else if (server_flag & SRVR_wnet)
|
|
port = WNET_reconnect(connection_handle, status_vector);
|
|
else if (server_flag & SRVR_xnet)
|
|
- port = XNET_reconnect((ULONG) connection_handle, status_vector);
|
|
+ port = XNET_reconnect((ULONG_PTR) connection_handle, status_vector);
|
|
|
|
if (port) {
|
|
service_connection(port);
|
|
--
|
|
2.4.3
|
|
|
|
From ae55d9f83c245655ad4cfbc2c7de79bcac5b3774 Mon Sep 17 00:00:00 2001
|
|
From: Alexpux <alexey.pawlow@gmail.com>
|
|
Date: Fri, 21 Nov 2014 14:21:32 +0300
|
|
Subject: [PATCH] Fix source extension.
|
|
|
|
---
|
|
builds/posix/prefix.mingw | 2 +-
|
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
|
|
diff --git a/builds/posix/prefix.mingw b/builds/posix/prefix.mingw
|
|
index 7523670..ac1327c 100644
|
|
--- a/builds/posix/prefix.mingw
|
|
+++ b/builds/posix/prefix.mingw
|
|
@@ -31,7 +31,7 @@ PLATFORM_PATH=os/win32
|
|
|
|
OS_SPECIFIC_Files=thd_priority.cpp
|
|
|
|
-OS_ServerFiles= os/win32/srvr_w32 os/win32/window.cpp os/win32/chop.cpp os/win32/property.cpp os/win32/cntl.cpp
|
|
+OS_ServerFiles= os/win32/srvr_w32.cpp os/win32/window.cpp os/win32/chop.cpp os/win32/property.cpp os/win32/cntl.cpp
|
|
|
|
# Override link command for implicit stdc++ linking
|
|
LIB_LINK=$(LD)
|
|
--
|
|
2.4.3
|
|
|
|
From 54226188d61f2edbbe8453b8f93e7c8a6288913e Mon Sep 17 00:00:00 2001
|
|
From: Alexpux <alexey.pawlow@gmail.com>
|
|
Date: Sat, 22 Nov 2014 12:03:41 +0300
|
|
Subject: [PATCH] Move extra mingw sources definitions for fbintl to
|
|
Makefile.in.intl
|
|
|
|
---
|
|
builds/posix/Makefile.in.intl | 9 ++++++++-
|
|
1 file changed, 8 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/builds/posix/Makefile.in.intl b/builds/posix/Makefile.in.intl
|
|
index 57ecb34..8d1e4e4 100644
|
|
--- a/builds/posix/Makefile.in.intl
|
|
+++ b/builds/posix/Makefile.in.intl
|
|
@@ -52,6 +52,13 @@ INTL_Files1= ld.cpp cv_narrow.cpp \
|
|
cs_ksc.cpp cv_ksc.cpp lc_ksc.cpp \
|
|
cs_icu.cpp cv_icu.cpp lc_icu.cpp
|
|
|
|
+ifeq ($(PLATFORM),win32)
|
|
+INTL_Files2 += $(FBCONFIG_Sources) \
|
|
+ $(FBCLASSES_MsgSources) \
|
|
+ $(OS_SPECIFIC_Sources) \
|
|
+ jrd/isc.cpp jrd/gds.cpp \
|
|
+ common/utils.cpp
|
|
+endif
|
|
# use INTL_Files2 in prefix file for host-specific additional files
|
|
INTL_Sources= $(addprefix intl/, $(INTL_Files1)) $(INTL_Files2) \
|
|
jrd/IntlUtil.cpp jrd/unicode_util.cpp jrd/CharSet.cpp jrd/mod_loader.cpp
|
|
@@ -61,7 +68,7 @@ INTL_Objects = $(addprefix $(OBJ)/, $(addsuffix .o, $(basename $(INTL_Sources)))
|
|
# SD: Shared variables are overriden to exclude extra files and
|
|
# this way fix 'unresolved symbol' errors when some unused routines call
|
|
# other routines from not included modules
|
|
-FBCLASSES_ClientFiles=alloc.cpp locks.cpp fb_string.cpp timestamp.cpp
|
|
+FBCLASSES_ClientFiles=alloc.cpp locks.cpp fb_string.cpp timestamp.cpp TempFile.cpp
|
|
|
|
|
|
AllObjects = $(INTL_Objects)
|
|
--
|
|
2.4.3
|
|
|
|
From 96ce4d2f57a06a1643b5864cc74fb00928b237fd Mon Sep 17 00:00:00 2001
|
|
From: Alexpux <alexey.pawlow@gmail.com>
|
|
Date: Sat, 22 Nov 2014 22:59:59 +0300
|
|
Subject: [PATCH] Add missing sources for utils building.
|
|
|
|
---
|
|
builds/posix/Makefile.in.client.gsec | 2 +-
|
|
builds/posix/Makefile.in.client.util | 4 ++--
|
|
builds/posix/Makefile.in.embed.util | 8 ++++----
|
|
builds/posix/Makefile.in.fbtrace | 2 +-
|
|
4 files changed, 8 insertions(+), 8 deletions(-)
|
|
|
|
diff --git a/builds/posix/Makefile.in.client.gsec b/builds/posix/Makefile.in.client.gsec
|
|
index 2efa520..803ea4f 100644
|
|
--- a/builds/posix/Makefile.in.client.gsec
|
|
+++ b/builds/posix/Makefile.in.client.gsec
|
|
@@ -29,7 +29,7 @@ include $(ROOT)/gen/make.shared.variables
|
|
|
|
@SET_MAKE@
|
|
|
|
-GSEC_Other_Sources = jrd/isc_file.cpp jrd/ThreadData.cpp common/UtilSvc.cpp jrd/enc.cpp \
|
|
+GSEC_Other_Sources = jrd/isc.cpp jrd/isc_file.cpp jrd/ThreadData.cpp common/UtilSvc.cpp jrd/enc.cpp \
|
|
jrd/sha.cpp jrd/guid.cpp
|
|
GSEC_Files = gsec.cpp call_service.cpp gsecMain.cpp security.cpp
|
|
GSEC_Sources = $(addprefix utilities/gsec/, $(GSEC_Files)) $(GSEC_Other_Sources)
|
|
diff --git a/builds/posix/Makefile.in.client.util b/builds/posix/Makefile.in.client.util
|
|
index dab8911..70bfab7 100644
|
|
--- a/builds/posix/Makefile.in.client.util
|
|
+++ b/builds/posix/Makefile.in.client.util
|
|
@@ -40,14 +40,14 @@ include $(ROOT)/gen/make.shared.variables
|
|
@SET_MAKE@
|
|
|
|
|
|
-LOCKPRINT_Other_Sources = jrd/isc_sync.cpp jrd/isc.cpp jrd/db_alias.cpp \
|
|
+LOCKPRINT_Other_Sources = jrd/isc_ipc.cpp jrd/isc_sync.cpp jrd/isc.cpp jrd/db_alias.cpp \
|
|
common/config/config.cpp common/config/config_file.cpp $(OS_SPECIFIC_Sources)
|
|
LOCKPRINT_Files= print.cpp
|
|
LOCKPRINT_Sources = $(addprefix lock/, $(LOCKPRINT_Files)) $(LOCKPRINT_Other_Sources)
|
|
LOCKPRINT_Objects = $(addprefix $(OBJ)/, $(addsuffix .o, $(basename $(LOCKPRINT_Sources)))) \
|
|
$(FBCONFIG_Objects)
|
|
|
|
-NBACKUP_Other_Sources = jrd/isc_file.cpp jrd/db_alias.cpp common/UtilSvc.cpp $(OS_SPECIFIC_Sources)
|
|
+NBACKUP_Other_Sources = jrd/isc.cpp jrd/isc_file.cpp jrd/db_alias.cpp common/UtilSvc.cpp $(OS_SPECIFIC_Sources)
|
|
NBACKUP_Files= nbackup.cpp nbackup/nbkMain.cpp
|
|
NBACKUP_Sources = $(addprefix utilities/, $(NBACKUP_Files)) $(NBACKUP_Other_Sources)
|
|
NBACKUP_Objects = $(addprefix $(OBJ)/, $(addsuffix .o, $(basename $(NBACKUP_Sources)))) \
|
|
diff --git a/builds/posix/Makefile.in.embed.util b/builds/posix/Makefile.in.embed.util
|
|
index 3d1a98f..8488a05 100644
|
|
--- a/builds/posix/Makefile.in.embed.util
|
|
+++ b/builds/posix/Makefile.in.embed.util
|
|
@@ -40,7 +40,7 @@ include $(ROOT)/gen/make.shared.variables
|
|
@SET_MAKE@
|
|
|
|
|
|
-LOCKPRINT_Other_Sources += jrd/isc_sync.cpp jrd/isc.cpp jrd/db_alias.cpp \
|
|
+LOCKPRINT_Other_Sources += jrd/isc_ipc.cpp jrd/isc_sync.cpp jrd/isc.cpp jrd/db_alias.cpp \
|
|
$(OS_SPECIFIC_Sources)
|
|
|
|
LOCKPRINT_Files= print.cpp
|
|
@@ -48,7 +48,7 @@ LOCKPRINT_Sources = $(addprefix lock/, $(LOCKPRINT_Files)) $(LOCKPRINT_Other_Sou
|
|
LOCKPRINT_Objects = $(addprefix $(OBJ)/, $(addsuffix .o, $(basename $(LOCKPRINT_Sources)))) \
|
|
$(FBCONFIG_Objects)
|
|
|
|
-NBACKUP_Other_Sources = jrd/isc_file.cpp jrd/db_alias.cpp common/UtilSvc.cpp $(OS_SPECIFIC_Sources)
|
|
+NBACKUP_Other_Sources = jrd/isc.cpp jrd/isc_file.cpp jrd/db_alias.cpp common/UtilSvc.cpp $(OS_SPECIFIC_Sources)
|
|
|
|
NBACKUP_Files= nbackup.cpp nbackup/nbkMain.cpp
|
|
NBACKUP_Sources = $(addprefix utilities/, $(NBACKUP_Files)) $(NBACKUP_Other_Sources)
|
|
@@ -65,7 +65,7 @@ DROP_Objects = $(addprefix $(OBJ)/, $(addsuffix .o, $(basename $(DROP_Sources)))
|
|
|
|
|
|
GSEC_Other_Sources = jrd/enc.cpp jrd/sha.cpp jrd/guid.cpp \
|
|
-jrd/isc_file.cpp common/config/config.cpp common/config/config_file.cpp \
|
|
+jrd/isc.cpp jrd/isc_file.cpp common/config/config.cpp common/config/config_file.cpp \
|
|
common/config/dir_list.cpp \
|
|
common/UtilSvc.cpp jrd/ThreadData.cpp \
|
|
$(OS_SPECIFIC_Sources)
|
|
@@ -76,7 +76,7 @@ GSEC_Objects = $(addprefix $(OBJ)/, $(addsuffix .o, $(basename $(GSEC_Sources)))
|
|
|
|
|
|
GSTAT_Other_Sources = jrd/btn.cpp jrd/db_alias.cpp common/utils.cpp jrd/ods.cpp \
|
|
-common/UtilSvc.cpp jrd/ThreadData.cpp jrd/isc_file.cpp $(OS_SPECIFIC_Sources)
|
|
+common/UtilSvc.cpp jrd/ThreadData.cpp jrd/isc.cpp jrd/isc_file.cpp $(OS_SPECIFIC_Sources)
|
|
|
|
GSTAT_Files = dba.epp ppg.cpp gstatMain.cpp
|
|
GSTAT_Sources = $(addprefix utilities/gstat/, $(GSTAT_Files)) $(GSTAT_Other_Sources)
|
|
diff --git a/builds/posix/Makefile.in.fbtrace b/builds/posix/Makefile.in.fbtrace
|
|
index 0f1a09e..daee0d8 100644
|
|
--- a/builds/posix/Makefile.in.fbtrace
|
|
+++ b/builds/posix/Makefile.in.fbtrace
|
|
@@ -49,7 +49,7 @@ FBTRACE_UTIL_Objects = $(addprefix $(OBJ)/, $(addsuffix .o, $(basename $(FBTRACE
|
|
|
|
|
|
FBTRACE_OTHER_Sources = $(OS_SPECIFIC_Sources) $(TRACE_OS_Sources) \
|
|
- jrd/isc.cpp jrd/isc_file.cpp jrd/CharSet.cpp jrd/TextType.cpp \
|
|
+ jrd/isc.cpp jrd/isc_file.cpp jrd/isc_sync.cpp jrd/CharSet.cpp jrd/TextType.cpp \
|
|
jrd/IntlUtil.cpp jrd/unicode_util.cpp common/classes/ClumpletReader.cpp common/utils.cpp
|
|
|
|
FBTRACE_OTHER_Objects = $(addprefix $(OBJ)/, $(addsuffix .o, $(basename $(FBTRACE_OTHER_Sources))))
|
|
--
|
|
2.4.3
|
|
|
|
From 665da4221ab9a54a2d927f506956e8f1ee72bb00 Mon Sep 17 00:00:00 2001
|
|
From: Alexpux <alexey.pawlow@gmail.com>
|
|
Date: Sun, 23 Nov 2014 00:13:24 +0300
|
|
Subject: [PATCH] smtp_server: Add win32 platform files.
|
|
|
|
---
|
|
builds/posix/Makefile.in.inet_server | 3 +++
|
|
1 file changed, 3 insertions(+)
|
|
|
|
diff --git a/builds/posix/Makefile.in.inet_server b/builds/posix/Makefile.in.inet_server
|
|
index d59b07a..ad471fd 100644
|
|
--- a/builds/posix/Makefile.in.inet_server
|
|
+++ b/builds/posix/Makefile.in.inet_server
|
|
@@ -40,6 +40,9 @@ include $(ROOT)/gen/make.shared.variables
|
|
|
|
SERVER_Files = server_stub.cpp
|
|
SERVER_Sources = $(addprefix remote/, $(SERVER_Files))
|
|
+ifeq ($(PLATFORM),win32)
|
|
+SERVER_Sources += utilities/nbackup/nbkMain.cpp common/UtilSvc.cpp
|
|
+endif
|
|
SERVER_Objects = $(addprefix $(OBJ)/, $(addsuffix .o, $(basename $(SERVER_Sources))))
|
|
|
|
AllObjects = $(SERVER_Objects)
|
|
--
|
|
2.4.3
|
|
|
|
From 19ad463e1d0eb2fbe94a51fb7bd3644feb1bcc05 Mon Sep 17 00:00:00 2001
|
|
From: Alexpux <alexey.pawlow@gmail.com>
|
|
Date: Sun, 23 Nov 2014 13:27:02 +0300
|
|
Subject: [PATCH] Fix building net_server and mp_server with mingw
|
|
|
|
---
|
|
builds/posix/Makefile.in.inet_server | 4 ++--
|
|
builds/posix/Makefile.in.smp_server | 4 ++--
|
|
2 files changed, 4 insertions(+), 4 deletions(-)
|
|
|
|
diff --git a/builds/posix/Makefile.in.inet_server b/builds/posix/Makefile.in.inet_server
|
|
index ad471fd..99ddd19 100644
|
|
--- a/builds/posix/Makefile.in.inet_server
|
|
+++ b/builds/posix/Makefile.in.inet_server
|
|
@@ -54,8 +54,8 @@ Dependencies = $(AllObjects:.o=.d)
|
|
# but we must ensure it's existance
|
|
fb_inet_server : $(LIBFBEMBED_SO) $(FB_CLASSIC_SERVER)
|
|
|
|
-$(FB_CLASSIC_SERVER): $(SERVER_Objects)
|
|
- $(EXE_LINK) $(LINK_EMPTY_SYMBOLS) $(LINK_OPTS) $^ -o $@ $(FBEMBED_LINK) $(LIB_GUI) $(LINK_LIBS)
|
|
+$(FB_CLASSIC_SERVER): $(SERVER_Objects) $(COMMON_Objects) $(CLUMPLETS_Objects) $(FBCONFIG_Objects) $(OS_SPECIFIC_Objects) $(DSQL_Objects) $(BURP_Objects) $(ALICE_Objects) $(LOCK_Objects) $(INTERFACE_Objects) $(NBACKUP_SERVER_Objects) $(NTRACE_SERVER_Objects) $(SECURITY_Objects) $(JRD_Objects)
|
|
+ $(EXE_LINK) $(LINK_EMPTY_SYMBOLS) $(LINK_OPTS) $^ -o $@ $(FBEMBED_LINK) $(LIB_GUI) $(ICU_LIBS) $(LINK_LIBS)
|
|
|
|
include $(ROOT)/gen/make.shared.targets
|
|
|
|
diff --git a/builds/posix/Makefile.in.smp_server b/builds/posix/Makefile.in.smp_server
|
|
index 1bc3872..f386021 100644
|
|
--- a/builds/posix/Makefile.in.smp_server
|
|
+++ b/builds/posix/Makefile.in.smp_server
|
|
@@ -59,8 +59,8 @@ $(OS_SPECIFIC_Objects)
|
|
|
|
fb_smp_server: $(FB_DAEMON)
|
|
|
|
-$(FB_DAEMON): $(SERVER_Objects)
|
|
- $(EXE_LINK) $(LINK_EMPTY_SYMBOLS) $(LINK_OPTS) $^ -o $@ $(FBEMBED_LINK) $(LINK_LIBS)
|
|
+$(FB_DAEMON): $(SERVER_Objects) $(DSQL_Objects) $(BURP_Objects) $(ALICE_Objects) $(JRD_Objects) $(LOCK_Objects) $(INTERFACE_Objects) $(SECURITY_Objects) $(NBACKUP_SERVER_Objects) $(NTRACE_SERVER_Objects)
|
|
+ $(EXE_LINK) $(LINK_EMPTY_SYMBOLS) $(LINK_OPTS) $^ -o $@ $(FBEMBED_LINK) $(LIB_GUI) $(LINK_LIBS) $(ICU_LIBS)
|
|
|
|
AllObjects = $(SERVER_Objects)
|
|
|
|
--
|
|
2.4.3
|
|
|
|
From a27a60606a72b99c9956b4188d1b31d38159fb9c Mon Sep 17 00:00:00 2001
|
|
From: Alexpux <alexey.pawlow@gmail.com>
|
|
Date: Wed, 26 Nov 2014 09:27:40 +0300
|
|
Subject: [PATCH] For mingw place dll's into BIN and generate import libraries
|
|
in LIB. Don't link with def files.
|
|
|
|
---
|
|
builds/posix/make.defaults | 18 +-
|
|
builds/posix/prefix.mingw | 38 ++-
|
|
builds/win32/defs/fbclient32.def | 707 +++++++++++++++++++++++++++++++++++++++
|
|
builds/win32/defs/fbclient64.def | 361 ++++++++++++++++++++
|
|
4 files changed, 1104 insertions(+), 20 deletions(-)
|
|
create mode 100644 builds/win32/defs/fbclient32.def
|
|
create mode 100644 builds/win32/defs/fbclient64.def
|
|
|
|
diff --git a/builds/posix/make.defaults b/builds/posix/make.defaults
|
|
index bced0da..bc96ceb 100755
|
|
--- a/builds/posix/make.defaults
|
|
+++ b/builds/posix/make.defaults
|
|
@@ -93,6 +93,11 @@ IsProdTypeBuild = @PROD_BUILD_FLG@
|
|
|
|
CpuType=@CPU_TYPE@
|
|
|
|
+ifeq ($(CpuType), x86_64)
|
|
+ BITNESS_SUFFIX := 64
|
|
+else
|
|
+ BITNESS_SUFFIX := 32
|
|
+endif
|
|
PLATFORM=@PLATFORM@
|
|
ifeq (@FIREBIRD_ARCH_TYPE@,classic)
|
|
ArchPrefix=CS
|
|
@@ -193,9 +198,9 @@ BLRTABLE = $(BIN)/blrtable$(EXEC_EXT)
|
|
# Scold me, but I don't want library names to be in configure.in
|
|
#
|
|
|
|
-SharedLibraryName=libfbembed.${SHRLIB_EXT}.${FirebirdVersion}
|
|
-SharedLibrarySoName=libfbembed.${SHRLIB_EXT}.${MajorVer}.${MinorVer}
|
|
-SharedLibraryBaseName=libfbembed.${SHRLIB_EXT}
|
|
+SharedLibraryBaseName=$(LIB_PREFIX)fbembed.${SHRLIB_EXT}
|
|
+SharedLibraryName=${SharedLibraryBaseName}.${FirebirdVersion}
|
|
+SharedLibrarySoName=${SharedLibraryBaseName}.${MajorVer}.${MinorVer}
|
|
|
|
LIBFBEMBED_SO = $(LIB)/$(SharedLibraryName)
|
|
LIBFBEMBED_SOBASENAME = $(LIB)/$(SharedLibrarySoName)
|
|
@@ -261,6 +266,7 @@ LIB_LINK_RPATH = $(call LIB_PLATFORM_RPATH,'$$$$ORIGIN/../$(1)')
|
|
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,
|
|
FBEMBED_LINK= -L$(LIB) -lfbembed
|
|
|
|
@@ -281,7 +287,7 @@ LINK_UDF = $(LIB_LINK) $(LIB_LINK_OPTIONS) $(call LIB_LINK_SONAME,$(1).$(SHRLIB_
|
|
LINK_UDF_LIBS = $(THR_LIBS) -L$(LIB) -lib_util
|
|
|
|
LINK_IB_UTIL = $(LIB_LINK) $(LINK_IBUTIL_SYMBOLS) $(LIB_LINK_OPTIONS)\
|
|
- $(call LIB_LINK_SONAME,$(IbUtilLibraryName)) $(call LIB_LINK_RPATH,lib)
|
|
+ $(call LIB_LINK_IMPLIB,$(LIB)/lib$(IbUtilLibraryName).a) $(call LIB_LINK_SONAME,$(IbUtilLibraryName)) $(call LIB_LINK_RPATH,lib)
|
|
LINK_IB_UTIL_LIBS = $(THR_LIBS)
|
|
|
|
LINK_INTL = $(LIB_LINK) $(LINK_FBINTL_SYMBOLS) $(LIB_LINK_OPTIONS)\
|
|
@@ -293,11 +299,11 @@ LINK_TRACE = $(LIB_LINK) $(LINK_TRACE_SYMBOLS) $(LIB_LINK_OPTIONS)\
|
|
LINK_TRACE_LIBS = -L$(LIB) $(SO_LINK_LIBS)
|
|
|
|
LINK_CLIENT = $(CLIENTLIB_LINK) $(LINK_FIREBIRD_CLIENT_SYMBOLS) $(LIB_LINK_OPTIONS)\
|
|
- $(LIB_LINK_IMPLIB) $(call LIB_LINK_SONAME,$(ClientLibrarySoName)) $(call LIB_LINK_RPATH,lib)
|
|
+ $(call LIB_LINK_IMPLIB,$(LIB)/lib$(ClientLibraryName).a) $(call LIB_LINK_SONAME,$(ClientLibrarySoName)) $(call LIB_LINK_RPATH,lib)
|
|
LINK_CLIENT_LIBS = $(SO_LINK_LIBS) $(STATIC_CXXSUPPORT_LIB)
|
|
|
|
LINK_EMBED = $(LIB_LINK) $(LINK_FIREBIRD_EMBED_SYMBOLS) $(LIB_LINK_OPTIONS) $(LIB_EMBED_LINK_OPTIONS)\
|
|
- $(call LIB_LINK_SONAME,$(SharedLibrarySoName)) $(call LIB_LINK_RPATH,lib)
|
|
+ $(call LIB_LINK_IMPLIB,$(LIB)/lib$(SharedLibraryBaseName).a) $(call LIB_LINK_SONAME,$(SharedLibrarySoName)) $(call LIB_LINK_RPATH,lib)
|
|
LINK_EMBED_LIBS = -L$(LIB) $(LIB_GUI) $(SO_LINK_LIBS) $(ICU_LIBS)
|
|
|
|
# From utilities
|
|
diff --git a/builds/posix/prefix.mingw b/builds/posix/prefix.mingw
|
|
index ac1327c..8e514d8 100644
|
|
--- a/builds/posix/prefix.mingw
|
|
+++ b/builds/posix/prefix.mingw
|
|
@@ -36,16 +36,12 @@ OS_ServerFiles= os/win32/srvr_w32.cpp os/win32/window.cpp os/win32/chop.cpp os/w
|
|
# 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)
|
|
LINK_OPTS+=-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
|
|
|
|
|
|
@@ -65,19 +61,33 @@ FilesToAddDialog2=$(IBGUARD)
|
|
LIB_PREFIX=
|
|
|
|
# Override library names to suppress version suffix
|
|
-ClientLibraryNameFull := $(ClientLibraryName)
|
|
-ClientLibrarySoName := $(ClientLibraryName)
|
|
+SharedLibraryName = $(SharedLibraryBaseName)
|
|
+SharedLibrarySoName = $(SharedLibraryBaseName)
|
|
+
|
|
+LIBFBEMBED_SO = $(BIN)/$(SharedLibraryName)
|
|
+LIBFBEMBED_SOBASENAME = $(BIN)/$(SharedLibrarySoName)
|
|
+LIBFBEMBED_SONAME = $(BIN)/$(SharedLibraryBaseName)
|
|
+
|
|
+ClientLibraryNameFull = $(ClientLibraryName)
|
|
+ClientLibrarySoName = $(ClientLibraryName)
|
|
+
|
|
+LIBFBCLIENT_SO = $(BIN)/$(ClientLibraryNameFull)
|
|
+LIBFBCLIENT_SOBASENAME = $(BIN)/$(ClientLibrarySoName)
|
|
+LIBFBCLIENT_SONAME = $(BIN)/$(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
|
|
+LIBIBUTIL_SO = $(BIN)/$(IbUtilLibraryName)
|
|
|
|
-# 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)
|
|
+# Generation of import libraries
|
|
+LIB_LINK_IMPLIB= -Wl,--out-implib,$(1)
|
|
+LIB_LINK_SONAME=
|
|
|
|
-# 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_FIREBIRD_EMBED_SYMBOLS =
|
|
+#LINK_FIREBIRD_CLIENT_SYMBOLS =
|
|
+LINK_TRACE_SYMBOLS =
|
|
+LINK_FBINTL_SYMBOLS =
|
|
+LINK_IBUTIL_SYMBOLS =
|
|
+LINK_EMPTY_SYMBOLS =
|
|
|
|
# Special options for trace plugin link
|
|
LINK_TRACE_LIBS = -L$(LIB) $(SO_LINK_LIBS) $(ICU_LIBS)
|
|
diff --git a/builds/win32/defs/fbclient32.def b/builds/win32/defs/fbclient32.def
|
|
new file mode 100644
|
|
index 0000000..b14e89a
|
|
--- /dev/null
|
|
+++ b/builds/win32/defs/fbclient32.def
|
|
@@ -0,0 +1,703 @@
|
|
+; 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
|
|
+
|
|
+;-----------------
|
|
+; 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
|
|
+
|
|
+;-----------------
|
|
+; 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..ce3875c
|
|
--- /dev/null
|
|
+++ b/builds/win32/defs/fbclient64.def
|
|
@@ -0,0 +1,361 @@
|
|
+; 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
|
|
+
|
|
+;-----------------
|
|
+; OTHER FUNCTIONS
|
|
+;-----------------
|
|
+
|
|
+ CVT_move @267
|
|
+
|
|
+ KEYWORD_stringIsAToken @271
|
|
+ KEYWORD_getTokens @272
|
|
--
|
|
2.4.3
|
|
|
|
From 6d98c3bf146bb2f937166fd44a9a8c3045919f25 Mon Sep 17 00:00:00 2001
|
|
From: Alexpux <alexey.pawlow@gmail.com>
|
|
Date: Wed, 26 Nov 2014 12:25:47 +0300
|
|
Subject: [PATCH] Don't install unix files for Windows platform
|
|
|
|
---
|
|
configure.in | 66 ++++++++++++++++++++++++++++++++++++------------------------
|
|
1 file changed, 40 insertions(+), 26 deletions(-)
|
|
|
|
diff --git a/configure.in b/configure.in
|
|
index d345348..346a94d 100644
|
|
--- a/configure.in
|
|
+++ b/configure.in
|
|
@@ -1313,32 +1313,39 @@ MAKE_SRC_DIR=builds/posix
|
|
|
|
dnl common files for all posix hosts
|
|
dnl TODO: fix "arch-specific/linux/" paths for common posix scripts with SVN
|
|
-AC_CONFIG_FILES([gen/install/misc/firebird.conf:builds/install/misc/firebird.conf.in
|
|
-gen/install/misc/aliases.conf:builds/install/misc/aliases.conf.in
|
|
-gen/install/misc/fbintl.conf:builds/install/misc/fbintl.conf
|
|
-gen/install/misc/fbtrace.conf:src/utilities/ntrace/fbtrace.conf
|
|
-gen/firebird/bin/fb_config:builds/install/misc/fb_config.in
|
|
-gen/firebird/bin/posixLibrary.sh:builds/install/misc/posixLibrary.sh.in
|
|
-gen/firebird/bin/classicLibrary.sh:builds/install/misc/classicLibrary.sh.in
|
|
-gen/firebird/bin/superLibrary.sh:builds/install/misc/superLibrary.sh.in
|
|
-gen/firebird/bin/changeRunUser.sh:builds/install/misc/changeRunUser.sh.in
|
|
-gen/firebird/bin/restoreRootRunUser.sh:builds/install/misc/restoreRootRunUser.sh.in
|
|
-gen/firebird/bin/tarMainInstall.sh:builds/install/arch-specific/linux/misc/tarMainInstall.sh.in
|
|
-gen/firebird/bin/tarinstall.sh:builds/install/arch-specific/linux/misc/tarinstall.sh.in
|
|
-gen/firebird/bin/preinstall.sh:builds/install/arch-specific/linux/misc/preinstall.sh.in
|
|
-gen/firebird/bin/postinstall.sh:builds/install/arch-specific/linux/misc/postinstall.sh.in
|
|
-gen/firebird/bin/preuninstall.sh:builds/install/arch-specific/linux/misc/preuninstall.sh.in
|
|
-gen/firebird/bin/postuninstall.sh:builds/install/arch-specific/linux/misc/postuninstall.sh.in
|
|
-gen/firebird/bin/taruninstall.sh:builds/install/arch-specific/linux/misc/taruninstall.sh.in
|
|
-gen/firebird/bin/tarMainUninstall.sh:builds/install/arch-specific/linux/misc/tarMainUninstall.sh.in
|
|
-gen/firebird/bin/changeDBAPassword.sh:builds/install/misc/changeDBAPassword.sh.in
|
|
-gen/firebird/bin/changeGdsLibraryCompatibleLink.sh:builds/install/misc/changeGdsLibraryCompatibleLink.sh.in
|
|
-gen/firebird/bin/createAliasDB.sh:builds/install/misc/createAliasDB.sh.in],
|
|
-[chmod a+x gen/install/scripts/*.sh gen/install/*sh 2>/dev/null])
|
|
-
|
|
-if test $FIREBIRD_ARCH_TYPE = classic; then
|
|
- AC_CONFIG_FILES([gen/firebird/bin/changeMultiConnectMode.sh:builds/install/misc/changeMultiConnectMode.sh.in],
|
|
- [chmod a+x gen/install/scripts/*.sh gen/install/*sh 2>/dev/null])
|
|
+if test $PLATFORM = win32; then
|
|
+ AC_CONFIG_FILES(gen/firebird/firebird.conf:builds/install/misc/firebird.conf.in
|
|
+ gen/firebird/aliases.conf:builds/install/misc/aliases.conf.in
|
|
+ gen/firebird/intl/fbintl.conf:builds/install/misc/fbintl.conf
|
|
+ gen/firebird/fbtrace.conf:src/utilities/ntrace/fbtrace.conf)
|
|
+else
|
|
+ AC_CONFIG_FILES([gen/install/misc/firebird.conf:builds/install/misc/firebird.conf.in
|
|
+ gen/install/misc/aliases.conf:builds/install/misc/aliases.conf.in
|
|
+ gen/install/misc/fbintl.conf:builds/install/misc/fbintl.conf
|
|
+ gen/install/misc/fbtrace.conf:src/utilities/ntrace/fbtrace.conf
|
|
+ gen/firebird/bin/fb_config:builds/install/misc/fb_config.in
|
|
+ gen/firebird/bin/posixLibrary.sh:builds/install/misc/posixLibrary.sh.in
|
|
+ gen/firebird/bin/classicLibrary.sh:builds/install/misc/classicLibrary.sh.in
|
|
+ gen/firebird/bin/superLibrary.sh:builds/install/misc/superLibrary.sh.in
|
|
+ gen/firebird/bin/changeRunUser.sh:builds/install/misc/changeRunUser.sh.in
|
|
+ gen/firebird/bin/restoreRootRunUser.sh:builds/install/misc/restoreRootRunUser.sh.in
|
|
+ gen/firebird/bin/tarMainInstall.sh:builds/install/arch-specific/linux/misc/tarMainInstall.sh.in
|
|
+ gen/firebird/bin/tarinstall.sh:builds/install/arch-specific/linux/misc/tarinstall.sh.in
|
|
+ gen/firebird/bin/preinstall.sh:builds/install/arch-specific/linux/misc/preinstall.sh.in
|
|
+ gen/firebird/bin/postinstall.sh:builds/install/arch-specific/linux/misc/postinstall.sh.in
|
|
+ gen/firebird/bin/preuninstall.sh:builds/install/arch-specific/linux/misc/preuninstall.sh.in
|
|
+ gen/firebird/bin/postuninstall.sh:builds/install/arch-specific/linux/misc/postuninstall.sh.in
|
|
+ gen/firebird/bin/taruninstall.sh:builds/install/arch-specific/linux/misc/taruninstall.sh.in
|
|
+ gen/firebird/bin/tarMainUninstall.sh:builds/install/arch-specific/linux/misc/tarMainUninstall.sh.in
|
|
+ gen/firebird/bin/changeDBAPassword.sh:builds/install/misc/changeDBAPassword.sh.in
|
|
+ gen/firebird/bin/changeGdsLibraryCompatibleLink.sh:builds/install/misc/changeGdsLibraryCompatibleLink.sh.in
|
|
+ gen/firebird/bin/createAliasDB.sh:builds/install/misc/createAliasDB.sh.in],
|
|
+ [chmod a+x gen/install/scripts/*.sh gen/install/*sh 2>/dev/null])
|
|
+
|
|
+ if test $FIREBIRD_ARCH_TYPE = classic; then
|
|
+ AC_CONFIG_FILES([gen/firebird/bin/changeMultiConnectMode.sh:builds/install/misc/changeMultiConnectMode.sh.in],
|
|
+ [chmod a+x gen/install/scripts/*.sh gen/install/*sh 2>/dev/null])
|
|
+ fi
|
|
fi
|
|
|
|
dnl: Platform Specific Files
|
|
@@ -1438,6 +1445,13 @@ case "$PLATFORM" in
|
|
|
|
DARWIN)
|
|
;;
|
|
+
|
|
+ win32)
|
|
+ AC_CONFIG_FILES(gen/firebird/install_classic.bat:builds/install/arch-specific/win32/install_classic.bat
|
|
+ gen/firebird/install_super.bat:builds/install/arch-specific/win32/install_super.bat
|
|
+ gen/firebird/install_superclassic.bat:builds/install/arch-specific/win32/install_superclassic.bat
|
|
+ gen/firebird/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 a4ee44393c1773cf58914e06657b66842041237e Mon Sep 17 00:00:00 2001
|
|
From: Alexpux <alexey.pawlow@gmail.com>
|
|
Date: Wed, 26 Nov 2014 16:15:47 +0300
|
|
Subject: [PATCH] Fix rules to use variables.
|
|
|
|
---
|
|
builds/posix/Makefile.in.examples | 18 +++++++++---------
|
|
builds/posix/Makefile.in.refDatabases | 8 ++++----
|
|
builds/posix/make.defaults | 2 +-
|
|
3 files changed, 14 insertions(+), 14 deletions(-)
|
|
|
|
diff --git a/builds/posix/Makefile.in.examples b/builds/posix/Makefile.in.examples
|
|
index 3137649..ade180b 100644
|
|
--- a/builds/posix/Makefile.in.examples
|
|
+++ b/builds/posix/Makefile.in.examples
|
|
@@ -117,9 +117,9 @@ $(EXAMPLES_DEST)% : $(EXAMPLES_SRC)%
|
|
|
|
|
|
$(EXAMPLES_DEST)/employee.fdb: $(EXAMPLES_DEST)/empbuild$(EXEC_EXT) $(INPUT_Sources) $(EXAMPLES_DEST)/isql$(EXEC_EXT)
|
|
- -$(RM) employee.fdb
|
|
- ./empbuild employee.fdb
|
|
- -$(CHMOD_6) employee.fdb
|
|
+ -$(RM) $(EXAMPLES_DEST)/employee.fdb
|
|
+ $(EXAMPLES_DEST)/empbuild$(EXEC_EXT) $(EXAMPLES_DEST)/employee.fdb
|
|
+ -$(CHMOD_6) $(EXAMPLES_DEST)/employee.fdb
|
|
|
|
# To get past the fact isql is called from the programs, we create a local link
|
|
# to the static one in this directory
|
|
@@ -134,16 +134,16 @@ $(EXAMPLES_DEST)/empbuild.c: $(EXAMPLES_DEST)/empbuild.fdb $(EXAMPLES_DEST)/empb
|
|
|
|
$(EXAMPLES_DEST)/empbuild.fdb : $(EXAMPLES_DEST)/empddl.sql $(EXAMPLES_DEST)/empbld.sql $(EXAMPLES_DEST)/isql$(EXEC_EXT)
|
|
-$(RM) $(EXAMPLES_DEST)/empbuild.fdb
|
|
- $(EXAMPLES_DEST)/isql$(EXEC_EXT) -i empbld.sql
|
|
+ $(EXAMPLES_DEST)/isql$(EXEC_EXT) -i $(EXAMPLES_DEST)/empbld.sql
|
|
|
|
# The chain for intlemp.fdb is the same a script file to create an empty database
|
|
# to allow a .e program to be compiled, to then create and populate with data
|
|
# 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) $(EXAMPLES_DEST)/intlemp.fdb
|
|
+ -$(CHMOD_6) $(EXAMPLES_DEST)/intlemp.fdb
|
|
|
|
$(EXAMPLES_DEST)/intlbld$(EXEC_EXT): $(INTLBLD_Objects) $(COMMON_Objects) $(LIBFBSTATIC_A)
|
|
$(EXE_LINK) $(LINK_OPTS) $(INTLBLD_Objects) $(COMMON_Objects) -o $@ -L$(LIB) -lfbstatic $(LINK_LIBS) $(ICU_LIBS)
|
|
@@ -151,8 +151,8 @@ $(EXAMPLES_DEST)/intlbld$(EXEC_EXT): $(INTLBLD_Objects) $(COMMON_Objects) $(LIBF
|
|
$(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
|
|
diff --git a/builds/posix/Makefile.in.refDatabases b/builds/posix/Makefile.in.refDatabases
|
|
index c1b61a6..68016cc 100644
|
|
--- a/builds/posix/Makefile.in.refDatabases
|
|
+++ b/builds/posix/Makefile.in.refDatabases
|
|
@@ -65,7 +65,7 @@ empty_db : empty.fdb yachts.lnk
|
|
empty.fdb : $(CREATE_DB)
|
|
$(MAKE) -f $(GEN_ROOT)/Makefile.static.createdb
|
|
-$(RM) $@
|
|
- $(BIN)/create_db $@
|
|
+ $(CREATE_DB) $@
|
|
$(TOUCH) $@
|
|
$(CHMOD) 444 $@
|
|
|
|
@@ -99,7 +99,7 @@ help.fdb: $(FIREBIRD)/help/help.fdb
|
|
$(LN) -f $^ $@
|
|
|
|
$(FIREBIRD)/help/help.fdb: $(BLD_ROOT)/misc/help.gbak
|
|
- $(BIN)/gbak_static -MODE read_only -R $< $@
|
|
+ $(GBAK_STATIC) -MODE read_only -R $< $@
|
|
$(TOUCH) $@
|
|
$(CHMOD) 444 $@
|
|
|
|
@@ -114,7 +114,7 @@ security2.fdb: $(SRC_ROOT)/dbs/security.sql
|
|
$(CHMOD) a=rw $@
|
|
|
|
metadata.fdb: $(BLD_ROOT)/misc/metadata.gbak
|
|
- $(BIN)/gbak_static -MODE read_only -R $< $@
|
|
+ $(GBAK_STATIC) -MODE read_only -R $< $@
|
|
$(TOUCH) $@
|
|
$(CHMOD) 444 $@
|
|
|
|
@@ -122,7 +122,7 @@ metadata.fdb: $(BLD_ROOT)/misc/metadata.gbak
|
|
# since it ensures the data is valid.
|
|
|
|
metadata.fdb.x: $(SRC_ROOT)/misc/metadata.sql
|
|
- $(BIN)/isql -i $<
|
|
+ $(ISQL) -i $<
|
|
$(TOUCH) $@
|
|
$(CHMOD) 444 $@
|
|
|
|
diff --git a/builds/posix/make.defaults b/builds/posix/make.defaults
|
|
index bc96ceb..2e60fd3 100755
|
|
--- a/builds/posix/make.defaults
|
|
+++ b/builds/posix/make.defaults
|
|
@@ -183,7 +183,7 @@ SHRLIB_FOREIGN_EXT= $(SHRLIB_EXT)
|
|
|
|
vpath %.so $(LIB)
|
|
vpath %.a $(LIB)
|
|
-vpath %.dll $(LIB)
|
|
+vpath %.dll $(BIN)
|
|
|
|
#_____________________________________________________________________________
|
|
|
|
--
|
|
2.4.3
|
|
|
|
From 5b6eb56e1b994c86a415c2fa3c9e20ce1aa7a127 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 | 10 +++++-----
|
|
configure.in | 10 ++++++++++
|
|
4 files changed, 20 insertions(+), 8 deletions(-)
|
|
|
|
diff --git a/builds/posix/make.defaults b/builds/posix/make.defaults
|
|
index 2e60fd3..8e3a39f 100755
|
|
--- a/builds/posix/make.defaults
|
|
+++ b/builds/posix/make.defaults
|
|
@@ -139,9 +139,11 @@ ECHO= echo
|
|
QUIET_ECHO= @echo
|
|
CD= cd
|
|
CAT= cat
|
|
-AR= ar @AR_OPTIONS@ crsu
|
|
+AR= @AR@ @AR_OPTIONS@ crsu
|
|
LN= @LN_S@
|
|
+DLLTOOL= @DLLTOOL@
|
|
RANLIB= @RANLIB@
|
|
+RC= @RC@
|
|
BTYACC=$(ROOT)/extern/btyacc/btyacc
|
|
|
|
CC = @CC@
|
|
diff --git a/builds/posix/make.rules b/builds/posix/make.rules
|
|
index a784cb2..600b8f9 100644
|
|
--- a/builds/posix/make.rules
|
|
+++ b/builds/posix/make.rules
|
|
@@ -115,5 +115,5 @@ $(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) $< $@
|
|
diff --git a/builds/posix/make.shared.targets b/builds/posix/make.shared.targets
|
|
index ff5c2a2..f881106 100644
|
|
--- a/builds/posix/make.shared.targets
|
|
+++ b/builds/posix/make.shared.targets
|
|
@@ -93,16 +93,16 @@ $(BLRTABLE): $(BLRTABLE_Objects)
|
|
|
|
# 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/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 \
|
|
+$(OBJ)/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
|
|
|
|
-$(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.in b/configure.in
|
|
index 346a94d..35400d3 100644
|
|
--- a/configure.in
|
|
+++ b/configure.in
|
|
@@ -683,6 +683,16 @@ AC_LIBTOOL_DLOPEN
|
|
AC_LIBTOOL_WIN32_DLL
|
|
AC_PROG_MAKE_SET
|
|
AC_PROG_LIBTOOL
|
|
+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 ef49c8b8fe8373c9490a51e9341333039d5b037a Mon Sep 17 00:00:00 2001
|
|
From: Alexpux <alexey.pawlow@gmail.com>
|
|
Date: Wed, 26 Nov 2014 16:23:09 +0300
|
|
Subject: [PATCH] Create symlinks of fbembed only if names are different
|
|
|
|
---
|
|
builds/posix/Makefile.in.libfbembed | 10 +++++++---
|
|
1 file changed, 7 insertions(+), 3 deletions(-)
|
|
|
|
diff --git a/builds/posix/Makefile.in.libfbembed b/builds/posix/Makefile.in.libfbembed
|
|
index d919ba2..2e70ab9 100644
|
|
--- a/builds/posix/Makefile.in.libfbembed
|
|
+++ b/builds/posix/Makefile.in.libfbembed
|
|
@@ -61,14 +61,18 @@ Dependencies = $(AllObjects:.o=.d)
|
|
|
|
libfbembed : $(LIBIBUTIL_SO) $(LIBFBEMBED_SONAME)
|
|
|
|
-$(LIBFBEMBED_SO): $(LIBFBEMBED_Objects) $(SERVER_Objects) $(COMMON_Objects)
|
|
- $(LINK_EMBED) -o $@ $^ $(LINK_EMBED_LIBS)
|
|
-
|
|
+ifneq ($(SharedLibraryName),$(SharedLibrarySoName))
|
|
$(LIBFBEMBED_SOBASENAME): $(LIBFBEMBED_SO)
|
|
(cd $(LIB) && $(LN) -f $(SharedLibraryName) $(SharedLibrarySoName) )
|
|
+endif
|
|
|
|
+ifneq ($(SharedLibrarySoName),$(SharedLibraryBaseName))
|
|
$(LIBFBEMBED_SONAME): $(LIBFBEMBED_SOBASENAME)
|
|
(cd $(LIB) && $(LN) -f $(SharedLibrarySoName) $(SharedLibraryBaseName) )
|
|
+endif
|
|
+
|
|
+$(LIBFBEMBED_SO): $(LIBFBEMBED_Objects) $(SERVER_Objects) $(COMMON_Objects)
|
|
+ $(LINK_EMBED) -o $@ $^ $(LINK_EMBED_LIBS)
|
|
|
|
include $(ROOT)/gen/make.shared.targets
|
|
|
|
--
|
|
2.4.3
|
|
|
|
From ed78858f827e8ba9969e81580863012fa640a073 Mon Sep 17 00:00:00 2001
|
|
From: Alexpux <alexey.pawlow@gmail.com>
|
|
Date: Wed, 3 Dec 2014 14:23:31 +0300
|
|
Subject: [PATCH] MSVC compatibility fix.
|
|
|
|
---
|
|
src/common/classes/locks.h | 2 +-
|
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
|
|
diff --git a/src/common/classes/locks.h b/src/common/classes/locks.h
|
|
index d2ddb7d..3586592 100644
|
|
--- a/src/common/classes/locks.h
|
|
+++ b/src/common/classes/locks.h
|
|
@@ -64,7 +64,7 @@ public:
|
|
}
|
|
|
|
private:
|
|
- typedef BOOL WINAPI (*tTryEnterCriticalSection)(LPCRITICAL_SECTION lpCriticalSection);
|
|
+ typedef BOOL (WINAPI *tTryEnterCriticalSection)(LPCRITICAL_SECTION lpCriticalSection);
|
|
|
|
static tTryEnterCriticalSection m_funct;
|
|
};
|
|
--
|
|
2.4.3
|
|
|
|
From 8e36ccb8876d2118b0b5d3409c28b39f35725523 Mon Sep 17 00:00:00 2001
|
|
From: Alexpux <alexey.pawlow@gmail.com>
|
|
Date: Tue, 23 Jun 2015 11:57:07 +0300
|
|
Subject: [PATCH] mod_loader: mingw always link to msvcrt.dll
|
|
|
|
---
|
|
src/jrd/os/win32/mod_loader.cpp | 6 ++++--
|
|
1 file changed, 4 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/src/jrd/os/win32/mod_loader.cpp b/src/jrd/os/win32/mod_loader.cpp
|
|
index 76ceeca..51694ba 100644
|
|
--- a/src/jrd/os/win32/mod_loader.cpp
|
|
+++ b/src/jrd/os/win32/mod_loader.cpp
|
|
@@ -74,7 +74,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
|
|
|
|
@@ -89,7 +89,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 088f6afada0199d180859da6de65546dccf15a70 Mon Sep 17 00:00:00 2001
|
|
From: Alexpux <alexey.pawlow@gmail.com>
|
|
Date: Tue, 23 Jun 2015 11:59:24 +0300
|
|
Subject: [PATCH] Relocate paths for unix-like files layout.
|
|
|
|
---
|
|
builds/posix/make.shared.variables | 4 +-
|
|
src/common/pathtools.cpp | 538 +++++++++++++++++++++++++++++++++++++
|
|
src/common/pathtools.h | 53 ++++
|
|
src/common/utils.cpp | 21 +-
|
|
src/jrd/gds.cpp | 7 +-
|
|
src/jrd/os/win32/config_root.cpp | 7 +-
|
|
src/jrd/os/win32/path_utils.cpp | 5 +-
|
|
7 files changed, 623 insertions(+), 12 deletions(-)
|
|
create mode 100644 src/common/pathtools.cpp
|
|
create mode 100644 src/common/pathtools.h
|
|
|
|
diff --git a/builds/posix/make.shared.variables b/builds/posix/make.shared.variables
|
|
index ef6099e..b10dae4 100644
|
|
--- a/builds/posix/make.shared.variables
|
|
+++ b/builds/posix/make.shared.variables
|
|
@@ -259,7 +259,7 @@ VULCAN_Objects = $(addprefix $(OBJ)/, $(addsuffix .o, $(basename $(VULCAN_Source
|
|
# common
|
|
|
|
FBCOMMON_ClientFiles = fb_exception.cpp thd.cpp classes/MetaName.cpp StatusHolder.cpp classes/init.cpp StatusArg.cpp
|
|
-FBCOMMON_ServerFiles = utils.cpp
|
|
+FBCOMMON_ServerFiles = utils.cpp pathtools.cpp
|
|
|
|
FBCOMMON_ClientObjects = $(addprefix $(OBJ)/common/, $(addsuffix .o, $(basename $(FBCOMMON_ClientFiles)))) \
|
|
$(addprefix $(OBJ)/jrd/, $(addsuffix .o, $(basename fbsyslog.cpp)))
|
|
@@ -287,7 +287,7 @@ CLUMPLETS_Objects = $(addprefix $(OBJ)/, $(addsuffix .o, $(basename $(CLUMPLETS_
|
|
# just in case if make.platform defined some files
|
|
OS_SPECIFIC_Files += config_root.cpp path_utils.cpp mod_loader.cpp guid.cpp os_utils.cpp
|
|
|
|
-OS_SPECIFIC_Sources = $(addprefix jrd/, $(OS_SPECIFIC_Files)) common/dllinst.cpp
|
|
+OS_SPECIFIC_Sources = $(addprefix jrd/, $(OS_SPECIFIC_Files)) common/dllinst.cpp common/pathtools.cpp
|
|
ifneq ($(strip @BINRELOC_CFLAGS@),)
|
|
OS_SPECIFIC_Sources += $(ROOT)/extern/binreloc/binreloc.c
|
|
endif
|
|
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 34c7c5c..5991363 100644
|
|
--- a/src/common/utils.cpp
|
|
+++ b/src/common/utils.cpp
|
|
@@ -43,6 +43,7 @@
|
|
#include "../common/utils_proto.h"
|
|
#include "../common/classes/locks.h"
|
|
#include "../common/classes/init.h"
|
|
+#include "../common/pathtools.h"
|
|
#include "../jrd/constants.h"
|
|
#include "../jrd/os/path_utils.h"
|
|
#include "../jrd/os/fbsyslog.h"
|
|
@@ -929,9 +930,23 @@ Firebird::PathName getPrefix(FB_DIR prefType, const char* name)
|
|
|
|
#ifndef BOOT_BUILD
|
|
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) == FB_DIR_LAST);
|
|
diff --git a/src/jrd/gds.cpp b/src/jrd/gds.cpp
|
|
index 0b6852f..29d6cda 100644
|
|
--- a/src/jrd/gds.cpp
|
|
+++ b/src/jrd/gds.cpp
|
|
@@ -56,6 +56,7 @@
|
|
#include "../common/classes/timestamp.h"
|
|
#include "../common/classes/init.h"
|
|
#include "../common/classes/TempFile.h"
|
|
+#include "../common/pathtools.h"
|
|
#include "../common/utils_proto.h"
|
|
|
|
#ifdef HAVE_UNISTD_H
|
|
@@ -3596,13 +3597,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 (Firebird::fatal_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;
|
|
@@ -3685,7 +3686,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;
|
|
diff --git a/src/jrd/os/win32/config_root.cpp b/src/jrd/os/win32/config_root.cpp
|
|
index f5c7d54..deb33cc 100644
|
|
--- a/src/jrd/os/win32/config_root.cpp
|
|
+++ b/src/jrd/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 "../jrd/os/config_root.h"
|
|
#include "../utilities/install/registry.h"
|
|
@@ -88,7 +89,7 @@ bool getBinFromHInstance(PathName& root)
|
|
void ConfigRoot::osConfigRoot()
|
|
{
|
|
// check the registry first
|
|
-#if defined(SUPERCLIENT)
|
|
+#if defined(SUPERCLIENT) && !defined(__MINGW32__)
|
|
if (getRootFromRegistry(root_dir))
|
|
{
|
|
addSlash();
|
|
@@ -125,7 +126,7 @@ void ConfigRoot::osConfigRoot()
|
|
}
|
|
|
|
// As a last resort get it from the default install directory
|
|
- root_dir = FB_PREFIX;
|
|
+ root_dir = single_path_relocation(FB_BINDIR,FB_PREFIX);
|
|
}
|
|
|
|
void ConfigRoot::osConfigInstallDir()
|
|
@@ -159,5 +160,5 @@ void ConfigRoot::osConfigInstallDir()
|
|
}
|
|
|
|
// As a last resort get it from the default install directory
|
|
- install_dir = FB_PREFIX;
|
|
+ install_dir = single_path_relocation(FB_BINDIR,FB_PREFIX);
|
|
}
|
|
diff --git a/src/jrd/os/win32/path_utils.cpp b/src/jrd/os/win32/path_utils.cpp
|
|
index 6e22f15..48186bc 100644
|
|
--- a/src/jrd/os/win32/path_utils.cpp
|
|
+++ b/src/jrd/os/win32/path_utils.cpp
|
|
@@ -4,8 +4,11 @@
|
|
#include <io.h> // _access
|
|
|
|
/// The Win32 implementation of the path_utils abstraction.
|
|
-
|
|
+#if defined(__MINGW32__)
|
|
+const char PathUtils::dir_sep = '/';
|
|
+#else
|
|
const char PathUtils::dir_sep = '\\';
|
|
+#endif
|
|
const char* PathUtils::up_dir_link = "..";
|
|
|
|
class Win32DirItr : public PathUtils::dir_iterator
|
|
--
|
|
2.4.3
|
|
From 0982205145962152e3b964aa63559c435bddb6f1 Mon Sep 17 00:00:00 2001
|
|
From: Alexpux <alexey.pawlow@gmail.com>
|
|
Date: Sat, 11 Jul 2015 16:57:36 +0300
|
|
Subject: [PATCH] Fix building gstat
|
|
|
|
---
|
|
src/utilities/gstat/dba.epp | 2 +-
|
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
|
|
diff --git a/src/utilities/gstat/dba.epp b/src/utilities/gstat/dba.epp
|
|
index 76a10c5..71e6cf5 100644
|
|
--- a/src/utilities/gstat/dba.epp
|
|
+++ b/src/utilities/gstat/dba.epp
|
|
@@ -42,7 +42,7 @@
|
|
#include "../jrd/ibase.h"
|
|
#include "../jrd/ods.h"
|
|
#include "../jrd/btn.h"
|
|
-#include "../jrd/svc.h"
|
|
+#include "../jrd/ThreadData.h"
|
|
#include "../jrd/license.h"
|
|
#include "../jrd/msg_encode.h"
|
|
#include "../jrd/gdsassert.h"
|
|
--
|
|
2.4.5
|
|
|