transactd 1.2.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/BUILD_UNIX-JA +46 -67
- data/BUILD_WIN-JA +106 -63
- data/CMakeLists.txt +40 -15
- data/README +219 -75
- data/README-JA +207 -76
- data/README_ORMSRCGEN +118 -0
- data/README_ORMSRCGEN-JA +115 -0
- data/bin/common/tdclc_32_2_0.dll +0 -0
- data/bin/common/tdclc_64_2_0.dll +0 -0
- data/build/common/check_for_link_iconv.cmake +18 -14
- data/build/common/create_symlink.cmake.in +25 -0
- data/build/common/get_boost_libs.cmake +23 -23
- data/build/common/options.cmake +0 -66
- data/build/common/smart_install.cmake +3 -3
- data/build/common/transactd.rc.in +15 -5
- data/build/common/transactd_cl_common.cmake +37 -18
- data/build/common/transactd_cl_output.cmake +55 -13
- data/build/common/transactd_common.cmake +108 -31
- data/build/swig/php/generate.cmake.in +15 -17
- data/build/swig/php/generate.cmd.in +15 -9
- data/build/swig/php/php.swg +124 -82
- data/build/swig/php/transactd.no_yield.php +4494 -0
- data/build/swig/php/transactd.no_yield.php.git.patch +685 -0
- data/build/swig/php/transactd.no_yield.php.patch +685 -0
- data/build/swig/php/transactd.yield.php +4461 -0
- data/build/swig/php/transactd.yield.php.git.patch +652 -0
- data/build/swig/php/transactd.yield.php.patch +652 -0
- data/build/swig/referencecounter.h +79 -0
- data/build/swig/ruby/ruby.swg +226 -76
- data/build/swig/ruby/threadBlockRegionWrapper.h +71 -0
- data/build/swig/ruby/without_gvl.swg +87 -0
- data/build/swig/tdcl.i +659 -170
- data/build/swig/validatablepointer.h +91 -0
- data/build/tdclc/CMakeLists.txt +49 -34
- data/build/tdclc/{tdclc_64.cbproj → tdclc.cbproj} +65 -20
- data/build/tdclc/tdclc.rc +0 -0
- data/build/tdclcpp/CMakeLists.txt +84 -20
- data/build/tdclcpp/tdclcpp.rc +0 -0
- data/build/tdclcpp/{tdclcpp_bcb_64.cbproj → tdclcpp_bc.cbproj} +168 -44
- data/build/tdclrb/CMakeLists.txt +84 -66
- data/build/tdclrb/bldgem/extconf.rb +28 -3
- data/build/tdclrb/gem/helper.rb +11 -1
- data/build/tdclrb/gem_output.cmake +20 -16
- data/index_ja.html +15 -0
- data/source/bzs/db/IBlobBuffer.h +15 -17
- data/source/bzs/db/blobBuffer.h +186 -140
- data/source/bzs/db/blobStructs.h +37 -37
- data/source/bzs/db/engine/mysql/IReadRecords.h +34 -34
- data/source/bzs/db/engine/mysql/bookmark.h +150 -147
- data/source/bzs/db/engine/mysql/database.cpp +1721 -1526
- data/source/bzs/db/engine/mysql/database.h +608 -370
- data/source/bzs/db/engine/mysql/dbManager.cpp +213 -201
- data/source/bzs/db/engine/mysql/dbManager.h +115 -104
- data/source/bzs/db/engine/mysql/errorMessage.cpp +49 -50
- data/source/bzs/db/engine/mysql/errorMessage.h +25 -26
- data/source/bzs/db/engine/mysql/fieldAccess.h +55 -61
- data/source/bzs/db/engine/mysql/mydebuglog.cpp +326 -292
- data/source/bzs/db/engine/mysql/mydebuglog.h +63 -55
- data/source/bzs/db/engine/mysql/mysqlInternal.h +182 -125
- data/source/bzs/db/engine/mysql/mysqlThd.cpp +121 -121
- data/source/bzs/db/engine/mysql/mysqlThd.h +20 -20
- data/source/bzs/db/engine/mysql/percentageKey.h +241 -228
- data/source/bzs/db/protocol/ICommandExecuter.h +18 -17
- data/source/bzs/db/protocol/hs/hsCommandExecuter.cpp +543 -514
- data/source/bzs/db/protocol/hs/hsCommandExecuter.h +155 -158
- data/source/bzs/db/protocol/tdap/btrDate.cpp +213 -180
- data/source/bzs/db/protocol/tdap/btrDate.h +39 -37
- data/source/bzs/db/protocol/tdap/client/activeTable.cpp +173 -0
- data/source/bzs/db/protocol/tdap/client/activeTable.h +165 -0
- data/source/bzs/db/protocol/tdap/client/activeTableImple.h +370 -0
- data/source/bzs/db/protocol/tdap/client/bulkInsert.h +13 -23
- data/source/bzs/db/protocol/tdap/client/client.cpp +81 -68
- data/source/bzs/db/protocol/tdap/client/client.h +361 -320
- data/source/bzs/db/protocol/tdap/client/connMgr.cpp +17 -22
- data/source/bzs/db/protocol/tdap/client/connMgr.h +17 -19
- data/source/bzs/db/protocol/tdap/client/connectionPool.cpp +243 -0
- data/source/bzs/db/protocol/tdap/client/connectionPool.h +109 -0
- data/source/bzs/db/protocol/tdap/client/database.cpp +327 -219
- data/source/bzs/db/protocol/tdap/client/database.h +141 -118
- data/source/bzs/db/protocol/tdap/client/databaseFactory.cpp +60 -62
- data/source/bzs/db/protocol/tdap/client/databaseManager.h +255 -0
- data/source/bzs/db/protocol/tdap/client/dbDef.cpp +315 -202
- data/source/bzs/db/protocol/tdap/client/dbDef.h +40 -32
- data/source/bzs/db/protocol/tdap/client/dllmain.cpp +390 -371
- data/source/bzs/db/protocol/tdap/client/errorMessage.cpp +148 -56
- data/source/bzs/db/protocol/tdap/client/errorMessage_ja.cpp +149 -57
- data/source/bzs/db/protocol/tdap/client/export.h +35 -0
- data/source/bzs/db/protocol/tdap/client/field.cpp +1985 -0
- data/source/bzs/db/protocol/tdap/client/field.h +393 -0
- data/source/bzs/db/protocol/tdap/client/fieldDDF.cpp +14 -14
- data/source/bzs/db/protocol/tdap/client/fieldDDF.h +11 -14
- data/source/bzs/db/protocol/tdap/client/fieldNameAlias.cpp +123 -0
- data/source/bzs/db/protocol/tdap/client/fieldNameAlias.h +58 -0
- data/source/bzs/db/protocol/tdap/client/fields.h +178 -0
- data/source/bzs/db/protocol/tdap/client/fileDDF.cpp +13 -16
- data/source/bzs/db/protocol/tdap/client/fileDDF.h +11 -17
- data/source/bzs/db/protocol/tdap/client/filter.h +423 -259
- data/source/bzs/db/protocol/tdap/client/groupComp.h +117 -0
- data/source/bzs/db/protocol/tdap/client/groupQuery.cpp +818 -0
- data/source/bzs/db/protocol/tdap/client/groupQuery.h +281 -0
- data/source/bzs/db/protocol/tdap/client/indexDDF.cpp +14 -17
- data/source/bzs/db/protocol/tdap/client/indexDDF.h +11 -14
- data/source/bzs/db/protocol/tdap/client/memRecord.cpp +231 -0
- data/source/bzs/db/protocol/tdap/client/memRecord.h +145 -0
- data/source/bzs/db/protocol/tdap/client/memRecordset.cpp +448 -0
- data/source/bzs/db/protocol/tdap/client/memRecordset.h +159 -0
- data/source/bzs/db/protocol/tdap/client/nsDatabase.cpp +300 -173
- data/source/bzs/db/protocol/tdap/client/nsDatabase.h +53 -36
- data/source/bzs/db/protocol/tdap/client/nsTable.cpp +171 -128
- data/source/bzs/db/protocol/tdap/client/nsTable.h +121 -87
- data/source/bzs/db/protocol/tdap/client/pooledDatabaseManager.h +173 -0
- data/source/bzs/db/protocol/tdap/client/recordset.cpp +209 -0
- data/source/bzs/db/protocol/tdap/client/recordset.h +86 -0
- data/source/bzs/db/protocol/tdap/client/recordsetImple.h +596 -0
- data/source/bzs/db/protocol/tdap/client/request.h +227 -170
- data/source/bzs/db/protocol/tdap/client/serializer.cpp +1288 -0
- data/source/bzs/db/protocol/tdap/client/serializer.h +295 -0
- data/source/bzs/db/protocol/tdap/client/sharedData.cpp +9 -12
- data/source/bzs/db/protocol/tdap/client/sharedData.h +18 -16
- data/source/bzs/db/protocol/tdap/client/sqlBuilder.cpp +494 -473
- data/source/bzs/db/protocol/tdap/client/sqlBuilder.h +51 -53
- data/source/bzs/db/protocol/tdap/client/stringConverter.h +214 -148
- data/source/bzs/db/protocol/tdap/client/table.cpp +929 -1665
- data/source/bzs/db/protocol/tdap/client/table.h +413 -87
- data/source/bzs/db/protocol/tdap/client/trdboostapi.h +642 -534
- data/source/bzs/db/protocol/tdap/client/trdboostapiInternal.h +25 -40
- data/source/bzs/db/protocol/tdap/client/trdclcppautolink.h +11 -15
- data/source/bzs/db/protocol/tdap/client/trdormapi.h +378 -437
- data/source/bzs/db/protocol/tdap/client/trnsctcl.def +1 -1
- data/source/bzs/db/protocol/tdap/fieldComp.h +127 -0
- data/source/bzs/db/protocol/tdap/myDateTime.cpp +352 -345
- data/source/bzs/db/protocol/tdap/mysql/characterset.cpp +75 -78
- data/source/bzs/db/protocol/tdap/mysql/characterset.h +18 -19
- data/source/bzs/db/protocol/tdap/mysql/databaseSchema.cpp +216 -199
- data/source/bzs/db/protocol/tdap/mysql/databaseSchema.h +23 -14
- data/source/bzs/db/protocol/tdap/mysql/debuglog.cpp +354 -314
- data/source/bzs/db/protocol/tdap/mysql/debuglog.h +57 -47
- data/source/bzs/db/protocol/tdap/mysql/recordsetReader.h +905 -739
- data/source/bzs/db/protocol/tdap/mysql/request.h +152 -159
- data/source/bzs/db/protocol/tdap/mysql/tdapCommandExecuter.cpp +1044 -879
- data/source/bzs/db/protocol/tdap/mysql/tdapCommandExecuter.h +87 -81
- data/source/bzs/db/protocol/tdap/tdapRequest.h +162 -130
- data/source/bzs/db/protocol/tdap/tdapSchema.cpp +368 -166
- data/source/bzs/db/protocol/tdap/tdapSchema.h +702 -566
- data/source/bzs/db/protocol/tdap/tdapcapi.h +387 -353
- data/source/bzs/db/transactd/appBuilderImple.h +21 -20
- data/source/bzs/db/transactd/appModule.cpp +350 -98
- data/source/bzs/db/transactd/appModule.h +31 -37
- data/source/bzs/db/transactd/connManager.cpp +138 -135
- data/source/bzs/db/transactd/connManager.h +28 -21
- data/source/bzs/db/transactd/connectionRecord.h +39 -39
- data/source/bzs/db/transactd/transactd.cpp +217 -203
- data/source/bzs/env/boost_bcb_link.h +131 -0
- data/source/bzs/env/compiler.h +136 -79
- data/source/bzs/env/crosscompile.cpp +57 -57
- data/source/bzs/env/crosscompile.h +130 -115
- data/source/bzs/env/fileopen.h +7 -8
- data/source/bzs/env/mbcswchrLinux.cpp +4 -9
- data/source/bzs/env/mbcswchrLinux.h +37 -34
- data/source/bzs/env/tcharMinGW.h +59 -0
- data/source/bzs/env/tstring.h +90 -95
- data/source/bzs/example/changeSchema.cpp +22 -23
- data/source/bzs/example/changeSchema_c.cpp +22 -24
- data/source/bzs/example/connection_pool_c.cpp +49 -104
- data/source/bzs/example/createDatabase.cpp +40 -47
- data/source/bzs/example/createDatabase_c.cpp +38 -43
- data/source/bzs/example/deleteRecords.cpp +10 -15
- data/source/bzs/example/deleteRecords_c.cpp +10 -14
- data/source/bzs/example/dropDatabase.cpp +3 -9
- data/source/bzs/example/dropDatabase_c.cpp +5 -6
- data/source/bzs/example/insertRecords.cpp +37 -29
- data/source/bzs/example/insertRecords_c.cpp +19 -25
- data/source/bzs/example/ormap_c.cpp +621 -0
- data/source/bzs/example/queryData.cpp +371 -0
- data/source/bzs/example/queryData.h +16 -0
- data/source/bzs/example/query_c.cpp +109 -0
- data/source/bzs/example/readRecords.cpp +27 -27
- data/source/bzs/example/readRecords_c.cpp +25 -23
- data/source/bzs/example/updateRecords.cpp +16 -21
- data/source/bzs/example/updateRecords_c.cpp +8 -12
- data/source/bzs/example/update_with_transaction.cpp +21 -24
- data/source/bzs/example/update_with_transaction_c.cpp +12 -15
- data/source/bzs/example/useORMRecord.cpp +177 -0
- data/source/bzs/netsvc/client/tcpClient.cpp +167 -156
- data/source/bzs/netsvc/client/tcpClient.h +541 -489
- data/source/bzs/netsvc/server/IAppModule.h +119 -32
- data/source/bzs/netsvc/server/iserver.h +21 -23
- data/source/bzs/netsvc/server/serverCpt.cpp +421 -391
- data/source/bzs/netsvc/server/serverCpt.h +41 -43
- data/source/bzs/netsvc/server/serverPipe.cpp +580 -565
- data/source/bzs/netsvc/server/serverPipe.h +44 -45
- data/source/bzs/netsvc/server/serverTpool.cpp +333 -303
- data/source/bzs/netsvc/server/serverTpool.h +38 -43
- data/source/bzs/rtl/benchmark.cpp +91 -31
- data/source/bzs/rtl/benchmark.h +76 -22
- data/source/bzs/rtl/datetime.cpp +231 -233
- data/source/bzs/rtl/datetime.h +16 -16
- data/source/bzs/rtl/debuglog.cpp +48 -51
- data/source/bzs/rtl/debuglog.h +55 -44
- data/source/bzs/rtl/exception.h +55 -48
- data/source/bzs/rtl/stl_uty.cpp +27 -28
- data/source/bzs/rtl/stl_uty.h +28 -29
- data/source/bzs/rtl/stringBuffers.cpp +8 -6
- data/source/bzs/rtl/stringBuffers.h +16 -9
- data/source/bzs/rtl/strtrim.cpp +90 -91
- data/source/bzs/rtl/strtrim.h +14 -16
- data/source/bzs/test/tdclatl/bench_query_atl.js +647 -0
- data/source/bzs/test/tdclatl/bench_tdclatl.js +303 -303
- data/source/bzs/test/tdclatl/test_query_atl.js +669 -0
- data/source/bzs/test/tdclphp/bench.php +357 -0
- data/source/bzs/test/tdclphp/transactd_Test.php +907 -303
- data/source/bzs/test/tdclphp/transactd_blob_Test.php +21 -49
- data/source/bzs/test/tdclphp/transactd_datetime_Test.php +41 -75
- data/source/bzs/test/tdclphp/transactd_kanjischema_Test.php +23 -37
- data/source/bzs/test/tdclphp/transactd_pool_Test.php +120 -0
- data/source/bzs/test/tdclrb/bench_tdclcpp.rb +4 -6
- data/source/bzs/test/tdclrb/prepare.rb +15 -12
- data/source/bzs/test/tdclrb/transactd_blob_spec.rb +29 -32
- data/source/bzs/test/tdclrb/transactd_datetime_spec.rb +0 -29
- data/source/bzs/test/tdclrb/transactd_kanjischema_spec.rb +18 -19
- data/source/bzs/test/tdclrb/transactd_pool_spec.rb +107 -0
- data/source/bzs/test/tdclrb/transactd_spec.rb +734 -142
- data/source/bzs/test/transactdBench/query_bench.cpp +156 -0
- data/source/bzs/test/transactdBench/scaling_bench.cpp +265 -0
- data/source/bzs/test/transactdBench/transactdBench.cpp +107 -83
- data/source/bzs/test/transactdBench/transactdBench2.cpp +122 -83
- data/source/bzs/test/transactdBench/workerBase.cpp +5 -0
- data/source/bzs/test/transactdBench/workerBase.h +88 -0
- data/source/bzs/test/transactdBench/workerMySQLImple.h +333 -0
- data/source/bzs/test/transactdBench/workerTransactdImple.h +201 -0
- data/source/bzs/test/trdclengn/test_blob.cpp +121 -73
- data/source/bzs/test/trdclengn/test_trdclengn.cpp +1244 -426
- data/source/global/ormsrcgen/confParam.h +80 -0
- data/source/global/ormsrcgen/fieldName.cpp +77 -0
- data/source/global/ormsrcgen/fieldName.h +43 -0
- data/source/global/ormsrcgen/main.cpp +196 -0
- data/source/global/ormsrcgen/srcgen.cpp +763 -0
- data/source/global/ormsrcgen/srcgen.h +72 -0
- data/source/global/ormsrcgen/template/fieldNameList_sample.txt +2 -0
- data/source/global/ormsrcgen/template/ormDataClass_template.cpp +48 -0
- data/source/global/ormsrcgen/template/ormDataClass_template.h +34 -0
- data/source/global/ormsrcgen/template/ormMapClass_template.cpp +51 -0
- data/source/global/ormsrcgen/template/ormMapClass_template.h +62 -0
- data/source/global/ormsrcgen/template/template.cnf +38 -0
- data/source/global/querystmts/querystmts.cpp +237 -0
- data/source/global/tdclatl/ConnectParams.cpp +77 -0
- data/source/global/tdclatl/ConnectParams.h +70 -0
- data/source/global/tdclatl/Database.cpp +132 -128
- data/source/global/tdclatl/Database.h +60 -49
- data/source/global/tdclatl/DbDef.cpp +68 -64
- data/source/global/tdclatl/DbDef.h +36 -36
- data/source/global/tdclatl/Field.cpp +12 -17
- data/source/global/tdclatl/Field.h +15 -12
- data/source/global/tdclatl/FieldDef.cpp +75 -36
- data/source/global/tdclatl/FieldDef.h +38 -19
- data/source/global/tdclatl/FieldDefs.cpp +74 -0
- data/source/global/tdclatl/FieldDefs.h +56 -0
- data/source/global/tdclatl/FieldNames.cpp +99 -0
- data/source/global/tdclatl/FieldNames.h +66 -0
- data/source/global/tdclatl/Flags.cpp +75 -37
- data/source/global/tdclatl/Flags.h +13 -12
- data/source/global/tdclatl/GroupQuery.cpp +119 -0
- data/source/global/tdclatl/GroupQuery.h +65 -0
- data/source/global/tdclatl/KeyDef.cpp +15 -14
- data/source/global/tdclatl/KeyDef.h +20 -17
- data/source/global/tdclatl/KeySegment.cpp +13 -12
- data/source/global/tdclatl/PooledDbManager.cpp +223 -0
- data/source/global/tdclatl/PooledDbManager.h +76 -0
- data/source/global/tdclatl/QueryBase.cpp +206 -127
- data/source/global/tdclatl/QueryBase.h +55 -59
- data/source/global/tdclatl/Record.cpp +214 -0
- data/source/global/tdclatl/Record.h +96 -0
- data/source/global/tdclatl/Recordset.cpp +278 -0
- data/source/global/tdclatl/Recordset.h +83 -0
- data/source/global/tdclatl/RecordsetQuery.cpp +118 -0
- data/source/global/tdclatl/RecordsetQuery.h +126 -0
- data/source/global/tdclatl/Table.cpp +57 -60
- data/source/global/tdclatl/Table.h +32 -29
- data/source/global/tdclatl/TableDef.cpp +63 -62
- data/source/global/tdclatl/TableDef.h +20 -22
- data/source/global/tdclatl/TdVersion.cpp +3 -3
- data/source/global/tdclatl/TdVersion.h +15 -11
- data/source/global/tdclatl/_IDatabaseEvents_CP.h +99 -92
- data/source/global/tdclatl/activeTable.cpp +355 -0
- data/source/global/tdclatl/activeTable.h +79 -0
- data/source/global/tdclatl/dllmain.cpp +4 -3
- data/source/global/tdclatl/dllmain.h +7 -6
- data/source/global/tdclatl/keySegment.h +22 -18
- data/source/global/tdclatl/resource.h +0 -0
- data/source/global/tdclatl/stdafx.h +6 -4
- data/source/global/tdclatl/targetver.h +0 -1
- data/source/global/tdclatl/tdclatl.cpp +10 -5
- data/source/global/tdclatl/tdclatl.idl +530 -14
- data/source/linux/charsetConvert.h +78 -79
- data/source/linux/linuxTypes.h +9 -12
- data/source/linux/tchar.h +168 -166
- data/transactd.gemspec +24 -16
- metadata +98 -12
- data/bin/common/tdclc_32_1_2.dll +0 -0
- data/bin/common/tdclc_64_1_2.dll +0 -0
- data/build/tdclc/tdclc_32.cbproj +0 -173
- data/build/tdclcpp/tdclcpp_bcb_32.cbproj +0 -232
- data/build/tdclrb/GEM_VERSION +0 -3
- data/source/bzs/db/protocol/tdap/client/filter.cpp +0 -43
- data/source/bzs/example/useORM.cpp +0 -585
|
@@ -12,56 +12,56 @@
|
|
|
12
12
|
GNU General Public License for more details.
|
|
13
13
|
|
|
14
14
|
You should have received a copy of the GNU General Public License
|
|
15
|
-
along with this program; if not, write to the Free Software
|
|
16
|
-
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
|
15
|
+
along with this program; if not, write to the Free Software
|
|
16
|
+
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
|
17
17
|
02111-1307, USA.
|
|
18
18
|
=================================================================*/
|
|
19
|
+
#include <bzs/env/compiler.h>
|
|
19
20
|
#include <bzs/env/tstring.h>
|
|
20
|
-
#pragma hdrstop
|
|
21
|
-
|
|
22
21
|
#include "btrDate.h"
|
|
23
22
|
#include <bzs/rtl/datetime.h>
|
|
24
23
|
#include <stdio.h>
|
|
25
24
|
#include <stdlib.h>
|
|
26
25
|
#include <time.h>
|
|
27
|
-
|
|
26
|
+
|
|
28
27
|
#ifdef LINUX
|
|
29
28
|
#include <bzs/env/mbcswchrLinux.h>
|
|
29
|
+
#if __clang__
|
|
30
|
+
#include <pthread.h>
|
|
31
|
+
#endif
|
|
30
32
|
#endif
|
|
31
33
|
|
|
32
34
|
#pragma package(smart_init)
|
|
33
35
|
|
|
34
36
|
#undef USETLS
|
|
35
|
-
#if ((defined(_WIN32) && _MSC_VER) || __APPLE__)
|
|
37
|
+
#if ((defined(_WIN32) && _MSC_VER) || (__APPLE__ && !defined(__BCPLUSPLUS__)))
|
|
36
38
|
#define USETLS
|
|
37
39
|
#endif
|
|
38
40
|
|
|
39
|
-
|
|
40
41
|
#ifdef USETLS
|
|
41
|
-
|
|
42
|
+
extern tls_key g_tlsiID_SC2;
|
|
42
43
|
#else
|
|
43
|
-
|
|
44
|
+
__THREAD _TCHAR __THREAD_BCB g_date2[45];
|
|
44
45
|
#endif
|
|
45
46
|
|
|
46
47
|
inline _TCHAR* databuf()
|
|
47
48
|
{
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
49
|
+
#ifdef USETLS
|
|
50
|
+
_TCHAR* p = (_TCHAR*)tls_getspecific(g_tlsiID_SC2);
|
|
51
|
+
if (p == NULL)
|
|
52
|
+
{
|
|
53
|
+
p = (_TCHAR*)new wchar_t[45];
|
|
54
|
+
tls_setspecific(g_tlsiID_SC2, p);
|
|
55
|
+
}
|
|
56
|
+
return p;
|
|
57
|
+
#else
|
|
58
|
+
return g_date2;
|
|
59
|
+
#endif
|
|
59
60
|
}
|
|
60
61
|
|
|
61
|
-
|
|
62
62
|
namespace bzs
|
|
63
63
|
{
|
|
64
|
-
|
|
64
|
+
using namespace rtl;
|
|
65
65
|
namespace db
|
|
66
66
|
{
|
|
67
67
|
namespace protocol
|
|
@@ -69,11 +69,8 @@ namespace protocol
|
|
|
69
69
|
namespace tdap
|
|
70
70
|
{
|
|
71
71
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
#define dateToi64(p) (((__int64)JDate2Num(p) - 1721426)*86400) + _timezone
|
|
76
|
-
#define timeToi64(t) t.ss+t.nn*60+t.hh*3600
|
|
72
|
+
#define dateToi64(p) (((__int64)JDate2Num(p) - 1721426) * 86400) + _timezone
|
|
73
|
+
#define timeToi64(t) t.ss + t.nn * 60 + t.hh * 3600
|
|
77
74
|
|
|
78
75
|
__int64 btrTimeStamp::getDateTimeInt(int& time)
|
|
79
76
|
{
|
|
@@ -85,20 +82,18 @@ __int64 btrTimeStamp::getDateTimeInt(int& time)
|
|
|
85
82
|
return days;
|
|
86
83
|
}
|
|
87
84
|
|
|
88
|
-
|
|
89
|
-
btrTimeStamp::btrTimeStamp(unsigned __int64 i):i64(i){};
|
|
85
|
+
btrTimeStamp::btrTimeStamp(unsigned __int64 i) : i64(i){};
|
|
90
86
|
|
|
91
87
|
btrTimeStamp::btrTimeStamp(const char* p)
|
|
92
88
|
{
|
|
93
89
|
fromString(p);
|
|
94
90
|
}
|
|
95
91
|
|
|
96
|
-
btrTimeStamp::btrTimeStamp(btrDate d, btrTime t):i64(0)
|
|
92
|
+
btrTimeStamp::btrTimeStamp(btrDate d, btrTime t) : i64(0)
|
|
97
93
|
{
|
|
98
|
-
|
|
94
|
+
i64 += timeToi64(t);
|
|
99
95
|
i64 += dateToi64(btrdtoa(d, (_TCHAR*)NULL));
|
|
100
96
|
i64 *= 10000000;
|
|
101
|
-
|
|
102
97
|
}
|
|
103
98
|
|
|
104
99
|
#ifdef _WIN32
|
|
@@ -111,26 +106,27 @@ wchar_t* btrTimeStamp::toString(wchar_t* p)
|
|
|
111
106
|
{
|
|
112
107
|
int time;
|
|
113
108
|
int v = (int)getDateTimeInt(time);
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
109
|
+
#ifdef _UNICODE
|
|
110
|
+
swprintf_s(p, 20, _T("%s %02d:%02d:%02d"), JNum2Date(v), time / 3600,
|
|
111
|
+
time % 3600 / 60, time % 3600 % 60);
|
|
112
|
+
return p;
|
|
113
|
+
#else
|
|
114
|
+
char buf[30];
|
|
115
|
+
sprintf_s(buf, 30, _T("%s %02d:%02d:%02d"), JNum2Date(v), time / 3600,
|
|
116
|
+
time % 3600 / 60, time % 3600 % 60);
|
|
117
|
+
MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, buf, -1, p, 20);
|
|
118
|
+
return p;
|
|
119
|
+
#endif
|
|
124
120
|
}
|
|
125
121
|
|
|
126
122
|
void btrTimeStamp::fromString(const wchar_t* p)
|
|
127
123
|
{
|
|
128
124
|
i64 = 0;
|
|
129
|
-
const
|
|
130
|
-
|
|
125
|
+
const wchar_t* p2 = wcsstr(p, L" ");
|
|
126
|
+
|
|
131
127
|
if (p2)
|
|
132
128
|
{
|
|
133
|
-
btrTime t = atobtrt(p2+1);
|
|
129
|
+
btrTime t = atobtrt(p2 + 1);
|
|
134
130
|
i64 += timeToi64(t);
|
|
135
131
|
}
|
|
136
132
|
i64 += dateToi64(p);
|
|
@@ -142,15 +138,17 @@ char* btrTimeStamp::toString(char* p)
|
|
|
142
138
|
{
|
|
143
139
|
int time;
|
|
144
140
|
int v = (int)getDateTimeInt(time);
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
141
|
+
#ifndef _UNICODE
|
|
142
|
+
sprintf_s(p, 20, _T("%s %02d:%02d:%02d"), JNum2Date(v), time / 3600,
|
|
143
|
+
time % 3600 / 60, time % 3600 % 60);
|
|
144
|
+
return p;
|
|
145
|
+
#else
|
|
146
|
+
wchar_t buf[30];
|
|
147
|
+
swprintf_s(buf, 30, _T("%s %02d:%02d:%02d"), JNum2Date(v), time / 3600,
|
|
148
|
+
time % 3600 / 60, time % 3600 % 60);
|
|
149
|
+
wtoa(p, buf, 20);
|
|
150
|
+
return p;
|
|
151
|
+
#endif
|
|
154
152
|
}
|
|
155
153
|
|
|
156
154
|
void btrTimeStamp::fromString(const char* p)
|
|
@@ -160,15 +158,13 @@ void btrTimeStamp::fromString(const char* p)
|
|
|
160
158
|
|
|
161
159
|
if (p2)
|
|
162
160
|
{
|
|
163
|
-
btrTime t = atobtrt(p2+1);
|
|
161
|
+
btrTime t = atobtrt(p2 + 1);
|
|
164
162
|
i64 += timeToi64(t);
|
|
165
163
|
}
|
|
166
164
|
i64 += dateToi64(p);
|
|
167
165
|
i64 *= 10000000;
|
|
168
166
|
}
|
|
169
167
|
|
|
170
|
-
|
|
171
|
-
|
|
172
168
|
bdate::bdate(int date)
|
|
173
169
|
{
|
|
174
170
|
m_date.i = date;
|
|
@@ -186,21 +182,21 @@ bdate::bdate(const _TCHAR* date)
|
|
|
186
182
|
const _TCHAR* bdate::year_str()
|
|
187
183
|
{
|
|
188
184
|
_TCHAR* p = databuf();
|
|
189
|
-
|
|
190
|
-
|
|
185
|
+
_stprintf_s(p, 30, _T("%d"), (int)m_date.yy);
|
|
186
|
+
return p;
|
|
191
187
|
}
|
|
192
188
|
|
|
193
189
|
const _TCHAR* bdate::month_str()
|
|
194
190
|
{
|
|
195
191
|
_TCHAR* p = databuf();
|
|
196
|
-
|
|
192
|
+
_stprintf_s(p, 30, _T("%d"), (int)m_date.mm);
|
|
197
193
|
return p;
|
|
198
194
|
}
|
|
199
195
|
|
|
200
196
|
const _TCHAR* bdate::date_str()
|
|
201
197
|
{
|
|
202
198
|
_TCHAR* p = databuf();
|
|
203
|
-
|
|
199
|
+
_stprintf_s(p, 30, _T("%d"), (int)m_date.dd);
|
|
204
200
|
return p;
|
|
205
201
|
}
|
|
206
202
|
|
|
@@ -209,125 +205,154 @@ const _TCHAR* bdate::c_str()
|
|
|
209
205
|
return btrdtoa(m_date, (_TCHAR*)NULL);
|
|
210
206
|
}
|
|
211
207
|
|
|
212
|
-
const char* dateFormatString(const char*)
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
const wchar_t*
|
|
208
|
+
const char* dateFormatString(const char*)
|
|
209
|
+
{
|
|
210
|
+
return "%04d/%02d/%02d";
|
|
211
|
+
}
|
|
212
|
+
const wchar_t* dateFormatString(const wchar_t*)
|
|
213
|
+
{
|
|
214
|
+
return L"%04d/%02d/%02d";
|
|
215
|
+
}
|
|
217
216
|
|
|
218
|
-
const char*
|
|
219
|
-
|
|
217
|
+
const char* dateFormatString_h(const char*)
|
|
218
|
+
{
|
|
219
|
+
return "%04d-%02d-%02d";
|
|
220
|
+
}
|
|
221
|
+
const wchar_t* dateFormatString_h(const wchar_t*)
|
|
222
|
+
{
|
|
223
|
+
return L"%04d-%02d-%02d";
|
|
224
|
+
}
|
|
220
225
|
|
|
221
|
-
const char*
|
|
222
|
-
|
|
226
|
+
const char* timeFormatString(const char*)
|
|
227
|
+
{
|
|
228
|
+
return "%02d:%02d:%02d";
|
|
229
|
+
}
|
|
230
|
+
const wchar_t* timeFormatString(const wchar_t*)
|
|
231
|
+
{
|
|
232
|
+
return L"%02d:%02d:%02d";
|
|
233
|
+
}
|
|
223
234
|
|
|
224
|
-
|
|
225
|
-
|
|
235
|
+
const char* timeFormatString_h(const char*)
|
|
236
|
+
{
|
|
237
|
+
return "%02d-%02d-%02d";
|
|
238
|
+
}
|
|
239
|
+
const wchar_t* timeFormatString_h(const wchar_t*)
|
|
240
|
+
{
|
|
241
|
+
return L"%02d-%02d-%02d";
|
|
242
|
+
}
|
|
226
243
|
|
|
227
|
-
template
|
|
228
|
-
template <> size_t _tcslen_(const wchar_t* p){return wcslen(p);}
|
|
244
|
+
template <class T> size_t _tcslen_(const T* p);
|
|
229
245
|
|
|
246
|
+
template <> size_t _tcslen_(const char* p)
|
|
247
|
+
{
|
|
248
|
+
return strlen(p);
|
|
249
|
+
}
|
|
250
|
+
template <> size_t _tcslen_(const wchar_t* p)
|
|
251
|
+
{
|
|
252
|
+
return wcslen(p);
|
|
253
|
+
}
|
|
230
254
|
|
|
231
|
-
template <class T>
|
|
232
|
-
int _ttoi_(const T* p);
|
|
255
|
+
template <class T> int _ttoi_(const T* p);
|
|
233
256
|
|
|
234
|
-
template <> int _ttoi_(const char* p)
|
|
235
|
-
|
|
257
|
+
template <> int _ttoi_(const char* p)
|
|
258
|
+
{
|
|
259
|
+
return atoi(p);
|
|
260
|
+
}
|
|
261
|
+
template <> int _ttoi_(const wchar_t* p)
|
|
262
|
+
{
|
|
263
|
+
return _wtoi(p);
|
|
264
|
+
}
|
|
236
265
|
|
|
237
|
-
template <class T>
|
|
238
|
-
T* formatDate(T* p, const btrDate& d, bool type_vb);
|
|
266
|
+
template <class T> T* formatDate(T* p, const btrDate& d, bool type_vb);
|
|
239
267
|
|
|
240
268
|
template <> char* formatDate(char* p, const btrDate& d, bool type_vb)
|
|
241
269
|
{
|
|
242
270
|
if (type_vb)
|
|
243
|
-
|
|
271
|
+
sprintf_s(p, 20, dateFormatString_h(p), d.yy, d.mm, d.dd);
|
|
244
272
|
else
|
|
245
|
-
|
|
273
|
+
sprintf_s(p, 20, dateFormatString(p), d.yy, d.mm, d.dd);
|
|
246
274
|
return p;
|
|
247
275
|
}
|
|
248
276
|
|
|
249
277
|
template <> wchar_t* formatDate(wchar_t* p, const btrDate& d, bool type_vb)
|
|
250
278
|
{
|
|
251
279
|
if (type_vb)
|
|
252
|
-
|
|
280
|
+
swprintf_s(p, 20, dateFormatString_h(p), d.yy, d.mm, d.dd);
|
|
253
281
|
else
|
|
254
|
-
|
|
282
|
+
swprintf_s(p, 20, dateFormatString(p), d.yy, d.mm, d.dd);
|
|
255
283
|
return p;
|
|
256
284
|
}
|
|
257
285
|
|
|
258
|
-
|
|
259
|
-
template <class T>
|
|
260
|
-
T* formatTime(T* p, const btrTime& d, bool type_vb);
|
|
286
|
+
template <class T> T* formatTime(T* p, const btrTime& d, bool type_vb);
|
|
261
287
|
|
|
262
288
|
template <> char* formatTime(char* p, const btrTime& t, bool type_vb)
|
|
263
289
|
{
|
|
264
290
|
if (type_vb)
|
|
265
|
-
|
|
291
|
+
sprintf_s(p, 20, timeFormatString_h(p), t.hh, t.nn, t.ss);
|
|
266
292
|
else
|
|
267
|
-
|
|
293
|
+
sprintf_s(p, 20, timeFormatString(p), t.hh, t.nn, t.ss);
|
|
268
294
|
return p;
|
|
269
295
|
}
|
|
270
296
|
|
|
271
297
|
template <> wchar_t* formatTime(wchar_t* p, const btrTime& t, bool type_vb)
|
|
272
298
|
{
|
|
273
299
|
if (type_vb)
|
|
274
|
-
|
|
300
|
+
swprintf_s(p, 20, timeFormatString_h(p), t.hh, t.nn, t.ss);
|
|
275
301
|
else
|
|
276
|
-
|
|
302
|
+
swprintf_s(p, 20, timeFormatString(p), t.hh, t.nn, t.ss);
|
|
277
303
|
return p;
|
|
278
304
|
}
|
|
279
305
|
|
|
280
|
-
template <class T>
|
|
281
|
-
btrDate atobtrd(const T* date)
|
|
306
|
+
template <class T> btrDate atobtrd(const T* date)
|
|
282
307
|
{
|
|
283
308
|
btrDate bt;
|
|
284
|
-
bt.i=0;
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
309
|
+
bt.i = 0;
|
|
310
|
+
if (date &&
|
|
311
|
+
((_tcslen_(date) == 10) ||
|
|
312
|
+
((_tcslen_(date) > 10) && (date[10] == 'T' || date[10] == ' '))))
|
|
313
|
+
{
|
|
314
|
+
bt.yy = (short)_ttoi_(date);
|
|
289
315
|
bt.mm = (char)_ttoi_(date + 5);
|
|
290
|
-
|
|
316
|
+
bt.dd = (char)_ttoi_(date + 8);
|
|
291
317
|
}
|
|
292
|
-
|
|
293
|
-
|
|
318
|
+
return bt;
|
|
294
319
|
}
|
|
295
320
|
|
|
296
|
-
|
|
297
|
-
template <class T>
|
|
298
|
-
const T* btrdtoa(const btrDate& d, T* retbuf, bool type_vb)
|
|
321
|
+
template <class T> const T* btrdtoa(const btrDate& d, T* retbuf, bool type_vb)
|
|
299
322
|
{
|
|
300
323
|
T* p = retbuf;
|
|
301
|
-
|
|
324
|
+
if (p == NULL)
|
|
302
325
|
p = (T*)databuf();
|
|
303
326
|
return formatDate(p, d, type_vb);
|
|
304
327
|
}
|
|
305
328
|
|
|
306
|
-
template <class T>
|
|
307
|
-
const T* btrttoa(const btrTime& t, T* retbuf, bool type_vb)
|
|
329
|
+
template <class T> const T* btrttoa(const btrTime& t, T* retbuf, bool type_vb)
|
|
308
330
|
{
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
331
|
+
T* p = retbuf;
|
|
332
|
+
if (p == NULL)
|
|
333
|
+
p = (T*)databuf();
|
|
334
|
+
return formatTime(p, t, type_vb);
|
|
313
335
|
}
|
|
314
336
|
|
|
315
|
-
template <class T>
|
|
316
|
-
btrTime atobtrt(const T* p)
|
|
337
|
+
template <class T> btrTime atobtrt(const T* p)
|
|
317
338
|
{
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
}
|
|
339
|
+
btrTime retVal;
|
|
340
|
+
retVal.i = 0;
|
|
341
|
+
if (p && (_tcslen_(p) == 8))
|
|
342
|
+
{
|
|
343
|
+
retVal.hh = (char)_ttoi_(p);
|
|
344
|
+
retVal.nn = (char)_ttoi_(p + 3);
|
|
345
|
+
retVal.ss = (char)_ttoi_(p + 6);
|
|
346
|
+
}
|
|
347
|
+
else
|
|
326
348
|
retVal.i = 0;
|
|
327
349
|
return retVal;
|
|
328
350
|
}
|
|
329
351
|
|
|
330
|
-
btrDate atobtrd(const char* p)
|
|
352
|
+
btrDate atobtrd(const char* p)
|
|
353
|
+
{
|
|
354
|
+
return atobtrd<char>(p);
|
|
355
|
+
}
|
|
331
356
|
|
|
332
357
|
const char* btrdtoa(const btrDate& d, char* retbuf, bool type_vb)
|
|
333
358
|
{
|
|
@@ -339,8 +364,10 @@ const char* btrttoa(const btrTime& t, char* retbuf, bool type_vb)
|
|
|
339
364
|
return btrttoa<char>(t, retbuf, type_vb);
|
|
340
365
|
}
|
|
341
366
|
|
|
342
|
-
btrTime atobtrt(const char* p)
|
|
343
|
-
|
|
367
|
+
btrTime atobtrt(const char* p)
|
|
368
|
+
{
|
|
369
|
+
return atobtrt<char>(p);
|
|
370
|
+
}
|
|
344
371
|
|
|
345
372
|
#ifdef _WIN32
|
|
346
373
|
const wchar_t* btrdtoa(const btrDate& d, wchar_t* retbuf, bool type_vb)
|
|
@@ -353,96 +380,102 @@ const wchar_t* btrttoa(const btrTime& t, wchar_t* retbuf, bool type_vb)
|
|
|
353
380
|
return btrttoa<wchar_t>(t, retbuf, type_vb);
|
|
354
381
|
}
|
|
355
382
|
|
|
356
|
-
btrDate atobtrd(const wchar_t* p)
|
|
383
|
+
btrDate atobtrd(const wchar_t* p)
|
|
384
|
+
{
|
|
385
|
+
return atobtrd<wchar_t>(p);
|
|
386
|
+
}
|
|
357
387
|
|
|
358
|
-
btrTime atobtrt(const wchar_t* p)
|
|
388
|
+
btrTime atobtrt(const wchar_t* p)
|
|
389
|
+
{
|
|
390
|
+
return atobtrt<wchar_t>(p);
|
|
391
|
+
}
|
|
359
392
|
|
|
360
393
|
#endif
|
|
361
394
|
|
|
362
395
|
const _TCHAR* btrstoa(const btrDateTime& s, _TCHAR* retbuf, bool type_vb)
|
|
363
396
|
{
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
397
|
+
_TCHAR* p = retbuf;
|
|
398
|
+
const btrDate& d = s.date;
|
|
399
|
+
const btrTime& t = s.time;
|
|
400
|
+
if (p == NULL)
|
|
401
|
+
p = databuf();
|
|
402
|
+
;
|
|
403
|
+
if (type_vb)
|
|
404
|
+
_stprintf_s(p, 21, _T("%04d-%02d-%02dT%02d:%02d:%02d"), d.yy, d.mm,
|
|
405
|
+
d.dd, t.hh, t.nn, t.ss);
|
|
406
|
+
else
|
|
407
|
+
_stprintf_s(p, 21, _T("%04d/%02d/%02d %02d:%02d:%02d"), d.yy, d.mm,
|
|
408
|
+
d.dd, t.hh, t.nn, t.ss);
|
|
409
|
+
return p;
|
|
374
410
|
}
|
|
375
411
|
|
|
376
412
|
btrDateTime atobtrs(const _TCHAR* p)
|
|
377
413
|
{
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
414
|
+
btrDateTime s;
|
|
415
|
+
s.i64 = 0;
|
|
416
|
+
s.date = atobtrd(p);
|
|
417
|
+
const _TCHAR* tmp = _tcsstr(p, _T("T"));
|
|
418
|
+
if (tmp)
|
|
419
|
+
s.time = atobtrt(tmp + 1);
|
|
420
|
+
else if ((tmp = _tcsstr(p, _T(" "))) != NULL)
|
|
421
|
+
s.time = atobtrt(tmp + 1);
|
|
422
|
+
return s;
|
|
387
423
|
}
|
|
388
424
|
|
|
389
|
-
|
|
390
|
-
|
|
391
425
|
int getNowDate()
|
|
392
426
|
{
|
|
393
|
-
|
|
427
|
+
btrDate dtb;
|
|
394
428
|
#ifdef _WIN32
|
|
395
|
-
|
|
429
|
+
SYSTEMTIME pst;
|
|
396
430
|
GetLocalTime(&pst);
|
|
397
431
|
|
|
398
432
|
dtb.yy = (short)pst.wYear;
|
|
399
433
|
dtb.mm = (char)(pst.wMonth);
|
|
400
434
|
dtb.dd = (char)pst.wDay;
|
|
401
435
|
#else
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
436
|
+
// not _WIN32
|
|
437
|
+
struct tm* date;
|
|
438
|
+
time_t now;
|
|
439
|
+
time(&now);
|
|
440
|
+
struct tm tmp;
|
|
441
|
+
date = &tmp;
|
|
442
|
+
localtime_x(date, &now);
|
|
443
|
+
|
|
444
|
+
dtb.yy = (short)date->tm_year + 1900;
|
|
411
445
|
dtb.mm = (char)date->tm_mon + 1;
|
|
412
446
|
dtb.dd = (char)date->tm_mday;
|
|
413
|
-
#endif //NOT _WIN32
|
|
414
|
-
|
|
415
|
-
|
|
447
|
+
#endif // NOT _WIN32
|
|
448
|
+
return dtb.i;
|
|
416
449
|
}
|
|
417
450
|
|
|
418
451
|
int getNowTime()
|
|
419
452
|
{
|
|
420
|
-
|
|
453
|
+
btrTime tmb;
|
|
421
454
|
#ifdef _WIN32
|
|
422
455
|
|
|
423
|
-
|
|
424
|
-
|
|
456
|
+
tmb.i = 0;
|
|
457
|
+
SYSTEMTIME pst;
|
|
425
458
|
GetLocalTime(&pst);
|
|
426
|
-
tmb.hh = (char)pst.wHour;
|
|
459
|
+
tmb.hh = (char)pst.wHour;
|
|
460
|
+
tmb.nn = (char)pst.wMinute;
|
|
427
461
|
tmb.ss = (char)pst.wSecond;
|
|
428
|
-
|
|
462
|
+
tmb.uu = (char)(pst.wMilliseconds / 10);
|
|
429
463
|
#else
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
464
|
+
struct tm* date;
|
|
465
|
+
time_t now;
|
|
466
|
+
time(&now);
|
|
467
|
+
struct tm tmp;
|
|
468
|
+
date = &tmp;
|
|
469
|
+
localtime_x(date, &now);
|
|
470
|
+
tmb.hh = (char)date->tm_hour;
|
|
471
|
+
tmb.nn = (char)date->tm_min;
|
|
438
472
|
tmb.ss = (char)date->tm_sec;
|
|
439
|
-
|
|
473
|
+
tmb.uu = 00;
|
|
440
474
|
#endif
|
|
441
475
|
return tmb.i;
|
|
442
476
|
}
|
|
443
477
|
|
|
444
|
-
|
|
445
|
-
}//namespace
|
|
446
|
-
}//namespace
|
|
447
|
-
}//namespace
|
|
448
|
-
}//namespace bzs
|
|
478
|
+
} // namespace tdap
|
|
479
|
+
} // namespace protocol
|
|
480
|
+
} // namespace db
|
|
481
|
+
} // namespace bzs
|