Merge ~danilogondolfo/ubuntu/+source/firebird3.0:mantic_merge_1 into ubuntu/+source/firebird3.0:ubuntu/devel
- Git
- lp:~danilogondolfo/ubuntu/+source/firebird3.0
- mantic_merge_1
- Merge into ubuntu/devel
Proposed by
Danilo Egea Gondolfo
Status: | Superseded |
---|---|
Proposed branch: | ~danilogondolfo/ubuntu/+source/firebird3.0:mantic_merge_1 |
Merge into: | ubuntu/+source/firebird3.0:ubuntu/devel |
Diff against target: |
23704 lines (+3002/-12052) 191 files modified
README.md (+2/-2) builds/install/arch-specific/android/BuildPackage.sh (+11/-3) builds/install/arch-specific/win32/BuildExecutableInstall.bat (+3/-3) builds/install/arch-specific/win32/FirebirdInstallSupportFunctions.inc (+14/-0) builds/install/arch-specific/win32/FirebirdInstall_30.iss (+101/-60) builds/install/arch-specific/win32/installation_scripted.txt (+31/-31) builds/install/misc/firebird.conf.in (+5/-2) builds/posix/Makefile.in (+17/-17) builds/posix/Makefile.in.examples (+1/-0) builds/posix/make.defaults (+1/-1) builds/posix/prefix.darwin_i386 (+2/-5) builds/posix/prefix.darwin_powerpc (+0/-5) builds/posix/prefix.darwin_ppc64 (+2/-5) builds/posix/prefix.darwin_x86_64 (+0/-1) builds/win32/msvc10/empbuild.vcxproj (+6/-4) builds/win32/msvc12/empbuild.vcxproj (+6/-4) builds/win32/msvc14/empbuild.vcxproj (+6/-4) configure.ac (+10/-17) debian/changelog (+66/-0) debian/clean (+1/-1) debian/control (+1/-1) debian/copyright (+82/-43) debian/firebird3.0-server.lintian-overrides (+3/-3) debian/gbp.conf (+3/-0) debian/libib-util.lintian-overrides (+1/-1) debian/pack-upstream-snapshot.sh (+3/-2) debian/patches/deb/no-suse.init.patch (+1/-1) debian/patches/no-binary-gbaks.patch (+2/-2) debian/patches/out/cross-configure.patch (+6/-6) debian/patches/out/hurd-maxpathlen.patch (+2/-2) debian/patches/out/obsolete-syslogd.target.patch (+1/-1) debian/patches/series (+2/-0) debian/patches/upstream/riscv64-support.patch (+1/-1) debian/patches/upstream/systemd-service-documentation.patch (+15/-0) debian/patches/upstream/systemd-service-stderr.patch (+15/-0) debian/rules (+9/-4) debian/watch (+3/-5) dev/null (+0/-17) doc/WhatsNew (+185/-0) examples/dbcrypt/CryptKeyHolder.cpp (+1/-1) examples/dbcrypt/DbCrypt.cpp (+1/-1) examples/interfaces/ifaceExamples.h (+0/-8) src/alice/tdr.cpp (+8/-13) src/auth/AuthDbg.cpp (+1/-1) src/auth/SecDbCache.h (+10/-0) src/auth/SecureRemotePassword/manage/SrpManagement.cpp (+1/-9) src/auth/SecureRemotePassword/server/SrpServer.cpp (+16/-12) src/auth/SecurityDatabase/LegacyManagement.epp (+1/-1) src/auth/SecurityDatabase/LegacyServer.cpp (+1/-1) src/burp/backup.epp (+1/-1) src/common/ThreadStart.cpp (+11/-8) src/common/UtilSvc.cpp (+1/-0) src/common/classes/ClumpletReader.cpp (+14/-0) src/common/classes/RefMutex.h (+4/-4) src/common/classes/XThreadMutex.h (+1/-1) src/common/classes/array.h (+6/-0) src/common/classes/auto.h (+24/-7) src/common/classes/locks.h (+11/-7) src/common/common.h (+0/-6) src/common/config/config.cpp (+1/-1) src/common/fb_exception.cpp (+20/-7) src/common/intlobj_new.h (+11/-3) src/common/isc_sync.cpp (+4/-1) src/common/os/posix/guid.cpp (+3/-0) src/common/os/posix/os_utils.cpp (+6/-6) src/common/unicode_util.cpp (+271/-54) src/common/unicode_util.h (+49/-2) src/common/utils.cpp (+25/-11) src/dsql/DsqlCursor.cpp (+19/-25) src/dsql/DsqlCursor.h (+1/-1) src/dsql/dsql.cpp (+25/-26) src/dsql/dsql.h (+4/-0) src/dsql/pass1.cpp (+4/-9) src/extlib/ib_util.cpp (+3/-4) src/include/consts_pub.h (+1/-0) src/include/fb_exception.h (+9/-4) src/include/firebird.h (+0/-7) src/include/firebird/UdrCppEngine.h (+1/-1) src/include/gen/Firebird.pas (+3/-0) src/include/gen/msgs.h (+1/-1) src/include/gen/sql_code.h (+1/-1) src/intl/charsets/cs_437.h (+0/-266) src/intl/charsets/cs_737.h (+0/-266) src/intl/charsets/cs_775.h (+0/-266) src/intl/charsets/cs_850.h (+0/-266) src/intl/charsets/cs_852.h (+0/-266) src/intl/charsets/cs_857.h (+0/-266) src/intl/charsets/cs_858.h (+0/-266) src/intl/charsets/cs_860.h (+0/-266) src/intl/charsets/cs_861.h (+0/-266) src/intl/charsets/cs_862.h (+0/-266) src/intl/charsets/cs_863.h (+0/-266) src/intl/charsets/cs_864.h (+0/-266) src/intl/charsets/cs_865.h (+0/-266) src/intl/charsets/cs_866.h (+0/-266) src/intl/charsets/cs_869.h (+0/-266) src/intl/charsets/cs_big5.h (+0/-65) src/intl/charsets/cs_cyrl.h (+1/-269) src/intl/charsets/cs_gb2312.h (+1/-45) src/intl/charsets/cs_iso8859_1.h (+0/-266) src/intl/charsets/cs_iso8859_13.h (+0/-266) src/intl/charsets/cs_iso8859_2.h (+0/-266) src/intl/charsets/cs_iso8859_3.h (+0/-266) src/intl/charsets/cs_iso8859_4.h (+0/-266) src/intl/charsets/cs_iso8859_5.h (+0/-266) src/intl/charsets/cs_iso8859_6.h (+0/-266) src/intl/charsets/cs_iso8859_7.h (+0/-266) src/intl/charsets/cs_iso8859_8.h (+0/-266) src/intl/charsets/cs_iso8859_9.h (+0/-266) src/intl/charsets/cs_jis_0208_1990.h (+1/-35) src/intl/charsets/cs_koi8r.h (+0/-257) src/intl/charsets/cs_koi8u.h (+0/-256) src/intl/charsets/cs_ksc5601.h (+0/-5) src/intl/charsets/cs_next.h (+1/-290) src/intl/charsets/cs_sjis.h (+1/-252) src/intl/charsets/cs_w1250.h (+0/-266) src/intl/charsets/cs_w1251.h (+0/-266) src/intl/charsets/cs_w1252.h (+0/-266) src/intl/charsets/cs_w1253.h (+0/-266) src/intl/charsets/cs_w1254.h (+0/-266) src/intl/charsets/cs_w1255.h (+0/-266) src/intl/charsets/cs_w1256.h (+0/-266) src/intl/charsets/cs_w1257.h (+0/-266) src/intl/charsets/cs_w1258.h (+1/-269) src/intl/lc_ascii.cpp (+0/-2) src/intl/lc_ksc.cpp (+0/-2) src/intl/lc_narrow.cpp (+0/-2) src/intl/ld.cpp (+4/-4) src/intl/ld.h (+0/-8) src/intl/ld_proto.h (+4/-4) src/isql/isql.epp (+12/-13) src/isql/show.epp (+33/-45) src/jrd/Attachment.cpp (+11/-6) src/jrd/Attachment.h (+113/-8) src/jrd/CryptoManager.cpp (+26/-35) src/jrd/CryptoManager.h (+2/-2) src/jrd/DbCreators.cpp (+4/-10) src/jrd/Mapping.cpp (+39/-18) src/jrd/Mapping.h (+1/-1) src/jrd/Monitoring.cpp (+1/-1) src/jrd/Optimizer.cpp (+152/-72) src/jrd/Optimizer.h (+6/-2) src/jrd/ThreadCollect.h (+138/-0) src/jrd/btr.cpp (+337/-229) src/jrd/btr.h (+2/-0) src/jrd/btr_proto.h (+3/-3) src/jrd/build_no.h (+7/-7) src/jrd/dfw.epp (+3/-1) src/jrd/dpm.epp (+2/-0) src/jrd/extds/ExtDS.cpp (+6/-6) src/jrd/extds/InternalDS.cpp (+30/-30) src/jrd/extds/IscDS.cpp (+22/-15) src/jrd/ibase.h (+12/-0) src/jrd/idx.cpp (+32/-13) src/jrd/inf.cpp (+1/-1) src/jrd/intl.cpp (+2/-0) src/jrd/jrd.cpp (+163/-86) src/jrd/jrd.h (+14/-2) src/jrd/met.epp (+111/-94) src/jrd/opt.cpp (+0/-2) src/jrd/os/win32/winnt.cpp (+2/-0) src/jrd/recsrc/IndexTableScan.cpp (+155/-95) src/jrd/recsrc/RecordSource.h (+6/-0) src/jrd/shut.cpp (+8/-2) src/jrd/svc.cpp (+26/-70) src/jrd/svc.h (+3/-0) src/jrd/tra.cpp (+2/-0) src/jrd/trace/TraceManager.cpp (+20/-3) src/jrd/validation.cpp (+21/-10) src/misc/pascal/fb_get_master_interface.pas (+2/-0) src/misc/src_bundle.sh (+1/-1) src/misc/writeBuildNum.sh (+2/-2) src/msgs/messages2.sql (+1/-1) src/msgs/system_errors2.sql (+1/-1) src/plugins/udr_engine/UdrEngine.cpp (+1/-1) src/remote/client/interface.cpp (+115/-20) src/remote/inet.cpp (+2/-1) src/remote/remote.cpp (+26/-1) src/remote/remote.h (+8/-3) src/remote/server/server.cpp (+19/-15) src/utilities/fbtracemgr/traceMgrMain.cpp (+14/-8) src/utilities/gstat/dba.epp (+9/-4) src/utilities/nbackup/nbackup.cpp (+13/-1) src/utilities/ntrace/traceplugin.cpp (+1/-1) src/yvalve/DistributedTransaction.cpp (+6/-15) src/yvalve/PluginManager.cpp (+3/-0) src/yvalve/gds.cpp (+2/-2) src/yvalve/gds_proto.h (+4/-2) src/yvalve/preparse.cpp (+1/-1) src/yvalve/utl.cpp (+29/-40) src/yvalve/why.cpp (+5/-8) |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
git-ubuntu import | Pending | ||
Review via email: mp+445975@code.launchpad.net |
This proposal has been superseded by a proposal from 2023-07-04.
Commit message
Description of the change
To post a comment you must log in.
Unmerged commits
- c648f1d... by Danilo Egea Gondolfo
-
changelog
- ba77bdd... by Danilo Egea Gondolfo
-
Merge branch 'ubuntu/devel' into mantic_merge_1
- bfc434c... by Damyan Ivanov
-
3.0.11.33637.ds4-2 (patches unapplied)
Imported using git-ubuntu import.
- 9bcb942... by Damyan Ivanov
-
3.0.11.33637.ds4-1 (patches unapplied)
Imported using git-ubuntu import.
- e681bf4... by Damyan Ivanov
-
3.0.10.33601.ds4-1 (patches unapplied)
Imported using git-ubuntu import.
- 35b5a24... by Damyan Ivanov
-
3.0.9.33560.ds4-3 (patches unapplied)
Imported using git-ubuntu import.
- def9fad... by Damyan Ivanov
-
3.0.9.33560.ds4-2 (patches unapplied)
Imported using git-ubuntu import.
- e09a3d4... by Damyan Ivanov
-
3.0.9.33560.ds4-1 (patches unapplied)
Imported using git-ubuntu import.
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | diff --git a/.travis.yml b/.travis.yml |
2 | deleted file mode 100644 |
3 | index ef72bb9..0000000 |
4 | --- a/.travis.yml |
5 | +++ /dev/null |
6 | @@ -1,78 +0,0 @@ |
7 | -matrix: |
8 | - include: |
9 | - # - os: osx |
10 | - # osx_image: xcode9.2 # macOS 10.12 Sierra |
11 | - # - os: osx |
12 | - # osx_image: xcode11.2 # macOS 10.14 Mojave |
13 | - - os: linux |
14 | - |
15 | -language: cpp |
16 | - |
17 | -notifications: |
18 | - email: false |
19 | - |
20 | -sudo: required |
21 | -dist: trusty |
22 | - |
23 | -install: |
24 | - - | |
25 | - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then |
26 | - sudo apt-get update |
27 | - sudo apt-get install -y libtommath0 libtommath-dev |
28 | - fi |
29 | - |
30 | -script: |
31 | - - | |
32 | - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then |
33 | - ./autogen.sh --enable-binreloc --prefix=/opt/firebird |
34 | - make -j4 |
35 | - make dist |
36 | - tar xzvf gen/Firebird-[0-9]*.tar.gz |
37 | - (cd Firebird-[0-9]*; sudo ./install.sh -silent) |
38 | - fi |
39 | - |
40 | - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then |
41 | - export LIBTOOLIZE=glibtoolize |
42 | - export LIBTOOL=glibtool |
43 | - |
44 | - mkdir extern/icu-macos |
45 | - pushd extern/icu-macos |
46 | - curl -OL https://github.com/unicode-org/icu/releases/download/release-59-2/icu4c-59_2-src.tgz |
47 | - curl -OL https://github.com/unicode-org/icu/commit/24aeb9a5a5874f4ce5db912e30670ac3ae236971.patch |
48 | - tar xzf icu4c-59_2-src.tgz |
49 | - ICU_INSTALL_PATH=`pwd`/install |
50 | - cd icu/source |
51 | - patch -p3 < ../../24aeb9a5a5874f4ce5db912e30670ac3ae236971.patch |
52 | - ./runConfigureICU MacOSX --prefix=$ICU_INSTALL_PATH |
53 | - make -j4 |
54 | - make install |
55 | - install_name_tool -id @rpath/lib/libicuuc.dylib $ICU_INSTALL_PATH/lib/libicuuc.dylib |
56 | - install_name_tool -id @rpath/lib/libicui18n.dylib $ICU_INSTALL_PATH/lib/libicui18n.dylib |
57 | - install_name_tool -id @rpath/lib/libicudata.dylib $ICU_INSTALL_PATH/lib/libicudata.dylib |
58 | - install_name_tool -change libicudata.59.dylib @loader_path/libicudata.59.dylib $ICU_INSTALL_PATH/lib/libicuuc.59.dylib |
59 | - install_name_tool -change libicudata.59.dylib @loader_path/libicudata.59.dylib $ICU_INSTALL_PATH/lib/libicui18n.59.dylib |
60 | - install_name_tool -change libicuuc.59.dylib @loader_path/libicuuc.59.dylib $ICU_INSTALL_PATH/lib/libicui18n.59.dylib |
61 | - popd |
62 | - mkdir -p gen/Release/firebird/lib |
63 | - mkdir -p gen/Debug/firebird/lib |
64 | - cp $ICU_INSTALL_PATH/lib/*.dylib gen/Release/firebird/lib/ |
65 | - cp $ICU_INSTALL_PATH/lib/*.dylib gen/Debug/firebird/lib/ |
66 | - |
67 | - export C_INCLUDE_PATH="$ICU_INSTALL_PATH/include:$C_INCLUDE_PATH" |
68 | - export CPLUS_INCLUDE_PATH="$ICU_INSTALL_PATH/include:$CPLUS_INCLUDE_PATH" |
69 | - |
70 | - LIBRARY_PATH="$ICU_INSTALL_PATH/lib:$LIBRARY_PATH" ./autogen.sh --with-builtin-tommath |
71 | - make -j4 |
72 | - |
73 | - (cd gen; make -B -f make.platform.postfix ICU_LOC="$ICU_INSTALL_PATH/lib/") |
74 | - (cd gen; make -B -f Makefile.install) |
75 | - |
76 | - # Rename directory to make sure the build is relocatable. |
77 | - mv gen gen2 |
78 | - sudo installer -pkg gen2/Release/*.pkg -verbose -target / |
79 | - |
80 | - export FIREBIRD_LOCK=`pwd`/temp |
81 | - echo "create database 't.fdb'; select '1' from rdb\$database; select _win1252 '2' from rdb\$database; select _utf8 '3' collate unicode from rdb\$database;" | /Library/Frameworks/Firebird.framework/Resources/bin/isql |
82 | - |
83 | - echo "create database 'localhost:/tmp/t.fdb' user sysdba password 'masterkey'; select '11' from rdb\$database; select _win1252 '22' from rdb\$database; select _utf8 '33' collate unicode from rdb\$database;" | /Library/Frameworks/Firebird.framework/Resources/bin/isql |
84 | - fi |
85 | diff --git a/README.md b/README.md |
86 | index 1c8a5e0..4759d06 100644 |
87 | --- a/README.md |
88 | +++ b/README.md |
89 | @@ -1,5 +1,5 @@ |
90 | -[![Build Status](https://api.travis-ci.com/FirebirdSQL/firebird.svg?branch=B3_0_Release)](https://travis-ci.com/FirebirdSQL/firebird) |
91 | -[![Build Status](https://ci.appveyor.com/api/projects/status/github/FirebirdSQL/firebird?branch=B3_0_Release&svg=true)](https://ci.appveyor.com/project/FirebirdSQL/firebird) |
92 | +[![Build Status (GitHub)](https://github.com/FirebirdSQL/firebird/actions/workflows/main.yml/badge.svg?branch=B3_0_Release)](https://github.com/FirebirdSQL/firebird/actions/workflows/main.yml?query=branch%3AB3_0_Release) |
93 | +[![Build Status (AppVeyor)](https://ci.appveyor.com/api/projects/status/github/FirebirdSQL/firebird?branch=B3_0_Release&svg=true)](https://ci.appveyor.com/project/FirebirdSQL/firebird) |
94 | |
95 | # Firebird README |
96 | |
97 | diff --git a/builds/install/arch-specific/android/BuildPackage.sh b/builds/install/arch-specific/android/BuildPackage.sh |
98 | index beb8406..f7f5caa 100644 |
99 | --- a/builds/install/arch-specific/android/BuildPackage.sh |
100 | +++ b/builds/install/arch-specific/android/BuildPackage.sh |
101 | @@ -1,10 +1,18 @@ |
102 | +bits=${1} |
103 | +[ -z "$bits" ] && bits=32 |
104 | +[ "$bits" = "32" ] && cross=arm-linux-androideabi |
105 | +[ "$bits" = "64" ] && cross=aarch64-linux-android |
106 | +[ -z "$cross" ] && echo "Invalid bits passed" && exit 1 |
107 | +arm="" |
108 | +[ "$bits" = "64" ] && arm=64 |
109 | + |
110 | MakeVersion=gen/Make.Version |
111 | Build=`grep ^BuildNum ${MakeVersion}|awk '{print $3;}'` |
112 | Version=`grep ^FirebirdVersion ${MakeVersion}|awk '{print $3;}'` |
113 | -Release="Firebird-${Version}.${Build}-0.arm.tar.gz" |
114 | -Debug="Firebird-withDebugInfo-${Version}.${Build}-0.arm.tar.gz" |
115 | +Release="Firebird-${Version}.${Build}-0.arm${arm}.tar.gz" |
116 | +Debug="Firebird-withDebugInfo-${Version}.${Build}-0.arm${arm}.tar.gz" |
117 | Stripped=strip |
118 | -aStrip=${NDK}/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-strip |
119 | +aStrip=${NDK}/toolchains/${cross}-4.9/prebuilt/linux-x86_64/bin/${cross}-strip |
120 | fbRootDir=`pwd` |
121 | |
122 | cd gen/Release |
123 | diff --git a/builds/install/arch-specific/win32/BuildExecutableInstall.bat b/builds/install/arch-specific/win32/BuildExecutableInstall.bat |
124 | index b3437f0..1d86344 100644 |
125 | --- a/builds/install/arch-specific/win32/BuildExecutableInstall.bat |
126 | +++ b/builds/install/arch-specific/win32/BuildExecutableInstall.bat |
127 | @@ -264,7 +264,7 @@ copy %FB_ROOT_PATH%\lang_helpers\ib_util.pas %FB_OUTPUT_DIR%\include > nul || (c |
128 | @if errorlevel 0 ( |
129 | if "%PROCESSOR_ARCHITECTURE%"=="x86" ( |
130 | @echo Generating fbclient_bor.lib |
131 | - @implib %FB_OUTPUT_DIR%\lib\fbclient_bor.lib %FB_OUTPUT_DIR%\fbclient.dll > nul |
132 | + @implib.exe %FB_OUTPUT_DIR%\lib\fbclient_bor.lib %FB_OUTPUT_DIR%\fbclient.dll > nul |
133 | ) |
134 | ) |
135 | |
136 | @@ -302,7 +302,7 @@ for %%v in ( ib_udf.sql ib_udf2.sql ) do ( |
137 | for %%v in ( fbudf.sql fbudf.txt ) do ( |
138 | copy %FB_ROOT_PATH%\src\extlib\fbudf\%%v %FB_OUTPUT_DIR%\UDF\%%v > nul |
139 | @if %ERRORLEVEL% GEQ 1 ( |
140 | - call :ERROR Copying %FB_ROOT_PATH%\src\extlib\%%v failed with error %ERRORLEVEL% |
141 | + call :ERROR Copying %FB_ROOT_PATH%\src\extlib\fbudf\%%v to %FB_OUTPUT_DIR%\UDF\%%v failed with error %ERRORLEVEL% |
142 | goto :EOF |
143 | ) |
144 | ) |
145 | @@ -585,7 +585,7 @@ if "%FBBUILD_SHIP_PDB%" == "ship_pdb" ( |
146 | ) |
147 | set FBBUILD_ZIPFILE=%FBBUILD_INSTALL_IMAGES%\Firebird-%FBBUILD_FILE_ID%%FBBUILD_FILENAME_SUFFIX%.zip |
148 | ) |
149 | - |
150 | +@echo calling sevenzip - %SEVENZIP% %FBBUILD_ZIPFILE% %FBBUILD_ZIP_PACK_ROOT%\*.* |
151 | @%SEVENZIP%\7z.exe a -r -tzip -mx9 %FBBUILD_ZIPFILE% %FBBUILD_ZIP_PACK_ROOT%\*.* |
152 | @echo End of ZIP_PACK |
153 | @echo. |
154 | diff --git a/builds/install/arch-specific/win32/FirebirdInstallSupportFunctions.inc b/builds/install/arch-specific/win32/FirebirdInstallSupportFunctions.inc |
155 | index 7bfefac..c95696f 100644 |
156 | --- a/builds/install/arch-specific/win32/FirebirdInstallSupportFunctions.inc |
157 | +++ b/builds/install/arch-specific/win32/FirebirdInstallSupportFunctions.inc |
158 | @@ -356,6 +356,20 @@ begin |
159 | end; |
160 | |
161 | |
162 | +function FindInFile( Filename, StringToFind: String): Boolean; |
163 | +var |
164 | + i: Integer; |
165 | + AString: AnsiString; |
166 | +begin |
167 | + Result := False; |
168 | + LoadStringFromFile( Filename, Astring ); |
169 | + i := Length( Astring ); |
170 | + if i <> 0 then |
171 | + i := Pos ( StringToFind, Astring ); |
172 | + if i <> 0 then Result := True; |
173 | +end; |
174 | + |
175 | + |
176 | procedure DecodeVersion( VerStr: String; var VerInt: array of Integer ); |
177 | var |
178 | i,p: Integer; s: string; |
179 | diff --git a/builds/install/arch-specific/win32/FirebirdInstall_30.iss b/builds/install/arch-specific/win32/FirebirdInstall_30.iss |
180 | index 6b38cd0..5a31401 100644 |
181 | --- a/builds/install/arch-specific/win32/FirebirdInstall_30.iss |
182 | +++ b/builds/install/arch-specific/win32/FirebirdInstall_30.iss |
183 | @@ -191,7 +191,7 @@ |
184 | ;If we are still under development we can ignore some missing files. |
185 | #if GetEnv("FBBUILD_PROD_STATUS") == "DEV" |
186 | #define SkipFileIfDevStatus " skipifsourcedoesntexist " |
187 | -#else |
188 | +#else |
189 | #define SkipFileIfDevStatus " " |
190 | #endif |
191 | |
192 | @@ -351,7 +351,7 @@ Name: ru; MessagesFile: compiler:Languages\Russian.isl; InfoBeforeFile: {#GenDir |
193 | #endif |
194 | |
195 | #ifdef iss_debug |
196 | -; *** Note - this comment section needs revision or deletion. |
197 | +; *** Note - this comment section needs revision or deletion. |
198 | ; It is only applicable to the ansi installer, which is no longer |
199 | ; supported for Firebird 3 |
200 | ; By default, the languages available at runtime depend on the user's |
201 | @@ -435,7 +435,7 @@ Root: HKLM; Subkey: "SOFTWARE\FirebirdSQL"; ValueType: none; Flags: deletekey; |
202 | |
203 | [Icons] |
204 | Name: {group}\Firebird Server; Filename: {app}\firebird.exe; Parameters: {code:StartAppParams}; Flags: runminimized; MinVersion: 4.0,4.0; Check: InstallServerIcon; IconIndex: 0; Components: ServerComponent; Comment: Run Firebird Server (without guardian) |
205 | -Name: {group}\Firebird Guardian; Filename: {app}\fbguard.exe; Parameters: {code:StartAppParams}; Flags: runminimized; MinVersion: 4.0,4.0; Check: InstallGuardianIcon; IconIndex: 1; Components: ServerComponent; Comment: Run Firebird Server (with guardian); |
206 | +Name: {group}\Firebird Guardian; Filename: {app}\fbguard.exe; Parameters: {code:StartAppParams}; Flags: runminimized; MinVersion: 4.0,4.0; Check: InstallGuardianIcon; IconIndex: 1; Components: ServerComponent; Comment: Run Firebird Server (with guardian); |
207 | Name: {group}\Firebird ISQL Tool; Filename: {app}\isql.exe; Parameters: -z; WorkingDir: {app}; MinVersion: 4.0,4.0; Comment: {cm:RunISQL} |
208 | Name: {group}\Firebird {#FB_cur_ver} Release Notes; Filename: {app}\doc\Firebird_v{#FB_cur_ver}.ReleaseNotes.pdf; MinVersion: 4.0,4.0; Comment: {#MyAppName} {cm:ReleaseNotes} |
209 | Name: {group}\Firebird {#GroupnameVer} Quick Start Guide; Filename: {app}\doc\Firebird-3-QuickStart.pdf; MinVersion: 4.0,4.0; Comment: {#MyAppName} {#FB_cur_ver} |
210 | @@ -688,7 +688,7 @@ begin |
211 | // or |
212 | // (pos('/?',Uppercase(CommandLine)) > 0) or // InnoSetup displays its own help if these switches are passed. |
213 | // (pos('/H',Uppercase(CommandLine)) > 0) ) // Note also that our help scren only appears after the Choose Language dialogue :-( |
214 | - then begin |
215 | + then begin |
216 | ShowHelpDlg; |
217 | result := False; |
218 | Exit; |
219 | @@ -835,7 +835,7 @@ begin |
220 | if IsComponentSelected('ServerComponent') and ( IsTaskSelected('UseSuperServerTask\UseGuardianTask') |
221 | or ( IsTaskSelected('UseSuperClassicTask\UseGuardianTask') ) ) then |
222 | SvcParams := ServerType + SvcParams + ' -guardian '; |
223 | - |
224 | + |
225 | InstanceName := ServiceName('We currently do not support or test for a different instance name'); |
226 | |
227 | SvcParams := SvcParams + InstanceName; |
228 | @@ -858,29 +858,69 @@ begin |
229 | end; |
230 | |
231 | |
232 | - |
233 | - |
234 | -function InitSecurityDB: Boolean; |
235 | +function InitSecurityDB( PluginName: String ) : Boolean; |
236 | var |
237 | AStringList: TStringList; |
238 | TempDir: String; |
239 | - ResultCode: Integer; |
240 | - CmdStr: string; |
241 | + ResultCode: Integer; |
242 | + CmdStr: string; |
243 | + InputStr: string; |
244 | + OutputStr: string; |
245 | begin |
246 | - TempDir := ExpandConstant( '{tmp}' ); |
247 | - CmdStr := ExpandConstant( '{app}\isql.exe' ); |
248 | - AStringList := TStringList.create; |
249 | - with AStringList do begin |
250 | - Add( 'create user ' + GetAdminUserName + ' password ''' + GetAdminUserPassword + ''' using plugin Srp;' ); |
251 | - if IsTaskSelected('EnableLegacyClientAuth') then |
252 | - if ( ( uppercase( GetAdminUserName ) <> 'SYSDBA' ) or ( GetAdminUserPassword <> 'masterkey' ) ) then |
253 | - Add( 'create or alter user ' + GetAdminUserName + ' password ''' + GetAdminUserPassword + ''' using plugin Legacy_UserManager;' ); |
254 | - Add( 'commit;' ); //Technically exit implies a commit so this not necessary. OTOH, explicitly committing makes for more readable code. |
255 | - Add( 'exit;' ); |
256 | - SaveToFile( Tempdir +'\temp.sql' ); |
257 | - end; |
258 | - Result := Exec( CmdStr , ' -m -m2 -user SYSDBA -i ' + TempDir + '\temp.sql -o ' + TempDir + '\temp.sql.txt employee ' , TempDir, SW_HIDE, ewWaitUntilTerminated, ResultCode ); |
259 | - DeleteFile( TempDir + +'\temp.sql '); |
260 | + |
261 | + if PluginName = '' then |
262 | + PluginName := 'Srp'; |
263 | + |
264 | + TempDir := ExpandConstant( '{tmp}' ); |
265 | + CmdStr := ExpandConstant( '{app}\isql.exe' ); |
266 | + InputStr := TempDir + '\' + PluginName + '_temp.sql'; |
267 | + OutputStr := InputStr + '.txt'; |
268 | + |
269 | + // Do we need to do this? |
270 | + if FileExists( InputStr ) then DeleteFile( InputStr ); |
271 | + if FileExists( OutputStr ) then DeleteFile( OutputStr ); |
272 | + |
273 | + AStringList := TStringList.create; |
274 | + with AStringList do begin |
275 | + Add( 'create or alter user ' + GetAdminUserName + ' password ''' + GetAdminUserPassword + ''' using plugin ' + PluginName + ';' ); |
276 | + Add( 'exit;' ); |
277 | + SaveToFile( InputStr ); |
278 | + end; |
279 | + |
280 | + |
281 | + Result := Exec( CmdStr , ' -m -m2 -user SYSDBA -i ' + InputStr + ' -o ' + OutputStr + ' employee ' , TempDir, SW_HIDE, ewWaitUntilTerminated, ResultCode ); |
282 | + |
283 | +// DOC NOTE - we are not actually handling a non-zero result code. |
284 | +// This is a complicated subject as the installer can be run either scripted |
285 | +// or as a GUI. This needs more research. If InitSecurityDB fails do we fail |
286 | +// the entire install? Allow user to complete and fix manually? Or give both options? |
287 | + if ResultCode <> 0 then begin |
288 | + Result := False; |
289 | + Log( 'In function InitSecurityDB Exec isql returned ' + IntToStr(ResultCode) + ' executing ' + InputStr ); |
290 | + end; |
291 | + if FindInFile( OutputStr, 'error' ) then begin |
292 | + Result := False; |
293 | + Log( 'In function InitSecurityDB FindInFile found an error in ' + OutputStr ); |
294 | + end; |
295 | + |
296 | +end; |
297 | + |
298 | + |
299 | +function ConfigLegacyClientAuth: Boolean; |
300 | +begin |
301 | + |
302 | +// This order of plugin evaluation favours Legacy_Auth as the preferred plugin |
303 | + ReplaceLine(GetAppPath+'\firebird.conf','AuthServer = ','AuthServer = Legacy_Auth, Srp, Win_Sspi','#'); |
304 | + ReplaceLine(GetAppPath+'\firebird.conf','AuthClient = ','AuthClient = Legacy_Auth, Srp, Srp256, Win_Sspi','#'); |
305 | + ReplaceLine(GetAppPath+'\firebird.conf','UserManager = ','UserManager = Legacy_UserManager, Srp','#'); |
306 | + ReplaceLine(GetAppPath+'\firebird.conf','WireCrypt = ','WireCrypt = enabled','#'); |
307 | + |
308 | +// This order of plugin evaluation favours the more secure defaults |
309 | +// ReplaceLine(GetAppPath+'\firebird.conf','AuthServer = ','AuthServer = Srp, Win_Sspi, Legacy_Auth ','#'); |
310 | +// ReplaceLine(GetAppPath+'\firebird.conf','AuthClient = ','AuthClient = Srp, Srp256, Win_Sspi, Legacy_Auth','#'); |
311 | +// ReplaceLine(GetAppPath+'\firebird.conf','UserManager = ','UserManager = Srp, Legacy_UserManager','#'); |
312 | +// ReplaceLine(GetAppPath+'\firebird.conf','WireCrypt = ','WireCrypt = enabled','#'); |
313 | + |
314 | end; |
315 | |
316 | |
317 | @@ -897,8 +937,8 @@ end; |
318 | function InstallServerIcon(): Boolean; |
319 | begin |
320 | result := false; |
321 | - if IsTaskSelected('UseApplicationTask') and |
322 | - IsComponentSelected('ServerComponent') and |
323 | + if IsTaskSelected('UseApplicationTask') and |
324 | + IsComponentSelected('ServerComponent') and |
325 | not ( IsTaskSelected('UseSuperServerTask\UseGuardianTask') or |
326 | IsTaskSelected('UseSuperClassicTask\UseGuardianTask') ) then |
327 | result := true; |
328 | @@ -906,7 +946,7 @@ end; |
329 | |
330 | function StartApp(Default: String): String; |
331 | begin |
332 | - if IsComponentSelected('ServerComponent') and ( |
333 | + if IsComponentSelected('ServerComponent') and ( |
334 | IsTaskSelected('UseSuperServerTask\UseGuardianTask') or |
335 | IsTaskSelected('UseSuperClassicTask\UseGuardianTask') ) then |
336 | Result := GetAppPath+'\fbguard.exe' |
337 | @@ -945,8 +985,8 @@ end; |
338 | |
339 | |
340 | procedure UpdateFirebirdConf; |
341 | -// Update firebird conf. |
342 | -// If user has deselected the guardian we should update firebird.conf accordingly. |
343 | +// Update firebird conf. |
344 | +// If user has deselected the guardian we should update firebird.conf accordingly. |
345 | // We also test if user has asked for classic or super server |
346 | // If EnableLegacyClientAuth has ben selected we update the file....... |
347 | // Otherwise we leave the file unchanged. |
348 | @@ -956,34 +996,31 @@ begin |
349 | //firebird.conf exists. If it doesn't then we don't care. |
350 | if FileExists(GetAppPath+'\firebird.conf') then begin |
351 | |
352 | - if (IsComponentSelected('ServerComponent') ) then begin |
353 | + if (IsComponentSelected('ServerComponent') ) then begin |
354 | |
355 | -// Setting GuardianOption to 0 makes no sense. If the user deploys the guardian |
356 | -// there is an expectation that it will restart the server in the event of a crash. |
357 | +// Setting GuardianOption to 0 makes no sense. If the user deploys the guardian |
358 | +// there is an expectation that it will restart the server in the event of a crash. |
359 | // Otherwise, why start firebird with the guardian? |
360 | // if not ( IsTaskSelected('UseSuperServerTask\UseGuardianTask') or IsTaskSelected('UseSuperClassicTask\UseGuardianTask') ) then |
361 | // ReplaceLine(GetAppPath+'\firebird.conf','GuardianOption','GuardianOption = 0','#'); |
362 | |
363 | - // These attempts to modify firebird.conf may not survice repeated installs. |
364 | + // These attempts to modify firebird.conf may not survice repeated installs. |
365 | |
366 | - if IsTaskSelected('UseClassicServerTask') then |
367 | - ReplaceLine(GetAppPath+'\firebird.conf','ServerMode = ','ServerMode = Classic','#'); |
368 | + if IsTaskSelected('UseClassicServerTask') then |
369 | + ReplaceLine(GetAppPath+'\firebird.conf','ServerMode = ','ServerMode = Classic','#'); |
370 | |
371 | if IsTaskSelected('UseSuperClassicTask') then |
372 | - ReplaceLine(GetAppPath+'\firebird.conf','ServerMode = ','ServerMode = SuperClassic','#'); |
373 | + ReplaceLine(GetAppPath+'\firebird.conf','ServerMode = ','ServerMode = SuperClassic','#'); |
374 | |
375 | - if IsTaskSelected('UseSuperServerTask') then |
376 | - ReplaceLine(GetAppPath+'\firebird.conf','ServerMode = ','ServerMode = Super','#'); |
377 | + if IsTaskSelected('UseSuperServerTask') then |
378 | + ReplaceLine(GetAppPath+'\firebird.conf','ServerMode = ','ServerMode = Super','#'); |
379 | |
380 | if IsTaskSelected('EnableLegacyClientAuth') then begin |
381 | - ReplaceLine(GetAppPath+'\firebird.conf','AuthServer = ','AuthServer = Legacy_Auth, Srp, Win_Sspi','#'); |
382 | - ReplaceLine(GetAppPath+'\firebird.conf','AuthClient = ','AuthClient = Legacy_Auth, Srp, Win_Sspi','#'); |
383 | - ReplaceLine(GetAppPath+'\firebird.conf','UserManager = ','UserManager = Legacy_UserManager, Srp','#'); |
384 | - ReplaceLine(GetAppPath+'\firebird.conf','WireCrypt = ','WireCrypt = enabled','#'); |
385 | + ConfigLegacyClientAuth; |
386 | end; |
387 | |
388 | - end; |
389 | - |
390 | + end; |
391 | + |
392 | end; |
393 | end; |
394 | |
395 | @@ -1021,9 +1058,9 @@ end; |
396 | |
397 | procedure CurPageChanged(CurPage: Integer); |
398 | // These are the predefined page IDs of the Wizard form as of InnoSetup 5.5.6 |
399 | -// wpWelcome, wpLicense, wpPassword, wpInfoBefore, wpUserInfo, |
400 | -// wpSelectDir, wpSelectComponents, wpSelectProgramGroup, wpSelectTasks, |
401 | -// wpReady, wpPreparing, wpInstalling, wpInfoAfter, wpFinished |
402 | +// wpWelcome, wpLicense, wpPassword, wpInfoBefore, wpUserInfo, |
403 | +// wpSelectDir, wpSelectComponents, wpSelectProgramGroup, wpSelectTasks, |
404 | +// wpReady, wpPreparing, wpInstalling, wpInfoAfter, wpFinished |
405 | begin |
406 | case CurPage of |
407 | wpWelcome: ResizeWizardForm(True); //There was a bug: every time when "go back" pressed the form was resized! |
408 | @@ -1034,12 +1071,12 @@ end; |
409 | |
410 | |
411 | procedure CurStepChanged(CurStep: TSetupStep); |
412 | -// currently just three steps - ssInstall, ssPostInstall, ssDone |
413 | +// currently just three steps - ssInstall, ssPostInstall, ssDone |
414 | var |
415 | AppStr: String; |
416 | ReadMeFileStr: String; |
417 | begin |
418 | - case CurStep of |
419 | + case CurStep of |
420 | ssInstall: begin |
421 | RenamePreFB3RC1Files; |
422 | SetupSharedFilesArray; |
423 | @@ -1054,13 +1091,15 @@ begin |
424 | IncrementSharedCount(Is64BitInstallMode, GetAppPath+'\fbtrace.conf', false); |
425 | IncrementSharedCount(Is64BitInstallMode, GetAppPath+'\security3.fdb', false); |
426 | |
427 | - InitSecurityDB; |
428 | + InitSecurityDB('Srp'); |
429 | |
430 | //Fix up conf file |
431 | UpdateFirebirdConf; |
432 | RemoveSavedConfIfNoDiff; |
433 | |
434 | - |
435 | + if IsTaskSelected('EnableLegacyClientAuth') then |
436 | + InitSecurityDB( 'Legacy_UserManager' ); |
437 | + |
438 | end; |
439 | |
440 | ssDone: begin |
441 | @@ -1099,7 +1138,7 @@ end; |
442 | // # FIXME - we can probably remove this function |
443 | function ChooseUninstallIcon(Default: String): String; |
444 | begin |
445 | - result := GetAppPath+'\firebird.exe'; |
446 | + result := GetAppPath+'\firebird.exe'; |
447 | end; |
448 | |
449 | //InnoSetup has a Check Parameter that allows installation if the function returns true. |
450 | @@ -1175,11 +1214,11 @@ begin |
451 | // a) Decrement shared count of each one and |
452 | // b) If Decrement reaches 0 (ie, function returns true) then we |
453 | // delete the file. |
454 | - // c) We arbitrarily break after 100 loops. Typically the shared count should only be |
455 | + // c) We arbitrarily break after 100 loops. Typically the shared count should only be |
456 | // in single digits anyway but we don't want to risk the test entering an endless loop. |
457 | i := 0; |
458 | - while not DecrementSharedCount(Is64BitInstallMode, aStringList[ count ] ) |
459 | - do |
460 | + while not DecrementSharedCount(Is64BitInstallMode, aStringList[ count ] ) |
461 | + do |
462 | if i = 100 then break else inc(i); |
463 | |
464 | res := DeleteFile( aStringList[ count ] ); |
465 | @@ -1204,29 +1243,31 @@ begin |
466 | Result := True |
467 | else if not ConfigureAuthentication then |
468 | Result := True |
469 | - else |
470 | + else |
471 | Result := False; |
472 | end; |
473 | |
474 | |
475 | function NextButtonClick(CurPageID: Integer): Boolean; |
476 | var |
477 | - i: integer; |
478 | + i: integer; |
479 | begin |
480 | Result := True; |
481 | case CurPageID of |
482 | AdminUserPage.ID : begin |
483 | - { check user has entered new sysdba password correctly. } |
484 | + { check user has entered new sysdba password correctly. } |
485 | i := CompareStr(AdminUserPage.Values[0],AdminUserPage.Values[1]); |
486 | If not (i = 0) then begin |
487 | Result := False; |
488 | AdminUserPage.Values[0] :=''; |
489 | AdminUserPage.Values[1] :=''; |
490 | MsgBox(ExpandConstant('{cm:SYSDBAPasswordMismatch}'), mbError, MB_OK); |
491 | - end; |
492 | + end; |
493 | end; |
494 | end; |
495 | end; |
496 | - |
497 | + |
498 | begin |
499 | end. |
500 | + |
501 | +; kate: replace-tabs on; indent-width 2; tab-width 2; replace-tabs-save on; syntax Pascal; |
502 | diff --git a/builds/install/arch-specific/win32/installation_scripted.txt b/builds/install/arch-specific/win32/installation_scripted.txt |
503 | index 15d159b..a155bfa 100644 |
504 | --- a/builds/install/arch-specific/win32/installation_scripted.txt |
505 | +++ b/builds/install/arch-specific/win32/installation_scripted.txt |
506 | @@ -14,14 +14,14 @@ General notes on preparing a scripted install |
507 | --------------------------------------------- |
508 | |
509 | These notes only document the firebird specific options for a scripted |
510 | -installation. Developers should refer to the full InnoSetup documentation |
511 | -for a description of the other options available for a scripted install. |
512 | +installation. Developers should refer to the full InnoSetup documentation |
513 | +for a description of the other options available for a scripted install. |
514 | This can be found here: |
515 | http://www.jrsoftware.org/ishelp/ |
516 | |
517 | -It is highly recommended that a scripted install is tested thoroughly |
518 | -before deployment. The easiest way to test is to run the script without |
519 | -the /SILENT parameter. This will present a standard installer with the |
520 | +It is highly recommended that a scripted install is tested thoroughly |
521 | +before deployment. The easiest way to test is to run the script without |
522 | +the /SILENT parameter. This will present a standard installer with the |
523 | scripted options preselected. |
524 | |
525 | NOTE that the /TASKS parameter clears all the default task settings. If |
526 | @@ -44,7 +44,7 @@ HELP |
527 | Setup parameters specific to the Firebird Uninstaller |
528 | /CLEAN |
529 | |
530 | -For general parameters available to all InnoSetup based installers see the |
531 | +For general parameters available to all InnoSetup based installers see the |
532 | documentation for innosetup. A summary is available via /? or /HELP |
533 | |
534 | |
535 | @@ -53,10 +53,10 @@ Parameters specific to Firebird installs |
536 | |
537 | HELP |
538 | Invoke this file as a help screen at installation time. |
539 | - Note no / is prefixed !! Because /? and /HELP are now |
540 | + Note no / is prefixed !! Because /? and /HELP are now |
541 | used by innosetup itself to dispaly innosetup specific help. |
542 | |
543 | - |
544 | + |
545 | /COMPONENTS="comma separated list of component names" |
546 | |
547 | Choose from - ServerComponent, |
548 | @@ -70,28 +70,28 @@ HELP |
549 | /COMPONENTS="ClientComponent" |
550 | |
551 | would be required for a client only install. |
552 | - |
553 | - NOTE - If a full server instal is required there is no need to |
554 | + |
555 | + NOTE - If a full server install is required there is no need to |
556 | specify /COMPONENTS. All three are chosen by default. |
557 | - |
558 | + |
559 | |
560 | /TASKS="comma separated list of task names" |
561 | |
562 | Specifies a list of tasks that should be initially selected or |
563 | deselected. To deselect a task, prefix its name with a "!" character. |
564 | |
565 | - Choose from - UseSuperServerTask |
566 | + Choose from - UseSuperServerTask |
567 | UseSuperServerTask\UseGuardianTask (optional) |
568 | - or |
569 | - UseSuperClassicTask |
570 | + or |
571 | + UseSuperClassicTask |
572 | UseSuperClassicTask\UseGuardianTask (optional) |
573 | or |
574 | UseClassicServerTask |
575 | - |
576 | - UseApplicationTask |
577 | - or |
578 | + |
579 | + UseApplicationTask |
580 | + or |
581 | UseServiceTask |
582 | - |
583 | + |
584 | AutoStartTask |
585 | CopyFbClientToSysTask |
586 | CopyFbClientAsGds32Task |
587 | @@ -104,7 +104,7 @@ HELP |
588 | |
589 | By default the following tasks are run: |
590 | |
591 | - UseSuperServerTask,UseServiceTask,AutoStartTask,CopyFbClientToSysTask |
592 | + UseSuperServerTask,UseServiceTask,AutoStartTask,CopyFbClientToSysTask |
593 | |
594 | /MERGETASKS="comma separated list of task names" |
595 | |
596 | @@ -119,8 +119,8 @@ HELP |
597 | /SYSDBAPASSWORD="mypassword" |
598 | |
599 | If supplied this will override the default SYSDBA password "masterkey". |
600 | - |
601 | - NOTE: If an existing Security database is found this parameter will be |
602 | + |
603 | + NOTE: If an existing Security database is found this parameter will be |
604 | ignored. |
605 | |
606 | |
607 | @@ -135,8 +135,8 @@ HELP |
608 | users by breaking a perfectly good working install of Firebird or InterBase. |
609 | Its your choice. |
610 | |
611 | - |
612 | - |
613 | + |
614 | + |
615 | Parameters specific to Firebird uninstalls |
616 | ------------------------------------------ |
617 | |
618 | @@ -159,27 +159,27 @@ Parameters specific to Firebird uninstalls |
619 | |
620 | Examples |
621 | -------- |
622 | -These examples are just for firebird related options. In practice you |
623 | -they will probably be combined with options such as /SILENT, /LOG, |
624 | +These examples are just for firebird related options. In practice you |
625 | +they will probably be combined with options such as /SILENT, /LOG, |
626 | /RESTARTEXITCODE etc. |
627 | |
628 | 1/ Full server install of super server architecture |
629 | - o Change SYSDBA password from default masterkey, |
630 | + o Change SYSDBA password from default masterkey, |
631 | o deploy gds32 to <SYS> |
632 | o enable legacy authentication for older clients |
633 | |
634 | /MERGETASKS="CopyFbClientAsGds32Task,EnableLegacyClientAuth" /SYSDBAPASSWORD="mypassword" |
635 | - |
636 | + |
637 | 2/ Deploy Classic Server and keep other default tasks |
638 | |
639 | - /MERGETASKS="UseClassicServerTask" |
640 | + /MERGETASKS="UseClassicServerTask" |
641 | |
642 | -3/ Really mess things up by accidentally deselecting the defaults and |
643 | +3/ Really mess things up by accidentally deselecting the defaults and |
644 | letting InnoSetup guess: |
645 | |
646 | - /TASKS="CopyFbClientAsGds32Task" |
647 | + /TASKS="CopyFbClientAsGds32Task" |
648 | |
649 | Be careful when using the /TASKS parameter ! |
650 | |
651 | - |
652 | + |
653 | |
654 | diff --git a/builds/install/misc/firebird.conf.in b/builds/install/misc/firebird.conf.in |
655 | index 807bc2d..3244959 100644 |
656 | --- a/builds/install/misc/firebird.conf.in |
657 | +++ b/builds/install/misc/firebird.conf.in |
658 | @@ -720,9 +720,12 @@ |
659 | # Either enables or disables the "TCP Loopback Fast Path" feature (SIO_LOOPBACK_FAST_PATH). |
660 | # Applies to Windows (version 8/2012 or higher) only. |
661 | # |
662 | -# Type: Boolean, default 1 (true) |
663 | +# Note: Microsoft has deprecated it and not recommended to use anymore. |
664 | +# To be removed in future Firebird versions. |
665 | # |
666 | -#TcpLoopbackFastPath = 1 |
667 | +# Type: Boolean, default 0 (false) |
668 | +# |
669 | +#TcpLoopbackFastPath = 0 |
670 | |
671 | # |
672 | # Allows setting of IPV6_V6ONLY socket option. If enabled, IPv6 sockets |
673 | diff --git a/builds/posix/Makefile.in b/builds/posix/Makefile.in |
674 | index b6e90be..13e83cb 100644 |
675 | --- a/builds/posix/Makefile.in |
676 | +++ b/builds/posix/Makefile.in |
677 | @@ -348,7 +348,7 @@ $(LIBFBINTL_SO): $(INTL_Objects) $(COMMON_LIB) |
678 | gpre: $(GPRE) databases |
679 | |
680 | $(GPRE): $(GPRE_Objects) $(COMMON_LIB) |
681 | - $(EXE_LINK) $(EXE_LINK_OPTIONS) $^ -o $@ $(FIREBIRD_LIBRARY_LINK) $(LINK_LIBS) $(call LINK_DARWIN_RPATH,..) |
682 | + $(EXE_LINK) $(EXE_LINK_OPTIONS) $^ -o $@ $(FIREBIRD_LIBRARY_LINK) $(LINK_LIBS) |
683 | |
684 | HELP_FDB = $(FIREBIRD)/help/help.fdb |
685 | SECURITY_FDB = $(FIREBIRD)/security3.fdb |
686 | @@ -374,7 +374,7 @@ $(HELP_FDB): help.fdb |
687 | $(CHMOD) 0444 $@ |
688 | |
689 | help.fdb: $(BLD_ROOT)/misc/help.gbak |
690 | - $(RUN_GBAK) -MODE read_only -R $< $@ |
691 | + $(RUN_GBAK) -MODE read_only -replace $< $@ |
692 | $(CHMOD) 0444 $@ |
693 | |
694 | $(SECURITY_FDB): security.fdb |
695 | @@ -439,62 +439,62 @@ utilities: firebird_server fb_lock_print fbguard fbsvcmgr fbtracemgr gbak gfix g |
696 | firebird_server: $(FB_DAEMON) |
697 | |
698 | $(FB_DAEMON): $(Remote_Server_Objects) $(COMMON_LIB) |
699 | - $(EXE_LINK) $(EXE_LINK_OPTIONS) $^ -o $@ $(FIREBIRD_LIBRARY_LINK) $(LINK_LIBS) $(call LINK_DARWIN_RPATH,..) |
700 | + $(EXE_LINK) $(EXE_LINK_OPTIONS) $^ -o $@ $(FIREBIRD_LIBRARY_LINK) $(LINK_LIBS) |
701 | |
702 | fb_lock_print: $(LOCKPRINT) |
703 | |
704 | $(LOCKPRINT): $(LOCKPRINT_Objects) $(COMMON_LIB) |
705 | - $(EXE_LINK) $(EXE_LINK_OPTIONS) $^ -o $@ $(FIREBIRD_LIBRARY_LINK) $(LINK_LIBS) $(call LINK_DARWIN_RPATH,..) |
706 | + $(EXE_LINK) $(EXE_LINK_OPTIONS) $^ -o $@ $(FIREBIRD_LIBRARY_LINK) $(LINK_LIBS) |
707 | |
708 | fbguard: $(FBGUARD) |
709 | |
710 | $(FBGUARD): $(FBGUARD_Objects) $(COMMON_LIB) |
711 | - $(EXE_LINK) $(EXE_LINK_OPTIONS) $^ -o $@ $(FIREBIRD_LIBRARY_LINK) $(LINK_LIBS) $(call LINK_DARWIN_RPATH,..) |
712 | + $(EXE_LINK) $(EXE_LINK_OPTIONS) $^ -o $@ $(FIREBIRD_LIBRARY_LINK) $(LINK_LIBS) |
713 | |
714 | fbsvcmgr: $(FBSVCMGR) |
715 | |
716 | $(FBSVCMGR): $(FBSVCMGR_Objects) $(COMMON_LIB) |
717 | - $(EXE_LINK) $(EXE_LINK_OPTIONS) $^ -o $@ $(FIREBIRD_LIBRARY_LINK) $(LINK_LIBS) $(call LINK_DARWIN_RPATH,..) |
718 | + $(EXE_LINK) $(EXE_LINK_OPTIONS) $^ -o $@ $(FIREBIRD_LIBRARY_LINK) $(LINK_LIBS) |
719 | |
720 | fbtracemgr: $(FBTRACEMGR) |
721 | |
722 | $(FBTRACEMGR): $(FBTRACEMGR_Objects) $(COMMON_LIB) |
723 | - $(EXE_LINK) $(EXE_LINK_OPTIONS) $^ -o $@ $(FIREBIRD_LIBRARY_LINK) $(LINK_LIBS) $(call LINK_DARWIN_RPATH,..) |
724 | + $(EXE_LINK) $(EXE_LINK_OPTIONS) $^ -o $@ $(FIREBIRD_LIBRARY_LINK) $(LINK_LIBS) |
725 | |
726 | gbak: $(GBAK) |
727 | |
728 | $(GBAK): $(GBAK_Objects) $(COMMON_LIB) |
729 | - $(EXE_LINK) $(EXE_LINK_OPTIONS) $^ -o $@ $(FIREBIRD_LIBRARY_LINK) $(LINK_LIBS) $(call LINK_DARWIN_RPATH,..) |
730 | + $(EXE_LINK) $(EXE_LINK_OPTIONS) $^ -o $@ $(FIREBIRD_LIBRARY_LINK) $(LINK_LIBS) |
731 | |
732 | gsplit: $(GSPLIT) |
733 | |
734 | $(GSPLIT): $(GSPLIT_Objects) $(COMMON_LIB) |
735 | - $(EXE_LINK) $(EXE_LINK_OPTIONS) $^ -o $@ $(FIREBIRD_LIBRARY_LINK) $(LINK_LIBS) $(call LINK_DARWIN_RPATH,..) |
736 | + $(EXE_LINK) $(EXE_LINK_OPTIONS) $^ -o $@ $(FIREBIRD_LIBRARY_LINK) $(LINK_LIBS) |
737 | |
738 | gfix: $(GFIX) |
739 | |
740 | $(GFIX): $(GFIX_Objects) $(COMMON_LIB) |
741 | - $(EXE_LINK) $(EXE_LINK_OPTIONS) $^ -o $@ $(FIREBIRD_LIBRARY_LINK) $(LINK_LIBS) $(call LINK_DARWIN_RPATH,..) |
742 | + $(EXE_LINK) $(EXE_LINK_OPTIONS) $^ -o $@ $(FIREBIRD_LIBRARY_LINK) $(LINK_LIBS) |
743 | |
744 | gsec: $(GSEC) |
745 | |
746 | $(GSEC): $(GSEC_Objects) $(COMMON_LIB) |
747 | - $(EXE_LINK) $(EXE_LINK_OPTIONS) $^ -o $@ $(FIREBIRD_LIBRARY_LINK) $(LINK_LIBS) $(call LINK_DARWIN_RPATH,..) |
748 | + $(EXE_LINK) $(EXE_LINK_OPTIONS) $^ -o $@ $(FIREBIRD_LIBRARY_LINK) $(LINK_LIBS) |
749 | |
750 | gstat: $(GSTAT) |
751 | |
752 | $(GSTAT): $(GSTAT_Objects) $(COMMON_LIB) |
753 | - $(EXE_LINK) $(EXE_LINK_OPTIONS) $^ -o $@ $(FIREBIRD_LIBRARY_LINK) $(LINK_LIBS) $(call LINK_DARWIN_RPATH,..) |
754 | + $(EXE_LINK) $(EXE_LINK_OPTIONS) $^ -o $@ $(FIREBIRD_LIBRARY_LINK) $(LINK_LIBS) |
755 | |
756 | isql: $(ISQL) |
757 | |
758 | $(ISQL): $(ISQL_Objects) $(COMMON_LIB) |
759 | - $(EXE_LINK) $(EXE_LINK_OPTIONS) $^ -o $@ $(FIREBIRD_LIBRARY_LINK) $(LIBEDITLINE) $(LINK_LIBS) $(call LINK_DARWIN_RPATH,..) |
760 | + $(EXE_LINK) $(EXE_LINK_OPTIONS) $^ -o $@ $(FIREBIRD_LIBRARY_LINK) $(LIBEDITLINE) $(LINK_LIBS) |
761 | |
762 | nbackup: $(NBACKUP) |
763 | |
764 | $(NBACKUP): $(NBACKUP_Objects) $(COMMON_LIB) |
765 | - $(EXE_LINK) $(EXE_LINK_OPTIONS) $^ -o $@ $(FIREBIRD_LIBRARY_LINK) $(LINK_LIBS) $(call LINK_DARWIN_RPATH,..) |
766 | + $(EXE_LINK) $(EXE_LINK_OPTIONS) $^ -o $@ $(FIREBIRD_LIBRARY_LINK) $(LINK_LIBS) |
767 | |
768 | |
769 | #___________________________________________________________________________ |
770 | @@ -570,7 +570,7 @@ gen_codes: $(CODES) msg.timestamp |
771 | $(CODES) $(SRC_ROOT)/include/gen $(LNG_ROOT) |
772 | |
773 | $(CODES): $(CODES_Objects) $(COMMON_LIB) |
774 | - $(EXE_LINK) $(EXE_LINK_OPTIONS) $^ -o $@ $(FIREBIRD_LIBRARY_LINK) $(LINK_LIBS) $(call LINK_DARWIN_RPATH,..) |
775 | + $(EXE_LINK) $(EXE_LINK_OPTIONS) $^ -o $@ $(FIREBIRD_LIBRARY_LINK) $(LINK_LIBS) |
776 | |
777 | $(IDS): $(SRC_ROOT)/misc/ids.m $(SRC_ROOT)/jrd/relations.h |
778 | m4 $< > $@ |
779 | @@ -594,7 +594,7 @@ cross_rest: qli gbak_files |
780 | qli: $(QLI) |
781 | |
782 | $(QLI): $(QLI_Objects) $(COMMON_LIB) |
783 | - $(EXE_LINK) $(EXE_LINK_OPTIONS) $^ -o $@ $(FIREBIRD_LIBRARY_LINK) $(LINK_LIBS) $(call LINK_DARWIN_RPATH,..) |
784 | + $(EXE_LINK) $(EXE_LINK_OPTIONS) $^ -o $@ $(FIREBIRD_LIBRARY_LINK) $(LINK_LIBS) |
785 | |
786 | examples: include_generic |
787 | $(MAKE) -f Makefile.examples -C $(GEN_ROOT)/examples/ |
788 | @@ -607,7 +607,7 @@ $(FIREBIRD_MSG): $(BUILD_FILE) msg.timestamp |
789 | $(CHMOD_6) $@ |
790 | |
791 | $(BUILD_FILE): $(BUILD_Objects) $(COMMON_LIB) |
792 | - $(EXE_LINK) $(EXE_LINK_OPTIONS) $^ -o $@ $(FIREBIRD_LIBRARY_LINK) $(LINK_LIBS) $(call LINK_DARWIN_RPATH,..) |
793 | + $(EXE_LINK) $(EXE_LINK_OPTIONS) $^ -o $@ $(FIREBIRD_LIBRARY_LINK) $(LINK_LIBS) |
794 | |
795 | gbak_files: $(GBAK_FILES) |
796 | |
797 | diff --git a/builds/posix/Makefile.in.examples b/builds/posix/Makefile.in.examples |
798 | index bf21355..cf6e2ce 100644 |
799 | --- a/builds/posix/Makefile.in.examples |
800 | +++ b/builds/posix/Makefile.in.examples |
801 | @@ -60,6 +60,7 @@ export PATH |
802 | GPRE_FLAGS= -m -z -n |
803 | |
804 | LIB_LINK_RPATH = $(call LIB_PLATFORM_RPATH,$(if $(subst intl,,$(1)),$(LIB),$(LIB)/../intl)) |
805 | +LINK_DARWIN_RPATH = -Wl,-rpath,@loader_path/../$(TARGET)/firebird |
806 | LIB_LINK_MAPFILE = |
807 | |
808 | EXAMPLES_DEST= $(GEN_ROOT)/examples |
809 | diff --git a/builds/posix/make.defaults b/builds/posix/make.defaults |
810 | index e24079e..5e4f598 100755 |
811 | --- a/builds/posix/make.defaults |
812 | +++ b/builds/posix/make.defaults |
813 | @@ -315,7 +315,7 @@ LIB_LINK_SONAME= -Wl,-soname,$(1) |
814 | LIB_LINK_MAPFILE= -Wl,--version-script,$(1) |
815 | FIREBIRD_LIBRARY_LINK= -L$(LIB) -lfbclient $(MATHLIB) |
816 | |
817 | -EXE_LINK_OPTIONS= $(LDFLAGS) $(THR_FLAGS) $(UNDEF_FLAGS) $(LIB_PATH_OPTS) $(LINK_EMPTY_SYMBOLS) |
818 | +EXE_LINK_OPTIONS= $(LDFLAGS) $(THR_FLAGS) $(UNDEF_FLAGS) $(LIB_PATH_OPTS) $(call LINK_DARWIN_RPATH,..) $(LINK_EMPTY_SYMBOLS) |
819 | LIB_LINK_OPTIONS= $(LDFLAGS) $(THR_FLAGS) -shared |
820 | |
821 | FB_DAEMON = $(BIN)/firebird$(EXEC_EXT) |
822 | diff --git a/builds/posix/prefix.darwin_i386 b/builds/posix/prefix.darwin_i386 |
823 | index b07d2fe..60d05cb 100644 |
824 | --- a/builds/posix/prefix.darwin_i386 |
825 | +++ b/builds/posix/prefix.darwin_i386 |
826 | @@ -27,17 +27,14 @@ |
827 | # configure using --with-builtin-tommath |
828 | # or add the relevant -I, -L for an installed version of libtommath |
829 | |
830 | -DYLD_LIBRARY_PATH=$(HOME)/icu54/icu/source/lib |
831 | -export DYLD_LIBRARY_PATH |
832 | - |
833 | MACOSX_DEPLOYMENT_TARGET=10.9 |
834 | export MACOSX_DEPLOYMENT_TARGET |
835 | |
836 | PROD_FLAGS=-DDARWIN -pipe -O2 -MMD -fPIC -fno-common -arch i386 -mmacosx-version-min=10.9 |
837 | DEV_FLAGS=-ggdb -DDARWIN -pipe -MMD -fPIC -fno-common -Wall -arch i386 -mmacosx-version-min=10.9 -Wno-non-virtual-dtor |
838 | -CXXFLAGS:=$(CXXFLAGS) -fvisibility-inlines-hidden -fvisibility=hidden -msse4 |
839 | +CXXFLAGS:=$(CXXFLAGS) -fvisibility-inlines-hidden -fvisibility=hidden -msse4 |
840 | |
841 | -EXE_LINK_OPTIONS:=-m32 |
842 | +EXE_LINK_OPTIONS+=-m32 |
843 | LD_FLAGS+=-m32 -arch i386 |
844 | LINK_LIBS+=-liconv |
845 | MATHLIB=$(ROOT)/extern/libtommath/.libs/libtommath.a |
846 | diff --git a/builds/posix/prefix.darwin_powerpc b/builds/posix/prefix.darwin_powerpc |
847 | index f8816c6..c56b5fe 100644 |
848 | --- a/builds/posix/prefix.darwin_powerpc |
849 | +++ b/builds/posix/prefix.darwin_powerpc |
850 | @@ -17,9 +17,6 @@ |
851 | # Start of file prefix.darwin: $(VERSION) @PLATFORM@ |
852 | # 2 Oct 2002, Nickolay Samofatov - Major Cleanup |
853 | |
854 | -DYLD_LIBRARY_PATH=$(FIREBIRD)/lib |
855 | -export DYLD_LIBRARY_PATH |
856 | - |
857 | MACOSX_DEPLOYMENT_TARGET=10.2 |
858 | export MACOSX_DEPLOYMENT_TARGET |
859 | |
860 | @@ -27,6 +24,4 @@ PROD_FLAGS=-DDARWIN -pipe -p -MMD -fPIC -fno-common -arch ppc -mmacosx-version-m |
861 | DEV_FLAGS=-ggdb -DDARWIN -pipe -p -MMD -fPIC -fno-common -Wall -arch ppc -mmacosx-version-min=10.2 -Wno-non-virtual-dtor |
862 | CXXFLAGS:=$(CXXFLAGS) -fvisibility-inlines-hidden -fvisibility=hidden -fno-weak |
863 | |
864 | -EXE_LINK_OPTIONS:= |
865 | - |
866 | include $(ROOT)/gen/darwin.defaults |
867 | diff --git a/builds/posix/prefix.darwin_ppc64 b/builds/posix/prefix.darwin_ppc64 |
868 | index 9fbc89d..a33ed45 100644 |
869 | --- a/builds/posix/prefix.darwin_ppc64 |
870 | +++ b/builds/posix/prefix.darwin_ppc64 |
871 | @@ -18,7 +18,7 @@ |
872 | # 2 Oct 2002, Nickolay Samofatov - Major Cleanup |
873 | |
874 | # To use this file to build 64bit version of Firebird for MacOS 10.5 (Leopard) |
875 | -# Can only be built on MacOSX 10.5 (Leopard) due to lack of 64bit support in |
876 | +# Can only be built on MacOSX 10.5 (Leopard) due to lack of 64bit support in |
877 | # Carbon in previous versions of MacOSX |
878 | # 1. edit configure.in so that MAKEFILE_PREFIX=darwin_ppc64 |
879 | # 2. uncomment the CPU_TYPE |
880 | @@ -29,9 +29,6 @@ |
881 | # 6. export LDFLAGS='-arch ppc_64' |
882 | # 7. export MACOSX_DEPLOYMENT_TARGET=10.5 |
883 | |
884 | -DYLD_LIBRARY_PATH=$(FIREBIRD)/lib |
885 | -export DYLD_LIBRARY_PATH |
886 | - |
887 | MACOSX_DEPLOYMENT_TARGET=10.5 |
888 | export MACOSX_DEPLOYMENT_TARGET |
889 | |
890 | @@ -39,7 +36,7 @@ PROD_FLAGS=-O3 -DDARWIN -pipe -p -MMD -fPIC -fno-common -mmacosx-version-min=10. |
891 | DEV_FLAGS=-ggdb -DDARWIN -pipe -p -MMD -fPIC -fno-common -Wall -mmacosx-version-min=10.5 -Wno-non-virtual-dtor |
892 | CXXFLAGS:=$(CXXFLAGS) -fvisibility-inlines-hidden -fvisibility=hidden |
893 | |
894 | -EXE_LINK_OPTIONS:=-arch ppc64 |
895 | +EXE_LINK_OPTIONS+=-arch ppc64 |
896 | LD_FLAGS+=-arch ppc64 |
897 | |
898 | include $(ROOT)/gen/darwin.defaults |
899 | diff --git a/builds/posix/prefix.darwin_x86_64 b/builds/posix/prefix.darwin_x86_64 |
900 | index cea366a..8fe5ea4 100644 |
901 | --- a/builds/posix/prefix.darwin_x86_64 |
902 | +++ b/builds/posix/prefix.darwin_x86_64 |
903 | @@ -43,7 +43,6 @@ PROD_FLAGS=-DDARWIN -pipe -O2 -MMD -fPIC -fno-common -mmacosx-version-min=10.9 |
904 | DEV_FLAGS=-ggdb -DDARWIN -pipe -MMD -fPIC -fno-omit-frame-pointer -fno-common -Wall -fno-optimize-sibling-calls -mmacosx-version-min=10.9 -Wno-non-virtual-dtor |
905 | CXXFLAGS:=$(CXXFLAGS) -fvisibility-inlines-hidden -fvisibility=hidden -stdlib=libc++ -msse4 |
906 | |
907 | -EXE_LINK_OPTIONS:= |
908 | UNDEF_PLATFORM= |
909 | |
910 | LINK_LIBS+=-liconv |
911 | diff --git a/builds/win32/msvc10/empbuild.vcxproj b/builds/win32/msvc10/empbuild.vcxproj |
912 | index fe18fa4..4bf14d8 100644 |
913 | --- a/builds/win32/msvc10/empbuild.vcxproj |
914 | +++ b/builds/win32/msvc10/empbuild.vcxproj |
915 | @@ -154,8 +154,9 @@ |
916 | </ResourceCompile> |
917 | <Link> |
918 | <AdditionalOptions>/MACHINE:I386 %(AdditionalOptions)</AdditionalOptions> |
919 | - <AdditionalDependencies>odbc32.lib;odbccp32.lib;fbclient.lib;%(AdditionalDependencies)</AdditionalDependencies> |
920 | - <AdditionalLibraryDirectories>..\..\..\temp\$(Platform)\$(Configuration)\fbclient;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> |
921 | + <AdditionalDependencies>odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies> |
922 | + <AdditionalLibraryDirectories> |
923 | + </AdditionalLibraryDirectories> |
924 | <SubSystem>Console</SubSystem> |
925 | <ProfileGuidedDatabase> |
926 | </ProfileGuidedDatabase> |
927 | @@ -178,8 +179,9 @@ |
928 | <Culture>0x0c0a</Culture> |
929 | </ResourceCompile> |
930 | <Link> |
931 | - <AdditionalDependencies>odbc32.lib;odbccp32.lib;fbclient.lib;%(AdditionalDependencies)</AdditionalDependencies> |
932 | - <AdditionalLibraryDirectories>..\..\..\temp\$(Platform)\$(Configuration)\fbclient;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> |
933 | + <AdditionalDependencies>odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies> |
934 | + <AdditionalLibraryDirectories> |
935 | + </AdditionalLibraryDirectories> |
936 | <SubSystem>Console</SubSystem> |
937 | <ProfileGuidedDatabase> |
938 | </ProfileGuidedDatabase> |
939 | diff --git a/builds/win32/msvc12/empbuild.vcxproj b/builds/win32/msvc12/empbuild.vcxproj |
940 | index 893b48f..b52c463 100644 |
941 | --- a/builds/win32/msvc12/empbuild.vcxproj |
942 | +++ b/builds/win32/msvc12/empbuild.vcxproj |
943 | @@ -158,8 +158,9 @@ |
944 | </ResourceCompile> |
945 | <Link> |
946 | <AdditionalOptions>/MACHINE:I386 %(AdditionalOptions)</AdditionalOptions> |
947 | - <AdditionalDependencies>odbc32.lib;odbccp32.lib;fbclient.lib;%(AdditionalDependencies)</AdditionalDependencies> |
948 | - <AdditionalLibraryDirectories>..\..\..\temp\$(Platform)\$(Configuration)\fbclient;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> |
949 | + <AdditionalDependencies>odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies> |
950 | + <AdditionalLibraryDirectories> |
951 | + </AdditionalLibraryDirectories> |
952 | <SubSystem>Console</SubSystem> |
953 | <ProfileGuidedDatabase> |
954 | </ProfileGuidedDatabase> |
955 | @@ -182,8 +183,9 @@ |
956 | <Culture>0x0c0a</Culture> |
957 | </ResourceCompile> |
958 | <Link> |
959 | - <AdditionalDependencies>odbc32.lib;odbccp32.lib;fbclient.lib;%(AdditionalDependencies)</AdditionalDependencies> |
960 | - <AdditionalLibraryDirectories>..\..\..\temp\$(Platform)\$(Configuration)\fbclient;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> |
961 | + <AdditionalDependencies>odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies> |
962 | + <AdditionalLibraryDirectories> |
963 | + </AdditionalLibraryDirectories> |
964 | <SubSystem>Console</SubSystem> |
965 | <ProfileGuidedDatabase> |
966 | </ProfileGuidedDatabase> |
967 | diff --git a/builds/win32/msvc14/empbuild.vcxproj b/builds/win32/msvc14/empbuild.vcxproj |
968 | index 862a256..61630c9 100644 |
969 | --- a/builds/win32/msvc14/empbuild.vcxproj |
970 | +++ b/builds/win32/msvc14/empbuild.vcxproj |
971 | @@ -158,8 +158,9 @@ |
972 | </ResourceCompile> |
973 | <Link> |
974 | <AdditionalOptions>/MACHINE:I386 %(AdditionalOptions)</AdditionalOptions> |
975 | - <AdditionalDependencies>odbc32.lib;odbccp32.lib;fbclient.lib;%(AdditionalDependencies)</AdditionalDependencies> |
976 | - <AdditionalLibraryDirectories>..\..\..\temp\$(Platform)\$(Configuration)\fbclient;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> |
977 | + <AdditionalDependencies>odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies> |
978 | + <AdditionalLibraryDirectories> |
979 | + </AdditionalLibraryDirectories> |
980 | <SubSystem>Console</SubSystem> |
981 | <ProfileGuidedDatabase> |
982 | </ProfileGuidedDatabase> |
983 | @@ -182,8 +183,9 @@ |
984 | <Culture>0x0c0a</Culture> |
985 | </ResourceCompile> |
986 | <Link> |
987 | - <AdditionalDependencies>odbc32.lib;odbccp32.lib;fbclient.lib;%(AdditionalDependencies)</AdditionalDependencies> |
988 | - <AdditionalLibraryDirectories>..\..\..\temp\$(Platform)\$(Configuration)\fbclient;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> |
989 | + <AdditionalDependencies>odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies> |
990 | + <AdditionalLibraryDirectories> |
991 | + </AdditionalLibraryDirectories> |
992 | <SubSystem>Console</SubSystem> |
993 | <ProfileGuidedDatabase> |
994 | </ProfileGuidedDatabase> |
995 | diff --git a/configure.ac b/configure.ac |
996 | index 180dd2d..93c3917 100644 |
997 | --- a/configure.ac |
998 | +++ b/configure.ac |
999 | @@ -239,7 +239,7 @@ dnl CPU_TYPE=ppc64 |
1000 | STD_EDITLINE=true |
1001 | ;; |
1002 | |
1003 | - aarch64*-*-linux*) |
1004 | + aarch64*-*-linux*) |
1005 | MAKEFILE_PREFIX=linux_arm64 |
1006 | INSTALL_PREFIX=linux |
1007 | PLATFORM=LINUX |
1008 | @@ -251,7 +251,7 @@ dnl CPU_TYPE=ppc64 |
1009 | libdir=/usr/lib64 |
1010 | ;; |
1011 | |
1012 | - powerpc64le-*-linux*) |
1013 | + powerpc64le-*-linux*) |
1014 | MAKEFILE_PREFIX=linux_powerpc64el |
1015 | INSTALL_PREFIX=linux |
1016 | PLATFORM=LINUX |
1017 | @@ -263,7 +263,7 @@ dnl CPU_TYPE=ppc64 |
1018 | libdir=/usr/lib64 |
1019 | ;; |
1020 | |
1021 | - powerpc64-*-linux*) |
1022 | + powerpc64-*-linux*) |
1023 | MAKEFILE_PREFIX=linux_powerpc64 |
1024 | INSTALL_PREFIX=linux |
1025 | PLATFORM=LINUX |
1026 | @@ -840,7 +840,7 @@ AC_COMPILE_IFELSE( |
1027 | dnl check for va_copy() in stdarg.h |
1028 | AC_COMPILE_IFELSE( |
1029 | [AC_LANG_PROGRAM([[#include <stdarg.h> |
1030 | - void vafun(const char* fmt, ...) {va_list par, par2; va_start(par, fmt); va_copy(par2, par); va_end(par2); va_end(par);}]], |
1031 | + void vafun(const char* fmt, ...) {va_list par, par2; va_start(par, fmt); va_copy(par2, par); va_end(par2); va_end(par);}]], |
1032 | [[return 0;]])], |
1033 | AC_DEFINE(HAVE_VA_COPY, 1, [Define this if va_copy() is defined in stdarg.h])) |
1034 | |
1035 | @@ -924,15 +924,8 @@ AC_COMPILE_IFELSE( |
1036 | AC_DEFINE(HAVE_AO_COMPARE_AND_SWAP_FULL, 1, [Define this if AO_compare_and_swap_full() is defined in atomic_ops.h])) |
1037 | |
1038 | dnl Check for time function |
1039 | -case $host in |
1040 | - *-darwin*) |
1041 | - ac_cv_func_clock_gettime=no |
1042 | - ;; |
1043 | - *) |
1044 | - AC_SEARCH_LIBS(clock_gettime, rt) |
1045 | - AC_CHECK_FUNCS(clock_gettime) |
1046 | - ;; |
1047 | -esac |
1048 | +AC_SEARCH_LIBS(clock_gettime, rt) |
1049 | +AC_CHECK_FUNCS(clock_gettime) |
1050 | |
1051 | dnl Checks for pthread functions |
1052 | AC_CHECK_FUNCS(pthread_mutexattr_setprotocol) |
1053 | @@ -959,7 +952,7 @@ AC_MSG_CHECKING(for working sem_init()) |
1054 | AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <semaphore.h> |
1055 | main () { |
1056 | sem_t s; |
1057 | - exit(sem_init(&s,0,0)); |
1058 | + return sem_init(&s,0,0); |
1059 | } |
1060 | ]])],[AC_DEFINE(WORKING_SEM_INIT,1,[Define this if sem_init() works on the platform]) |
1061 | AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no) |
1062 | @@ -991,7 +984,7 @@ if test "$ac_cv_sys_file_offset_bits" = "no"; then |
1063 | AC_MSG_CHECKING(for native large file support) |
1064 | AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <unistd.h> |
1065 | main () { |
1066 | - exit(!(sizeof(off_t) == 8)); |
1067 | + return !(sizeof(off_t) == 8); |
1068 | }]])],[ac_cv_sys_file_offset_bits=64; AC_DEFINE(_FILE_OFFSET_BITS,64) |
1069 | AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)],[]) |
1070 | fi |
1071 | @@ -1033,7 +1026,7 @@ main () { |
1072 | char a; |
1073 | union { long long x; sem_t y; } b; |
1074 | }; |
1075 | - exit((int)&((struct s*)0)->b); |
1076 | + return (int)&((struct s*)0)->b; |
1077 | }]])],[ac_cv_c_alignment=$ac_status],[ac_cv_c_alignment=$ac_status],[]) |
1078 | AC_MSG_RESULT($ac_cv_c_alignment) |
1079 | AC_DEFINE_UNQUOTED(FB_ALIGNMENT, $ac_cv_c_alignment, [Alignment of long]) |
1080 | @@ -1044,7 +1037,7 @@ AC_RUN_IFELSE([AC_LANG_SOURCE([[main () { |
1081 | char a; |
1082 | double b; |
1083 | }; |
1084 | - exit((int)&((struct s*)0)->b); |
1085 | + return (int)&((struct s*)0)->b; |
1086 | }]])],[ac_cv_c_double_align=$ac_status],[ac_cv_c_double_align=$ac_status],[]) |
1087 | AC_MSG_RESULT($ac_cv_c_double_align) |
1088 | AC_DEFINE_UNQUOTED(FB_DOUBLE_ALIGN, $ac_cv_c_double_align, [Alignment of double]) |
1089 | diff --git a/debian/changelog b/debian/changelog |
1090 | index 0fe809d..3f1ab74 100644 |
1091 | --- a/debian/changelog |
1092 | +++ b/debian/changelog |
1093 | @@ -1,3 +1,69 @@ |
1094 | +firebird3.0 (3.0.11.33637.ds4-2ubuntu1) mantic; urgency=medium |
1095 | + |
1096 | + * Merge with Debian unstable (LP: #2025754). Remaining changes: |
1097 | + - Switch architecture to i686 on Ubuntu instead of i486 |
1098 | + |
1099 | + -- Danilo Egea Gondolfo <danilo.egea.gondolfo@canonical.com> Tue, 04 Jul 2023 11:46:03 +0100 |
1100 | + |
1101 | +firebird3.0 (3.0.11.33637.ds4-2) unstable; urgency=medium |
1102 | + |
1103 | + * fix arch-all-only build by overriding only dh_lintian-arch for libib-util |
1104 | + override mangling. |
1105 | + Thanks to Ondřej Surý (Closes: #1022579) |
1106 | + |
1107 | + -- Damyan Ivanov <dmn@debian.org> Mon, 24 Oct 2022 19:36:38 +0000 |
1108 | + |
1109 | +firebird3.0 (3.0.11.33637.ds4-1) unstable; urgency=medium |
1110 | + |
1111 | + * add gbp.conf for DEP-14 git repository layout |
1112 | + * switch debian/watch to releases published on firebirdsql.org |
1113 | + the ones on github aren't always accessible (JavaScript) |
1114 | + * pack-upstream-snapshot: use mk-origtargz for cleaning upstream sources |
1115 | + single source of truth about what needs to be removed |
1116 | + * add files to source repackaging exclusion list to match official releases |
1117 | + when using git snapshots |
1118 | + * New upstream snapshot 3.0.11.33637.ds4 |
1119 | + Closes: #1021817 -- undistributable source files |
1120 | + * drop two files from d/copyright that are not present in the source |
1121 | + * adapt lintian overrides to version 2.115.3 |
1122 | + * bump Standards-Version from 4.6.0 to 4.6.1 (no changes needed) |
1123 | + * review debian/copyright, move files under right licensing stanza, update |
1124 | + copyright years, drop additional files with missing/unclear licenses when |
1125 | + repackaging |
1126 | + |
1127 | + -- Damyan Ivanov <dmn@debian.org> Sun, 23 Oct 2022 18:48:29 +0000 |
1128 | + |
1129 | +firebird3.0 (3.0.10.33601.ds4-1) unstable; urgency=medium |
1130 | + |
1131 | + * New upstream version 3.0.10.33601.ds4 |
1132 | + * update debian/copyright (one new file) |
1133 | + * rebase no-binary-gbaks.patch to apply to slightly changed upstream |
1134 | + |
1135 | + -- Damyan Ivanov <dmn@debian.org> Thu, 09 Jun 2022 14:33:54 +0000 |
1136 | + |
1137 | +firebird3.0 (3.0.9.33560.ds4-3) unstable; urgency=medium |
1138 | + |
1139 | + * add missing trailing slash from debian/firebird-image/ entry of |
1140 | + debian/clean (Closes: #1010876) |
1141 | + Thanks to John Paul Adrian Glaubitz |
1142 | + |
1143 | + -- Damyan Ivanov <dmn@debian.org> Thu, 12 May 2022 09:51:55 +0000 |
1144 | + |
1145 | +firebird3.0 (3.0.9.33560.ds4-2) unstable; urgency=medium |
1146 | + |
1147 | + * rules: stop overriding -O3 with -O2 during build |
1148 | + * apply upstream commit adding Documentation to the systemd service |
1149 | + * apply upstream commit dropping StdErr=syslog from the service |
1150 | + |
1151 | + -- Damyan Ivanov <dmn@debian.org> Fri, 15 Apr 2022 06:05:22 +0000 |
1152 | + |
1153 | +firebird3.0 (3.0.9.33560.ds4-1) unstable; urgency=medium |
1154 | + |
1155 | + * New upstream version 3.0.9.33560.ds4 |
1156 | + + refresh/update several patches |
1157 | + |
1158 | + -- Damyan Ivanov <dmn@debian.org> Mon, 14 Feb 2022 21:09:03 +0000 |
1159 | + |
1160 | firebird3.0 (3.0.8.33535.ds4-1ubuntu4) lunar; urgency=medium |
1161 | |
1162 | * Rebuild against latest icu |
1163 | diff --git a/debian/clean b/debian/clean |
1164 | index 60cba92..5d8014d 100644 |
1165 | --- a/debian/clean |
1166 | +++ b/debian/clean |
1167 | @@ -14,7 +14,7 @@ config.status |
1168 | config.status |
1169 | configure |
1170 | configure |
1171 | -debian/firebird-image |
1172 | +debian/firebird-image/ |
1173 | debian/man/*.1 |
1174 | debian/man/*.8 |
1175 | extern/btyacc/btyacc |
1176 | diff --git a/debian/control b/debian/control |
1177 | index b02323d..e32bb2f 100644 |
1178 | --- a/debian/control |
1179 | +++ b/debian/control |
1180 | @@ -19,7 +19,7 @@ Build-Depends: |
1181 | rename, |
1182 | zlib1g-dev, |
1183 | Build-Conflicts: autoconf2.13, automake1.4 |
1184 | -Standards-Version: 4.6.0 |
1185 | +Standards-Version: 4.6.1 |
1186 | Vcs-Git: https://salsa.debian.org/firebird-team/firebird3.0.git |
1187 | Vcs-Browser: https://salsa.debian.org/firebird-team/firebird3.0 |
1188 | Homepage: https://firebirdsql.org/ |
1189 | diff --git a/debian/copyright b/debian/copyright |
1190 | index 180c4b0..ec89ecd 100644 |
1191 | --- a/debian/copyright |
1192 | +++ b/debian/copyright |
1193 | @@ -2,6 +2,12 @@ Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ |
1194 | Upstream-Name: Firebird |
1195 | Upstream-Contact: https://www.firebirdsql.org/ |
1196 | Files-Excluded: |
1197 | + .editorconfig |
1198 | + .gitignore |
1199 | + */.gitignore |
1200 | + .github |
1201 | + .vscode |
1202 | + appveyor.yml |
1203 | builds/install/arch-specific/linux/firebird.init.d.suse.in |
1204 | builds/install/arch-specific/solaris |
1205 | builds/install/arch-specific/solx86gcc/CS/postinstall.in |
1206 | @@ -20,6 +26,7 @@ Files-Excluded: |
1207 | doc/README.build.mingw.html |
1208 | doc/README.build.msvc.html |
1209 | doc/README.build.posix.html |
1210 | + doc/README.makefiles |
1211 | doc/README.plugins.html |
1212 | doc/README.providers.html |
1213 | doc/README.SecureRemotePassword.html |
1214 | @@ -39,6 +46,8 @@ Files-Excluded: |
1215 | src/include/gen/ids.h |
1216 | src/include/gen/parse.h |
1217 | src/msgs/templates.sql |
1218 | + src/utilities/fbcpl |
1219 | + src/utilities/install/registry.h |
1220 | Comment: |
1221 | What is removed from upstream source and why |
1222 | ============================================ |
1223 | @@ -65,8 +74,10 @@ Comment: |
1224 | they are not needed when building on Debiian. |
1225 | . |
1226 | - builds/install/arch-specific/solaris/ |
1227 | + - doc/README.makefiles |
1228 | - src/msgs/templates.sql |
1229 | - extern/SfIO/ |
1230 | + - src/utilities/install/registry.h |
1231 | . |
1232 | * Generated files without source |
1233 | . |
1234 | @@ -76,6 +87,11 @@ Comment: |
1235 | - doc/ReleaseNotes.pdf |
1236 | - doc/README.SecureRemotePassword.html |
1237 | . |
1238 | + * Other generated files and files with possible missing licensing that are |
1239 | + needed only on Windows |
1240 | + . |
1241 | + - src/utilities/fbcpl/* |
1242 | + . |
1243 | * Generated files and other cruft. |
1244 | . |
1245 | Repackaging is a good opportunity to also remove the following files, which |
1246 | @@ -91,8 +107,17 @@ Comment: |
1247 | Also, the following files are just cruft and are present in the upstream |
1248 | tarball by mistake: |
1249 | - .cvsignore (in several directories) |
1250 | + . |
1251 | + These aren't tipicaly present in released tarballs, but are in upstream Git |
1252 | + and therefore in snapshot tarballs made from the release branch |
1253 | + .editorconfig |
1254 | + .gitignore (in several directories) |
1255 | + .github |
1256 | + .vscode |
1257 | + appveyor.yml |
1258 | |
1259 | -Files: debian/* |
1260 | +Files: |
1261 | + debian/* |
1262 | Copyright: © 2006, 2007, 2008, 2009, 2010, 2014, 2017, 2018 |
1263 | Damyan Ivanov <dmn@debian.org> |
1264 | License: other |
1265 | @@ -278,8 +303,6 @@ Files: |
1266 | src/misc/pascal/Pascal.implementation.pas |
1267 | src/misc/pascal/Pascal.interface.pas |
1268 | src/misc/upgrade/recovering_build.txt |
1269 | - src/misc/upgrade/v2.1/metadata_charset_create.sql |
1270 | - src/misc/upgrade/v2.1/metadata_charset_drop.sql |
1271 | src/misc/upgrade/v2/ib_udf2_params.txt |
1272 | src/misc/upgrade/v2/ib_udf_params.txt |
1273 | src/misc/upgrade/v2/security_database.txt |
1274 | @@ -302,23 +325,8 @@ Files: |
1275 | src/remote/server/os/win32/window_proto.h |
1276 | src/utilities/CMakeLists.txt |
1277 | src/utilities/create_db.cpp |
1278 | - src/utilities/fbcpl/ctrlpan.cpp |
1279 | - src/utilities/fbcpl/ctrlpan.h |
1280 | - src/utilities/fbcpl/fbcontrol.clw |
1281 | - src/utilities/fbcpl/fbcontrol.cpp |
1282 | - src/utilities/fbcpl/fbcontrol.def |
1283 | - src/utilities/fbcpl/fbcontrol.h |
1284 | - src/utilities/fbcpl/FBControl.rc |
1285 | - src/utilities/fbcpl/res/fbcontrol.rc2 |
1286 | - src/utilities/fbcpl/resource.h |
1287 | - src/utilities/fbcpl/res/server.ico |
1288 | - src/utilities/fbcpl/res/server_stop.ico |
1289 | - src/utilities/fbcpl/stdafx.cpp |
1290 | - src/utilities/fbcpl/stdafx.h |
1291 | src/utilities/gsec/gsec_proto.h |
1292 | src/utilities/ntrace/fbtrace.conf |
1293 | - travis.sh |
1294 | - .travis.yml |
1295 | Copyright: none |
1296 | License: public-domain |
1297 | (assumed) |
1298 | @@ -331,7 +339,8 @@ License: public-domain |
1299 | contains no header, it means that this code is freeware and nobody owns the |
1300 | appropriate copyrights. |
1301 | |
1302 | -Files: src/common/sha.cpp |
1303 | +Files: |
1304 | + src/common/sha.cpp |
1305 | Copyright: none |
1306 | License: public-domain |
1307 | NIST Secure Hash Algorithm |
1308 | @@ -340,8 +349,9 @@ License: public-domain |
1309 | Applied Cryptography by Bruce Schneier |
1310 | This code is in the public domain |
1311 | |
1312 | -Files: src/common/sha2/sha2.cpp |
1313 | - src/common/sha2/sha2.h |
1314 | +Files: |
1315 | + src/common/sha2/sha2.cpp |
1316 | + src/common/sha2/sha2.h |
1317 | Copyright: 2005, 2007, Olivier Gay <olivier.gay@a3.epfl.ch> |
1318 | License: BSD-3-clause |
1319 | Redistribution and use in source and binary forms, with or without |
1320 | @@ -479,6 +489,8 @@ Files: |
1321 | src/alice/exe_proto.h |
1322 | src/alice/tdr.cpp |
1323 | src/alice/tdr_proto.h |
1324 | + src/auth/SecDbCache.cpp |
1325 | + src/auth/SecDbCache.h |
1326 | src/auth/SecurityDatabase/LegacyHash.h |
1327 | src/auth/SecurityDatabase/LegacyManagement.epp |
1328 | src/auth/SecurityDatabase/LegacyServer.cpp |
1329 | @@ -511,6 +523,8 @@ Files: |
1330 | src/common/classes/NoThrowTimeStamp.cpp |
1331 | src/common/classes/timestamp.cpp |
1332 | src/common/common.h |
1333 | + src/common/config/dir_list.cpp |
1334 | + src/common/config/dir_list.h |
1335 | src/common/cvt.cpp |
1336 | src/common/dsc.cpp |
1337 | src/common/dsc.h |
1338 | @@ -1135,7 +1149,6 @@ Files: |
1339 | src/utilities/install/install_svc.cpp |
1340 | src/utilities/install/regis_proto.h |
1341 | src/utilities/install/registry.cpp |
1342 | - src/utilities/install/registry.h |
1343 | src/utilities/install/services.cpp |
1344 | src/utilities/install/servi_proto.h |
1345 | src/utilities/print_event.cpp |
1346 | @@ -1175,53 +1188,82 @@ Files: |
1347 | src/yvalve/why_proto.h |
1348 | src/yvalve/YObjects.h |
1349 | Copyright: |
1350 | - Inprise Corporation and its predecessors |
1351 | Adriano dos Santos Fernandes |
1352 | - Alan Barclay |
1353 | + 2006, Adriano dos Santos Fernandes |
1354 | + 2008, Alan Barclay <alan@escribe.co.uk> |
1355 | Alex Peshkoff |
1356 | + 2003, 2004, Alex Peshkoff |
1357 | + Alex Peshkov |
1358 | Alex Peshkov <peshkoff@mail.ru> |
1359 | + 2009, 2013, 2020, Alex Peshkov |
1360 | + 2011-2020, Alexander Peshkov |
1361 | Ann Harrison |
1362 | - Ann W. Harrison |
1363 | - Arno Brinkman |
1364 | + 2001, Ann Harrison |
1365 | + 2001, Ann W. Harrison |
1366 | + 2002, 2003, Arno Brinkman |
1367 | Bill Oliver |
1368 | Blas Rodriguez Somoza |
1369 | + 2003 Blas Rodriguez Somoza |
1370 | + 2003 BRS |
1371 | + 1992-1994, 1996, Borland International |
1372 | + Clare Taylor |
1373 | Claudio Valderrama |
1374 | Claudio Valderrama C. |
1375 | + 2001, Claudio Valderrama |
1376 | Damyan Ivanov |
1377 | Dimitry Sibiryakov <aafemt@users.sourceforge.net> |
1378 | Dmitry Yemanov |
1379 | + Dmitry Yemanov <yemanov@yandex.ru> |
1380 | + 2002, 2003, Dmitry Yemanov |
1381 | Fikret Hasovic |
1382 | Frank Schlottmann-Gödde |
1383 | - Fred Polizo, Jr. |
1384 | - FSG (Frank Schlottmann-Gödde) |
1385 | + 2003, Fred Polizo, Jr. |
1386 | + 2002, FSG (Frank Schlottmann-Gödde) |
1387 | Gabor Boros |
1388 | + 1986, Groton Database Systems, Inc. |
1389 | + Inprise Corporation and its predecessors |
1390 | + 2000, Inprise Corporation |
1391 | Ivan Prenosil |
1392 | Jaroslaw Glowacki <glowacki@plocman.pl> |
1393 | Jerry Adair |
1394 | John Bellardo |
1395 | + 2001, John Bellardo |
1396 | + John H. Jenkins <John_Jenkins@taligent.com> |
1397 | Jonas Jasas |
1398 | + K.D.Chang <a-kchang@microsoft.com> |
1399 | Karel Brichnac <brichna@atlas.cz> |
1400 | Konstantin Kuznetsov |
1401 | + 2002, Leyne |
1402 | Manuel A. Fernandez Montecelo |
1403 | - Mark O'Donohue skywalker@users.sourceforge.net |
1404 | + 2018, Manuel A. Fernandez Montecelo <manuel.montezelo@gmail.com> |
1405 | + Mark O'Donohue <skywalker@users.sourceforge.net> |
1406 | Michal Bukovjan |
1407 | Mike Nordell |
1408 | + 2001, Mike Nordell |
1409 | Neil McCalden |
1410 | + 2001, Neil McCalden |
1411 | Nickolay Samofatov |
1412 | Nikolay Samofatov |
1413 | + 2002, 2003, Nickolay Samofatov |
1414 | patrickgriffin |
1415 | Patrick J. P. Griffin |
1416 | Paul Beach |
1417 | + 2001, 2002, Paul Beach |
1418 | Paul Reeves |
1419 | Roman Simakov |
1420 | Sandor Szollosi <ssani@freemail.hu> |
1421 | Sean Leyne |
1422 | + 2001, 2002, Sean Leyne |
1423 | + 2001, SJL |
1424 | Slavomir Skopalik |
1425 | Stephen W. Boyd |
1426 | + 2006, 2007, Stephen W. Boyd |
1427 | Steve Boyd |
1428 | TMN (Mike Nordell) |
1429 | + 2001, TMN (Mike Nordell) |
1430 | Toni Martir |
1431 | Victor Seryodkin |
1432 | + 2003, Victor Seryodkin |
1433 | Vlad Horsun |
1434 | License: IPL-1.0 |
1435 | Comment: |
1436 | @@ -1250,12 +1292,10 @@ Files: |
1437 | builds/install/posix-common/FirebirdUninstall.sh.in |
1438 | builds/install/posix-common/install.sh.in |
1439 | builds/install/posix-common/posixLibrary.sh.in |
1440 | - builds/install/posix-common/registerDatabase.sh.in |
1441 | builds/posix/empty.vers |
1442 | builds/posix/fbintl.vers |
1443 | builds/posix/fbplugin.vers |
1444 | builds/posix/ib_util.vers |
1445 | - builds/posix/make.rules |
1446 | builds/posix/udr_plugin.vers |
1447 | builds/posix/vers.sh.in |
1448 | builds/win32/defs/plugin.def |
1449 | @@ -1297,8 +1337,6 @@ Files: |
1450 | src/alice/main/aliceMain.cpp |
1451 | src/auth/AuthDbg.cpp |
1452 | src/auth/AuthDbg.h |
1453 | - src/auth/SecDbCache.cpp |
1454 | - src/auth/SecDbCache.h |
1455 | src/auth/SecureRemotePassword/client/SrpClient.cpp |
1456 | src/auth/SecureRemotePassword/client/SrpClient.h |
1457 | src/auth/SecureRemotePassword/manage/SrpManagement.cpp |
1458 | @@ -1401,8 +1439,6 @@ Files: |
1459 | src/common/config/config_file.cpp |
1460 | src/common/config/config_file.h |
1461 | src/common/config/config.h |
1462 | - src/common/config/dir_list.cpp |
1463 | - src/common/config/dir_list.h |
1464 | src/common/CRC32C.cpp |
1465 | src/common/CsConvert.h |
1466 | src/common/cvt.h |
1467 | @@ -1581,6 +1617,7 @@ Files: |
1468 | src/jrd/SysFunction.h |
1469 | src/jrd/TempSpace.cpp |
1470 | src/jrd/TempSpace.h |
1471 | + src/jrd/ThreadCollect.h |
1472 | src/jrd/trace/TraceCmdLine.cpp |
1473 | src/jrd/trace/TraceConfigStorage.cpp |
1474 | src/jrd/trace/TraceConfigStorage.h |
1475 | @@ -1605,6 +1642,8 @@ Files: |
1476 | src/misc/smallog.cpp |
1477 | src/misc/src_bundle.sh |
1478 | src/misc/upgrade/v2.1/metadata_charset.txt |
1479 | + src/misc/upgrade/v2.1/metadata_charset_create.sql |
1480 | + src/misc/upgrade/v2.1/metadata_charset_drop.sql |
1481 | src/misc/upgrade/v2/ib_udf_upgrade.sql |
1482 | src/misc/upgrade/v2/security_database.sql |
1483 | src/misc/upgrade/v3.0/security_database.sql |
1484 | @@ -1616,10 +1655,6 @@ Files: |
1485 | src/remote/client/BlrFromMessage.h |
1486 | src/remote/client/interface.h |
1487 | src/remote/SockAddr.h |
1488 | - src/utilities/fbcpl/fbdialog.cpp |
1489 | - src/utilities/fbcpl/fbdialog.h |
1490 | - src/utilities/fbcpl/fbpanel.cpp |
1491 | - src/utilities/fbcpl/fbpanel.h |
1492 | src/utilities/fbsvcmgr/fbsvcmgr.cpp |
1493 | src/utilities/fbtracemgr/traceMgrMain.cpp |
1494 | src/utilities/gsec/main/gsecMain.cpp |
1495 | @@ -1673,7 +1708,7 @@ Copyright: |
1496 | 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2015, 2017 |
1497 | Alex Peshkov <peshkoff@mail.ru> |
1498 | 2007, 2008, 2009, 2013, 2014, 2016 Alexander Peshkoff <peshkoff@mail.ru> |
1499 | - 2018, 2020 Alexander Peshkoff <peshkoff@mail.ru> |
1500 | + 2018, 2020, 2022 Alexander Peshkoff <peshkoff@mail.ru> |
1501 | Bill Oliver <Bill.Oliver@sas.com> |
1502 | 2009 Nikolay Samofatov <skidder@users.sourceforge.net> |
1503 | 2003, 2004 Arno Brinkman |
1504 | @@ -1755,6 +1790,7 @@ Files: |
1505 | builds/install/arch-specific/netbsd/install.sh.in |
1506 | builds/install/arch-specific/netbsd/Makefile.in |
1507 | builds/install/arch-specific/solx86gcc/Makefile.in |
1508 | + builds/install/posix-common/registerDatabase.sh.in |
1509 | builds/posix/Makefile.in |
1510 | builds/posix/Makefile.in.examples |
1511 | builds/posix/Makefile.in.extern.editline |
1512 | @@ -1813,10 +1849,11 @@ Comment: |
1513 | |
1514 | Files: |
1515 | builds/posix/make.defaults |
1516 | + builds/posix/make.rules |
1517 | examples/build_unix/Makefile.in.example5 |
1518 | Copyright: |
1519 | Mark O'Donohue <mark.odonohue@ludwig.edu.au> |
1520 | -License: MPL-1.1-or-GPL-2+ |
1521 | +License: MPL-1.1 or GPL-2+ |
1522 | The contents of this file are subject to the Mozilla Public License Version |
1523 | 1.1 (the "License"); you may not use this file except in compliance with the |
1524 | License. You may obtain a copy of the License at http://www.mozilla.org/MPL/ |
1525 | @@ -1872,7 +1909,8 @@ License: bsd-like |
1526 | OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
1527 | SUCH DAMAGE. |
1528 | |
1529 | -Files: acx_pthread.m4 |
1530 | +Files: |
1531 | + acx_pthread.m4 |
1532 | Copyright: © 2007 Steven G. Johnson <stevenj@alum.mit.edu> |
1533 | License: GPL-3+ with autoconf exception |
1534 | Available from the GNU Autoconf Macro Archive |
1535 | @@ -1909,7 +1947,8 @@ License: GPL-3+ with autoconf exception |
1536 | The full text of GNU General Public License version 3 can be found at |
1537 | /usr/share/common-licenses/GPL-3 on every Debian system. |
1538 | |
1539 | -Files: extern/btyacc/* |
1540 | +Files: |
1541 | + extern/btyacc/* |
1542 | Copyright: Chris Dodd <chrisd@collins.com>, Siber Systems <vadik@siber.com> |
1543 | License: public-domain |
1544 | BTYACC was created by Chris Dodd using ideas from many places and lots of |
1545 | diff --git a/debian/firebird3.0-server.lintian-overrides b/debian/firebird3.0-server.lintian-overrides |
1546 | index 3ff59cb..b5510e7 100644 |
1547 | --- a/debian/firebird3.0-server.lintian-overrides |
1548 | +++ b/debian/firebird3.0-server.lintian-overrides |
1549 | @@ -1,6 +1,6 @@ |
1550 | # These templates are used, but via shell variables and therefore lintian can't |
1551 | # detect the usage |
1552 | -firebird3.0-server: unused-debconf-template shared/firebird/sysdba_password/first_install |
1553 | -firebird3.0-server: unused-debconf-template shared/firebird/sysdba_password/upgrade_reconfigure |
1554 | -firebird3.0-server: unused-debconf-template shared/firebird/server_in_use |
1555 | +firebird3.0-server: unused-debconf-template shared/firebird/sysdba_password/first_install [templates:1] |
1556 | +firebird3.0-server: unused-debconf-template shared/firebird/sysdba_password/upgrade_reconfigure [templates:178] |
1557 | +firebird3.0-server: unused-debconf-template shared/firebird/server_in_use [templates:360] |
1558 | |
1559 | diff --git a/debian/gbp.conf b/debian/gbp.conf |
1560 | new file mode 100644 |
1561 | index 0000000..47f4e0f |
1562 | --- /dev/null |
1563 | +++ b/debian/gbp.conf |
1564 | @@ -0,0 +1,3 @@ |
1565 | +[DEFAULT] |
1566 | +upstream-branch=upstream/latest |
1567 | +debian-branch=debian/unstable |
1568 | diff --git a/debian/libib-util.lintian-overrides b/debian/libib-util.lintian-overrides |
1569 | index b862d50..739c62a 100644 |
1570 | --- a/debian/libib-util.lintian-overrides |
1571 | +++ b/debian/libib-util.lintian-overrides |
1572 | @@ -14,4 +14,4 @@ |
1573 | libib-util: shlib-without-versioned-soname usr/lib/*/libib_util.so libib_util.so |
1574 | |
1575 | # this is not a dev package |
1576 | -libib-util: dev-pkg-without-shlib-symlink usr/lib/*/libib_util.so usr/lib/*/libib_util.so |
1577 | +libib-util: lacks-unversioned-link-to-shared-library example: usr/lib/TRIPLET/libib_util.so [usr/lib/TRIPLET/libib_util.so] |
1578 | diff --git a/debian/pack-upstream-snapshot.sh b/debian/pack-upstream-snapshot.sh |
1579 | index e256284..5a17636 100644 |
1580 | --- a/debian/pack-upstream-snapshot.sh |
1581 | +++ b/debian/pack-upstream-snapshot.sh |
1582 | @@ -34,7 +34,8 @@ VER=$(upstream_ver PRODUCT_VER_STRING) |
1583 | echo "Version is $VER" |
1584 | |
1585 | TAR="firebird3.0-$VER" |
1586 | +DS=$(perl -F, -anwE'for (@F) { say($_), exit if s/^repacksuffix=([^"]+).*/$1/ }' debian/watch) |
1587 | |
1588 | -git archive --format=tar "--prefix=$TAR/" "$HEAD" | gzip -9 -n > "../$TAR.tar.gz" |
1589 | +git archive --format=tar "--prefix=$TAR/" "$HEAD" | pigz -9 -n > "../$TAR.tar.gz" |
1590 | |
1591 | -sh debian/repack.sh --upstream-version "$VER" "../$TAR.tar.gz" |
1592 | +mk-origtargz --force-repack --repack-suffix="$DS" --compression=xz --version "$VER" "../$TAR.tar.gz" |
1593 | diff --git a/debian/patches/deb/no-suse.init.patch b/debian/patches/deb/no-suse.init.patch |
1594 | index e7c9738..2793ab9 100644 |
1595 | --- a/debian/patches/deb/no-suse.init.patch |
1596 | +++ b/debian/patches/deb/no-suse.init.patch |
1597 | @@ -6,7 +6,7 @@ Forwarded: no |
1598 | |
1599 | --- a/configure.ac |
1600 | +++ b/configure.ac |
1601 | -@@ -1251,7 +1251,6 @@ case "$PLATFORM" in |
1602 | +@@ -1244,7 +1244,6 @@ case "$PLATFORM" in |
1603 | gen/install/misc/firebird.xinetd:builds/install/arch-specific/linux/firebird.xinetd.in |
1604 | gen/install/misc/firebird.init.d.generic:builds/install/arch-specific/linux/firebird.init.d.generic.in |
1605 | gen/install/misc/firebird.init.d.mandrake:builds/install/arch-specific/linux/firebird.init.d.mandrake.in |
1606 | diff --git a/debian/patches/no-binary-gbaks.patch b/debian/patches/no-binary-gbaks.patch |
1607 | index accc033..adbe858 100644 |
1608 | --- a/debian/patches/no-binary-gbaks.patch |
1609 | +++ b/debian/patches/no-binary-gbaks.patch |
1610 | @@ -26,7 +26,7 @@ |
1611 | - $(CHMOD) 0444 $@ |
1612 | - |
1613 | -help.fdb: $(BLD_ROOT)/misc/help.gbak |
1614 | -- $(RUN_GBAK) -MODE read_only -R $< $@ |
1615 | +- $(RUN_GBAK) -MODE read_only -replace $< $@ |
1616 | - $(CHMOD) 0444 $@ |
1617 | - |
1618 | $(SECURITY_FDB): security.fdb |
1619 | @@ -52,7 +52,7 @@ |
1620 | -qli: $(QLI) |
1621 | - |
1622 | -$(QLI): $(QLI_Objects) $(COMMON_LIB) |
1623 | -- $(EXE_LINK) $(EXE_LINK_OPTIONS) $^ -o $@ $(FIREBIRD_LIBRARY_LINK) $(LINK_LIBS) $(call LINK_DARWIN_RPATH,..) |
1624 | +- $(EXE_LINK) $(EXE_LINK_OPTIONS) $^ -o $@ $(FIREBIRD_LIBRARY_LINK) $(LINK_LIBS) |
1625 | - |
1626 | examples: include_generic |
1627 | $(MAKE) -f Makefile.examples -C $(GEN_ROOT)/examples/ |
1628 | diff --git a/debian/patches/out/cross-configure.patch b/debian/patches/out/cross-configure.patch |
1629 | index 9910802..12f862a 100644 |
1630 | --- a/debian/patches/out/cross-configure.patch |
1631 | +++ b/debian/patches/out/cross-configure.patch |
1632 | @@ -45,7 +45,7 @@ Subject: improve cross buildability |
1633 | ;; |
1634 | esac |
1635 | |
1636 | -@@ -975,7 +979,8 @@ AC_RUN_IFELSE([AC_LANG_SOURCE([[#include |
1637 | +@@ -968,7 +972,8 @@ AC_RUN_IFELSE([AC_LANG_SOURCE([[#include |
1638 | } |
1639 | ]])],[AC_DEFINE(WORKING_SEM_INIT,1,[Define this if sem_init() works on the platform]) |
1640 | AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no) |
1641 | @@ -55,14 +55,14 @@ Subject: improve cross buildability |
1642 | fi |
1643 | fi |
1644 | |
1645 | -@@ -1000,12 +1005,10 @@ AC_TYPE_SIZE_T |
1646 | +@@ -993,12 +998,10 @@ AC_TYPE_SIZE_T |
1647 | AC_TYPE_UID_T |
1648 | AC_SYS_LARGEFILE |
1649 | if test "$ac_cv_sys_file_offset_bits" = "no"; then |
1650 | - AC_MSG_CHECKING(for native large file support) |
1651 | - AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <unistd.h> |
1652 | - main () { |
1653 | -- exit(!(sizeof(off_t) == 8)); |
1654 | +- return !(sizeof(off_t) == 8); |
1655 | - }]])],[ac_cv_sys_file_offset_bits=64; AC_DEFINE(_FILE_OFFSET_BITS,64) |
1656 | - AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)],[]) |
1657 | + AC_CHECK_SIZEOF([off_t],[],[#include <unistd.h>]) |
1658 | @@ -72,7 +72,7 @@ Subject: improve cross buildability |
1659 | fi |
1660 | |
1661 | AC_CHECK_SIZEOF(void *) |
1662 | -@@ -1038,27 +1041,17 @@ AC_CHECK_MEMBER([struct dirent.d_type], |
1663 | +@@ -1031,27 +1034,17 @@ AC_CHECK_MEMBER([struct dirent.d_type], |
1664 | |
1665 | dnl EKU: try to determine the alignment of long and double |
1666 | dnl replaces FB_ALIGNMENT and FB_DOUBLE_ALIGN in src/jrd/common.h |
1667 | @@ -83,7 +83,7 @@ Subject: improve cross buildability |
1668 | - char a; |
1669 | - union { long long x; sem_t y; } b; |
1670 | - }; |
1671 | -- exit((int)&((struct s*)0)->b); |
1672 | +- return (int)&((struct s*)0)->b; |
1673 | -}]])],[ac_cv_c_alignment=$ac_status],[ac_cv_c_alignment=$ac_status],[]) |
1674 | -AC_MSG_RESULT($ac_cv_c_alignment) |
1675 | +AC_CHECK_ALIGNOF([long long]) |
1676 | @@ -101,7 +101,7 @@ Subject: improve cross buildability |
1677 | - char a; |
1678 | - double b; |
1679 | - }; |
1680 | -- exit((int)&((struct s*)0)->b); |
1681 | +- return (int)&((struct s*)0)->b; |
1682 | -}]])],[ac_cv_c_double_align=$ac_status],[ac_cv_c_double_align=$ac_status],[]) |
1683 | -AC_MSG_RESULT($ac_cv_c_double_align) |
1684 | +AC_CHECK_ALIGNOF([double]) |
1685 | diff --git a/debian/patches/out/hurd-maxpathlen.patch b/debian/patches/out/hurd-maxpathlen.patch |
1686 | index 01ac8db..e9520aa 100644 |
1687 | --- a/debian/patches/out/hurd-maxpathlen.patch |
1688 | +++ b/debian/patches/out/hurd-maxpathlen.patch |
1689 | @@ -18,7 +18,7 @@ Author: Damyan Ivanov |
1690 | #if defined AIX || defined AIX_PPC || defined __sun |
1691 | --- a/src/common/common.h |
1692 | +++ b/src/common/common.h |
1693 | -@@ -539,14 +539,6 @@ extern "C" int remove(const char* path); |
1694 | +@@ -537,14 +537,6 @@ extern "C" int remove(const char* path); |
1695 | #define API_ROUTINE_VARARG __cdecl |
1696 | #define CLIB_ROUTINE __cdecl |
1697 | |
1698 | @@ -33,7 +33,7 @@ Author: Damyan Ivanov |
1699 | #define ERRNO GetLastError() |
1700 | #define INET_ERRNO WSAGetLastError() |
1701 | #define H_ERRNO WSAGetLastError() |
1702 | -@@ -559,6 +551,15 @@ extern "C" int remove(const char* path); |
1703 | +@@ -557,6 +549,15 @@ extern "C" int remove(const char* path); |
1704 | #endif /* WIN_NT */ |
1705 | |
1706 | |
1707 | diff --git a/debian/patches/out/obsolete-syslogd.target.patch b/debian/patches/out/obsolete-syslogd.target.patch |
1708 | index a08276c..606526f 100644 |
1709 | --- a/debian/patches/out/obsolete-syslogd.target.patch |
1710 | +++ b/debian/patches/out/obsolete-syslogd.target.patch |
1711 | @@ -10,5 +10,5 @@ Author: Damyan Ivanov <dmn@debian.org> |
1712 | -After=syslog.target network.target |
1713 | +After=network.target |
1714 | Conflicts=firebird-classic.socket |
1715 | + Documentation=https://firebirdsql.org/en/firebird-rdbms/ |
1716 | |
1717 | - [Service] |
1718 | diff --git a/debian/patches/series b/debian/patches/series |
1719 | index bb7b879..6821e85 100644 |
1720 | --- a/debian/patches/series |
1721 | +++ b/debian/patches/series |
1722 | @@ -1,6 +1,8 @@ |
1723 | upstream/riscv64-support.patch |
1724 | +upstream/systemd-service-documentation.patch |
1725 | out/riscv64-prefix.patch |
1726 | out/obsolete-syslogd.target.patch |
1727 | +upstream/systemd-service-stderr.patch |
1728 | out/honour-buildflags.patch |
1729 | out/c++-std.patch |
1730 | out/kfreebsd-sse4.patch |
1731 | diff --git a/debian/patches/upstream/riscv64-support.patch b/debian/patches/upstream/riscv64-support.patch |
1732 | index 0da07dc..a93bb99 100644 |
1733 | --- a/debian/patches/upstream/riscv64-support.patch |
1734 | +++ b/debian/patches/upstream/riscv64-support.patch |
1735 | @@ -22,7 +22,7 @@ Bug: http://tracker.firebirdsql.org/browse/CORE-5779 |
1736 | + libdir=/usr/lib64 |
1737 | + ;; |
1738 | + |
1739 | - powerpc64le-*-linux*) |
1740 | + powerpc64le-*-linux*) |
1741 | MAKEFILE_PREFIX=linux_powerpc64el |
1742 | INSTALL_PREFIX=linux |
1743 | --- a/src/common/classes/DbImplementation.cpp |
1744 | diff --git a/debian/patches/upstream/systemd-service-documentation.patch b/debian/patches/upstream/systemd-service-documentation.patch |
1745 | new file mode 100644 |
1746 | index 0000000..b7d9041 |
1747 | --- /dev/null |
1748 | +++ b/debian/patches/upstream/systemd-service-documentation.patch |
1749 | @@ -0,0 +1,15 @@ |
1750 | +Description: add Documentation key to the systemd service |
1751 | + Adapted from upstream commit 70bbc0e7a54c796d60164e85664c4d26f547dfb4 |
1752 | +Author: Damyan Ivanov <dmn@debian.org> |
1753 | +Forwarded: yes |
1754 | + |
1755 | +--- a/builds/install/arch-specific/linux/firebird-superserver.service.in |
1756 | ++++ b/builds/install/arch-specific/linux/firebird-superserver.service.in |
1757 | +@@ -2,6 +2,7 @@ |
1758 | + Description=Firebird Database Server ( SuperServer ) |
1759 | + After=syslog.target network.target |
1760 | + Conflicts=firebird-classic.socket |
1761 | ++Documentation=https://firebirdsql.org/en/firebird-rdbms/ |
1762 | + |
1763 | + [Service] |
1764 | + User=firebird |
1765 | diff --git a/debian/patches/upstream/systemd-service-stderr.patch b/debian/patches/upstream/systemd-service-stderr.patch |
1766 | new file mode 100644 |
1767 | index 0000000..b14a560 |
1768 | --- /dev/null |
1769 | +++ b/debian/patches/upstream/systemd-service-stderr.patch |
1770 | @@ -0,0 +1,15 @@ |
1771 | +Description: drop StandardError=syslog setting |
1772 | + Taken from upstream commit cdf8410db5b8bd264f6621867d0f319053b489a0 |
1773 | +Author: Damyan Ivanov <dmn@debian.org> |
1774 | +Forwarded: yes |
1775 | + |
1776 | +--- a/builds/install/arch-specific/linux/firebird-superserver.service.in |
1777 | ++++ b/builds/install/arch-specific/linux/firebird-superserver.service.in |
1778 | +@@ -9,7 +9,6 @@ User=firebird |
1779 | + Group=firebird |
1780 | + Type=forking |
1781 | + ExecStart=@FB_SBINDIR@/fbguard -daemon -forever |
1782 | +-StandardError=syslog |
1783 | + |
1784 | + [Install] |
1785 | + WantedBy=multi-user.target |
1786 | diff --git a/debian/prune-upstream-dfsg.lst b/debian/prune-upstream-dfsg.lst |
1787 | deleted file mode 100644 |
1788 | index 00f79af..0000000 |
1789 | --- a/debian/prune-upstream-dfsg.lst |
1790 | +++ /dev/null |
1791 | @@ -1,19 +0,0 @@ |
1792 | -builds/install/arch-specific/linux/firebird.init.d.suse.in |
1793 | -builds/install/arch-specific/solaris |
1794 | -builds/install/arch-specific/solx86gcc/CS/postinstall.in |
1795 | -builds/install/arch-specific/solx86gcc/CS/postremove.in |
1796 | -builds/install/arch-specific/solx86gcc/CS/preinstall.in |
1797 | -doc/README.build.mingw.html |
1798 | -doc/README.build.msvc.html |
1799 | -doc/README.build.posix.html |
1800 | -doc/README.plugins.html |
1801 | -doc/README.providers.html |
1802 | -doc/README.SecureRemotePassword.html |
1803 | -doc/README.wire.compression.html |
1804 | -doc/Using_OO_API.html |
1805 | -doc/sql.extensions/README.mapping.html |
1806 | -extern/SfIO |
1807 | -extern/zlib |
1808 | -src/include/firebird/IdlFbInterfaces.h |
1809 | -src/include/gen/autoconfig.h.in |
1810 | -src/msgs/templates.sql |
1811 | diff --git a/debian/repack.sh b/debian/repack.sh |
1812 | deleted file mode 100644 |
1813 | index 7e9a136..0000000 |
1814 | --- a/debian/repack.sh |
1815 | +++ /dev/null |
1816 | @@ -1,128 +0,0 @@ |
1817 | -#!/bin/sh |
1818 | -# |
1819 | -# Repack upstream source converting from bz2 to gz and |
1820 | -# removing some debian-supplied libraries and generated |
1821 | -# files in the process |
1822 | -# |
1823 | -# To be called via debian/watch (uscan or uscan --force) |
1824 | -# or |
1825 | -# sh debian/repack.sh --upstream-version VER FILE |
1826 | - |
1827 | -set -e |
1828 | -set -u |
1829 | - |
1830 | -usage() { |
1831 | - cat <<EOF >& 2 |
1832 | -Usage: $0 --upstream-version VER FILE |
1833 | - |
1834 | - or |
1835 | - |
1836 | - uscan [--force] |
1837 | -EOF |
1838 | -} |
1839 | - |
1840 | -[ "${1:-}" = "--upstream-version" ] \ |
1841 | - && [ -n "${2:-}" ] \ |
1842 | - && [ -n "${3:-}" ] \ |
1843 | - && [ -z "${4:-}" ] \ |
1844 | - || usage |
1845 | - |
1846 | -TMPDIR=`mktemp -d -p .` |
1847 | - |
1848 | -trap "rm -rf $TMPDIR" INT QUIT 0 |
1849 | - |
1850 | -VER="$2" |
1851 | -DEB_VER="${VER}.ds4" |
1852 | -UP_VER="${VER}" |
1853 | -UPSTREAM_TAR="$3" |
1854 | -UPSTREAM_DIR=Firebird-${UP_VER} |
1855 | -ORIG="../firebird3.0_${DEB_VER}.orig.tar.xz" |
1856 | -ORIG_DIR="firebird3.0-${DEB_VER}.orig" |
1857 | - |
1858 | -if [ -e "$ORIG" ]; then |
1859 | - echo "$ORIG already exists. Aborting." |
1860 | - exit 1 |
1861 | -fi |
1862 | - |
1863 | -echo -n "Expanding upstream source tree..." |
1864 | -if [ "$UPSTREAM_TAR" != "${UPSTREAM_TAR%.bz2}" ]; then |
1865 | - tar xjf $UPSTREAM_TAR -C $TMPDIR |
1866 | -elif [ "$UPSTREAM_TAR" != "${UPSTREAM_TAR%.gz}" ]; then |
1867 | - tar xzf $UPSTREAM_TAR -C $TMPDIR |
1868 | -elif [ "$UPSTREAM_TAR" != "${UPSTREAM_TAR%.xz}" ]; then |
1869 | - tar xJf $UPSTREAM_TAR -C $TMPDIR |
1870 | -else |
1871 | - echo "Don't know how to expand $UPSTREAM_TAR" >&2 |
1872 | - exit 1 |
1873 | -fi |
1874 | -echo " done." |
1875 | - |
1876 | -UPSTREAM_DIR=`ls -1 $TMPDIR` |
1877 | - |
1878 | -# clean sources, needlessly supplied by upstream. |
1879 | -# Debian has packages for them already |
1880 | -# and generated files |
1881 | -echo -n "Cleaning upstream sources from unneeded things..." |
1882 | -for d in icu editline btyacc/test/ftp.y libtommath; |
1883 | -do |
1884 | - echo -n " $d" |
1885 | - rm -r $TMPDIR/$UPSTREAM_DIR/extern/$d |
1886 | -done |
1887 | -echo " done." |
1888 | - |
1889 | -echo -n "Removing bundled boost..." |
1890 | -rm -r $TMPDIR/$UPSTREAM_DIR/src/include/firebird/impl/boost |
1891 | -echo " done." |
1892 | - |
1893 | -echo -n "Removing source-less database backups..." |
1894 | -for f in msg metadata help; do |
1895 | - rm -vf $TMPDIR/$UPSTREAM_DIR/builds/misc/$f.gbak |
1896 | -done |
1897 | -echo " done." |
1898 | - |
1899 | -echo Removing files with no license... |
1900 | -cat debian/prune-upstream-dfsg.lst \ |
1901 | -| while read f; do |
1902 | - rm -rv $TMPDIR/$UPSTREAM_DIR/$f |
1903 | -done |
1904 | - |
1905 | -echo -n "Removing generated files..." |
1906 | -for f in \ |
1907 | - configure \ |
1908 | - builds/make.new/config/config.guess \ |
1909 | - builds/make.new/config/config.h.in \ |
1910 | - builds/make.new/config/config.sub \ |
1911 | - builds/make.new/config/install-sh \ |
1912 | - builds/make.new/config/ltmain.sh \ |
1913 | - src/include/gen/parse.h \ |
1914 | - src/include/gen/autoconfig.auto \ |
1915 | - src/include/gen/ids.h \ |
1916 | - ; |
1917 | -do |
1918 | - if [ -e $TMPDIR/$UPSTREAM_DIR/$f ]; then |
1919 | - rm $TMPDIR/$UPSTREAM_DIR/$f |
1920 | - echo " $f" |
1921 | - fi |
1922 | -done |
1923 | -echo " done." |
1924 | - |
1925 | -echo -n "Removing source-less generated files..." |
1926 | -for f in doc/Firebird-3-QuickStart.pdf doc/ReleaseNotes.pdf; do |
1927 | - if [ -e $TMPDIR/$UPSTREAM_DIR/$f ]; then |
1928 | - rm $TMPDIR/$UPSTREAM_DIR/$f |
1929 | - echo -n " $f" |
1930 | - fi |
1931 | -done |
1932 | -echo " done." |
1933 | - |
1934 | -echo -n "Removing .gitignore files..." |
1935 | -find $TMPDIR/$UPSTREAM_DIR -name .gitignore -delete |
1936 | -echo " done." |
1937 | - |
1938 | -find "$TMPDIR/$UPSTREAM_DIR" -type d -empty -delete |
1939 | - |
1940 | -mv $TMPDIR/$UPSTREAM_DIR $TMPDIR/$ORIG_DIR |
1941 | - |
1942 | -echo -n Repackaging into ${ORIG} ... |
1943 | -tar c -C $TMPDIR $ORIG_DIR | xz > "$ORIG" |
1944 | -echo " done." |
1945 | diff --git a/debian/rules b/debian/rules |
1946 | index 241962a..9a38ccd 100755 |
1947 | --- a/debian/rules |
1948 | +++ b/debian/rules |
1949 | @@ -70,11 +70,12 @@ USFB := /usr/share/firebird/${FB_VER} |
1950 | VAR := /var/lib/firebird/${FB_VER} |
1951 | RUN := /run/firebird${FB_VER} |
1952 | |
1953 | -export DEB_BUILD_MAINT_OPTIONS := hardening=+bindnow |
1954 | -export DEB_CXXFLAGS_MAINT_APPEND := -DUCHAR_TYPE=uint16_t -fno-lifetime-dse -fno-strict-aliasing |
1955 | -export DEB_CFLAGS_MAINT_APPEND := -fno-strict-aliasing |
1956 | +DEB_BUILD_MAINT_OPTIONS := hardening=+bindnow |
1957 | +DEB_CXXFLAGS_MAINT_STRIP := -O2 |
1958 | +DEB_CXXFLAGS_MAINT_APPEND := -DUCHAR_TYPE=uint16_t -fno-lifetime-dse -fno-strict-aliasing -O3 |
1959 | +DEB_CFLAGS_MAINT_STRIP := -O2 |
1960 | +DEB_CFLAGS_MAINT_APPEND := -fno-strict-aliasing -O3 |
1961 | |
1962 | -DPKG_EXPORT_BUILDFLAGS := 1 |
1963 | include /usr/share/dpkg/buildflags.mk |
1964 | |
1965 | confflags += --disable-rpath --with-gpre-cobol \ |
1966 | @@ -171,6 +172,10 @@ ifeq ($(ICU_VER),) |
1967 | $(error Unable to determine ICU version) |
1968 | endif |
1969 | |
1970 | +override_dh_lintian-arch: |
1971 | + dh_lintian |
1972 | + sed -i -e "s/TRIPLET/$(shell dpkg-architecture -q DEB_TARGET_MULTIARCH)/g" \ |
1973 | + debian/libib-util/usr/share/lintian/overrides/libib-util |
1974 | override_dh_installchangelogs: |
1975 | dh_installchangelogs ChangeLog -p firebird$(FB_VER)-common-doc |
1976 | override_dh_installdocs: |
1977 | diff --git a/debian/watch b/debian/watch |
1978 | index bc93997..a6e45b0 100644 |
1979 | --- a/debian/watch |
1980 | +++ b/debian/watch |
1981 | @@ -4,9 +4,7 @@ |
1982 | # Full-site-with-pattern [Version [Action]] |
1983 | |
1984 | version=4 |
1985 | -#opts="dversionmangle=s/(?:\.ds\d+)$//,uversionmangle=s/-\d+//;s/-(?=\D)/~/g,repacksuffix=.ds4" \ |
1986 | -# http://sf.net/firebird/[Ff]irebird-(3\.0\..*).tar.bz2 |
1987 | -#opts="dversionmangle=s/(?:\.ds\d+)$//,uversionmangle=s/-\d+//;s/-(?=\D)/~/g,repacksuffix=.ds4" \ |
1988 | -# https://firebirdsql.org/en/firebird-3-0/ .*/[Ff]irebird-(3\.0\.\d+(?:\.\d+)?)(?:-0)?@ARCHIVE_EXT@ |
1989 | opts="dversionmangle=s/(?:\.ds\d+)$//,uversionmangle=s/-\d+//;s/-(?=\D)/~/g,repacksuffix=.ds4" \ |
1990 | - https://github.com/FirebirdSQL/firebird/releases .*/[Ff]irebird-(3\.0\.\d+(?:\.\d+)?)(?:-0)?@ARCHIVE_EXT@ |
1991 | + https://firebirdsql.org/en/firebird-3-0/ .*/[Ff]irebird-(3\.0\.\d+(?:\.\d+)?)(?:-0)?@ARCHIVE_EXT@ |
1992 | +#opts="dversionmangle=s/(?:\.ds\d+)$//,uversionmangle=s/-\d+//;s/-(?=\D)/~/g,repacksuffix=.ds4" \ |
1993 | +# https://github.com/FirebirdSQL/firebird/releases .*/[Ff]irebird-(3\.0\.\d+(?:\.\d+)?)(?:-0)?@ARCHIVE_EXT@ |
1994 | diff --git a/doc/README.makefiles b/doc/README.makefiles |
1995 | deleted file mode 100644 |
1996 | index 2b11836..0000000 |
1997 | --- a/doc/README.makefiles |
1998 | +++ /dev/null |
1999 | @@ -1,136 +0,0 @@ |
2000 | -PURPOSE : To explain the makefile system in firebird2. |
2001 | - |
2002 | -STATUS: Still a work in progress (both the makefiles, and this document) |
2003 | - |
2004 | -AUTHORS: Mark O'Donohue mark.odonohue@luduwg.edu.au |
2005 | - |
2006 | -COPYRIGHT: All rights retained by authors. |
2007 | - For distribution with Firebird source |
2008 | - (Someone who knows this legal stuff will update it later) |
2009 | - |
2010 | -OVERVIEW |
2011 | - |
2012 | -The new makefiles were created to fit in with autoconf, to place the object |
2013 | -files in seperate directories to the source files and to simplify the build |
2014 | -process. |
2015 | - |
2016 | -It really does rely on using gnu make so that is the best version to use. |
2017 | - |
2018 | - |
2019 | -THE REALLY QUICK INTRO |
2020 | - |
2021 | -For linux this is how I do a compile (classic is only one currently) |
2022 | - |
2023 | -autoconf |
2024 | -./configure |
2025 | -$cd src |
2026 | -$make > make.log 2>&1 ; cat make.log | grep -v warning > make2.log ; vi make2.log |
2027 | - |
2028 | -For an install checkout |
2029 | - |
2030 | -$make install |
2031 | - |
2032 | -it will list your options - but also needs some work. |
2033 | - |
2034 | - |
2035 | -MAKEFILE |
2036 | - |
2037 | -Makefiles are found in builds/posix |
2038 | - |
2039 | -make.rules |
2040 | -make.defaults |
2041 | -make.shared.variables |
2042 | - |
2043 | -prefix.xxx (where xxx = platform) |
2044 | - |
2045 | -In src/make.new there are a number of Makefile.in.xxx files and some make.xxx |
2046 | - |
2047 | - |
2048 | -STRUCTURE OF MAKEFILE.IN.XXX |
2049 | - |
2050 | - |
2051 | -Each Makefile.in.xxx has the following somewhere near the top: |
2052 | - |
2053 | -include make.defaults |
2054 | -include make.platform |
2055 | -include make.rules |
2056 | -include make.shared.variables |
2057 | - |
2058 | -... |
2059 | -... |
2060 | - |
2061 | - |
2062 | -These are: |
2063 | - |
2064 | -make.defaults |
2065 | - |
2066 | -This contains default values for macros that it is likely that the user may |
2067 | -want to override. |
2068 | - |
2069 | - |
2070 | -make.platform |
2071 | - |
2072 | -This file is created from the prefix.xxx where xxx=linux/darwin/freebsd etc. |
2073 | -It provides a spot for the user to override or repalce macros that have been |
2074 | -defined in make.defaults. In addition extra dependancies can be added to |
2075 | -build extra targets. |
2076 | - |
2077 | - |
2078 | -make.rules |
2079 | - |
2080 | -This contains the default rules for compiling the system components. Such as |
2081 | -directory macros CXX etc. |
2082 | - |
2083 | - |
2084 | -make.shared.variables |
2085 | - |
2086 | -This file contains the defintion of macros that are shared across all of the |
2087 | -modules. The only set that are needed are those files that are contained in |
2088 | -the libgds.a/so library since files from many modules contribute to the library. |
2089 | - |
2090 | - |
2091 | - |
2092 | -CREATING OBJECT FILES |
2093 | - |
2094 | - |
2095 | -In the makefiles the object files are of two sorts .o static and .lo |
2096 | -which are suitable for shared libraries. On most systems the source |
2097 | -files need to be compiled twice to create both .o and .lo files. F |
2098 | -Fortunately the program libtool can help work with this. |
2099 | - |
2100 | -The general format of .o file dependancies is: |
2101 | - |
2102 | -SERVER_Sources = server.cpp |
2103 | -SERVER_Objects = $(SERVER_Sources:%.cpp=$(OBJ)/%.o) |
2104 | - |
2105 | - |
2106 | -So the .o files live in $(OBJ) where: |
2107 | -OBJ = $(ROOT)/gen/$ModuleName |
2108 | - |
2109 | - |
2110 | -Each Makefile also specifies an AllObjects and Dependancies macro which |
2111 | -identified all the objects that this Makefile is to create and the name |
2112 | -of the dependency files generated for those objects. |
2113 | - |
2114 | -AllObjects = $(Alice_Objects) |
2115 | - |
2116 | - |
2117 | -FILE DEPENDANCIES |
2118 | - |
2119 | -Include file dependancy information is automatically generated by the gcc |
2120 | -compiler. |
2121 | - |
2122 | -The gcc compiler has a flag -MMD which will generate in addition to the |
2123 | -.o file a .d file which contains the dependancy chain of #includes required |
2124 | -for the program. These are then edited and stored in the $(OBJ) directory and |
2125 | -are included in the bottom line of the makefile with |
2126 | - |
2127 | -Dependencies = $(All_Objects:.o=.d) |
2128 | - |
2129 | -include $(Dependancies) |
2130 | - |
2131 | -PLATFORM SUBDIRS OF JRD |
2132 | - |
2133 | -Please, forget about jrd/os/* in makefiles! Pretend that all files from |
2134 | -there are placed in jrd/ itself. A little trick in make.rules will find |
2135 | -files for your platform automatically. |
2136 | diff --git a/doc/WhatsNew b/doc/WhatsNew |
2137 | index 454f2f1..f50c6f7 100644 |
2138 | --- a/doc/WhatsNew |
2139 | +++ b/doc/WhatsNew |
2140 | @@ -1,4 +1,189 @@ |
2141 | ************************** |
2142 | + * v3.0.10 |
2143 | + ************************** |
2144 | + |
2145 | + * Improvement #7194 |
2146 | + Make it possible to avoid fbclient dependency in Pascal programs using firebird.pas |
2147 | + Contributor(s): |
2148 | + Alex Peshkov <peshkoff at mail.ru> |
2149 | + |
2150 | + * Improvement #7161 |
2151 | + Update zlib to 1.2.12 |
2152 | + Contributor(s): |
2153 | + Vlad Khorsun <hvlad at users.sourceforge.net> |
2154 | + |
2155 | + * Improvement #7093 |
2156 | + Improve indexed lookup speed of strings when the last keys characters are part of collated contractions |
2157 | + Contributor(s): |
2158 | + Adriano dos Santos Fernandes <adrianosf at gmail.com> |
2159 | + |
2160 | + * Improvement #6872 |
2161 | + Faster execution of indexed STARTING WITH with UNICODE collation |
2162 | + Contributor(s): |
2163 | + Adriano dos Santos Fernandes <adrianosf at gmail.com> |
2164 | + |
2165 | + * Bugfix #7197 |
2166 | + Segfault in Linux CS after successful detach from a database |
2167 | + Contributor(s): |
2168 | + Alex Peshkov <peshkoff at mail.ru> |
2169 | + |
2170 | + * Bugfix #7191 |
2171 | + gstat fails, but return 0 error code with incorrect databases.conf |
2172 | + Contributor(s): |
2173 | + Alexey Mochalov <aleksey.mochalov at red-soft.ru> |
2174 | + |
2175 | + * Bugfix #7184 |
2176 | + gbak output is not being flushed to disk |
2177 | + Contributor(s): |
2178 | + Alex Peshkov <peshkoff at mail.ru> |
2179 | + |
2180 | + * Bugfix #7176 |
2181 | + Incorrect error "Invalid token. Malformed string." with union + blob + non-UTF8 varchar |
2182 | + Contributor(s): |
2183 | + Adriano dos Santos Fernandes <adrianosf at gmail.com> |
2184 | + |
2185 | + * Bugfix #7160 |
2186 | + Missing checkout in trace manager when performing user mapping may cause server hang |
2187 | + Contributor(s): |
2188 | + Alex Peshkov <peshkoff at mail.ru> |
2189 | + |
2190 | + * Bugfix #7158 |
2191 | + Serious issue with SYSDBA user after a Windows install with EnableLegacyClientAuth |
2192 | + Contributor(s): |
2193 | + Paul Reeves <preeves at ibphoenix.com> |
2194 | + |
2195 | + * Bugfix #7147 |
2196 | + Problems with use of big timeout (or no timeout at all) in trace service |
2197 | + Contributor(s): |
2198 | + Alex Peshkov <peshkoff at mail.ru> |
2199 | + |
2200 | + * Bugfix #7141 |
2201 | + Services manager breaks long lines into 1023 bytes portions when using isc_info_svc_line in Service::query() |
2202 | + Contributor(s): |
2203 | + Alex Peshkov <peshkoff at mail.ru> |
2204 | + |
2205 | + * Bugfix #7140 |
2206 | + Wrong select result in case of special sort character |
2207 | + Contributor(s): |
2208 | + Adriano dos Santos Fernandes <adrianosf at gmail.com> |
2209 | + |
2210 | + * Bugfix #7138 |
2211 | + Problems accessing FB4 database, copied from another host |
2212 | + Contributor(s): |
2213 | + Alex Peshkov <peshkoff at mail.ru> |
2214 | + |
2215 | + * Bugfix #7137 |
2216 | + Optimizer regression: bad plan (HASH instead of JOIN) is chosen for some inner joins |
2217 | + Contributor(s): |
2218 | + Dmitry Yemanov <dimitr at firebirdsql.org> |
2219 | + |
2220 | + * Bugfix #7135 |
2221 | + Firebird engine randomly fails when delivering mapping clear to other processes |
2222 | + Contributor(s): |
2223 | + Alex Peshkov <peshkoff at mail.ru> |
2224 | + |
2225 | + * Bugfix #7128 |
2226 | + Incorrect error message with isc_sql_interprete() |
2227 | + Contributor(s): |
2228 | + Vlad Khorsun <hvlad at users.sourceforge.net> |
2229 | + |
2230 | + * Bugfix #7122 |
2231 | + Invalid state of mapping cache after replacement of database |
2232 | + Contributor(s): |
2233 | + Alex Peshkov <peshkoff at mail.ru> |
2234 | + |
2235 | + * Bugfix #7121 |
2236 | + Mapping error when server tries to use mapping rules from database in full shutdown state |
2237 | + Contributor(s): |
2238 | + Alex Peshkov <peshkoff at mail.ru> |
2239 | + |
2240 | + * Bugfix #7106 |
2241 | + Wrong detection of must-be-delimited user names |
2242 | + Contributor(s): |
2243 | + Alex Peshkov <peshkoff at mail.ru> |
2244 | + |
2245 | + * Bugfix #7094 |
2246 | + Incorrect indexed lookup of strings when the last keys characters are part of collated contractions and there is multi-segment insensitive descending index |
2247 | + Contributor(s): |
2248 | + Adriano dos Santos Fernandes <adrianosf at gmail.com> |
2249 | + |
2250 | + |
2251 | + ************************** |
2252 | + * v3.0.9 |
2253 | + ************************** |
2254 | + |
2255 | + * Bugfix #7119 |
2256 | + Database statistics service could not find existing table(s) |
2257 | + Contributor(s): |
2258 | + Vlad Khorsun <hvlad at users.sourceforge.net> |
2259 | + |
2260 | + * Bugfix #7118 |
2261 | + Chained JOIN .. USING across the same column names may be optimized badly |
2262 | + Contributor(s): |
2263 | + Dmitry Yemanov <dimitr at firebirdsql.org> |
2264 | + |
2265 | + * Bugfix #7115 |
2266 | + Server hangs in trace code when it tries to update mapping cache |
2267 | + Contributor(s): |
2268 | + Alex Peshkov <peshkoff at mail.ru> |
2269 | + |
2270 | + * Bugfix #7112 |
2271 | + Avoid unload of plugins in MacOS due to problematic reload of them |
2272 | + Contributor(s): |
2273 | + Adriano dos Santos Fernandes <adrianosf at gmail.com> |
2274 | + |
2275 | + * Bugfix #7109 |
2276 | + Content of DB file can be overwritten with zero characters in some (rare) cases |
2277 | + Contributor(s): |
2278 | + Vlad Khorsun <hvlad at users.sourceforge.net> |
2279 | + |
2280 | + * Bugfix #7103 |
2281 | + FB service hangs and cannot be stopped after several 'DELETE FROM MON$STATEMENTS' being issued in order to stop ES/EDS which waits record for updating |
2282 | + Contributor(s): |
2283 | + Vlad Khorsun <hvlad at users.sourceforge.net> |
2284 | + |
2285 | + * Bugfix #7084 |
2286 | + Creating unique constraints on MacOS fails on larger tables |
2287 | + Contributor(s): |
2288 | + Adriano dos Santos Fernandes <adrianosf at gmail.com> |
2289 | + |
2290 | + * Bugfix #7067 |
2291 | + Deadlock when using not initialized security database |
2292 | + Contributor(s): |
2293 | + Alex Peshkov <peshkoff at mail.ru> |
2294 | + |
2295 | + * Bugfix #7060 |
2296 | + Deadlock when execute test for CORE-4337 |
2297 | + Contributor(s): |
2298 | + Alex Peshkov <peshkoff at mail.ru> |
2299 | + |
2300 | + * Bugfix #7057 |
2301 | + Client-side positioned updates work wrongly with scrollable cursors |
2302 | + Contributor(s): |
2303 | + Dmitry Yemanov <dimitr at firebirdsql.org> |
2304 | + |
2305 | + * Bugfix #7056 |
2306 | + Fetching from a scrollable cursor may overwrite user-specified buffer and corrupt memory |
2307 | + Contributor(s): |
2308 | + Dmitry Yemanov <dimitr at firebirdsql.org> |
2309 | + |
2310 | + * Bugfix #7043 |
2311 | + Wrong message when user has no access to /tmp/firebird |
2312 | + Contributor(s): |
2313 | + Alex Peshkov <peshkoff at mail.ru> |
2314 | + |
2315 | + * Bugfix #6966 |
2316 | + Status vector for ES(<EMPTY_STRING>) is unstable if another execute block with correct statement was executed before |
2317 | + Contributor(s): |
2318 | + Alex Peshkov <peshkoff at mail.ru> |
2319 | + |
2320 | + * Bugfix #3357 |
2321 | + Bad execution plan if some stream depends on multiple streams via a function |
2322 | + Contributor(s): |
2323 | + Dmitry Yemanov <dimitr at firebirdsql.org> |
2324 | + |
2325 | + |
2326 | + ************************** |
2327 | * v3.0.8 |
2328 | ************************** |
2329 | |
2330 | diff --git a/examples/dbcrypt/CryptKeyHolder.cpp b/examples/dbcrypt/CryptKeyHolder.cpp |
2331 | index 1e92481..f69d2a3 100644 |
2332 | --- a/examples/dbcrypt/CryptKeyHolder.cpp |
2333 | +++ b/examples/dbcrypt/CryptKeyHolder.cpp |
2334 | @@ -281,7 +281,7 @@ Factory factory; |
2335 | |
2336 | } // anonymous namespace |
2337 | |
2338 | -extern "C" void FB_DLL_EXPORT FB_PLUGIN_ENTRY_POINT(IMaster* master) |
2339 | +extern "C" FB_DLL_EXPORT void FB_PLUGIN_ENTRY_POINT(IMaster* master) |
2340 | { |
2341 | IPluginManager* pluginManager = master->getPluginManager(); |
2342 | |
2343 | diff --git a/examples/dbcrypt/DbCrypt.cpp b/examples/dbcrypt/DbCrypt.cpp |
2344 | index 3a60e0d..2348528 100644 |
2345 | --- a/examples/dbcrypt/DbCrypt.cpp |
2346 | +++ b/examples/dbcrypt/DbCrypt.cpp |
2347 | @@ -268,7 +268,7 @@ Factory factory; |
2348 | |
2349 | } // anonymous namespace |
2350 | |
2351 | -extern "C" void FB_DLL_EXPORT FB_PLUGIN_ENTRY_POINT(IMaster* master) |
2352 | +extern "C" FB_DLL_EXPORT void FB_PLUGIN_ENTRY_POINT(IMaster* master) |
2353 | { |
2354 | IPluginManager* pluginManager = master->getPluginManager(); |
2355 | |
2356 | diff --git a/examples/interfaces/ifaceExamples.h b/examples/interfaces/ifaceExamples.h |
2357 | index 40b5478..1b55e1e 100644 |
2358 | --- a/examples/interfaces/ifaceExamples.h |
2359 | +++ b/examples/interfaces/ifaceExamples.h |
2360 | @@ -38,14 +38,6 @@ typedef int FbSampleAtomic; |
2361 | #include <ibase.h> |
2362 | #include <firebird/Interface.h> |
2363 | |
2364 | -#if defined(_WIN32) |
2365 | -#define FB_DLL_EXPORT __declspec(dllexport) |
2366 | -#elif defined(__APPLE__) |
2367 | -#define FB_DLL_EXPORT __attribute__((visibility("default"))) |
2368 | -#else |
2369 | -#define FB_DLL_EXPORT |
2370 | -#endif |
2371 | - |
2372 | using namespace Firebird; |
2373 | |
2374 | #define SAMPLES_DIALECT SQL_DIALECT_V6 |
2375 | diff --git a/src/alice/tdr.cpp b/src/alice/tdr.cpp |
2376 | index 48677ec..80e45df 100644 |
2377 | --- a/src/alice/tdr.cpp |
2378 | +++ b/src/alice/tdr.cpp |
2379 | @@ -288,22 +288,22 @@ void TDR_list_limbo(FB_API_HANDLE handle, const TEXT* name, const SINT64 switche |
2380 | |
2381 | TraNumber id; |
2382 | tdr* trans; |
2383 | - UCHAR* ptr = buffer; |
2384 | - bool flag = true; |
2385 | |
2386 | - while (flag) |
2387 | + for (Firebird::ClumpletReader p(Firebird::ClumpletReader::InfoResponse, buffer, sizeof(buffer)); |
2388 | + !p.isEof(); p.moveNext()) |
2389 | { |
2390 | - const USHORT item = *ptr++; |
2391 | - const USHORT length = (USHORT) gds__vax_integer(ptr, 2); |
2392 | - ptr += 2; |
2393 | + UCHAR item = p.getClumpTag(); |
2394 | + if (item == isc_info_end) |
2395 | + break; |
2396 | + |
2397 | + const USHORT length = (USHORT) p.getClumpLength(); |
2398 | switch (item) |
2399 | { |
2400 | case isc_info_limbo: |
2401 | - id = isc_portable_integer(ptr, length); |
2402 | + id = p.getBigInt(); |
2403 | if (switches & (sw_commit | sw_rollback | sw_two_phase | sw_prompt)) |
2404 | { |
2405 | TDR_reconnect_multiple(handle, id, name, switches); |
2406 | - ptr += length; |
2407 | break; |
2408 | } |
2409 | if (!tdgbl->uSvc->isService()) |
2410 | @@ -326,7 +326,6 @@ void TDR_list_limbo(FB_API_HANDLE handle, const TEXT* name, const SINT64 switche |
2411 | tdgbl->uSvc->putSInt64(isc_spb_single_tra_id_64, id); |
2412 | else |
2413 | tdgbl->uSvc->putSLong(isc_spb_single_tra_id, (SLONG) id); |
2414 | - ptr += length; |
2415 | break; |
2416 | |
2417 | case isc_info_truncated: |
2418 | @@ -336,10 +335,6 @@ void TDR_list_limbo(FB_API_HANDLE handle, const TEXT* name, const SINT64 switche |
2419 | // msg 72: More limbo transactions than fit. Try again |
2420 | // And how it's going to retry with a bigger buffer if the buffer is fixed size? |
2421 | } |
2422 | - // fall through |
2423 | - |
2424 | - case isc_info_end: |
2425 | - flag = false; |
2426 | break; |
2427 | |
2428 | default: |
2429 | diff --git a/src/auth/AuthDbg.cpp b/src/auth/AuthDbg.cpp |
2430 | index 377c9df..e66ad2c 100644 |
2431 | --- a/src/auth/AuthDbg.cpp |
2432 | +++ b/src/auth/AuthDbg.cpp |
2433 | @@ -38,7 +38,7 @@ |
2434 | static Firebird::SimpleFactory<Auth::DebugClient> clientFactory; |
2435 | static Firebird::SimpleFactory<Auth::DebugServer> serverFactory; |
2436 | |
2437 | -extern "C" void FB_PLUGIN_ENTRY_POINT(Firebird::IMaster* master) |
2438 | +extern "C" FB_DLL_EXPORT void FB_PLUGIN_ENTRY_POINT(Firebird::IMaster* master) |
2439 | { |
2440 | Firebird::CachedMasterInterface::set(master); |
2441 | |
2442 | diff --git a/src/auth/SecDbCache.h b/src/auth/SecDbCache.h |
2443 | index de500ac..d5d0ff2 100644 |
2444 | --- a/src/auth/SecDbCache.h |
2445 | +++ b/src/auth/SecDbCache.h |
2446 | @@ -104,6 +104,16 @@ public: |
2447 | (*this)->mutex.enter(FB_FUNCTION); |
2448 | } |
2449 | |
2450 | + void reset() |
2451 | + { |
2452 | + if (hasData()) |
2453 | + { |
2454 | + (*this)->mutex.leave(); |
2455 | + (*this)->close(); |
2456 | + assign(NULL); |
2457 | + } |
2458 | + } |
2459 | + |
2460 | ~Instance() |
2461 | { |
2462 | if (hasData()) |
2463 | diff --git a/src/auth/SecureRemotePassword/manage/SrpManagement.cpp b/src/auth/SecureRemotePassword/manage/SrpManagement.cpp |
2464 | index 2d84776..33de81d 100644 |
2465 | --- a/src/auth/SecureRemotePassword/manage/SrpManagement.cpp |
2466 | +++ b/src/auth/SecureRemotePassword/manage/SrpManagement.cpp |
2467 | @@ -37,14 +37,6 @@ |
2468 | #include "../auth/SecureRemotePassword/Message.h" |
2469 | #include "../common/classes/auto.h" |
2470 | |
2471 | -#ifndef FB_EXPORTED |
2472 | -#if defined(DARWIN) |
2473 | -#define FB_EXPORTED __attribute__((visibility("default"))) |
2474 | -#else |
2475 | -#define FB_EXPORTED |
2476 | -#endif // OS choice (DARWIN) |
2477 | -#endif // FB_EXPORTED |
2478 | - |
2479 | namespace { |
2480 | |
2481 | const unsigned int INIT_KEY = ((~0) - 1); |
2482 | @@ -987,7 +979,7 @@ static Firebird::SimpleFactory<Auth::SrpManagement> factory; |
2483 | |
2484 | } // namespace Auth |
2485 | |
2486 | -extern "C" void FB_EXPORTED FB_PLUGIN_ENTRY_POINT(Firebird::IMaster* master) |
2487 | +extern "C" FB_DLL_EXPORT void FB_PLUGIN_ENTRY_POINT(Firebird::IMaster* master) |
2488 | { |
2489 | Firebird::CachedMasterInterface::set(master); |
2490 | Firebird::PluginManagerInterfacePtr()->registerPluginFactory(Firebird::IPluginManager::TYPE_AUTH_USER_MANAGEMENT, Auth::RemotePassword::plugName, &Auth::factory); |
2491 | diff --git a/src/auth/SecureRemotePassword/server/SrpServer.cpp b/src/auth/SecureRemotePassword/server/SrpServer.cpp |
2492 | index c572957..fcb86c2 100644 |
2493 | --- a/src/auth/SecureRemotePassword/server/SrpServer.cpp |
2494 | +++ b/src/auth/SecureRemotePassword/server/SrpServer.cpp |
2495 | @@ -138,8 +138,11 @@ public: |
2496 | instances->shutdown(); |
2497 | } |
2498 | |
2499 | - static void forceClean(IProvider* p, const char* secDbName) |
2500 | + static void forceClean(IProvider* p, CachedSecurityDatabase::Instance& instance) |
2501 | { |
2502 | + Firebird::PathName secDbName(instance->secureDbName); |
2503 | + |
2504 | + instance.reset(); |
2505 | cleanup(); |
2506 | |
2507 | ClumpletWriter dpb(ClumpletReader::dpbList, MAX_DPB_SIZE); |
2508 | @@ -150,13 +153,14 @@ public: |
2509 | dpb.insertString(isc_dpb_config, ParsedList::getNonLoopbackProviders(secDbName)); |
2510 | |
2511 | Jrd::FbLocalStatus status; |
2512 | - RefPtr<IAttachment> att(REF_NO_INCR, p->attachDatabase(&status, secDbName, dpb.getBufferLength(), dpb.getBuffer())); |
2513 | + RefPtr<IAttachment> att(REF_NO_INCR, |
2514 | + p->attachDatabase(&status, secDbName.c_str(), dpb.getBufferLength(), dpb.getBuffer())); |
2515 | check(&status); |
2516 | |
2517 | HANDSHAKE_DEBUG(fprintf(stderr, "Srv SRP: gfix-like attach to sec db %s\n", secDbName)); |
2518 | } |
2519 | |
2520 | - SecurityDatabase(const char* secDbName, ICryptKeyCallback* cryptCallback) |
2521 | + SecurityDatabase(CachedSecurityDatabase::Instance& instance, ICryptKeyCallback* cryptCallback) |
2522 | : att(NULL), tra(NULL), stmt(NULL) |
2523 | { |
2524 | Jrd::FbLocalStatus status; |
2525 | @@ -173,10 +177,10 @@ public: |
2526 | ClumpletWriter dpb(ClumpletReader::dpbList, MAX_DPB_SIZE); |
2527 | dpb.insertByte(isc_dpb_sec_attach, TRUE); |
2528 | dpb.insertString(isc_dpb_user_name, SYSDBA_USER_NAME, fb_strlen(SYSDBA_USER_NAME)); |
2529 | - dpb.insertString(isc_dpb_config, ParsedList::getNonLoopbackProviders(secDbName)); |
2530 | - att = p->attachDatabase(&status, secDbName, dpb.getBufferLength(), dpb.getBuffer()); |
2531 | + dpb.insertString(isc_dpb_config, ParsedList::getNonLoopbackProviders(instance->secureDbName)); |
2532 | + att = p->attachDatabase(&status, instance->secureDbName, dpb.getBufferLength(), dpb.getBuffer()); |
2533 | check(&status); |
2534 | - HANDSHAKE_DEBUG(fprintf(stderr, "Srv SRP: attached sec db %s\n", secDbName)); |
2535 | + HANDSHAKE_DEBUG(fprintf(stderr, "Srv SRP: attached sec db %s\n", instance->secureDbName)); |
2536 | |
2537 | const UCHAR tpb[] = |
2538 | { |
2539 | @@ -198,20 +202,20 @@ public: |
2540 | class Cleanup : public SrvCleanup |
2541 | { |
2542 | public: |
2543 | - Cleanup(IProvider* p_p, const char* p_secDbName) |
2544 | - : p(p_p), secDbName(p_secDbName) |
2545 | + Cleanup(IProvider* p_p, CachedSecurityDatabase::Instance& p_instance) |
2546 | + : p(p_p), instance(p_instance) |
2547 | { } |
2548 | |
2549 | void cleanup() |
2550 | { |
2551 | - forceClean(p, secDbName); |
2552 | + forceClean(p, instance); |
2553 | } |
2554 | |
2555 | private: |
2556 | IProvider* p; |
2557 | - const char* secDbName; |
2558 | + CachedSecurityDatabase::Instance& instance; |
2559 | }; |
2560 | - Cleanup c(p, secDbName); |
2561 | + Cleanup c(p, instance); |
2562 | |
2563 | checkStatusVectorForMissingTable(status->getErrors(), &c); |
2564 | status_exception::raise(&status); |
2565 | @@ -310,7 +314,7 @@ int SrpServer::authenticate(CheckStatusWrapper* status, IServerBlock* sb, IWrite |
2566 | |
2567 | // Create SecurityDatabase if needed |
2568 | if (!instance->secDb) |
2569 | - instance->secDb = FB_NEW SecurityDatabase(instance->secureDbName, cryptCallback); |
2570 | + instance->secDb = FB_NEW SecurityDatabase(instance, cryptCallback); |
2571 | |
2572 | // Lookup |
2573 | instance->secDb->lookup(messages.param.getData(), messages.data.getData()); |
2574 | diff --git a/src/auth/SecurityDatabase/LegacyManagement.epp b/src/auth/SecurityDatabase/LegacyManagement.epp |
2575 | index 2157bbc..aebddad 100644 |
2576 | --- a/src/auth/SecurityDatabase/LegacyManagement.epp |
2577 | +++ b/src/auth/SecurityDatabase/LegacyManagement.epp |
2578 | @@ -763,7 +763,7 @@ int SecurityDatabaseManagement::execute(Firebird::CheckStatusWrapper* st, Firebi |
2579 | // register plugin |
2580 | static Firebird::SimpleFactory<Auth::SecurityDatabaseManagement> factory; |
2581 | |
2582 | -extern "C" void FB_PLUGIN_ENTRY_POINT(Firebird::IMaster* master) |
2583 | +extern "C" FB_DLL_EXPORT void FB_PLUGIN_ENTRY_POINT(Firebird::IMaster* master) |
2584 | { |
2585 | Firebird::CachedMasterInterface::set(master); |
2586 | Firebird::PluginManagerInterfacePtr()->registerPluginFactory( |
2587 | diff --git a/src/auth/SecurityDatabase/LegacyServer.cpp b/src/auth/SecurityDatabase/LegacyServer.cpp |
2588 | index d051b33..ff588f6 100644 |
2589 | --- a/src/auth/SecurityDatabase/LegacyServer.cpp |
2590 | +++ b/src/auth/SecurityDatabase/LegacyServer.cpp |
2591 | @@ -423,7 +423,7 @@ void registerLegacyServer(IPluginManager* iPlugin) |
2592 | |
2593 | #ifdef PLUG_MODULE |
2594 | |
2595 | -extern "C" void FB_EXPORTED FB_PLUGIN_ENTRY_POINT(IMaster* master) |
2596 | +extern "C" FB_DLL_EXPORT void FB_PLUGIN_ENTRY_POINT(IMaster* master) |
2597 | { |
2598 | CachedMasterInterface::set(master); |
2599 | |
2600 | diff --git a/src/burp/backup.epp b/src/burp/backup.epp |
2601 | index 081987e..06e2730 100644 |
2602 | --- a/src/burp/backup.epp |
2603 | +++ b/src/burp/backup.epp |
2604 | @@ -1225,7 +1225,7 @@ void put_asciz( const att_type attribute, const TEXT* string) |
2605 | // We can't honor operating systems that allow longer file names. |
2606 | if (len >= MAX_FILE_NAME_SIZE) |
2607 | { |
2608 | - BURP_print(true, 343, SafeArg() << int(attribute) << "put_asciz()" << (MAX_FILE_NAME_SIZE - 1)); |
2609 | + BURP_print(false, 343, SafeArg() << int(attribute) << "put_asciz()" << (MAX_FILE_NAME_SIZE - 1)); |
2610 | // msg 343: text for attribute @1 is too large in @2, truncating to @3 bytes |
2611 | len = MAX_FILE_NAME_SIZE - 1; |
2612 | } |
2613 | diff --git a/src/common/ThreadStart.cpp b/src/common/ThreadStart.cpp |
2614 | index 7580564..18c8615 100644 |
2615 | --- a/src/common/ThreadStart.cpp |
2616 | +++ b/src/common/ThreadStart.cpp |
2617 | @@ -118,16 +118,17 @@ Thread Thread::start(ThreadEntryPoint* routine, void* arg, int priority_arg, Han |
2618 | * |
2619 | **************************************/ |
2620 | pthread_t thread; |
2621 | + pthread_t* p_thread = p_handle ? p_handle : &thread; |
2622 | pthread_attr_t pattr; |
2623 | int state; |
2624 | |
2625 | #if defined (LINUX) || defined (FREEBSD) |
2626 | - if (state = pthread_create(&thread, NULL, THREAD_ENTRYPOINT, THREAD_ARG)) |
2627 | + if ((state = pthread_create(p_thread, NULL, THREAD_ENTRYPOINT, THREAD_ARG))) |
2628 | Firebird::system_call_failed::raise("pthread_create", state); |
2629 | |
2630 | if (!p_handle) |
2631 | { |
2632 | - if (state = pthread_detach(thread)) |
2633 | + if ((state = pthread_detach(*p_thread))) |
2634 | Firebird::system_call_failed::raise("pthread_detach", state); |
2635 | } |
2636 | #else |
2637 | @@ -167,7 +168,7 @@ Thread Thread::start(ThreadEntryPoint* routine, void* arg, int priority_arg, Han |
2638 | if (state) |
2639 | Firebird::system_call_failed::raise("pthread_attr_setdetachstate", state); |
2640 | } |
2641 | - state = pthread_create(&thread, &pattr, THREAD_ENTRYPOINT, THREAD_ARG); |
2642 | + state = pthread_create(p_thread, &pattr, THREAD_ENTRYPOINT, THREAD_ARG); |
2643 | int state2 = pthread_attr_destroy(&pattr); |
2644 | if (state) |
2645 | Firebird::system_call_failed::raise("pthread_create", state); |
2646 | @@ -184,10 +185,9 @@ Thread Thread::start(ThreadEntryPoint* routine, void* arg, int priority_arg, Han |
2647 | if (state) |
2648 | Firebird::system_call_failed::raise("pthread_setcanceltype", state); |
2649 | #endif |
2650 | - *p_handle = thread; |
2651 | } |
2652 | |
2653 | - return Thread(thread); |
2654 | + return Thread(*p_thread); |
2655 | } |
2656 | |
2657 | void Thread::waitForCompletion(Handle& thread) |
2658 | @@ -210,7 +210,10 @@ void Thread::kill(Handle& thread) |
2659 | ThreadId Thread::getId() |
2660 | { |
2661 | #ifdef USE_LWP_AS_THREAD_ID |
2662 | - return syscall(SYS_gettid); |
2663 | + static __thread int tid = 0; |
2664 | + if (!tid) |
2665 | + tid = syscall(SYS_gettid); |
2666 | + return tid; |
2667 | #else |
2668 | return pthread_self(); |
2669 | #endif |
2670 | @@ -322,14 +325,14 @@ Thread Thread::start(ThreadEntryPoint* routine, void* arg, int priority_arg, Han |
2671 | |
2672 | SetThreadPriority(handle, priority); |
2673 | |
2674 | - ResumeThread(handle); |
2675 | - |
2676 | if (p_handle) |
2677 | { |
2678 | *p_handle = handle; |
2679 | + ResumeThread(handle); |
2680 | } |
2681 | else |
2682 | { |
2683 | + ResumeThread(handle); |
2684 | CloseHandle(handle); |
2685 | } |
2686 | |
2687 | diff --git a/src/common/UtilSvc.cpp b/src/common/UtilSvc.cpp |
2688 | index 53fdf26..e5f07e3 100644 |
2689 | --- a/src/common/UtilSvc.cpp |
2690 | +++ b/src/common/UtilSvc.cpp |
2691 | @@ -56,6 +56,7 @@ namespace { |
2692 | void outputFile(FILE* std, const char* text) |
2693 | { |
2694 | outputFile(std, text, strlen(text)); |
2695 | + fflush(std); |
2696 | } |
2697 | } |
2698 | |
2699 | diff --git a/src/common/classes/ClumpletReader.cpp b/src/common/classes/ClumpletReader.cpp |
2700 | index c00511e..9ba0f89 100644 |
2701 | --- a/src/common/classes/ClumpletReader.cpp |
2702 | +++ b/src/common/classes/ClumpletReader.cpp |
2703 | @@ -666,6 +666,20 @@ void ClumpletReader::moveNext() |
2704 | if (isEof()) |
2705 | return; // no need to raise useless exceptions |
2706 | FB_SIZE_T cs = getClumpletSize(true, true, true); |
2707 | + |
2708 | + switch (kind) |
2709 | + { |
2710 | + case InfoResponse: |
2711 | + switch (getClumpTag()) |
2712 | + { |
2713 | + case isc_info_end: |
2714 | + case isc_info_truncated: |
2715 | + // terminating clumplet |
2716 | + cur_offset = getBufferLength(); |
2717 | + return; |
2718 | + } |
2719 | + } |
2720 | + |
2721 | adjustSpbState(); |
2722 | cur_offset += cs; |
2723 | } |
2724 | diff --git a/src/common/classes/RefMutex.h b/src/common/classes/RefMutex.h |
2725 | index 6c9c919..1d50ae2 100644 |
2726 | --- a/src/common/classes/RefMutex.h |
2727 | +++ b/src/common/classes/RefMutex.h |
2728 | @@ -101,7 +101,7 @@ namespace Firebird |
2729 | } |
2730 | }; |
2731 | |
2732 | - template <typename Mtx, typename RefCounted = DefaultRefCounted<Mtx> > |
2733 | + template <typename Mtx, template <typename T> class RefCounted = DefaultRefCounted > |
2734 | class EnsureUnlock |
2735 | { |
2736 | public: |
2737 | @@ -114,14 +114,14 @@ namespace Firebird |
2738 | #define FB_LOCKED_FROM NULL |
2739 | #endif |
2740 | { |
2741 | - RefCounted::addRef(m_mutex); |
2742 | + RefCounted<Mtx>::addRef(m_mutex); |
2743 | } |
2744 | |
2745 | ~EnsureUnlock() |
2746 | { |
2747 | while (m_locked) |
2748 | leave(); |
2749 | - RefCounted::release(m_mutex); |
2750 | + RefCounted<Mtx>::release(m_mutex); |
2751 | } |
2752 | |
2753 | void enter() |
2754 | @@ -155,7 +155,7 @@ namespace Firebird |
2755 | }; |
2756 | #undef FB_LOCKED_FROM |
2757 | |
2758 | - typedef EnsureUnlock<Mutex, NotRefCounted<Mutex> > MutexEnsureUnlock; |
2759 | + typedef EnsureUnlock<Mutex, NotRefCounted> MutexEnsureUnlock; |
2760 | typedef EnsureUnlock<RefMutex> RefMutexEnsureUnlock; |
2761 | |
2762 | } // namespace |
2763 | diff --git a/src/common/classes/XThreadMutex.h b/src/common/classes/XThreadMutex.h |
2764 | index 464b483..b3329c3 100644 |
2765 | --- a/src/common/classes/XThreadMutex.h |
2766 | +++ b/src/common/classes/XThreadMutex.h |
2767 | @@ -89,7 +89,7 @@ private: |
2768 | }; |
2769 | |
2770 | typedef RaiiLockGuard<XThreadMutex> XThreadLockGuard; |
2771 | -typedef EnsureUnlock<XThreadMutex, NotRefCounted<XThreadMutex> > XThreadEnsureUnlock; |
2772 | +typedef EnsureUnlock<XThreadMutex, NotRefCounted> XThreadEnsureUnlock; |
2773 | |
2774 | } |
2775 | |
2776 | diff --git a/src/common/classes/array.h b/src/common/classes/array.h |
2777 | index b5b036c..dba6f62 100644 |
2778 | --- a/src/common/classes/array.h |
2779 | +++ b/src/common/classes/array.h |
2780 | @@ -109,6 +109,12 @@ public: |
2781 | ensureCapacity(InitialCapacity); |
2782 | } |
2783 | |
2784 | + Array(const T* items, const size_type itemsCount) |
2785 | + : Storage(), count(0), capacity(this->getStorageSize()), data(this->getStorage()) |
2786 | + { |
2787 | + add(items, itemsCount); |
2788 | + } |
2789 | + |
2790 | Array(const Array<T, Storage>& source) |
2791 | : Storage(), count(0), capacity(this->getStorageSize()), data(this->getStorage()) |
2792 | { |
2793 | diff --git a/src/common/classes/auto.h b/src/common/classes/auto.h |
2794 | index 0244829..2bdb7b8 100644 |
2795 | --- a/src/common/classes/auto.h |
2796 | +++ b/src/common/classes/auto.h |
2797 | @@ -257,30 +257,33 @@ private: |
2798 | |
2799 | |
2800 | template <typename T, typename T2> |
2801 | -class AutoSetRestore2 |
2802 | +class AutoRestore2 |
2803 | { |
2804 | -private: |
2805 | +protected: |
2806 | typedef T (T2::*Getter)(); |
2807 | typedef void (T2::*Setter)(T); |
2808 | |
2809 | public: |
2810 | - AutoSetRestore2(T2* aPointer, Getter aGetter, Setter aSetter, T newValue) |
2811 | + AutoRestore2(T2* aPointer, Getter aGetter, Setter aSetter) |
2812 | : pointer(aPointer), |
2813 | setter(aSetter), |
2814 | oldValue((aPointer->*aGetter)()) |
2815 | + { } |
2816 | + |
2817 | + void set(T newValue) |
2818 | { |
2819 | - (aPointer->*aSetter)(newValue); |
2820 | + (pointer->*setter)(newValue); |
2821 | } |
2822 | |
2823 | - ~AutoSetRestore2() |
2824 | + ~AutoRestore2() |
2825 | { |
2826 | (pointer->*setter)(oldValue); |
2827 | } |
2828 | |
2829 | private: |
2830 | // copying is prohibited |
2831 | - AutoSetRestore2(const AutoSetRestore2&); |
2832 | - AutoSetRestore2& operator =(const AutoSetRestore2&); |
2833 | + AutoRestore2(const AutoRestore2&); |
2834 | + AutoRestore2& operator =(const AutoRestore2&); |
2835 | |
2836 | private: |
2837 | T2* pointer; |
2838 | @@ -289,6 +292,20 @@ private: |
2839 | }; |
2840 | |
2841 | |
2842 | +template <typename T, typename T2> |
2843 | +class AutoSetRestore2 : public AutoRestore2<T, T2> |
2844 | +{ |
2845 | + typedef typename AutoRestore2<T, T2>::Getter Getter; |
2846 | + typedef typename AutoRestore2<T, T2>::Setter Setter; |
2847 | +public: |
2848 | + AutoSetRestore2(T2* aPointer, Getter aGetter, Setter aSetter, T newValue) |
2849 | + : AutoRestore2<T, T2>(aPointer, aGetter, aSetter) |
2850 | + { |
2851 | + this->set(newValue); |
2852 | + } |
2853 | +}; |
2854 | + |
2855 | + |
2856 | // One more typical class for AutoPtr cleanup |
2857 | class FileClose |
2858 | { |
2859 | diff --git a/src/common/classes/locks.h b/src/common/classes/locks.h |
2860 | index 2bbe713..2c79f54 100644 |
2861 | --- a/src/common/classes/locks.h |
2862 | +++ b/src/common/classes/locks.h |
2863 | @@ -336,7 +336,7 @@ typedef Mutex Spinlock; |
2864 | #endif //WIN_NT |
2865 | |
2866 | |
2867 | -// RAII holder |
2868 | +// RAII holders |
2869 | template <typename M> |
2870 | class RaiiLockGuard |
2871 | { |
2872 | @@ -369,10 +369,12 @@ private: |
2873 | |
2874 | typedef RaiiLockGuard<Mutex> MutexLockGuard; |
2875 | |
2876 | -class MutexUnlockGuard |
2877 | + |
2878 | +template <typename M> |
2879 | +class RaiiUnlockGuard |
2880 | { |
2881 | public: |
2882 | - explicit MutexUnlockGuard(Mutex& aLock, const char* aReason) |
2883 | + explicit RaiiUnlockGuard(M& aLock, const char* aReason) |
2884 | : lock(&aLock) |
2885 | #ifdef DEV_BUILD |
2886 | , saveReason(aReason) |
2887 | @@ -381,7 +383,7 @@ public: |
2888 | lock->leave(); |
2889 | } |
2890 | |
2891 | - ~MutexUnlockGuard() |
2892 | + ~RaiiUnlockGuard() |
2893 | { |
2894 | try |
2895 | { |
2896 | @@ -399,15 +401,17 @@ public: |
2897 | |
2898 | private: |
2899 | // Forbid copying |
2900 | - MutexUnlockGuard(const MutexUnlockGuard&); |
2901 | - MutexUnlockGuard& operator=(const MutexUnlockGuard&); |
2902 | + RaiiUnlockGuard(const RaiiUnlockGuard&); |
2903 | + RaiiUnlockGuard& operator=(const RaiiUnlockGuard&); |
2904 | |
2905 | - Mutex* lock; |
2906 | + M* lock; |
2907 | #ifdef DEV_BUILD |
2908 | const char* saveReason; |
2909 | #endif |
2910 | }; |
2911 | |
2912 | +typedef RaiiUnlockGuard<Mutex> MutexUnlockGuard; |
2913 | + |
2914 | |
2915 | class MutexCheckoutGuard |
2916 | { |
2917 | diff --git a/src/common/common.h b/src/common/common.h |
2918 | index 58abaaf..af1ec6b 100644 |
2919 | --- a/src/common/common.h |
2920 | +++ b/src/common/common.h |
2921 | @@ -244,8 +244,6 @@ |
2922 | |
2923 | #define API_ROUTINE __attribute__((visibility("default"))) |
2924 | #define API_ROUTINE_VARARG API_ROUTINE |
2925 | -#define INTERNAL_API_ROUTINE API_ROUTINE |
2926 | -#define FB_EXPORTED __attribute__((visibility("default"))) |
2927 | |
2928 | #define O_DIRECT F_NOCACHE |
2929 | #endif /* Darwin Platforms */ |
2930 | @@ -600,10 +598,6 @@ extern "C" int remove(const char* path); |
2931 | #define CLIB_ROUTINE |
2932 | #endif |
2933 | |
2934 | -#ifndef FB_EXPORTED |
2935 | -#define FB_EXPORTED |
2936 | -#endif |
2937 | - |
2938 | |
2939 | /* alignment macros */ |
2940 | |
2941 | diff --git a/src/common/config/config.cpp b/src/common/config/config.cpp |
2942 | index ed96a0d..b34d324 100644 |
2943 | --- a/src/common/config/config.cpp |
2944 | +++ b/src/common/config/config.cpp |
2945 | @@ -136,7 +136,7 @@ const Config::ConfigEntry Config::entries[MAX_CONFIG_KEY] = |
2946 | {TYPE_INTEGER, "CpuAffinityMask", (ConfigValue) 0}, |
2947 | {TYPE_INTEGER, "TcpRemoteBufferSize", (ConfigValue) 8192}, // bytes |
2948 | {TYPE_BOOLEAN, "TcpNoNagle", (ConfigValue) true}, |
2949 | - {TYPE_BOOLEAN, "TcpLoopbackFastPath", (ConfigValue) true}, |
2950 | + {TYPE_BOOLEAN, "TcpLoopbackFastPath", (ConfigValue) false}, |
2951 | {TYPE_INTEGER, "DefaultDbCachePages", (ConfigValue) -1}, // pages |
2952 | {TYPE_INTEGER, "ConnectionTimeout", (ConfigValue) 180}, // seconds |
2953 | {TYPE_INTEGER, "DummyPacketInterval", (ConfigValue) 0}, // seconds |
2954 | diff --git a/src/common/fb_exception.cpp b/src/common/fb_exception.cpp |
2955 | index bb55413..a280414 100644 |
2956 | --- a/src/common/fb_exception.cpp |
2957 | +++ b/src/common/fb_exception.cpp |
2958 | @@ -202,23 +202,25 @@ const char* LongJump::what() const throw() |
2959 | |
2960 | // ********************************* system_error *************************** |
2961 | |
2962 | -system_error::system_error(const char* syscall, int error_code) : |
2963 | +system_error::system_error(const char* syscall, const char* arg, int error_code) : |
2964 | status_exception(), errorCode(error_code) |
2965 | { |
2966 | Arg::Gds temp(isc_sys_request); |
2967 | temp << Arg::Str(syscall); |
2968 | temp << SYS_ERR(errorCode); |
2969 | + if (arg) |
2970 | + temp << Arg::Gds(isc_random) << arg; |
2971 | set_status(temp.value()); |
2972 | } |
2973 | |
2974 | void system_error::raise(const char* syscall, int error_code) |
2975 | { |
2976 | - throw system_error(syscall, error_code); |
2977 | + throw system_error(syscall, NULL, error_code); |
2978 | } |
2979 | |
2980 | void system_error::raise(const char* syscall) |
2981 | { |
2982 | - throw system_error(syscall, getSystemError()); |
2983 | + throw system_error(syscall, NULL, getSystemError()); |
2984 | } |
2985 | |
2986 | int system_error::getSystemError() |
2987 | @@ -232,8 +234,8 @@ int system_error::getSystemError() |
2988 | |
2989 | // ********************************* system_call_failed *************************** |
2990 | |
2991 | -system_call_failed::system_call_failed(const char* syscall, int error_code) : |
2992 | - system_error(syscall, error_code) |
2993 | +system_call_failed::system_call_failed(const char* syscall, const char* arg, int error_code) : |
2994 | + system_error(syscall, arg, error_code) |
2995 | { |
2996 | // NS: something unexpected has happened. Log the error to log file |
2997 | // In the future we may consider terminating the process even in PROD_BUILD |
2998 | @@ -247,12 +249,23 @@ system_call_failed::system_call_failed(const char* syscall, int error_code) : |
2999 | |
3000 | void system_call_failed::raise(const char* syscall, int error_code) |
3001 | { |
3002 | - throw system_call_failed(syscall, error_code); |
3003 | + throw system_call_failed(syscall, NULL, error_code); |
3004 | } |
3005 | |
3006 | void system_call_failed::raise(const char* syscall) |
3007 | { |
3008 | - throw system_call_failed(syscall, getSystemError()); |
3009 | + throw system_call_failed(syscall, NULL, getSystemError()); |
3010 | +} |
3011 | + |
3012 | + |
3013 | +void system_call_failed::raise(const char* syscall, const char* arg, int error_code) |
3014 | +{ |
3015 | + throw system_call_failed(syscall, arg, error_code); |
3016 | +} |
3017 | + |
3018 | +void system_call_failed::raise(const char* syscall, const char* arg) |
3019 | +{ |
3020 | + raise(syscall, arg, getSystemError()); |
3021 | } |
3022 | |
3023 | // ********************************* fatal_exception ******************************* |
3024 | diff --git a/src/common/intlobj_new.h b/src/common/intlobj_new.h |
3025 | index 395d725..fb43cf7 100644 |
3026 | --- a/src/common/intlobj_new.h |
3027 | +++ b/src/common/intlobj_new.h |
3028 | @@ -57,9 +57,15 @@ typedef USHORT (*pfn_INTL_keylength) (texttype* tt, USHORT len); |
3029 | |
3030 | /* Types of the keys which may be returned by str2key routine */ |
3031 | |
3032 | -#define INTL_KEY_SORT 0 /* Full sort key */ |
3033 | -#define INTL_KEY_PARTIAL 1 /* Starting portion of sort key for equality class */ |
3034 | -#define INTL_KEY_UNIQUE 2 /* Full key for the equality class of the string */ |
3035 | +#define INTL_KEY_SORT 0 /* Full sort key */ |
3036 | +#define INTL_KEY_PARTIAL 1 /* Starting portion of sort key for equality class */ |
3037 | +#define INTL_KEY_UNIQUE 2 /* Full key for the equality class of the string */ |
3038 | +#define INTL_KEY_MULTI_STARTING 3 /* Multiple starting keys */ |
3039 | + |
3040 | +/* INTL_KEY_MULTI_STARTING format: |
3041 | + key ::= { <key_length> <key_bytes> }... |
3042 | + key_length ::= <key length least significant byte> <key length most significant byte> |
3043 | +*/ |
3044 | |
3045 | /* Returned value of INTL_BAD_KEY_LENGTH means that key error happened during |
3046 | key construction. When partial key is requested returned string should |
3047 | @@ -128,6 +134,8 @@ typedef void (*pfn_INTL_tt_destroy) (texttype* tt); |
3048 | (char, case, accent) which is case-insensitive, |
3049 | but accent-sensitive */ |
3050 | |
3051 | +#define TEXTTYPE_MULTI_STARTING_KEY 8 /* Supports INTL_KEY_MULTI_STARTING */ |
3052 | + |
3053 | |
3054 | struct texttype |
3055 | { |
3056 | diff --git a/src/common/isc_sync.cpp b/src/common/isc_sync.cpp |
3057 | index a9c8e7a..98d222b 100644 |
3058 | --- a/src/common/isc_sync.cpp |
3059 | +++ b/src/common/isc_sync.cpp |
3060 | @@ -1633,7 +1633,6 @@ SharedMemoryBase::SharedMemoryBase(const TEXT* filename, ULONG length, IpcObject |
3061 | !SetEndOfFile(file_handle) || !FlushFileBuffers(file_handle)) |
3062 | { |
3063 | err = GetLastError(); |
3064 | - CloseHandle(event_handle); |
3065 | CloseHandle(file_handle); |
3066 | |
3067 | if (err == ERROR_USER_MAPPED_FILE) |
3068 | @@ -1641,10 +1640,14 @@ SharedMemoryBase::SharedMemoryBase(const TEXT* filename, ULONG length, IpcObject |
3069 | if (retry_count < 50) // 0.5 sec |
3070 | goto retry; |
3071 | |
3072 | + CloseHandle(event_handle); |
3073 | Arg::Gds(isc_instance_conflict).raise(); |
3074 | } |
3075 | else |
3076 | + { |
3077 | + CloseHandle(event_handle); |
3078 | system_call_failed::raise("SetFilePointer", err); |
3079 | + } |
3080 | } |
3081 | } |
3082 | |
3083 | diff --git a/src/common/os/posix/guid.cpp b/src/common/os/posix/guid.cpp |
3084 | index 0713f49..3e2978b 100644 |
3085 | --- a/src/common/os/posix/guid.cpp |
3086 | +++ b/src/common/os/posix/guid.cpp |
3087 | @@ -45,6 +45,9 @@ void GenerateRandomBytes(void* buffer, FB_SIZE_T size) |
3088 | { |
3089 | // do not use /dev/random because it may return lesser data than we need. |
3090 | int fd = os_utils::open("/dev/urandom", O_RDONLY); |
3091 | + if (fd < 0) |
3092 | + Firebird::system_call_failed::raise("open"); |
3093 | + |
3094 | for (FB_SIZE_T offset = 0; offset < size; ) |
3095 | { |
3096 | int rc = read(fd, static_cast<char*>(buffer) + offset, size - offset); |
3097 | diff --git a/src/common/os/posix/os_utils.cpp b/src/common/os/posix/os_utils.cpp |
3098 | index 404c6d2..23c9cf0 100644 |
3099 | --- a/src/common/os/posix/os_utils.cpp |
3100 | +++ b/src/common/os/posix/os_utils.cpp |
3101 | @@ -148,18 +148,18 @@ void createLockDirectory(const char* pathname) |
3102 | if (access(pathname, R_OK | W_OK | X_OK) == 0) |
3103 | { |
3104 | if (stat(pathname, &st) != 0) |
3105 | - system_call_failed::raise("stat"); |
3106 | + system_call_failed::raise("stat", pathname); |
3107 | if (S_ISDIR(st.st_mode)) |
3108 | return; |
3109 | // not exactly original meaning, but very close to it |
3110 | - system_call_failed::raise("access", ENOTDIR); |
3111 | + system_call_failed::raise("mkdir", pathname, ENOTDIR); |
3112 | } |
3113 | |
3114 | if (SYSCALL_INTERRUPTED(errno)) |
3115 | continue; |
3116 | if (errno == ENOENT) |
3117 | break; |
3118 | - system_call_failed::raise("access", ENOTDIR); |
3119 | + system_call_failed::raise("access", pathname); |
3120 | } |
3121 | |
3122 | Firebird::PathName newname(pathname); |
3123 | @@ -216,16 +216,16 @@ void createLockDirectory(const char* pathname) |
3124 | if (access(pathname, R_OK | W_OK | X_OK) == 0) |
3125 | { |
3126 | if (stat(pathname, &st) != 0) |
3127 | - system_call_failed::raise("stat"); |
3128 | + system_call_failed::raise("stat", pathname); |
3129 | if (S_ISDIR(st.st_mode)) |
3130 | return; |
3131 | // not exactly original meaning, but very close to it |
3132 | - system_call_failed::raise("access", ENOTDIR); |
3133 | + system_call_failed::raise("stat", pathname, ENOTDIR); |
3134 | } |
3135 | |
3136 | if (SYSCALL_INTERRUPTED(errno)) |
3137 | continue; |
3138 | - system_call_failed::raise("access", ENOTDIR); |
3139 | + system_call_failed::raise("access", pathname); |
3140 | } |
3141 | |
3142 | return; |
3143 | diff --git a/src/common/unicode_util.cpp b/src/common/unicode_util.cpp |
3144 | index eeda6b0..c158cf8 100644 |
3145 | --- a/src/common/unicode_util.cpp |
3146 | +++ b/src/common/unicode_util.cpp |
3147 | @@ -186,7 +186,9 @@ public: |
3148 | USet* (U_EXPORT2 *usetOpen)(UChar32 start, UChar32 end); |
3149 | |
3150 | void (U_EXPORT2 *ucolClose)(UCollator* coll); |
3151 | - int32_t (U_EXPORT2 *ucolGetContractions)(const UCollator* coll, USet* conts, UErrorCode* status); |
3152 | + int32_t (U_EXPORT2 *ucolGetContractionsAndExpansions)(const UCollator* coll, USet* contractions, USet* expansions, |
3153 | + UBool addPrefixes, UErrorCode* status); |
3154 | + |
3155 | int32_t (U_EXPORT2 *ucolGetSortKey)(const UCollator* coll, const UChar* source, |
3156 | int32_t sourceLength, uint8_t* result, int32_t resultLength); |
3157 | UCollator* (U_EXPORT2 *ucolOpen)(const char* loc, UErrorCode* status); |
3158 | @@ -1034,7 +1036,8 @@ UnicodeUtil::ICU* UnicodeUtil::loadICU(const string& icuVersion, const string& c |
3159 | icu->getEntryPoint("uset_open", icu->ucModule, icu->usetOpen); |
3160 | |
3161 | icu->getEntryPoint("ucol_close", icu->inModule, icu->ucolClose); |
3162 | - icu->getEntryPoint("ucol_getContractions", icu->inModule, icu->ucolGetContractions); |
3163 | + icu->getEntryPoint("ucol_getContractionsAndExpansions", icu->inModule, |
3164 | + icu->ucolGetContractionsAndExpansions); |
3165 | icu->getEntryPoint("ucol_getSortKey", icu->inModule, icu->ucolGetSortKey); |
3166 | icu->getEntryPoint("ucol_open", icu->inModule, icu->ucolOpen); |
3167 | icu->getEntryPoint("ucol_setAttribute", icu->inModule, icu->ucolSetAttribute); |
3168 | @@ -1336,10 +1339,6 @@ UnicodeUtil::Utf16Collation* UnicodeUtil::Utf16Collation::create( |
3169 | icu->ucolSetAttribute(compareCollator, UCOL_STRENGTH, UCOL_SECONDARY, &status); |
3170 | } |
3171 | |
3172 | - USet* contractions = icu->usetOpen(0, 0); |
3173 | - // status not verified here. |
3174 | - icu->ucolGetContractions(partialCollator, contractions, &status); |
3175 | - |
3176 | Utf16Collation* obj = FB_NEW Utf16Collation(); |
3177 | obj->icu = icu; |
3178 | obj->tt = tt; |
3179 | @@ -1347,9 +1346,150 @@ UnicodeUtil::Utf16Collation* UnicodeUtil::Utf16Collation::create( |
3180 | obj->compareCollator = compareCollator; |
3181 | obj->partialCollator = partialCollator; |
3182 | obj->sortCollator = sortCollator; |
3183 | - obj->contractions = contractions; |
3184 | - obj->contractionsCount = icu->usetGetItemCount(contractions); |
3185 | obj->numericSort = isNumericSort; |
3186 | + obj->maxContractionsPrefixLength = 0; |
3187 | + |
3188 | + USet* contractions = icu->usetOpen(1, 0); |
3189 | + // status not verified here. |
3190 | + icu->ucolGetContractionsAndExpansions(partialCollator, contractions, NULL, false, &status); |
3191 | + |
3192 | + int contractionsCount = icu->usetGetItemCount(contractions); |
3193 | + |
3194 | + for (int contractionIndex = 0; contractionIndex < contractionsCount; ++contractionIndex) |
3195 | + { |
3196 | + UChar strChars[10]; |
3197 | + UChar32 start, end; |
3198 | + |
3199 | + status = U_ZERO_ERROR; |
3200 | + int len = icu->usetGetItem(contractions, contractionIndex, &start, &end, strChars, sizeof(strChars), &status); |
3201 | + |
3202 | + if (len >= 2) |
3203 | + { |
3204 | + obj->maxContractionsPrefixLength = len - 1 > obj->maxContractionsPrefixLength ? |
3205 | + len - 1 : obj->maxContractionsPrefixLength; |
3206 | + |
3207 | + UCHAR key[100]; |
3208 | + int keyLen = icu->ucolGetSortKey(partialCollator, strChars, len, key, sizeof(key)); |
3209 | + |
3210 | + for (int prefixLen = 1; prefixLen < len; ++prefixLen) |
3211 | + { |
3212 | + const Array<USHORT> str(strChars, prefixLen); |
3213 | + SortKeyArray* keySet = obj->contractionsPrefix.get(str); |
3214 | + |
3215 | + if (!keySet) |
3216 | + { |
3217 | + keySet = obj->contractionsPrefix.put(str); |
3218 | + |
3219 | + UCHAR prefixKey[100]; |
3220 | + int prefixKeyLen = icu->ucolGetSortKey(partialCollator, |
3221 | + strChars, prefixLen, prefixKey, sizeof(prefixKey)); |
3222 | + |
3223 | + keySet->add(Array<UCHAR>(prefixKey, prefixKeyLen)); |
3224 | + } |
3225 | + |
3226 | + keySet->add(Array<UCHAR>(key, keyLen)); |
3227 | + } |
3228 | + } |
3229 | + } |
3230 | + |
3231 | + icu->usetClose(contractions); |
3232 | + |
3233 | + ContractionsPrefixMap::Accessor accessor(&obj->contractionsPrefix); |
3234 | + |
3235 | + for (bool found = accessor.getFirst(); found; found = accessor.getNext()) |
3236 | + { |
3237 | + SortKeyArray& keySet = accessor.current()->second; |
3238 | + |
3239 | + if (keySet.getCount() <= 1) |
3240 | + continue; |
3241 | + |
3242 | + fb_assert(accessor.current()->first.hasData()); |
3243 | + USHORT firstCh = accessor.current()->first.front(); |
3244 | + USHORT lastCh = accessor.current()->first.back(); |
3245 | + |
3246 | + if ((firstCh >= 0xFDD0 && firstCh <= 0xFDEF) || UTF_IS_SURROGATE(lastCh)) |
3247 | + { |
3248 | + keySet.clear(); |
3249 | + keySet.add(Array<UCHAR>()); |
3250 | + continue; |
3251 | + } |
3252 | + |
3253 | + SortKeyArray::iterator firstKeyIt = keySet.begin(); |
3254 | + SortKeyArray::iterator lastKeyIt = --keySet.end(); |
3255 | + |
3256 | + const UCHAR* firstKeyDataIt = firstKeyIt->begin(); |
3257 | + const UCHAR* lastKeyDataIt = lastKeyIt->begin(); |
3258 | + const UCHAR* firstKeyDataEnd = firstKeyIt->end(); |
3259 | + const UCHAR* lastKeyDataEnd = lastKeyIt->end(); |
3260 | + |
3261 | + if (*firstKeyDataIt == *lastKeyDataIt) |
3262 | + { |
3263 | + unsigned common = 0; |
3264 | + |
3265 | + do |
3266 | + { |
3267 | + ++common; |
3268 | + } while (++firstKeyDataIt != firstKeyDataEnd && ++lastKeyDataIt != lastKeyDataEnd && |
3269 | + *firstKeyDataIt == *lastKeyDataIt); |
3270 | + |
3271 | + Array<UCHAR> commonKey(firstKeyIt->begin(), common); |
3272 | + keySet.clear(); |
3273 | + keySet.add(commonKey); |
3274 | + } |
3275 | + else |
3276 | + { |
3277 | + SortKeyArray::iterator secondKeyIt = ++keySet.begin(); |
3278 | + const UCHAR* secondKeyDataIt = secondKeyIt->begin(); |
3279 | + const UCHAR* secondKeyDataEnd = secondKeyIt->end(); |
3280 | + |
3281 | + ObjectsArray<Array<UCHAR> > commonKeys; |
3282 | + commonKeys.add(*firstKeyIt); |
3283 | + |
3284 | + while (secondKeyIt != keySet.end()) |
3285 | + { |
3286 | + unsigned common = 0; |
3287 | + |
3288 | + while (firstKeyDataIt != firstKeyDataEnd && secondKeyDataIt != secondKeyDataEnd && |
3289 | + *firstKeyDataIt == *secondKeyDataIt) |
3290 | + { |
3291 | + ++common; |
3292 | + ++firstKeyDataIt; |
3293 | + ++secondKeyDataIt; |
3294 | + } |
3295 | + |
3296 | + unsigned backSize = commonKeys.back()->getCount(); |
3297 | + |
3298 | + if (common > backSize) |
3299 | + commonKeys.back()->append(secondKeyIt->begin() + backSize, common - backSize); |
3300 | + else if (common < backSize) |
3301 | + { |
3302 | + if (common == 0) |
3303 | + commonKeys.push(*secondKeyIt); |
3304 | + else |
3305 | + commonKeys.back()->resize(common); |
3306 | + } |
3307 | + |
3308 | + if (++secondKeyIt != keySet.end()) |
3309 | + { |
3310 | + ++firstKeyIt; |
3311 | + |
3312 | + firstKeyDataIt = firstKeyIt->begin(); |
3313 | + secondKeyDataIt = secondKeyIt->begin(); |
3314 | + |
3315 | + firstKeyDataEnd = firstKeyIt->end(); |
3316 | + secondKeyDataEnd = secondKeyIt->end(); |
3317 | + } |
3318 | + } |
3319 | + |
3320 | + keySet.clear(); |
3321 | + |
3322 | + for (ObjectsArray<Array<UCHAR> >::iterator ckIt = commonKeys.begin(); ckIt != commonKeys.end(); ++ckIt) |
3323 | + keySet.add(*ckIt); |
3324 | + } |
3325 | + } |
3326 | + |
3327 | + if (obj->maxContractionsPrefixLength) |
3328 | + tt->texttype_flags |= TEXTTYPE_MULTI_STARTING_KEY; |
3329 | |
3330 | return obj; |
3331 | } |
3332 | @@ -1357,8 +1497,6 @@ UnicodeUtil::Utf16Collation* UnicodeUtil::Utf16Collation::create( |
3333 | |
3334 | UnicodeUtil::Utf16Collation::~Utf16Collation() |
3335 | { |
3336 | - icu->usetClose(contractions); |
3337 | - |
3338 | icu->ucolClose(compareCollator); |
3339 | icu->ucolClose(partialCollator); |
3340 | icu->ucolClose(sortCollator); |
3341 | @@ -1403,55 +1541,18 @@ USHORT UnicodeUtil::Utf16Collation::stringToKey(USHORT srcLen, const USHORT* src |
3342 | srcLenLong = pad - src + 1; |
3343 | } |
3344 | |
3345 | + if (srcLenLong == 0) |
3346 | + return 0; |
3347 | + |
3348 | HalfStaticArray<USHORT, BUFFER_SMALL / 2> buffer; |
3349 | const UCollator* coll = NULL; |
3350 | |
3351 | switch (key_type) |
3352 | { |
3353 | case INTL_KEY_PARTIAL: |
3354 | - { |
3355 | + case INTL_KEY_MULTI_STARTING: |
3356 | coll = partialCollator; |
3357 | - |
3358 | - // Remove last bytes of key if they are start of a contraction |
3359 | - // to correctly find in the index. |
3360 | - ConversionICU& cIcu(getConversionICU()); |
3361 | - for (int i = 0; i < contractionsCount; ++i) |
3362 | - { |
3363 | - UChar str[10]; |
3364 | - UErrorCode status = U_ZERO_ERROR; |
3365 | - int len = icu->usetGetItem(contractions, i, NULL, NULL, str, sizeof(str), &status); |
3366 | - |
3367 | - if (len > SLONG(srcLenLong)) |
3368 | - len = srcLenLong; |
3369 | - else |
3370 | - --len; |
3371 | - |
3372 | - // safe cast - alignment not changed |
3373 | - if (cIcu.u_strCompare(str, len, |
3374 | - reinterpret_cast<const UChar*>(src) + srcLenLong - len, len, true) == 0) |
3375 | - { |
3376 | - srcLenLong -= len; |
3377 | - break; |
3378 | - } |
3379 | - } |
3380 | - |
3381 | - if (numericSort) |
3382 | - { |
3383 | - // ASF: Wee need to remove trailing numbers to return sub key that |
3384 | - // matches full key. Example: "abc1" becomes "abc" to match "abc10". |
3385 | - const USHORT* p = src + srcLenLong - 1; |
3386 | - |
3387 | - for (; p >= src; --p) |
3388 | - { |
3389 | - if (!(*p >= '0' && *p <= '9')) |
3390 | - break; |
3391 | - } |
3392 | - |
3393 | - srcLenLong = p - src + 1; |
3394 | - } |
3395 | - |
3396 | break; |
3397 | - } |
3398 | |
3399 | case INTL_KEY_UNIQUE: |
3400 | coll = compareCollator; |
3401 | @@ -1469,11 +1570,127 @@ USHORT UnicodeUtil::Utf16Collation::stringToKey(USHORT srcLen, const USHORT* src |
3402 | return INTL_BAD_KEY_LENGTH; |
3403 | } |
3404 | |
3405 | - if (srcLenLong == 0) |
3406 | - return 0; |
3407 | + if (key_type == INTL_KEY_MULTI_STARTING) |
3408 | + { |
3409 | + bool trailingNumbersRemoved = false; |
3410 | + |
3411 | + if (numericSort) |
3412 | + { |
3413 | + // ASF: Wee need to remove trailing numbers to return sub key that |
3414 | + // matches full key. Example: "abc1" becomes "abc" to match "abc10". |
3415 | + const USHORT* p = src + srcLenLong - 1; |
3416 | |
3417 | - return icu->ucolGetSortKey(coll, |
3418 | + for (; p >= src; --p) |
3419 | + { |
3420 | + if (!(*p >= '0' && *p <= '9')) |
3421 | + break; |
3422 | + |
3423 | + trailingNumbersRemoved = true; |
3424 | + } |
3425 | + |
3426 | + srcLenLong = p - src + 1; |
3427 | + } |
3428 | + |
3429 | + UCHAR* originalDst = dst; |
3430 | + USHORT originalDstLen = dstLen; |
3431 | + |
3432 | + if (!trailingNumbersRemoved) |
3433 | + { |
3434 | + for (int i = MIN(maxContractionsPrefixLength, srcLenLong); i > 0; --i) |
3435 | + { |
3436 | + SortKeyArray* keys = contractionsPrefix.get(Array<USHORT>(src + srcLenLong - i, i)); |
3437 | + |
3438 | + if (keys) |
3439 | + { |
3440 | + UCHAR lastCharKey[BUFFER_TINY]; // sort key for a single character |
3441 | + ULONG prefixLen, lastCharKeyLen; |
3442 | + |
3443 | + srcLenLong -= i; |
3444 | + |
3445 | + if (srcLenLong != 0) |
3446 | + { |
3447 | + prefixLen = icu->ucolGetSortKey(coll, |
3448 | + reinterpret_cast<const UChar*>(src), srcLenLong, dst + 2, dstLen - 2); |
3449 | + |
3450 | + lastCharKeyLen = icu->ucolGetSortKey(coll, |
3451 | + reinterpret_cast<const UChar*>(src + srcLenLong), i, lastCharKey, sizeof(lastCharKey)); |
3452 | + |
3453 | + if (prefixLen == 0 || prefixLen > dstLen - 2 || prefixLen > MAX_USHORT || |
3454 | + lastCharKeyLen == 0) |
3455 | + { |
3456 | + return INTL_BAD_KEY_LENGTH; |
3457 | + } |
3458 | + |
3459 | + fb_assert(dst[2 + prefixLen - 1] == '\0'); |
3460 | + --prefixLen; |
3461 | + |
3462 | + fb_assert(lastCharKey[lastCharKeyLen - 1] == '\0'); |
3463 | + --lastCharKeyLen; |
3464 | + } |
3465 | + else |
3466 | + prefixLen = 0; |
3467 | + |
3468 | + bool fallbackToPrefixKey = false; |
3469 | + |
3470 | + for (SortKeyArray::const_iterator keyIt = keys->begin(); |
3471 | + keyIt != keys->end(); |
3472 | + ++keyIt) |
3473 | + { |
3474 | + const UCHAR advance = prefixLen && lastCharKeyLen > 1 && |
3475 | + keyIt->hasData() && lastCharKey[0] == keyIt->front() ? 1 : 0; |
3476 | + |
3477 | + if (keyIt->getCount() - advance == 0) |
3478 | + { |
3479 | + fallbackToPrefixKey = true; |
3480 | + break; |
3481 | + } |
3482 | + |
3483 | + const ULONG keyLen = prefixLen + keyIt->getCount() - advance; |
3484 | + |
3485 | + if (keyLen > dstLen - 2 || keyLen > MAX_USHORT) |
3486 | + return INTL_BAD_KEY_LENGTH; |
3487 | + |
3488 | + dst[0] = UCHAR(keyLen & 0xFF); |
3489 | + dst[1] = UCHAR(keyLen >> 8); |
3490 | + |
3491 | + if (dst != originalDst) |
3492 | + memcpy(dst + 2, originalDst + 2, prefixLen); |
3493 | + |
3494 | + memcpy(dst + 2 + prefixLen, keyIt->begin() + advance, keyIt->getCount() - advance); |
3495 | + dst += 2 + keyLen; |
3496 | + dstLen -= 2 + keyLen; |
3497 | + } |
3498 | + |
3499 | + if (fallbackToPrefixKey) |
3500 | + break; |
3501 | + |
3502 | + return dst - originalDst; |
3503 | + } |
3504 | + } |
3505 | + } |
3506 | + |
3507 | + ULONG keyLen = icu->ucolGetSortKey(coll, |
3508 | + reinterpret_cast<const UChar*>(src), srcLenLong, originalDst + 2, originalDstLen - 3); |
3509 | + |
3510 | + if (keyLen == 0 || keyLen > originalDstLen - 3 || keyLen > MAX_USHORT) |
3511 | + return INTL_BAD_KEY_LENGTH; |
3512 | + |
3513 | + fb_assert(originalDst[2 + keyLen - 1] == '\0'); |
3514 | + --keyLen; |
3515 | + |
3516 | + originalDst[0] = UCHAR(keyLen & 0xFF); |
3517 | + originalDst[1] = UCHAR(keyLen >> 8); |
3518 | + |
3519 | + return keyLen + 2; |
3520 | + } |
3521 | + |
3522 | + const ULONG keyLen = icu->ucolGetSortKey(coll, |
3523 | reinterpret_cast<const UChar*>(src), srcLenLong, dst, dstLen); |
3524 | + |
3525 | + if (keyLen == 0 || keyLen > dstLen || keyLen > MAX_USHORT) |
3526 | + return INTL_BAD_KEY_LENGTH; |
3527 | + |
3528 | + return keyLen; |
3529 | } |
3530 | |
3531 | |
3532 | diff --git a/src/common/unicode_util.h b/src/common/unicode_util.h |
3533 | index 03d48f9..c3966d3 100644 |
3534 | --- a/src/common/unicode_util.h |
3535 | +++ b/src/common/unicode_util.h |
3536 | @@ -30,7 +30,10 @@ |
3537 | #include "intlobj_new.h" |
3538 | #include "../common/IntlUtil.h" |
3539 | #include "../common/os/mod_loader.h" |
3540 | +#include "../common/classes/array.h" |
3541 | #include "../common/classes/fb_string.h" |
3542 | +#include "../common/classes/GenericMap.h" |
3543 | +#include "../common/classes/objects_array.h" |
3544 | |
3545 | #undef U_SHOW_CPLUSPLUS_API |
3546 | #define U_SHOW_CPLUSPLUS_API 0 |
3547 | @@ -168,6 +171,11 @@ public: |
3548 | Firebird::IntlUtil::SpecificAttributesMap& specificAttributes, |
3549 | const Firebird::string& configInfo); |
3550 | |
3551 | + Utf16Collation() |
3552 | + : contractionsPrefix(*getDefaultMemoryPool()) |
3553 | + { |
3554 | + } |
3555 | + |
3556 | ~Utf16Collation(); |
3557 | |
3558 | USHORT keyLength(USHORT len) const; |
3559 | @@ -178,6 +186,45 @@ public: |
3560 | ULONG canonical(ULONG srcLen, const USHORT* src, ULONG dstLen, ULONG* dst, const ULONG* exceptions); |
3561 | |
3562 | private: |
3563 | + template <typename T> |
3564 | + class ArrayComparator |
3565 | + { |
3566 | + public: |
3567 | + static bool greaterThan(const Firebird::Array<T>& i1, const Firebird::Array<T>& i2) |
3568 | + { |
3569 | + FB_SIZE_T minCount = MIN(i1.getCount(), i2.getCount()); |
3570 | + int cmp = memcmp(i1.begin(), i2.begin(), minCount * sizeof(T)); |
3571 | + |
3572 | + if (cmp != 0) |
3573 | + return cmp > 0; |
3574 | + |
3575 | + return i1.getCount() > i2.getCount(); |
3576 | + } |
3577 | + |
3578 | + static bool greaterThan(const Firebird::Array<T>* i1, const Firebird::Array<T>* i2) |
3579 | + { |
3580 | + return greaterThan(*i1, *i2); |
3581 | + } |
3582 | + }; |
3583 | + |
3584 | + typedef Firebird::SortedObjectsArray< |
3585 | + Firebird::Array<UCHAR>, |
3586 | + Firebird::InlineStorage<Firebird::Array<UCHAR>*, 3>, |
3587 | + Firebird::Array<UCHAR>, |
3588 | + Firebird::DefaultKeyValue<const Firebird::Array<UCHAR>*>, |
3589 | + ArrayComparator<UCHAR> |
3590 | + > SortKeyArray; |
3591 | + |
3592 | + typedef Firebird::GenericMap< |
3593 | + Firebird::Pair< |
3594 | + Firebird::Full< |
3595 | + Firebird::Array<USHORT>, // UTF-16 string |
3596 | + SortKeyArray // sort keys |
3597 | + > |
3598 | + >, |
3599 | + ArrayComparator<USHORT> |
3600 | + > ContractionsPrefixMap; |
3601 | + |
3602 | static ICU* loadICU(const Firebird::string& collVersion, const Firebird::string& locale, |
3603 | const Firebird::string& configInfo); |
3604 | |
3605 | @@ -190,8 +237,8 @@ public: |
3606 | UCollator* compareCollator; |
3607 | UCollator* partialCollator; |
3608 | UCollator* sortCollator; |
3609 | - USet* contractions; |
3610 | - int contractionsCount; |
3611 | + ContractionsPrefixMap contractionsPrefix; |
3612 | + unsigned maxContractionsPrefixLength; // number of characters |
3613 | bool numericSort; |
3614 | }; |
3615 | |
3616 | diff --git a/src/common/utils.cpp b/src/common/utils.cpp |
3617 | index 303af3f..673188f 100644 |
3618 | --- a/src/common/utils.cpp |
3619 | +++ b/src/common/utils.cpp |
3620 | @@ -1600,6 +1600,13 @@ const ISC_STATUS* const origen = v; |
3621 | return false; |
3622 | } |
3623 | |
3624 | +inline bool sqlSymbolChar(char c, bool first) |
3625 | +{ |
3626 | + if (c & 0x80) |
3627 | + return false; |
3628 | + return (isdigit(c) && !first) || isalpha(c) || c == '_' || c == '$'; |
3629 | +} |
3630 | + |
3631 | const char* dpbItemUpper(const char* s, FB_SIZE_T l, Firebird::string& buf) |
3632 | { |
3633 | if (l && (s[0] == '"' || s[0] == '\'')) |
3634 | @@ -1612,30 +1619,37 @@ const char* dpbItemUpper(const char* s, FB_SIZE_T l, Firebird::string& buf) |
3635 | { |
3636 | if (s[i] == end_quote) |
3637 | { |
3638 | - if (++i >= l || s[i] != end_quote) |
3639 | - break; // delimited quote, done processing |
3640 | + if (++i >= l) |
3641 | + { |
3642 | + if (ascii && s[0] == '\'') |
3643 | + buf.upper(); |
3644 | + |
3645 | + return buf.c_str(); |
3646 | + } |
3647 | + |
3648 | + if (s[i] != end_quote) |
3649 | + { |
3650 | + buf.assign(&s[i], l - i); |
3651 | + Firebird::fatal_exception::raiseFmt("Invalid text <%s> after quoted string", buf.c_str()); |
3652 | + } |
3653 | |
3654 | // skipped the escape quote, continue processing |
3655 | } |
3656 | - |
3657 | - if (s[i] & 0x80) |
3658 | + else if (!sqlSymbolChar(s[i], i == 1)) |
3659 | ascii = false; |
3660 | + |
3661 | buf += s[i]; |
3662 | } |
3663 | |
3664 | - if (ascii && s[0] == '\'') |
3665 | - buf.upper(); |
3666 | - |
3667 | - return buf.c_str(); |
3668 | + Firebird::fatal_exception::raiseFmt("Missing terminating quote <%c> in the end of quoted string", s[0]); |
3669 | } |
3670 | |
3671 | // non-quoted string - try to uppercase |
3672 | for (FB_SIZE_T i = 0; i < l; ++i) |
3673 | { |
3674 | - if (!(s[i] & 0x80)) |
3675 | - buf += toupper(s[i]); |
3676 | - else |
3677 | + if (!sqlSymbolChar(s[i], i == 0)) |
3678 | return NULL; // contains non-ascii data |
3679 | + buf += toupper(s[i]); |
3680 | } |
3681 | |
3682 | return buf.c_str(); |
3683 | diff --git a/src/dsql/DsqlCursor.cpp b/src/dsql/DsqlCursor.cpp |
3684 | index 4c3fef6..dcb040a 100644 |
3685 | --- a/src/dsql/DsqlCursor.cpp |
3686 | +++ b/src/dsql/DsqlCursor.cpp |
3687 | @@ -34,10 +34,10 @@ static const char* const SCRATCH = "fb_cursor_"; |
3688 | static const ULONG PREFETCH_SIZE = 65536; // 64 KB |
3689 | |
3690 | DsqlCursor::DsqlCursor(dsql_req* req, ULONG flags) |
3691 | - : m_request(req), m_resultSet(NULL), m_flags(flags), |
3692 | + : m_request(req), m_message(req->getStatement()->getReceiveMsg()), |
3693 | + m_resultSet(NULL), m_flags(flags), |
3694 | m_space(req->getPool(), SCRATCH), |
3695 | - m_state(BOS), m_eof(false), m_position(0), m_cachedCount(0), |
3696 | - m_messageSize(req->getStatement()->getReceiveMsg()->msg_length) |
3697 | + m_state(BOS), m_eof(false), m_position(0), m_cachedCount(0) |
3698 | { |
3699 | TRA_link_cursor(m_request->req_transaction, this); |
3700 | } |
3701 | @@ -232,9 +232,14 @@ int DsqlCursor::fetchFromCache(thread_db* tdbb, UCHAR* buffer, FB_UINT64 positio |
3702 | |
3703 | fb_assert(position < m_cachedCount); |
3704 | |
3705 | - const FB_UINT64 offset = position * m_messageSize; |
3706 | - const FB_UINT64 readBytes = m_space.read(offset, buffer, m_messageSize); |
3707 | - fb_assert(readBytes == m_messageSize); |
3708 | + UCHAR* const msgBuffer = m_request->req_msg_buffers[m_message->msg_buffer_number]; |
3709 | + |
3710 | + const FB_UINT64 offset = position * m_message->msg_length; |
3711 | + const FB_UINT64 readBytes = m_space.read(offset, msgBuffer, m_message->msg_length); |
3712 | + fb_assert(readBytes == m_message->msg_length); |
3713 | + |
3714 | + m_request->mapInOut(tdbb, true, m_message, NULL, buffer); |
3715 | + |
3716 | m_position = position; |
3717 | m_state = POSITIONED; |
3718 | return 0; |
3719 | @@ -244,34 +249,23 @@ bool DsqlCursor::cacheInput(thread_db* tdbb, FB_UINT64 position) |
3720 | { |
3721 | fb_assert(!m_eof); |
3722 | |
3723 | - const ULONG prefetchCount = MAX(PREFETCH_SIZE / m_messageSize, 1); |
3724 | - const ULONG prefetchSize = prefetchCount * m_messageSize; |
3725 | - |
3726 | - UCharBuffer messageBuffer; |
3727 | - UCHAR* const buffer = messageBuffer.getBuffer(prefetchSize); |
3728 | + const ULONG prefetchCount = MAX(PREFETCH_SIZE / m_message->msg_length, 1); |
3729 | + const UCHAR* const msgBuffer = m_request->req_msg_buffers[m_message->msg_buffer_number]; |
3730 | |
3731 | while (position >= m_cachedCount) |
3732 | { |
3733 | - ULONG count = 0; |
3734 | - |
3735 | - for (; count < prefetchCount; count++) |
3736 | + for (ULONG count = 0; count < prefetchCount; count++) |
3737 | { |
3738 | - UCHAR* const ptr = buffer + count * m_messageSize; |
3739 | - |
3740 | - if (!m_request->fetch(tdbb, ptr)) |
3741 | + if (!m_request->fetch(tdbb, NULL)) |
3742 | { |
3743 | m_eof = true; |
3744 | break; |
3745 | } |
3746 | - } |
3747 | |
3748 | - if (count) |
3749 | - { |
3750 | - const FB_UINT64 offset = m_cachedCount * m_messageSize; |
3751 | - const ULONG fetchedSize = count * m_messageSize; |
3752 | - const FB_UINT64 writtenBytes = m_space.write(offset, buffer, fetchedSize); |
3753 | - fb_assert(writtenBytes == fetchedSize); |
3754 | - m_cachedCount += count; |
3755 | + const FB_UINT64 offset = m_cachedCount * m_message->msg_length; |
3756 | + const FB_UINT64 writtenBytes = m_space.write(offset, msgBuffer, m_message->msg_length); |
3757 | + fb_assert(writtenBytes == m_message->msg_length); |
3758 | + m_cachedCount++; |
3759 | } |
3760 | |
3761 | if (m_eof) |
3762 | diff --git a/src/dsql/DsqlCursor.h b/src/dsql/DsqlCursor.h |
3763 | index 04824ff..864a8b3 100644 |
3764 | --- a/src/dsql/DsqlCursor.h |
3765 | +++ b/src/dsql/DsqlCursor.h |
3766 | @@ -66,6 +66,7 @@ private: |
3767 | bool cacheInput(thread_db* tdbb, FB_UINT64 position = MAX_UINT64); |
3768 | |
3769 | dsql_req* const m_request; |
3770 | + const dsql_msg* const m_message; |
3771 | JResultSet* m_resultSet; |
3772 | const ULONG m_flags; |
3773 | TempSpace m_space; |
3774 | @@ -73,7 +74,6 @@ private: |
3775 | bool m_eof; |
3776 | FB_UINT64 m_position; |
3777 | FB_UINT64 m_cachedCount; |
3778 | - ULONG m_messageSize; |
3779 | }; |
3780 | |
3781 | } // namespace |
3782 | diff --git a/src/dsql/dsql.cpp b/src/dsql/dsql.cpp |
3783 | index 9254249..f13d146 100644 |
3784 | --- a/src/dsql/dsql.cpp |
3785 | +++ b/src/dsql/dsql.cpp |
3786 | @@ -80,9 +80,6 @@ using namespace Firebird; |
3787 | |
3788 | static ULONG get_request_info(thread_db*, dsql_req*, ULONG, UCHAR*); |
3789 | static dsql_dbb* init(Jrd::thread_db*, Jrd::Attachment*); |
3790 | -static void map_in_out(Jrd::thread_db*, dsql_req*, bool, const dsql_msg*, IMessageMetadata*, UCHAR*, |
3791 | - const UCHAR* = NULL); |
3792 | -static USHORT parse_metadata(dsql_req*, IMessageMetadata*, const Array<dsql_par*>&); |
3793 | static dsql_req* prepareRequest(thread_db*, dsql_dbb*, jrd_tra*, ULONG, const TEXT*, USHORT, bool); |
3794 | static dsql_req* prepareStatement(thread_db*, dsql_dbb*, jrd_tra*, ULONG, const TEXT*, USHORT, bool); |
3795 | static UCHAR* put_item(UCHAR, const USHORT, const UCHAR*, UCHAR*, const UCHAR* const); |
3796 | @@ -272,6 +269,12 @@ bool DsqlDmlRequest::fetch(thread_db* tdbb, UCHAR* msgBuffer) |
3797 | |
3798 | dsql_msg* message = (dsql_msg*) statement->getReceiveMsg(); |
3799 | |
3800 | + if (delayedFormat && message) |
3801 | + { |
3802 | + parseMetadata(delayedFormat, message->msg_parameters); |
3803 | + delayedFormat = NULL; |
3804 | + } |
3805 | + |
3806 | // Set up things for tracing this call |
3807 | Jrd::Attachment* att = req_dbb->dbb_attachment; |
3808 | TraceDSQLFetch trace(att, this); |
3809 | @@ -285,13 +288,12 @@ bool DsqlDmlRequest::fetch(thread_db* tdbb, UCHAR* msgBuffer) |
3810 | |
3811 | if (eofReached) |
3812 | { |
3813 | - delayedFormat = NULL; |
3814 | trace.fetch(true, ITracePlugin::RESULT_SUCCESS); |
3815 | return false; |
3816 | } |
3817 | |
3818 | - map_in_out(tdbb, this, true, message, delayedFormat, msgBuffer); |
3819 | - delayedFormat = NULL; |
3820 | + if (msgBuffer) |
3821 | + mapInOut(tdbb, true, message, NULL, msgBuffer); |
3822 | |
3823 | trace.fetch(false, ITracePlugin::RESULT_SUCCESS); |
3824 | return true; |
3825 | @@ -679,9 +681,9 @@ void DsqlDmlRequest::execute(thread_db* tdbb, jrd_tra** traHandle, |
3826 | |
3827 | const dsql_msg* message = statement->getSendMsg(); |
3828 | if (message) |
3829 | - map_in_out(tdbb, this, false, message, inMetadata, NULL, inMsg); |
3830 | + mapInOut(tdbb, false, message, inMetadata, NULL, inMsg); |
3831 | |
3832 | - // we need to map_in_out before tracing of execution start to let trace |
3833 | + // we need to mapInOut before tracing of execution start to let trace |
3834 | // manager know statement parameters values |
3835 | TraceDSQLExecute trace(req_dbb->dbb_attachment, this); |
3836 | |
3837 | @@ -713,7 +715,7 @@ void DsqlDmlRequest::execute(thread_db* tdbb, jrd_tra** traHandle, |
3838 | } |
3839 | |
3840 | if (outMetadata && message) |
3841 | - parse_metadata(this, outMetadata, message->msg_parameters); |
3842 | + parseMetadata(outMetadata, message->msg_parameters); |
3843 | |
3844 | if ((outMsg && message) || isBlock) |
3845 | { |
3846 | @@ -736,7 +738,7 @@ void DsqlDmlRequest::execute(thread_db* tdbb, jrd_tra** traHandle, |
3847 | JRD_receive(tdbb, req_request, message->msg_number, message->msg_length, msgBuffer); |
3848 | |
3849 | if (outMsg) |
3850 | - map_in_out(tdbb, this, true, message, NULL, outMsg); |
3851 | + mapInOut(tdbb, true, message, NULL, outMsg); |
3852 | |
3853 | // if this is a singleton select, make sure there's in fact one record |
3854 | |
3855 | @@ -989,13 +991,12 @@ static dsql_dbb* init(thread_db* tdbb, Jrd::Attachment* attachment) |
3856 | |
3857 | /** |
3858 | |
3859 | - map_in_out |
3860 | + mapInOut |
3861 | |
3862 | @brief Map data from external world into message or |
3863 | from message to external world. |
3864 | |
3865 | |
3866 | - @param request |
3867 | @param toExternal |
3868 | @param message |
3869 | @param meta |
3870 | @@ -1003,10 +1004,10 @@ static dsql_dbb* init(thread_db* tdbb, Jrd::Attachment* attachment) |
3871 | @param in_dsql_msg_buf |
3872 | |
3873 | **/ |
3874 | -static void map_in_out(thread_db* tdbb, dsql_req* request, bool toExternal, const dsql_msg* message, |
3875 | +void dsql_req::mapInOut(thread_db* tdbb, bool toExternal, const dsql_msg* message, |
3876 | IMessageMetadata* meta, UCHAR* dsql_msg_buf, const UCHAR* in_dsql_msg_buf) |
3877 | { |
3878 | - USHORT count = parse_metadata(request, meta, message->msg_parameters); |
3879 | + USHORT count = parseMetadata(meta, message->msg_parameters); |
3880 | |
3881 | // Sanity check |
3882 | |
3883 | @@ -1041,7 +1042,7 @@ static void map_in_out(thread_db* tdbb, dsql_req* request, bool toExternal, cons |
3884 | // Make sure the message given to us is long enough |
3885 | |
3886 | dsc desc; |
3887 | - if (!request->req_user_descs.get(parameter, desc)) |
3888 | + if (!req_user_descs.get(parameter, desc)) |
3889 | desc.clear(); |
3890 | |
3891 | /*** |
3892 | @@ -1059,14 +1060,14 @@ static void map_in_out(thread_db* tdbb, dsql_req* request, bool toExternal, cons |
3893 | Arg::Gds(isc_dsql_sqlvar_index) << Arg::Num(parameter->par_index-1)); |
3894 | } |
3895 | |
3896 | - UCHAR* msgBuffer = request->req_msg_buffers[parameter->par_message->msg_buffer_number]; |
3897 | + UCHAR* msgBuffer = req_msg_buffers[parameter->par_message->msg_buffer_number]; |
3898 | |
3899 | SSHORT* flag = NULL; |
3900 | dsql_par* const null_ind = parameter->par_null; |
3901 | if (null_ind != NULL) |
3902 | { |
3903 | dsc userNullDesc; |
3904 | - if (!request->req_user_descs.get(null_ind, userNullDesc)) |
3905 | + if (!req_user_descs.get(null_ind, userNullDesc)) |
3906 | userNullDesc.clear(); |
3907 | |
3908 | const ULONG null_offset = (IPTR) userNullDesc.dsc_address; |
3909 | @@ -1129,7 +1130,7 @@ static void map_in_out(thread_db* tdbb, dsql_req* request, bool toExternal, cons |
3910 | Arg::Gds(isc_dsql_wrong_param_num) << Arg::Num(count) <<Arg::Num(count2)); |
3911 | } |
3912 | |
3913 | - const DsqlCompiledStatement* statement = request->getStatement(); |
3914 | + const DsqlCompiledStatement* statement = getStatement(); |
3915 | const dsql_par* parameter; |
3916 | |
3917 | const dsql_par* dbkey; |
3918 | @@ -1138,7 +1139,7 @@ static void map_in_out(thread_db* tdbb, dsql_req* request, bool toExternal, cons |
3919 | { |
3920 | UCHAR* parentMsgBuffer = statement->getParentRequest() ? |
3921 | statement->getParentRequest()->req_msg_buffers[dbkey->par_message->msg_buffer_number] : NULL; |
3922 | - UCHAR* msgBuffer = request->req_msg_buffers[parameter->par_message->msg_buffer_number]; |
3923 | + UCHAR* msgBuffer = req_msg_buffers[parameter->par_message->msg_buffer_number]; |
3924 | |
3925 | fb_assert(parentMsgBuffer); |
3926 | |
3927 | @@ -1168,7 +1169,7 @@ static void map_in_out(thread_db* tdbb, dsql_req* request, bool toExternal, cons |
3928 | UCHAR* parentMsgBuffer = statement->getParentRequest() ? |
3929 | statement->getParentRequest()->req_msg_buffers[rec_version->par_message->msg_buffer_number] : |
3930 | NULL; |
3931 | - UCHAR* msgBuffer = request->req_msg_buffers[parameter->par_message->msg_buffer_number]; |
3932 | + UCHAR* msgBuffer = req_msg_buffers[parameter->par_message->msg_buffer_number]; |
3933 | |
3934 | fb_assert(parentMsgBuffer); |
3935 | |
3936 | @@ -1195,18 +1196,16 @@ static void map_in_out(thread_db* tdbb, dsql_req* request, bool toExternal, cons |
3937 | |
3938 | /** |
3939 | |
3940 | - parse_metadata |
3941 | + parseMetadata |
3942 | |
3943 | @brief Parse the message of a request. |
3944 | |
3945 | |
3946 | - @param request |
3947 | @param meta |
3948 | @param parameters_list |
3949 | |
3950 | **/ |
3951 | -static USHORT parse_metadata(dsql_req* request, IMessageMetadata* meta, |
3952 | - const Array<dsql_par*>& parameters_list) |
3953 | +USHORT dsql_req::parseMetadata(IMessageMetadata* meta, const Array<dsql_par*>& parameters_list) |
3954 | { |
3955 | HalfStaticArray<const dsql_par*, 16> parameters; |
3956 | |
3957 | @@ -1280,7 +1279,7 @@ static USHORT parse_metadata(dsql_req* request, IMessageMetadata* meta, |
3958 | if (desc.isText() && desc.getTextType() == ttype_dynamic) |
3959 | desc.setTextType(ttype_none); |
3960 | |
3961 | - request->req_user_descs.put(parameter, desc); |
3962 | + req_user_descs.put(parameter, desc); |
3963 | |
3964 | dsql_par* null = parameter->par_null; |
3965 | if (null) |
3966 | @@ -1291,7 +1290,7 @@ static USHORT parse_metadata(dsql_req* request, IMessageMetadata* meta, |
3967 | desc.dsc_length = sizeof(SSHORT); |
3968 | desc.dsc_address = (UCHAR*)(IPTR) nullOffset; |
3969 | |
3970 | - request->req_user_descs.put(null, desc); |
3971 | + req_user_descs.put(null, desc); |
3972 | } |
3973 | } |
3974 | |
3975 | diff --git a/src/dsql/dsql.h b/src/dsql/dsql.h |
3976 | index a5f359f..401d891 100644 |
3977 | --- a/src/dsql/dsql.h |
3978 | +++ b/src/dsql/dsql.h |
3979 | @@ -573,6 +573,10 @@ public: |
3980 | |
3981 | virtual void setDelayedFormat(thread_db* tdbb, Firebird::IMessageMetadata* metadata); |
3982 | |
3983 | + USHORT parseMetadata(Firebird::IMessageMetadata* meta, const Firebird::Array<dsql_par*>& parameters_list); |
3984 | + void mapInOut(Jrd::thread_db* tdbb, bool toExternal, const dsql_msg* message, Firebird::IMessageMetadata* meta, |
3985 | + UCHAR* dsql_msg_buf, const UCHAR* in_dsql_msg_buf = NULL); |
3986 | + |
3987 | static void destroy(thread_db* tdbb, dsql_req* request, bool drop); |
3988 | |
3989 | private: |
3990 | diff --git a/src/dsql/pass1.cpp b/src/dsql/pass1.cpp |
3991 | index 384208e..fcb1cc8 100644 |
3992 | --- a/src/dsql/pass1.cpp |
3993 | +++ b/src/dsql/pass1.cpp |
3994 | @@ -2761,16 +2761,11 @@ static void pass1_union_auto_cast(DsqlCompilerScratch* dsqlScratch, ExprNode* in |
3995 | field->length = desc.dsc_length; |
3996 | field->flags = (desc.dsc_flags & DSC_nullable) ? FLD_nullable : 0; |
3997 | |
3998 | - if (desc.dsc_dtype <= dtype_any_text) |
3999 | + if (desc.isText() || desc.isBlob()) |
4000 | { |
4001 | - field->textType = desc.dsc_sub_type; |
4002 | - field->charSetId = INTL_GET_CHARSET(&desc); |
4003 | - field->collationId = INTL_GET_COLLATE(&desc); |
4004 | - } |
4005 | - else if (desc.dsc_dtype == dtype_blob) |
4006 | - { |
4007 | - field->charSetId = desc.dsc_scale; |
4008 | - field->collationId = desc.dsc_flags >> 8; |
4009 | + field->textType = desc.getTextType(); |
4010 | + field->charSetId = desc.getCharSet(); |
4011 | + field->collationId = desc.getCollation(); |
4012 | } |
4013 | |
4014 | // Finally copy the descriptors to the root nodes and swap |
4015 | diff --git a/src/extlib/ib_util.cpp b/src/extlib/ib_util.cpp |
4016 | index 8f74f5e..ffefb10 100644 |
4017 | --- a/src/extlib/ib_util.cpp |
4018 | +++ b/src/extlib/ib_util.cpp |
4019 | @@ -21,19 +21,18 @@ |
4020 | #include <stdlib.h> |
4021 | #include "ib_udf.h" |
4022 | #include "firebird.h" |
4023 | - |
4024 | -typedef void* VoidPtr; |
4025 | +#include "ibase.h" |
4026 | |
4027 | |
4028 | // initialized by the engine |
4029 | static void* (*allocFunc)(long) = NULL; |
4030 | |
4031 | -extern "C" void FB_EXPORTED ib_util_init(void* (*aAllocFunc)(long)) |
4032 | +extern "C" FB_DLL_EXPORT void ib_util_init(void* (*aAllocFunc)(long)) |
4033 | { |
4034 | allocFunc = aAllocFunc; |
4035 | } |
4036 | |
4037 | -extern "C" VoidPtr FB_EXPORTED ib_util_malloc(long size) |
4038 | +extern "C" FB_DLL_EXPORT void* ib_util_malloc(long size) |
4039 | { |
4040 | return allocFunc ? allocFunc(size) : malloc(size); |
4041 | } |
4042 | diff --git a/src/include/consts_pub.h b/src/include/consts_pub.h |
4043 | index 6107e09..769a3e3 100644 |
4044 | --- a/src/include/consts_pub.h |
4045 | +++ b/src/include/consts_pub.h |
4046 | @@ -123,6 +123,7 @@ |
4047 | #define isc_dpb_nolinger 88 |
4048 | #define isc_dpb_reset_icu 89 |
4049 | #define isc_dpb_map_attach 90 |
4050 | +#define isc_dpb_clear_map 96 |
4051 | |
4052 | /**************************************************/ |
4053 | /* clumplet tags used inside isc_dpb_address_path */ |
4054 | diff --git a/src/include/fb_exception.h b/src/include/fb_exception.h |
4055 | index 3551ac4..5847e31 100644 |
4056 | --- a/src/include/fb_exception.h |
4057 | +++ b/src/include/fb_exception.h |
4058 | @@ -132,9 +132,11 @@ class system_error : public status_exception |
4059 | { |
4060 | private: |
4061 | int errorCode; |
4062 | -public: |
4063 | - system_error(const char* syscall, int error_code); |
4064 | |
4065 | +protected: |
4066 | + system_error(const char* syscall, const char* arg, int error_code); |
4067 | + |
4068 | +public: |
4069 | static void raise(const char* syscall, int error_code); |
4070 | static void raise(const char* syscall); |
4071 | |
4072 | @@ -150,11 +152,14 @@ public: |
4073 | // it will call abort() in DEV_BUILD to create core dump |
4074 | class system_call_failed : public system_error |
4075 | { |
4076 | -public: |
4077 | - system_call_failed(const char* syscall, int error_code); |
4078 | +protected: |
4079 | + system_call_failed(const char* syscall, const char* arg, int error_code); |
4080 | |
4081 | +public: |
4082 | static void raise(const char* syscall, int error_code); |
4083 | static void raise(const char* syscall); |
4084 | + static void raise(const char* syscall, const char* arg, int error_code); |
4085 | + static void raise(const char* syscall, const char* arg); |
4086 | }; |
4087 | |
4088 | class fatal_exception : public status_exception |
4089 | diff --git a/src/include/firebird.h b/src/include/firebird.h |
4090 | index 87f0a11..6b8cb18 100644 |
4091 | --- a/src/include/firebird.h |
4092 | +++ b/src/include/firebird.h |
4093 | @@ -43,13 +43,6 @@ |
4094 | #define DEBUG_GDS_ALLOC |
4095 | #endif |
4096 | |
4097 | -#if defined(WIN_NT) |
4098 | -#define FB_DLL_EXPORT __declspec(dllexport) |
4099 | -#elif defined(DARWIN) |
4100 | -#define FB_DLL_EXPORT API_ROUTINE |
4101 | -#else |
4102 | -#define FB_DLL_EXPORT |
4103 | -#endif |
4104 | //#if defined(SOLX86) |
4105 | // this pragmas is used only with gcc 2.95! |
4106 | //#define __PRAGMA_REDEFINE_EXTNAME |
4107 | diff --git a/src/include/firebird/UdrCppEngine.h b/src/include/firebird/UdrCppEngine.h |
4108 | index 26ef5a0..d9aac7e 100644 |
4109 | --- a/src/include/firebird/UdrCppEngine.h |
4110 | +++ b/src/include/firebird/UdrCppEngine.h |
4111 | @@ -43,7 +43,7 @@ |
4112 | } \ |
4113 | } \ |
4114 | \ |
4115 | - extern "C" FB_BOOLEAN* FB_UDR_PLUGIN_ENTRY_POINT(::Firebird::IStatus* status, \ |
4116 | + extern "C" FB_DLL_EXPORT FB_BOOLEAN* FB_UDR_PLUGIN_ENTRY_POINT(::Firebird::IStatus* status, \ |
4117 | FB_BOOLEAN* theirUnloadFlag, ::Firebird::IUdrPlugin* udrPlugin) \ |
4118 | { \ |
4119 | ::Firebird::Udr::FactoryRegistration::finish(status, udrPlugin); \ |
4120 | diff --git a/src/include/gen/Firebird.pas b/src/include/gen/Firebird.pas |
4121 | index 1574458..a891103 100644 |
4122 | --- a/src/include/gen/Firebird.pas |
4123 | +++ b/src/include/gen/Firebird.pas |
4124 | @@ -3136,7 +3136,9 @@ type |
4125 | procedure registerTrigger(status: IStatus; name: PAnsiChar; factory: IUdrTriggerFactory); virtual; abstract; |
4126 | end; |
4127 | |
4128 | +{$IFNDEF NO_FBCLIENT} |
4129 | function fb_get_master_interface : IMaster; cdecl; external 'fbclient'; |
4130 | +{$ENDIF} |
4131 | |
4132 | const |
4133 | isc_dpb_version1 = byte(1); |
4134 | @@ -3231,6 +3233,7 @@ const |
4135 | isc_dpb_nolinger = byte(88); |
4136 | isc_dpb_reset_icu = byte(89); |
4137 | isc_dpb_map_attach = byte(90); |
4138 | + isc_dpb_clear_map = byte(96); |
4139 | isc_dpb_address = byte(1); |
4140 | isc_dpb_addr_protocol = byte(1); |
4141 | isc_dpb_addr_endpoint = byte(2); |
4142 | diff --git a/src/include/gen/msgs.h b/src/include/gen/msgs.h |
4143 | index ceddcaa..ed0ae35 100644 |
4144 | --- a/src/include/gen/msgs.h |
4145 | +++ b/src/include/gen/msgs.h |
4146 | @@ -688,7 +688,7 @@ Data source : @4"}, /* eds_statement */ |
4147 | {335544981, "Floating point overflow in built-in function @1"}, /* sysf_fp_overflow */ |
4148 | {335544982, "Floating point overflow in result from UDF @1"}, /* udf_fp_overflow */ |
4149 | {335544983, "Invalid floating point value returned by UDF @1"}, /* udf_fp_nan */ |
4150 | - {335544984, "Database is probably already opened by another engine instance in another Windows session"}, /* instance_conflict */ |
4151 | + {335544984, "Shared memory area is probably already created by another engine instance in another Windows session"}, /* instance_conflict */ |
4152 | {335544985, "No free space found in temporary directories"}, /* out_of_temp_space */ |
4153 | {335544986, "Explicit transaction control is not allowed"}, /* eds_expl_tran_ctrl */ |
4154 | {335544987, "Use of TRUSTED switches in spb_command_line is prohibited"}, /* no_trusted_spb */ |
4155 | diff --git a/src/include/gen/sql_code.h b/src/include/gen/sql_code.h |
4156 | index 1ba18ed..2d975f8 100644 |
4157 | --- a/src/include/gen/sql_code.h |
4158 | +++ b/src/include/gen/sql_code.h |
4159 | @@ -858,7 +858,7 @@ static const struct { |
4160 | {336003092, -502}, /* 20 dsql_cursor_exists */ |
4161 | {336003093, -502}, /* 21 dsql_cursor_rel_ambiguous */ |
4162 | {336003094, -502}, /* 22 dsql_cursor_rel_not_found */ |
4163 | - {336003095, -502}, /* 23 dsql_cursor_not_open */ |
4164 | + {336003095, -504}, /* 23 dsql_cursor_not_open */ |
4165 | {336003096, -607}, /* 24 dsql_type_not_supp_ext_tab */ |
4166 | {336003097, -804}, /* 25 dsql_feature_not_supported_ods */ |
4167 | {336003098, -660}, /* 26 primary_key_required */ |
4168 | diff --git a/src/intl/charsets/cs_437.h b/src/intl/charsets/cs_437.h |
4169 | index 9c70b0f..b408d39 100644 |
4170 | --- a/src/intl/charsets/cs_437.h |
4171 | +++ b/src/intl/charsets/cs_437.h |
4172 | @@ -3,274 +3,8 @@ |
4173 | |
4174 | Unicode mapping table generated from java mapping and UnicodeData.txt |
4175 | |
4176 | -# |
4177 | # Name: Cp437 to Unicode table |
4178 | # Unicode version: Java 1.3 |
4179 | -# |
4180 | -# Format: Three tab-separated columns |
4181 | -# Column #1 is the Cp437 code (in hex) |
4182 | -# Column #2 is the Unicode (in hex as 0xXXXX) |
4183 | -# Column #3 is the Unicode name (follows a comment sign, '#') |
4184 | -# |
4185 | -# The entries are in Cp437 order |
4186 | -# |
4187 | -0x00 0x0000 #NULL |
4188 | -0x01 0x0001 #START OF HEADING |
4189 | -0x02 0x0002 #START OF TEXT |
4190 | -0x03 0x0003 #END OF TEXT |
4191 | -0x04 0x0004 #END OF TRANSMISSION |
4192 | -0x05 0x0005 #ENQUIRY |
4193 | -0x06 0x0006 #ACKNOWLEDGE |
4194 | -0x07 0x0007 #BELL |
4195 | -0x08 0x0008 #BACKSPACE |
4196 | -0x09 0x0009 #CHARACTER TABULATION |
4197 | -0x0a 0x000a #LINE FEED (LF) |
4198 | -0x0b 0x000b #LINE TABULATION |
4199 | -0x0c 0x000c #FORM FEED (FF) |
4200 | -0x0d 0x000d #CARRIAGE RETURN (CR) |
4201 | -0x0e 0x000e #SHIFT OUT |
4202 | -0x0f 0x000f #SHIFT IN |
4203 | -0x10 0x0010 #DATA LINK ESCAPE |
4204 | -0x11 0x0011 #DEVICE CONTROL ONE |
4205 | -0x12 0x0012 #DEVICE CONTROL TWO |
4206 | -0x13 0x0013 #DEVICE CONTROL THREE |
4207 | -0x14 0x0014 #DEVICE CONTROL FOUR |
4208 | -0x15 0x0015 #NEGATIVE ACKNOWLEDGE |
4209 | -0x16 0x0016 #SYNCHRONOUS IDLE |
4210 | -0x17 0x0017 #END OF TRANSMISSION BLOCK |
4211 | -0x18 0x0018 #CANCEL |
4212 | -0x19 0x0019 #END OF MEDIUM |
4213 | -0x1a 0x001a #SUBSTITUTE |
4214 | -0x1b 0x001b #ESCAPE |
4215 | -0x1c 0x001c #INFORMATION SEPARATOR FOUR |
4216 | -0x1d 0x001d #INFORMATION SEPARATOR THREE |
4217 | -0x1e 0x001e #INFORMATION SEPARATOR TWO |
4218 | -0x1f 0x001f #INFORMATION SEPARATOR ONE |
4219 | -0x20 0x0020 #SPACE |
4220 | -0x21 0x0021 #EXCLAMATION MARK |
4221 | -0x22 0x0022 #QUOTATION MARK |
4222 | -0x23 0x0023 #NUMBER SIGN |
4223 | -0x24 0x0024 #DOLLAR SIGN |
4224 | -0x25 0x0025 #PERCENT SIGN |
4225 | -0x26 0x0026 #AMPERSAND |
4226 | -0x27 0x0027 #APOSTROPHE |
4227 | -0x28 0x0028 #LEFT PARENTHESIS |
4228 | -0x29 0x0029 #RIGHT PARENTHESIS |
4229 | -0x2a 0x002a #ASTERISK |
4230 | -0x2b 0x002b #PLUS SIGN |
4231 | -0x2c 0x002c #COMMA |
4232 | -0x2d 0x002d #HYPHEN-MINUS |
4233 | -0x2e 0x002e #FULL STOP |
4234 | -0x2f 0x002f #SOLIDUS |
4235 | -0x30 0x0030 #DIGIT ZERO |
4236 | -0x31 0x0031 #DIGIT ONE |
4237 | -0x32 0x0032 #DIGIT TWO |
4238 | -0x33 0x0033 #DIGIT THREE |
4239 | -0x34 0x0034 #DIGIT FOUR |
4240 | -0x35 0x0035 #DIGIT FIVE |
4241 | -0x36 0x0036 #DIGIT SIX |
4242 | -0x37 0x0037 #DIGIT SEVEN |
4243 | -0x38 0x0038 #DIGIT EIGHT |
4244 | -0x39 0x0039 #DIGIT NINE |
4245 | -0x3a 0x003a #COLON |
4246 | -0x3b 0x003b #SEMICOLON |
4247 | -0x3c 0x003c #LESS-THAN SIGN |
4248 | -0x3d 0x003d #EQUALS SIGN |
4249 | -0x3e 0x003e #GREATER-THAN SIGN |
4250 | -0x3f 0x003f #QUESTION MARK |
4251 | -0x40 0x0040 #COMMERCIAL AT |
4252 | -0x41 0x0041 #LATIN CAPITAL LETTER A |
4253 | -0x42 0x0042 #LATIN CAPITAL LETTER B |
4254 | -0x43 0x0043 #LATIN CAPITAL LETTER C |
4255 | -0x44 0x0044 #LATIN CAPITAL LETTER D |
4256 | -0x45 0x0045 #LATIN CAPITAL LETTER E |
4257 | -0x46 0x0046 #LATIN CAPITAL LETTER F |
4258 | -0x47 0x0047 #LATIN CAPITAL LETTER G |
4259 | -0x48 0x0048 #LATIN CAPITAL LETTER H |
4260 | -0x49 0x0049 #LATIN CAPITAL LETTER I |
4261 | -0x4a 0x004a #LATIN CAPITAL LETTER J |
4262 | -0x4b 0x004b #LATIN CAPITAL LETTER K |
4263 | -0x4c 0x004c #LATIN CAPITAL LETTER L |
4264 | -0x4d 0x004d #LATIN CAPITAL LETTER M |
4265 | -0x4e 0x004e #LATIN CAPITAL LETTER N |
4266 | -0x4f 0x004f #LATIN CAPITAL LETTER O |
4267 | -0x50 0x0050 #LATIN CAPITAL LETTER P |
4268 | -0x51 0x0051 #LATIN CAPITAL LETTER Q |
4269 | -0x52 0x0052 #LATIN CAPITAL LETTER R |
4270 | -0x53 0x0053 #LATIN CAPITAL LETTER S |
4271 | -0x54 0x0054 #LATIN CAPITAL LETTER T |
4272 | -0x55 0x0055 #LATIN CAPITAL LETTER U |
4273 | -0x56 0x0056 #LATIN CAPITAL LETTER V |
4274 | -0x57 0x0057 #LATIN CAPITAL LETTER W |
4275 | -0x58 0x0058 #LATIN CAPITAL LETTER X |
4276 | -0x59 0x0059 #LATIN CAPITAL LETTER Y |
4277 | -0x5a 0x005a #LATIN CAPITAL LETTER Z |
4278 | -0x5b 0x005b #LEFT SQUARE BRACKET |
4279 | -0x5c 0x005c #REVERSE SOLIDUS |
4280 | -0x5d 0x005d #RIGHT SQUARE BRACKET |
4281 | -0x5e 0x005e #CIRCUMFLEX ACCENT |
4282 | -0x5f 0x005f #LOW LINE |
4283 | -0x60 0x0060 #GRAVE ACCENT |
4284 | -0x61 0x0061 #LATIN SMALL LETTER A |
4285 | -0x62 0x0062 #LATIN SMALL LETTER B |
4286 | -0x63 0x0063 #LATIN SMALL LETTER C |
4287 | -0x64 0x0064 #LATIN SMALL LETTER D |
4288 | -0x65 0x0065 #LATIN SMALL LETTER E |
4289 | -0x66 0x0066 #LATIN SMALL LETTER F |
4290 | -0x67 0x0067 #LATIN SMALL LETTER G |
4291 | -0x68 0x0068 #LATIN SMALL LETTER H |
4292 | -0x69 0x0069 #LATIN SMALL LETTER I |
4293 | -0x6a 0x006a #LATIN SMALL LETTER J |
4294 | -0x6b 0x006b #LATIN SMALL LETTER K |
4295 | -0x6c 0x006c #LATIN SMALL LETTER L |
4296 | -0x6d 0x006d #LATIN SMALL LETTER M |
4297 | -0x6e 0x006e #LATIN SMALL LETTER N |
4298 | -0x6f 0x006f #LATIN SMALL LETTER O |
4299 | -0x70 0x0070 #LATIN SMALL LETTER P |
4300 | -0x71 0x0071 #LATIN SMALL LETTER Q |
4301 | -0x72 0x0072 #LATIN SMALL LETTER R |
4302 | -0x73 0x0073 #LATIN SMALL LETTER S |
4303 | -0x74 0x0074 #LATIN SMALL LETTER T |
4304 | -0x75 0x0075 #LATIN SMALL LETTER U |
4305 | -0x76 0x0076 #LATIN SMALL LETTER V |
4306 | -0x77 0x0077 #LATIN SMALL LETTER W |
4307 | -0x78 0x0078 #LATIN SMALL LETTER X |
4308 | -0x79 0x0079 #LATIN SMALL LETTER Y |
4309 | -0x7a 0x007a #LATIN SMALL LETTER Z |
4310 | -0x7b 0x007b #LEFT CURLY BRACKET |
4311 | -0x7c 0x007c #VERTICAL LINE |
4312 | -0x7d 0x007d #RIGHT CURLY BRACKET |
4313 | -0x7e 0x007e #TILDE |
4314 | -0x7f 0x007f #DELETE |
4315 | -0x80 0x00c7 #LATIN CAPITAL LETTER C WITH CEDILLA |
4316 | -0x81 0x00fc #LATIN SMALL LETTER U WITH DIAERESIS |
4317 | -0x82 0x00e9 #LATIN SMALL LETTER E WITH ACUTE |
4318 | -0x83 0x00e2 #LATIN SMALL LETTER A WITH CIRCUMFLEX |
4319 | -0x84 0x00e4 #LATIN SMALL LETTER A WITH DIAERESIS |
4320 | -0x85 0x00e0 #LATIN SMALL LETTER A WITH GRAVE |
4321 | -0x86 0x00e5 #LATIN SMALL LETTER A WITH RING ABOVE |
4322 | -0x87 0x00e7 #LATIN SMALL LETTER C WITH CEDILLA |
4323 | -0x88 0x00ea #LATIN SMALL LETTER E WITH CIRCUMFLEX |
4324 | -0x89 0x00eb #LATIN SMALL LETTER E WITH DIAERESIS |
4325 | -0x8a 0x00e8 #LATIN SMALL LETTER E WITH GRAVE |
4326 | -0x8b 0x00ef #LATIN SMALL LETTER I WITH DIAERESIS |
4327 | -0x8c 0x00ee #LATIN SMALL LETTER I WITH CIRCUMFLEX |
4328 | -0x8d 0x00ec #LATIN SMALL LETTER I WITH GRAVE |
4329 | -0x8e 0x00c4 #LATIN CAPITAL LETTER A WITH DIAERESIS |
4330 | -0x8f 0x00c5 #LATIN CAPITAL LETTER A WITH RING ABOVE |
4331 | -0x90 0x00c9 #LATIN CAPITAL LETTER E WITH ACUTE |
4332 | -0x91 0x00e6 #LATIN SMALL LETTER AE |
4333 | -0x92 0x00c6 #LATIN CAPITAL LETTER AE |
4334 | -0x93 0x00f4 #LATIN SMALL LETTER O WITH CIRCUMFLEX |
4335 | -0x94 0x00f6 #LATIN SMALL LETTER O WITH DIAERESIS |
4336 | -0x95 0x00f2 #LATIN SMALL LETTER O WITH GRAVE |
4337 | -0x96 0x00fb #LATIN SMALL LETTER U WITH CIRCUMFLEX |
4338 | -0x97 0x00f9 #LATIN SMALL LETTER U WITH GRAVE |
4339 | -0x98 0x00ff #LATIN SMALL LETTER Y WITH DIAERESIS |
4340 | -0x99 0x00d6 #LATIN CAPITAL LETTER O WITH DIAERESIS |
4341 | -0x9a 0x00dc #LATIN CAPITAL LETTER U WITH DIAERESIS |
4342 | -0x9b 0x00a2 #CENT SIGN |
4343 | -0x9c 0x00a3 #POUND SIGN |
4344 | -0x9d 0x00a5 #YEN SIGN |
4345 | -0x9e 0x20a7 #PESETA SIGN |
4346 | -0x9f 0x0192 #LATIN SMALL LETTER F WITH HOOK |
4347 | -0xa0 0x00e1 #LATIN SMALL LETTER A WITH ACUTE |
4348 | -0xa1 0x00ed #LATIN SMALL LETTER I WITH ACUTE |
4349 | -0xa2 0x00f3 #LATIN SMALL LETTER O WITH ACUTE |
4350 | -0xa3 0x00fa #LATIN SMALL LETTER U WITH ACUTE |
4351 | -0xa4 0x00f1 #LATIN SMALL LETTER N WITH TILDE |
4352 | -0xa5 0x00d1 #LATIN CAPITAL LETTER N WITH TILDE |
4353 | -0xa6 0x00aa #FEMININE ORDINAL INDICATOR |
4354 | -0xa7 0x00ba #MASCULINE ORDINAL INDICATOR |
4355 | -0xa8 0x00bf #INVERTED QUESTION MARK |
4356 | -0xa9 0x2310 #REVERSED NOT SIGN |
4357 | -0xaa 0x00ac #NOT SIGN |
4358 | -0xab 0x00bd #VULGAR FRACTION ONE HALF |
4359 | -0xac 0x00bc #VULGAR FRACTION ONE QUARTER |
4360 | -0xad 0x00a1 #INVERTED EXCLAMATION MARK |
4361 | -0xae 0x00ab #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK |
4362 | -0xaf 0x00bb #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK |
4363 | -0xb0 0x2591 #LIGHT SHADE |
4364 | -0xb1 0x2592 #MEDIUM SHADE |
4365 | -0xb2 0x2593 #DARK SHADE |
4366 | -0xb3 0x2502 #BOX DRAWINGS LIGHT VERTICAL |
4367 | -0xb4 0x2524 #BOX DRAWINGS LIGHT VERTICAL AND LEFT |
4368 | -0xb5 0x2561 #BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE |
4369 | -0xb6 0x2562 #BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE |
4370 | -0xb7 0x2556 #BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE |
4371 | -0xb8 0x2555 #BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE |
4372 | -0xb9 0x2563 #BOX DRAWINGS DOUBLE VERTICAL AND LEFT |
4373 | -0xba 0x2551 #BOX DRAWINGS DOUBLE VERTICAL |
4374 | -0xbb 0x2557 #BOX DRAWINGS DOUBLE DOWN AND LEFT |
4375 | -0xbc 0x255d #BOX DRAWINGS DOUBLE UP AND LEFT |
4376 | -0xbd 0x255c #BOX DRAWINGS UP DOUBLE AND LEFT SINGLE |
4377 | -0xbe 0x255b #BOX DRAWINGS UP SINGLE AND LEFT DOUBLE |
4378 | -0xbf 0x2510 #BOX DRAWINGS LIGHT DOWN AND LEFT |
4379 | -0xc0 0x2514 #BOX DRAWINGS LIGHT UP AND RIGHT |
4380 | -0xc1 0x2534 #BOX DRAWINGS LIGHT UP AND HORIZONTAL |
4381 | -0xc2 0x252c #BOX DRAWINGS LIGHT DOWN AND HORIZONTAL |
4382 | -0xc3 0x251c #BOX DRAWINGS LIGHT VERTICAL AND RIGHT |
4383 | -0xc4 0x2500 #BOX DRAWINGS LIGHT HORIZONTAL |
4384 | -0xc5 0x253c #BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL |
4385 | -0xc6 0x255e #BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE |
4386 | -0xc7 0x255f #BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE |
4387 | -0xc8 0x255a #BOX DRAWINGS DOUBLE UP AND RIGHT |
4388 | -0xc9 0x2554 #BOX DRAWINGS DOUBLE DOWN AND RIGHT |
4389 | -0xca 0x2569 #BOX DRAWINGS DOUBLE UP AND HORIZONTAL |
4390 | -0xcb 0x2566 #BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL |
4391 | -0xcc 0x2560 #BOX DRAWINGS DOUBLE VERTICAL AND RIGHT |
4392 | -0xcd 0x2550 #BOX DRAWINGS DOUBLE HORIZONTAL |
4393 | -0xce 0x256c #BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL |
4394 | -0xcf 0x2567 #BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE |
4395 | -0xd0 0x2568 #BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE |
4396 | -0xd1 0x2564 #BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE |
4397 | -0xd2 0x2565 #BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE |
4398 | -0xd3 0x2559 #BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE |
4399 | -0xd4 0x2558 #BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE |
4400 | -0xd5 0x2552 #BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE |
4401 | -0xd6 0x2553 #BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE |
4402 | -0xd7 0x256b #BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE |
4403 | -0xd8 0x256a #BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE |
4404 | -0xd9 0x2518 #BOX DRAWINGS LIGHT UP AND LEFT |
4405 | -0xda 0x250c #BOX DRAWINGS LIGHT DOWN AND RIGHT |
4406 | -0xdb 0x2588 #FULL BLOCK |
4407 | -0xdc 0x2584 #LOWER HALF BLOCK |
4408 | -0xdd 0x258c #LEFT HALF BLOCK |
4409 | -0xde 0x2590 #RIGHT HALF BLOCK |
4410 | -0xdf 0x2580 #UPPER HALF BLOCK |
4411 | -0xe0 0x03b1 #GREEK SMALL LETTER ALPHA |
4412 | -0xe1 0x00df #LATIN SMALL LETTER SHARP S |
4413 | -0xe2 0x0393 #GREEK CAPITAL LETTER GAMMA |
4414 | -0xe3 0x03c0 #GREEK SMALL LETTER PI |
4415 | -0xe4 0x03a3 #GREEK CAPITAL LETTER SIGMA |
4416 | -0xe5 0x03c3 #GREEK SMALL LETTER SIGMA |
4417 | -0xe6 0x00b5 #MICRO SIGN |
4418 | -0xe7 0x03c4 #GREEK SMALL LETTER TAU |
4419 | -0xe8 0x03a6 #GREEK CAPITAL LETTER PHI |
4420 | -0xe9 0x0398 #GREEK CAPITAL LETTER THETA |
4421 | -0xea 0x03a9 #GREEK CAPITAL LETTER OMEGA |
4422 | -0xeb 0x03b4 #GREEK SMALL LETTER DELTA |
4423 | -0xec 0x221e #INFINITY |
4424 | -0xed 0x03c6 #GREEK SMALL LETTER PHI |
4425 | -0xee 0x03b5 #GREEK SMALL LETTER EPSILON |
4426 | -0xef 0x2229 #INTERSECTION |
4427 | -0xf0 0x2261 #IDENTICAL TO |
4428 | -0xf1 0x00b1 #PLUS-MINUS SIGN |
4429 | -0xf2 0x2265 #GREATER-THAN OR EQUAL TO |
4430 | -0xf3 0x2264 #LESS-THAN OR EQUAL TO |
4431 | -0xf4 0x2320 #TOP HALF INTEGRAL |
4432 | -0xf5 0x2321 #BOTTOM HALF INTEGRAL |
4433 | -0xf6 0x00f7 #DIVISION SIGN |
4434 | -0xf7 0x2248 #ALMOST EQUAL TO |
4435 | -0xf8 0x00b0 #DEGREE SIGN |
4436 | -0xf9 0x2219 #BULLET OPERATOR |
4437 | -0xfa 0x00b7 #MIDDLE DOT |
4438 | -0xfb 0x221a #SQUARE ROOT |
4439 | -0xfc 0x207f #SUPERSCRIPT LATIN SMALL LETTER N |
4440 | -0xfd 0x00b2 #SUPERSCRIPT TWO |
4441 | -0xfe 0x25a0 #BLACK SQUARE |
4442 | -0xff 0x00a0 #NO-BREAK SPACE |
4443 | - |
4444 | |
4445 | * The contents of this file are subject to the Interbase Public |
4446 | * License Version 1.0 (the "License"); you may not use this file |
4447 | diff --git a/src/intl/charsets/cs_737.h b/src/intl/charsets/cs_737.h |
4448 | index 7f34bc7..d569532 100644 |
4449 | --- a/src/intl/charsets/cs_737.h |
4450 | +++ b/src/intl/charsets/cs_737.h |
4451 | @@ -3,274 +3,8 @@ |
4452 | |
4453 | Unicode mapping table generated from java mapping and UnicodeData.txt |
4454 | |
4455 | -# |
4456 | # Name: Cp737 to Unicode table |
4457 | # Unicode version: Java 1.3 |
4458 | -# |
4459 | -# Format: Three tab-separated columns |
4460 | -# Column #1 is the Cp737 code (in hex) |
4461 | -# Column #2 is the Unicode (in hex as 0xXXXX) |
4462 | -# Column #3 is the Unicode name (follows a comment sign, '#') |
4463 | -# |
4464 | -# The entries are in Cp737 order |
4465 | -# |
4466 | -0x00 0x0000 #NULL |
4467 | -0x01 0x0001 #START OF HEADING |
4468 | -0x02 0x0002 #START OF TEXT |
4469 | -0x03 0x0003 #END OF TEXT |
4470 | -0x04 0x0004 #END OF TRANSMISSION |
4471 | -0x05 0x0005 #ENQUIRY |
4472 | -0x06 0x0006 #ACKNOWLEDGE |
4473 | -0x07 0x0007 #BELL |
4474 | -0x08 0x0008 #BACKSPACE |
4475 | -0x09 0x0009 #CHARACTER TABULATION |
4476 | -0x0a 0x000a #LINE FEED (LF) |
4477 | -0x0b 0x000b #LINE TABULATION |
4478 | -0x0c 0x000c #FORM FEED (FF) |
4479 | -0x0d 0x000d #CARRIAGE RETURN (CR) |
4480 | -0x0e 0x000e #SHIFT OUT |
4481 | -0x0f 0x000f #SHIFT IN |
4482 | -0x10 0x0010 #DATA LINK ESCAPE |
4483 | -0x11 0x0011 #DEVICE CONTROL ONE |
4484 | -0x12 0x0012 #DEVICE CONTROL TWO |
4485 | -0x13 0x0013 #DEVICE CONTROL THREE |
4486 | -0x14 0x0014 #DEVICE CONTROL FOUR |
4487 | -0x15 0x0015 #NEGATIVE ACKNOWLEDGE |
4488 | -0x16 0x0016 #SYNCHRONOUS IDLE |
4489 | -0x17 0x0017 #END OF TRANSMISSION BLOCK |
4490 | -0x18 0x0018 #CANCEL |
4491 | -0x19 0x0019 #END OF MEDIUM |
4492 | -0x1a 0x001a #SUBSTITUTE |
4493 | -0x1b 0x001b #ESCAPE |
4494 | -0x1c 0x001c #INFORMATION SEPARATOR FOUR |
4495 | -0x1d 0x001d #INFORMATION SEPARATOR THREE |
4496 | -0x1e 0x001e #INFORMATION SEPARATOR TWO |
4497 | -0x1f 0x001f #INFORMATION SEPARATOR ONE |
4498 | -0x20 0x0020 #SPACE |
4499 | -0x21 0x0021 #EXCLAMATION MARK |
4500 | -0x22 0x0022 #QUOTATION MARK |
4501 | -0x23 0x0023 #NUMBER SIGN |
4502 | -0x24 0x0024 #DOLLAR SIGN |
4503 | -0x25 0x0025 #PERCENT SIGN |
4504 | -0x26 0x0026 #AMPERSAND |
4505 | -0x27 0x0027 #APOSTROPHE |
4506 | -0x28 0x0028 #LEFT PARENTHESIS |
4507 | -0x29 0x0029 #RIGHT PARENTHESIS |
4508 | -0x2a 0x002a #ASTERISK |
4509 | -0x2b 0x002b #PLUS SIGN |
4510 | -0x2c 0x002c #COMMA |
4511 | -0x2d 0x002d #HYPHEN-MINUS |
4512 | -0x2e 0x002e #FULL STOP |
4513 | -0x2f 0x002f #SOLIDUS |
4514 | -0x30 0x0030 #DIGIT ZERO |
4515 | -0x31 0x0031 #DIGIT ONE |
4516 | -0x32 0x0032 #DIGIT TWO |
4517 | -0x33 0x0033 #DIGIT THREE |
4518 | -0x34 0x0034 #DIGIT FOUR |
4519 | -0x35 0x0035 #DIGIT FIVE |
4520 | -0x36 0x0036 #DIGIT SIX |
4521 | -0x37 0x0037 #DIGIT SEVEN |
4522 | -0x38 0x0038 #DIGIT EIGHT |
4523 | -0x39 0x0039 #DIGIT NINE |
4524 | -0x3a 0x003a #COLON |
4525 | -0x3b 0x003b #SEMICOLON |
4526 | -0x3c 0x003c #LESS-THAN SIGN |
4527 | -0x3d 0x003d #EQUALS SIGN |
4528 | -0x3e 0x003e #GREATER-THAN SIGN |
4529 | -0x3f 0x003f #QUESTION MARK |
4530 | -0x40 0x0040 #COMMERCIAL AT |
4531 | -0x41 0x0041 #LATIN CAPITAL LETTER A |
4532 | -0x42 0x0042 #LATIN CAPITAL LETTER B |
4533 | -0x43 0x0043 #LATIN CAPITAL LETTER C |
4534 | -0x44 0x0044 #LATIN CAPITAL LETTER D |
4535 | -0x45 0x0045 #LATIN CAPITAL LETTER E |
4536 | -0x46 0x0046 #LATIN CAPITAL LETTER F |
4537 | -0x47 0x0047 #LATIN CAPITAL LETTER G |
4538 | -0x48 0x0048 #LATIN CAPITAL LETTER H |
4539 | -0x49 0x0049 #LATIN CAPITAL LETTER I |
4540 | -0x4a 0x004a #LATIN CAPITAL LETTER J |
4541 | -0x4b 0x004b #LATIN CAPITAL LETTER K |
4542 | -0x4c 0x004c #LATIN CAPITAL LETTER L |
4543 | -0x4d 0x004d #LATIN CAPITAL LETTER M |
4544 | -0x4e 0x004e #LATIN CAPITAL LETTER N |
4545 | -0x4f 0x004f #LATIN CAPITAL LETTER O |
4546 | -0x50 0x0050 #LATIN CAPITAL LETTER P |
4547 | -0x51 0x0051 #LATIN CAPITAL LETTER Q |
4548 | -0x52 0x0052 #LATIN CAPITAL LETTER R |
4549 | -0x53 0x0053 #LATIN CAPITAL LETTER S |
4550 | -0x54 0x0054 #LATIN CAPITAL LETTER T |
4551 | -0x55 0x0055 #LATIN CAPITAL LETTER U |
4552 | -0x56 0x0056 #LATIN CAPITAL LETTER V |
4553 | -0x57 0x0057 #LATIN CAPITAL LETTER W |
4554 | -0x58 0x0058 #LATIN CAPITAL LETTER X |
4555 | -0x59 0x0059 #LATIN CAPITAL LETTER Y |
4556 | -0x5a 0x005a #LATIN CAPITAL LETTER Z |
4557 | -0x5b 0x005b #LEFT SQUARE BRACKET |
4558 | -0x5c 0x005c #REVERSE SOLIDUS |
4559 | -0x5d 0x005d #RIGHT SQUARE BRACKET |
4560 | -0x5e 0x005e #CIRCUMFLEX ACCENT |
4561 | -0x5f 0x005f #LOW LINE |
4562 | -0x60 0x0060 #GRAVE ACCENT |
4563 | -0x61 0x0061 #LATIN SMALL LETTER A |
4564 | -0x62 0x0062 #LATIN SMALL LETTER B |
4565 | -0x63 0x0063 #LATIN SMALL LETTER C |
4566 | -0x64 0x0064 #LATIN SMALL LETTER D |
4567 | -0x65 0x0065 #LATIN SMALL LETTER E |
4568 | -0x66 0x0066 #LATIN SMALL LETTER F |
4569 | -0x67 0x0067 #LATIN SMALL LETTER G |
4570 | -0x68 0x0068 #LATIN SMALL LETTER H |
4571 | -0x69 0x0069 #LATIN SMALL LETTER I |
4572 | -0x6a 0x006a #LATIN SMALL LETTER J |
4573 | -0x6b 0x006b #LATIN SMALL LETTER K |
4574 | -0x6c 0x006c #LATIN SMALL LETTER L |
4575 | -0x6d 0x006d #LATIN SMALL LETTER M |
4576 | -0x6e 0x006e #LATIN SMALL LETTER N |
4577 | -0x6f 0x006f #LATIN SMALL LETTER O |
4578 | -0x70 0x0070 #LATIN SMALL LETTER P |
4579 | -0x71 0x0071 #LATIN SMALL LETTER Q |
4580 | -0x72 0x0072 #LATIN SMALL LETTER R |
4581 | -0x73 0x0073 #LATIN SMALL LETTER S |
4582 | -0x74 0x0074 #LATIN SMALL LETTER T |
4583 | -0x75 0x0075 #LATIN SMALL LETTER U |
4584 | -0x76 0x0076 #LATIN SMALL LETTER V |
4585 | -0x77 0x0077 #LATIN SMALL LETTER W |
4586 | -0x78 0x0078 #LATIN SMALL LETTER X |
4587 | -0x79 0x0079 #LATIN SMALL LETTER Y |
4588 | -0x7a 0x007a #LATIN SMALL LETTER Z |
4589 | -0x7b 0x007b #LEFT CURLY BRACKET |
4590 | -0x7c 0x007c #VERTICAL LINE |
4591 | -0x7d 0x007d #RIGHT CURLY BRACKET |
4592 | -0x7e 0x007e #TILDE |
4593 | -0x7f 0x007f #DELETE |
4594 | -0x80 0x0391 #GREEK CAPITAL LETTER ALPHA |
4595 | -0x81 0x0392 #GREEK CAPITAL LETTER BETA |
4596 | -0x82 0x0393 #GREEK CAPITAL LETTER GAMMA |
4597 | -0x83 0x0394 #GREEK CAPITAL LETTER DELTA |
4598 | -0x84 0x0395 #GREEK CAPITAL LETTER EPSILON |
4599 | -0x85 0x0396 #GREEK CAPITAL LETTER ZETA |
4600 | -0x86 0x0397 #GREEK CAPITAL LETTER ETA |
4601 | -0x87 0x0398 #GREEK CAPITAL LETTER THETA |
4602 | -0x88 0x0399 #GREEK CAPITAL LETTER IOTA |
4603 | -0x89 0x039a #GREEK CAPITAL LETTER KAPPA |
4604 | -0x8a 0x039b #GREEK CAPITAL LETTER LAMDA |
4605 | -0x8b 0x039c #GREEK CAPITAL LETTER MU |
4606 | -0x8c 0x039d #GREEK CAPITAL LETTER NU |
4607 | -0x8d 0x039e #GREEK CAPITAL LETTER XI |
4608 | -0x8e 0x039f #GREEK CAPITAL LETTER OMICRON |
4609 | -0x8f 0x03a0 #GREEK CAPITAL LETTER PI |
4610 | -0x90 0x03a1 #GREEK CAPITAL LETTER RHO |
4611 | -0x91 0x03a3 #GREEK CAPITAL LETTER SIGMA |
4612 | -0x92 0x03a4 #GREEK CAPITAL LETTER TAU |
4613 | -0x93 0x03a5 #GREEK CAPITAL LETTER UPSILON |
4614 | -0x94 0x03a6 #GREEK CAPITAL LETTER PHI |
4615 | -0x95 0x03a7 #GREEK CAPITAL LETTER CHI |
4616 | -0x96 0x03a8 #GREEK CAPITAL LETTER PSI |
4617 | -0x97 0x03a9 #GREEK CAPITAL LETTER OMEGA |
4618 | -0x98 0x03b1 #GREEK SMALL LETTER ALPHA |
4619 | -0x99 0x03b2 #GREEK SMALL LETTER BETA |
4620 | -0x9a 0x03b3 #GREEK SMALL LETTER GAMMA |
4621 | -0x9b 0x03b4 #GREEK SMALL LETTER DELTA |
4622 | -0x9c 0x03b5 #GREEK SMALL LETTER EPSILON |
4623 | -0x9d 0x03b6 #GREEK SMALL LETTER ZETA |
4624 | -0x9e 0x03b7 #GREEK SMALL LETTER ETA |
4625 | -0x9f 0x03b8 #GREEK SMALL LETTER THETA |
4626 | -0xa0 0x03b9 #GREEK SMALL LETTER IOTA |
4627 | -0xa1 0x03ba #GREEK SMALL LETTER KAPPA |
4628 | -0xa2 0x03bb #GREEK SMALL LETTER LAMDA |
4629 | -0xa3 0x03bc #GREEK SMALL LETTER MU |
4630 | -0xa4 0x03bd #GREEK SMALL LETTER NU |
4631 | -0xa5 0x03be #GREEK SMALL LETTER XI |
4632 | -0xa6 0x03bf #GREEK SMALL LETTER OMICRON |
4633 | -0xa7 0x03c0 #GREEK SMALL LETTER PI |
4634 | -0xa8 0x03c1 #GREEK SMALL LETTER RHO |
4635 | -0xa9 0x03c3 #GREEK SMALL LETTER SIGMA |
4636 | -0xaa 0x03c2 #GREEK SMALL LETTER FINAL SIGMA |
4637 | -0xab 0x03c4 #GREEK SMALL LETTER TAU |
4638 | -0xac 0x03c5 #GREEK SMALL LETTER UPSILON |
4639 | -0xad 0x03c6 #GREEK SMALL LETTER PHI |
4640 | -0xae 0x03c7 #GREEK SMALL LETTER CHI |
4641 | -0xaf 0x03c8 #GREEK SMALL LETTER PSI |
4642 | -0xb0 0x2591 #LIGHT SHADE |
4643 | -0xb1 0x2592 #MEDIUM SHADE |
4644 | -0xb2 0x2593 #DARK SHADE |
4645 | -0xb3 0x2502 #BOX DRAWINGS LIGHT VERTICAL |
4646 | -0xb4 0x2524 #BOX DRAWINGS LIGHT VERTICAL AND LEFT |
4647 | -0xb5 0x2561 #BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE |
4648 | -0xb6 0x2562 #BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE |
4649 | -0xb7 0x2556 #BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE |
4650 | -0xb8 0x2555 #BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE |
4651 | -0xb9 0x2563 #BOX DRAWINGS DOUBLE VERTICAL AND LEFT |
4652 | -0xba 0x2551 #BOX DRAWINGS DOUBLE VERTICAL |
4653 | -0xbb 0x2557 #BOX DRAWINGS DOUBLE DOWN AND LEFT |
4654 | -0xbc 0x255d #BOX DRAWINGS DOUBLE UP AND LEFT |
4655 | -0xbd 0x255c #BOX DRAWINGS UP DOUBLE AND LEFT SINGLE |
4656 | -0xbe 0x255b #BOX DRAWINGS UP SINGLE AND LEFT DOUBLE |
4657 | -0xbf 0x2510 #BOX DRAWINGS LIGHT DOWN AND LEFT |
4658 | -0xc0 0x2514 #BOX DRAWINGS LIGHT UP AND RIGHT |
4659 | -0xc1 0x2534 #BOX DRAWINGS LIGHT UP AND HORIZONTAL |
4660 | -0xc2 0x252c #BOX DRAWINGS LIGHT DOWN AND HORIZONTAL |
4661 | -0xc3 0x251c #BOX DRAWINGS LIGHT VERTICAL AND RIGHT |
4662 | -0xc4 0x2500 #BOX DRAWINGS LIGHT HORIZONTAL |
4663 | -0xc5 0x253c #BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL |
4664 | -0xc6 0x255e #BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE |
4665 | -0xc7 0x255f #BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE |
4666 | -0xc8 0x255a #BOX DRAWINGS DOUBLE UP AND RIGHT |
4667 | -0xc9 0x2554 #BOX DRAWINGS DOUBLE DOWN AND RIGHT |
4668 | -0xca 0x2569 #BOX DRAWINGS DOUBLE UP AND HORIZONTAL |
4669 | -0xcb 0x2566 #BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL |
4670 | -0xcc 0x2560 #BOX DRAWINGS DOUBLE VERTICAL AND RIGHT |
4671 | -0xcd 0x2550 #BOX DRAWINGS DOUBLE HORIZONTAL |
4672 | -0xce 0x256c #BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL |
4673 | -0xcf 0x2567 #BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE |
4674 | -0xd0 0x2568 #BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE |
4675 | -0xd1 0x2564 #BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE |
4676 | -0xd2 0x2565 #BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE |
4677 | -0xd3 0x2559 #BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE |
4678 | -0xd4 0x2558 #BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE |
4679 | -0xd5 0x2552 #BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE |
4680 | -0xd6 0x2553 #BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE |
4681 | -0xd7 0x256b #BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE |
4682 | -0xd8 0x256a #BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE |
4683 | -0xd9 0x2518 #BOX DRAWINGS LIGHT UP AND LEFT |
4684 | -0xda 0x250c #BOX DRAWINGS LIGHT DOWN AND RIGHT |
4685 | -0xdb 0x2588 #FULL BLOCK |
4686 | -0xdc 0x2584 #LOWER HALF BLOCK |
4687 | -0xdd 0x258c #LEFT HALF BLOCK |
4688 | -0xde 0x2590 #RIGHT HALF BLOCK |
4689 | -0xdf 0x2580 #UPPER HALF BLOCK |
4690 | -0xe0 0x03c9 #GREEK SMALL LETTER OMEGA |
4691 | -0xe1 0x03ac #GREEK SMALL LETTER ALPHA WITH TONOS |
4692 | -0xe2 0x03ad #GREEK SMALL LETTER EPSILON WITH TONOS |
4693 | -0xe3 0x03ae #GREEK SMALL LETTER ETA WITH TONOS |
4694 | -0xe4 0x03ca #GREEK SMALL LETTER IOTA WITH DIALYTIKA |
4695 | -0xe5 0x03af #GREEK SMALL LETTER IOTA WITH TONOS |
4696 | -0xe6 0x03cc #GREEK SMALL LETTER OMICRON WITH TONOS |
4697 | -0xe7 0x03cd #GREEK SMALL LETTER UPSILON WITH TONOS |
4698 | -0xe8 0x03cb #GREEK SMALL LETTER UPSILON WITH DIALYTIKA |
4699 | -0xe9 0x03ce #GREEK SMALL LETTER OMEGA WITH TONOS |
4700 | -0xea 0x0386 #GREEK CAPITAL LETTER ALPHA WITH TONOS |
4701 | -0xeb 0x0388 #GREEK CAPITAL LETTER EPSILON WITH TONOS |
4702 | -0xec 0x0389 #GREEK CAPITAL LETTER ETA WITH TONOS |
4703 | -0xed 0x038a #GREEK CAPITAL LETTER IOTA WITH TONOS |
4704 | -0xee 0x038c #GREEK CAPITAL LETTER OMICRON WITH TONOS |
4705 | -0xef 0x038e #GREEK CAPITAL LETTER UPSILON WITH TONOS |
4706 | -0xf0 0x038f #GREEK CAPITAL LETTER OMEGA WITH TONOS |
4707 | -0xf1 0x00b1 #PLUS-MINUS SIGN |
4708 | -0xf2 0x2265 #GREATER-THAN OR EQUAL TO |
4709 | -0xf3 0x2264 #LESS-THAN OR EQUAL TO |
4710 | -0xf4 0x03aa #GREEK CAPITAL LETTER IOTA WITH DIALYTIKA |
4711 | -0xf5 0x03ab #GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA |
4712 | -0xf6 0x00f7 #DIVISION SIGN |
4713 | -0xf7 0x2248 #ALMOST EQUAL TO |
4714 | -0xf8 0x00b0 #DEGREE SIGN |
4715 | -0xf9 0x2219 #BULLET OPERATOR |
4716 | -0xfa 0x00b7 #MIDDLE DOT |
4717 | -0xfb 0x221a #SQUARE ROOT |
4718 | -0xfc 0x207f #SUPERSCRIPT LATIN SMALL LETTER N |
4719 | -0xfd 0x00b2 #SUPERSCRIPT TWO |
4720 | -0xfe 0x25a0 #BLACK SQUARE |
4721 | -0xff 0x00a0 #NO-BREAK SPACE |
4722 | - |
4723 | |
4724 | * The contents of this file are subject to the Interbase Public |
4725 | * License Version 1.0 (the "License"); you may not use this file |
4726 | diff --git a/src/intl/charsets/cs_775.h b/src/intl/charsets/cs_775.h |
4727 | index f0eb0bb..d387ff0 100644 |
4728 | --- a/src/intl/charsets/cs_775.h |
4729 | +++ b/src/intl/charsets/cs_775.h |
4730 | @@ -3,274 +3,8 @@ |
4731 | |
4732 | Unicode mapping table generated from java mapping and UnicodeData.txt |
4733 | |
4734 | -# |
4735 | # Name: Cp775 to Unicode table |
4736 | # Unicode version: Java 1.3 |
4737 | -# |
4738 | -# Format: Three tab-separated columns |
4739 | -# Column #1 is the Cp775 code (in hex) |
4740 | -# Column #2 is the Unicode (in hex as 0xXXXX) |
4741 | -# Column #3 is the Unicode name (follows a comment sign, '#') |
4742 | -# |
4743 | -# The entries are in Cp775 order |
4744 | -# |
4745 | -0x00 0x0000 #NULL |
4746 | -0x01 0x0001 #START OF HEADING |
4747 | -0x02 0x0002 #START OF TEXT |
4748 | -0x03 0x0003 #END OF TEXT |
4749 | -0x04 0x0004 #END OF TRANSMISSION |
4750 | -0x05 0x0005 #ENQUIRY |
4751 | -0x06 0x0006 #ACKNOWLEDGE |
4752 | -0x07 0x0007 #BELL |
4753 | -0x08 0x0008 #BACKSPACE |
4754 | -0x09 0x0009 #CHARACTER TABULATION |
4755 | -0x0a 0x000a #LINE FEED (LF) |
4756 | -0x0b 0x000b #LINE TABULATION |
4757 | -0x0c 0x000c #FORM FEED (FF) |
4758 | -0x0d 0x000d #CARRIAGE RETURN (CR) |
4759 | -0x0e 0x000e #SHIFT OUT |
4760 | -0x0f 0x000f #SHIFT IN |
4761 | -0x10 0x0010 #DATA LINK ESCAPE |
4762 | -0x11 0x0011 #DEVICE CONTROL ONE |
4763 | -0x12 0x0012 #DEVICE CONTROL TWO |
4764 | -0x13 0x0013 #DEVICE CONTROL THREE |
4765 | -0x14 0x0014 #DEVICE CONTROL FOUR |
4766 | -0x15 0x0015 #NEGATIVE ACKNOWLEDGE |
4767 | -0x16 0x0016 #SYNCHRONOUS IDLE |
4768 | -0x17 0x0017 #END OF TRANSMISSION BLOCK |
4769 | -0x18 0x0018 #CANCEL |
4770 | -0x19 0x0019 #END OF MEDIUM |
4771 | -0x1a 0x001a #SUBSTITUTE |
4772 | -0x1b 0x001b #ESCAPE |
4773 | -0x1c 0x001c #INFORMATION SEPARATOR FOUR |
4774 | -0x1d 0x001d #INFORMATION SEPARATOR THREE |
4775 | -0x1e 0x001e #INFORMATION SEPARATOR TWO |
4776 | -0x1f 0x001f #INFORMATION SEPARATOR ONE |
4777 | -0x20 0x0020 #SPACE |
4778 | -0x21 0x0021 #EXCLAMATION MARK |
4779 | -0x22 0x0022 #QUOTATION MARK |
4780 | -0x23 0x0023 #NUMBER SIGN |
4781 | -0x24 0x0024 #DOLLAR SIGN |
4782 | -0x25 0x0025 #PERCENT SIGN |
4783 | -0x26 0x0026 #AMPERSAND |
4784 | -0x27 0x0027 #APOSTROPHE |
4785 | -0x28 0x0028 #LEFT PARENTHESIS |
4786 | -0x29 0x0029 #RIGHT PARENTHESIS |
4787 | -0x2a 0x002a #ASTERISK |
4788 | -0x2b 0x002b #PLUS SIGN |
4789 | -0x2c 0x002c #COMMA |
4790 | -0x2d 0x002d #HYPHEN-MINUS |
4791 | -0x2e 0x002e #FULL STOP |
4792 | -0x2f 0x002f #SOLIDUS |
4793 | -0x30 0x0030 #DIGIT ZERO |
4794 | -0x31 0x0031 #DIGIT ONE |
4795 | -0x32 0x0032 #DIGIT TWO |
4796 | -0x33 0x0033 #DIGIT THREE |
4797 | -0x34 0x0034 #DIGIT FOUR |
4798 | -0x35 0x0035 #DIGIT FIVE |
4799 | -0x36 0x0036 #DIGIT SIX |
4800 | -0x37 0x0037 #DIGIT SEVEN |
4801 | -0x38 0x0038 #DIGIT EIGHT |
4802 | -0x39 0x0039 #DIGIT NINE |
4803 | -0x3a 0x003a #COLON |
4804 | -0x3b 0x003b #SEMICOLON |
4805 | -0x3c 0x003c #LESS-THAN SIGN |
4806 | -0x3d 0x003d #EQUALS SIGN |
4807 | -0x3e 0x003e #GREATER-THAN SIGN |
4808 | -0x3f 0x003f #QUESTION MARK |
4809 | -0x40 0x0040 #COMMERCIAL AT |
4810 | -0x41 0x0041 #LATIN CAPITAL LETTER A |
4811 | -0x42 0x0042 #LATIN CAPITAL LETTER B |
4812 | -0x43 0x0043 #LATIN CAPITAL LETTER C |
4813 | -0x44 0x0044 #LATIN CAPITAL LETTER D |
4814 | -0x45 0x0045 #LATIN CAPITAL LETTER E |
4815 | -0x46 0x0046 #LATIN CAPITAL LETTER F |
4816 | -0x47 0x0047 #LATIN CAPITAL LETTER G |
4817 | -0x48 0x0048 #LATIN CAPITAL LETTER H |
4818 | -0x49 0x0049 #LATIN CAPITAL LETTER I |
4819 | -0x4a 0x004a #LATIN CAPITAL LETTER J |
4820 | -0x4b 0x004b #LATIN CAPITAL LETTER K |
4821 | -0x4c 0x004c #LATIN CAPITAL LETTER L |
4822 | -0x4d 0x004d #LATIN CAPITAL LETTER M |
4823 | -0x4e 0x004e #LATIN CAPITAL LETTER N |
4824 | -0x4f 0x004f #LATIN CAPITAL LETTER O |
4825 | -0x50 0x0050 #LATIN CAPITAL LETTER P |
4826 | -0x51 0x0051 #LATIN CAPITAL LETTER Q |
4827 | -0x52 0x0052 #LATIN CAPITAL LETTER R |
4828 | -0x53 0x0053 #LATIN CAPITAL LETTER S |
4829 | -0x54 0x0054 #LATIN CAPITAL LETTER T |
4830 | -0x55 0x0055 #LATIN CAPITAL LETTER U |
4831 | -0x56 0x0056 #LATIN CAPITAL LETTER V |
4832 | -0x57 0x0057 #LATIN CAPITAL LETTER W |
4833 | -0x58 0x0058 #LATIN CAPITAL LETTER X |
4834 | -0x59 0x0059 #LATIN CAPITAL LETTER Y |
4835 | -0x5a 0x005a #LATIN CAPITAL LETTER Z |
4836 | -0x5b 0x005b #LEFT SQUARE BRACKET |
4837 | -0x5c 0x005c #REVERSE SOLIDUS |
4838 | -0x5d 0x005d #RIGHT SQUARE BRACKET |
4839 | -0x5e 0x005e #CIRCUMFLEX ACCENT |
4840 | -0x5f 0x005f #LOW LINE |
4841 | -0x60 0x0060 #GRAVE ACCENT |
4842 | -0x61 0x0061 #LATIN SMALL LETTER A |
4843 | -0x62 0x0062 #LATIN SMALL LETTER B |
4844 | -0x63 0x0063 #LATIN SMALL LETTER C |
4845 | -0x64 0x0064 #LATIN SMALL LETTER D |
4846 | -0x65 0x0065 #LATIN SMALL LETTER E |
4847 | -0x66 0x0066 #LATIN SMALL LETTER F |
4848 | -0x67 0x0067 #LATIN SMALL LETTER G |
4849 | -0x68 0x0068 #LATIN SMALL LETTER H |
4850 | -0x69 0x0069 #LATIN SMALL LETTER I |
4851 | -0x6a 0x006a #LATIN SMALL LETTER J |
4852 | -0x6b 0x006b #LATIN SMALL LETTER K |
4853 | -0x6c 0x006c #LATIN SMALL LETTER L |
4854 | -0x6d 0x006d #LATIN SMALL LETTER M |
4855 | -0x6e 0x006e #LATIN SMALL LETTER N |
4856 | -0x6f 0x006f #LATIN SMALL LETTER O |
4857 | -0x70 0x0070 #LATIN SMALL LETTER P |
4858 | -0x71 0x0071 #LATIN SMALL LETTER Q |
4859 | -0x72 0x0072 #LATIN SMALL LETTER R |
4860 | -0x73 0x0073 #LATIN SMALL LETTER S |
4861 | -0x74 0x0074 #LATIN SMALL LETTER T |
4862 | -0x75 0x0075 #LATIN SMALL LETTER U |
4863 | -0x76 0x0076 #LATIN SMALL LETTER V |
4864 | -0x77 0x0077 #LATIN SMALL LETTER W |
4865 | -0x78 0x0078 #LATIN SMALL LETTER X |
4866 | -0x79 0x0079 #LATIN SMALL LETTER Y |
4867 | -0x7a 0x007a #LATIN SMALL LETTER Z |
4868 | -0x7b 0x007b #LEFT CURLY BRACKET |
4869 | -0x7c 0x007c #VERTICAL LINE |
4870 | -0x7d 0x007d #RIGHT CURLY BRACKET |
4871 | -0x7e 0x007e #TILDE |
4872 | -0x7f 0x007f #DELETE |
4873 | -0x80 0x0106 #LATIN CAPITAL LETTER C WITH ACUTE |
4874 | -0x81 0x00fc #LATIN SMALL LETTER U WITH DIAERESIS |
4875 | -0x82 0x00e9 #LATIN SMALL LETTER E WITH ACUTE |
4876 | -0x83 0x0101 #LATIN SMALL LETTER A WITH MACRON |
4877 | -0x84 0x00e4 #LATIN SMALL LETTER A WITH DIAERESIS |
4878 | -0x85 0x0123 #LATIN SMALL LETTER G WITH CEDILLA |
4879 | -0x86 0x00e5 #LATIN SMALL LETTER A WITH RING ABOVE |
4880 | -0x87 0x0107 #LATIN SMALL LETTER C WITH ACUTE |
4881 | -0x88 0x0142 #LATIN SMALL LETTER L WITH STROKE |
4882 | -0x89 0x0113 #LATIN SMALL LETTER E WITH MACRON |
4883 | -0x8a 0x0156 #LATIN CAPITAL LETTER R WITH CEDILLA |
4884 | -0x8b 0x0157 #LATIN SMALL LETTER R WITH CEDILLA |
4885 | -0x8c 0x012b #LATIN SMALL LETTER I WITH MACRON |
4886 | -0x8d 0x0179 #LATIN CAPITAL LETTER Z WITH ACUTE |
4887 | -0x8e 0x00c4 #LATIN CAPITAL LETTER A WITH DIAERESIS |
4888 | -0x8f 0x00c5 #LATIN CAPITAL LETTER A WITH RING ABOVE |
4889 | -0x90 0x00c9 #LATIN CAPITAL LETTER E WITH ACUTE |
4890 | -0x91 0x00e6 #LATIN SMALL LETTER AE |
4891 | -0x92 0x00c6 #LATIN CAPITAL LETTER AE |
4892 | -0x93 0x014d #LATIN SMALL LETTER O WITH MACRON |
4893 | -0x94 0x00f6 #LATIN SMALL LETTER O WITH DIAERESIS |
4894 | -0x95 0x0122 #LATIN CAPITAL LETTER G WITH CEDILLA |
4895 | -0x96 0x00a2 #CENT SIGN |
4896 | -0x97 0x015a #LATIN CAPITAL LETTER S WITH ACUTE |
4897 | -0x98 0x015b #LATIN SMALL LETTER S WITH ACUTE |
4898 | -0x99 0x00d6 #LATIN CAPITAL LETTER O WITH DIAERESIS |
4899 | -0x9a 0x00dc #LATIN CAPITAL LETTER U WITH DIAERESIS |
4900 | -0x9b 0x00f8 #LATIN SMALL LETTER O WITH STROKE |
4901 | -0x9c 0x00a3 #POUND SIGN |
4902 | -0x9d 0x00d8 #LATIN CAPITAL LETTER O WITH STROKE |
4903 | -0x9e 0x00d7 #MULTIPLICATION SIGN |
4904 | -0x9f 0x00a4 #CURRENCY SIGN |
4905 | -0xa0 0x0100 #LATIN CAPITAL LETTER A WITH MACRON |
4906 | -0xa1 0x012a #LATIN CAPITAL LETTER I WITH MACRON |
4907 | -0xa2 0x00f3 #LATIN SMALL LETTER O WITH ACUTE |
4908 | -0xa3 0x017b #LATIN CAPITAL LETTER Z WITH DOT ABOVE |
4909 | -0xa4 0x017c #LATIN SMALL LETTER Z WITH DOT ABOVE |
4910 | -0xa5 0x017a #LATIN SMALL LETTER Z WITH ACUTE |
4911 | -0xa6 0x201d #RIGHT DOUBLE QUOTATION MARK |
4912 | -0xa7 0x00a6 #BROKEN BAR |
4913 | -0xa8 0x00a9 #COPYRIGHT SIGN |
4914 | -0xa9 0x00ae #REGISTERED SIGN |
4915 | -0xaa 0x00ac #NOT SIGN |
4916 | -0xab 0x00bd #VULGAR FRACTION ONE HALF |
4917 | -0xac 0x00bc #VULGAR FRACTION ONE QUARTER |
4918 | -0xad 0x0141 #LATIN CAPITAL LETTER L WITH STROKE |
4919 | -0xae 0x00ab #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK |
4920 | -0xaf 0x00bb #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK |
4921 | -0xb0 0x2591 #LIGHT SHADE |
4922 | -0xb1 0x2592 #MEDIUM SHADE |
4923 | -0xb2 0x2593 #DARK SHADE |
4924 | -0xb3 0x2502 #BOX DRAWINGS LIGHT VERTICAL |
4925 | -0xb4 0x2524 #BOX DRAWINGS LIGHT VERTICAL AND LEFT |
4926 | -0xb5 0x0104 #LATIN CAPITAL LETTER A WITH OGONEK |
4927 | -0xb6 0x010c #LATIN CAPITAL LETTER C WITH CARON |
4928 | -0xb7 0x0118 #LATIN CAPITAL LETTER E WITH OGONEK |
4929 | -0xb8 0x0116 #LATIN CAPITAL LETTER E WITH DOT ABOVE |
4930 | -0xb9 0x2563 #BOX DRAWINGS DOUBLE VERTICAL AND LEFT |
4931 | -0xba 0x2551 #BOX DRAWINGS DOUBLE VERTICAL |
4932 | -0xbb 0x2557 #BOX DRAWINGS DOUBLE DOWN AND LEFT |
4933 | -0xbc 0x255d #BOX DRAWINGS DOUBLE UP AND LEFT |
4934 | -0xbd 0x012e #LATIN CAPITAL LETTER I WITH OGONEK |
4935 | -0xbe 0x0160 #LATIN CAPITAL LETTER S WITH CARON |
4936 | -0xbf 0x2510 #BOX DRAWINGS LIGHT DOWN AND LEFT |
4937 | -0xc0 0x2514 #BOX DRAWINGS LIGHT UP AND RIGHT |
4938 | -0xc1 0x2534 #BOX DRAWINGS LIGHT UP AND HORIZONTAL |
4939 | -0xc2 0x252c #BOX DRAWINGS LIGHT DOWN AND HORIZONTAL |
4940 | -0xc3 0x251c #BOX DRAWINGS LIGHT VERTICAL AND RIGHT |
4941 | -0xc4 0x2500 #BOX DRAWINGS LIGHT HORIZONTAL |
4942 | -0xc5 0x253c #BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL |
4943 | -0xc6 0x0172 #LATIN CAPITAL LETTER U WITH OGONEK |
4944 | -0xc7 0x016a #LATIN CAPITAL LETTER U WITH MACRON |
4945 | -0xc8 0x255a #BOX DRAWINGS DOUBLE UP AND RIGHT |
4946 | -0xc9 0x2554 #BOX DRAWINGS DOUBLE DOWN AND RIGHT |
4947 | -0xca 0x2569 #BOX DRAWINGS DOUBLE UP AND HORIZONTAL |
4948 | -0xcb 0x2566 #BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL |
4949 | -0xcc 0x2560 #BOX DRAWINGS DOUBLE VERTICAL AND RIGHT |
4950 | -0xcd 0x2550 #BOX DRAWINGS DOUBLE HORIZONTAL |
4951 | -0xce 0x256c #BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL |
4952 | -0xcf 0x017d #LATIN CAPITAL LETTER Z WITH CARON |
4953 | -0xd0 0x0105 #LATIN SMALL LETTER A WITH OGONEK |
4954 | -0xd1 0x010d #LATIN SMALL LETTER C WITH CARON |
4955 | -0xd2 0x0119 #LATIN SMALL LETTER E WITH OGONEK |
4956 | -0xd3 0x0117 #LATIN SMALL LETTER E WITH DOT ABOVE |
4957 | -0xd4 0x012f #LATIN SMALL LETTER I WITH OGONEK |
4958 | -0xd5 0x0161 #LATIN SMALL LETTER S WITH CARON |
4959 | -0xd6 0x0173 #LATIN SMALL LETTER U WITH OGONEK |
4960 | -0xd7 0x016b #LATIN SMALL LETTER U WITH MACRON |
4961 | -0xd8 0x017e #LATIN SMALL LETTER Z WITH CARON |
4962 | -0xd9 0x2518 #BOX DRAWINGS LIGHT UP AND LEFT |
4963 | -0xda 0x250c #BOX DRAWINGS LIGHT DOWN AND RIGHT |
4964 | -0xdb 0x2588 #FULL BLOCK |
4965 | -0xdc 0x2584 #LOWER HALF BLOCK |
4966 | -0xdd 0x258c #LEFT HALF BLOCK |
4967 | -0xde 0x2590 #RIGHT HALF BLOCK |
4968 | -0xdf 0x2580 #UPPER HALF BLOCK |
4969 | -0xe0 0x00d3 #LATIN CAPITAL LETTER O WITH ACUTE |
4970 | -0xe1 0x00df #LATIN SMALL LETTER SHARP S |
4971 | -0xe2 0x014c #LATIN CAPITAL LETTER O WITH MACRON |
4972 | -0xe3 0x0143 #LATIN CAPITAL LETTER N WITH ACUTE |
4973 | -0xe4 0x00f5 #LATIN SMALL LETTER O WITH TILDE |
4974 | -0xe5 0x00d5 #LATIN CAPITAL LETTER O WITH TILDE |
4975 | -0xe6 0x00b5 #MICRO SIGN |
4976 | -0xe7 0x0144 #LATIN SMALL LETTER N WITH ACUTE |
4977 | -0xe8 0x0136 #LATIN CAPITAL LETTER K WITH CEDILLA |
4978 | -0xe9 0x0137 #LATIN SMALL LETTER K WITH CEDILLA |
4979 | -0xea 0x013b #LATIN CAPITAL LETTER L WITH CEDILLA |
4980 | -0xeb 0x013c #LATIN SMALL LETTER L WITH CEDILLA |
4981 | -0xec 0x0146 #LATIN SMALL LETTER N WITH CEDILLA |
4982 | -0xed 0x0112 #LATIN CAPITAL LETTER E WITH MACRON |
4983 | -0xee 0x0145 #LATIN CAPITAL LETTER N WITH CEDILLA |
4984 | -0xef 0x2019 #RIGHT SINGLE QUOTATION MARK |
4985 | -0xf0 0x00ad #SOFT HYPHEN |
4986 | -0xf1 0x00b1 #PLUS-MINUS SIGN |
4987 | -0xf2 0x201c #LEFT DOUBLE QUOTATION MARK |
4988 | -0xf3 0x00be #VULGAR FRACTION THREE QUARTERS |
4989 | -0xf4 0x00b6 #PILCROW SIGN |
4990 | -0xf5 0x00a7 #SECTION SIGN |
4991 | -0xf6 0x00f7 #DIVISION SIGN |
4992 | -0xf7 0x201e #DOUBLE LOW-9 QUOTATION MARK |
4993 | -0xf8 0x00b0 #DEGREE SIGN |
4994 | -0xf9 0x2219 #BULLET OPERATOR |
4995 | -0xfa 0x00b7 #MIDDLE DOT |
4996 | -0xfb 0x00b9 #SUPERSCRIPT ONE |
4997 | -0xfc 0x00b3 #SUPERSCRIPT THREE |
4998 | -0xfd 0x00b2 #SUPERSCRIPT TWO |
4999 | -0xfe 0x25a0 #BLACK SQUARE |
5000 | -0xff 0x00a0 #NO-BREAK SPACE |
The diff has been truncated for viewing.