diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 74c4b30478..74b9c7e936 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -16,6 +16,41 @@ The license applies to all entries newer than 2009-04-28. */ +2011-08-18 14:12 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) + * contrib/rddsql/sqlbase.c + ! fixed transfering records between two "array" SQLBASE workareas, when there + is a text/long/clob/memo field + Patch by Ilina Stoilkovska. + + * contrib/hbpgsql/postgres.c + ! added #include pg_config.h, '#if PG_VERSION_NUM' clauses were not working + + plain wrappers for bulk data insert functions PQputCopyData, PQputCopyEnd + + new function PQCOPYFROMWA which copies current workarea with CSV-like + bulk data transfer functions to PostgreSQL database, without the need + of creating temporary files - similar to __dbTrans() and __dbSql() + := PQCOPYFROMWA( , , [], + [], [], [], + [], [] ) + - default is 1, which turns into 1 * 1400 bytes + (to keep it below typical network MTU of 1500 bytes), + needs testing how libPQ is doing buffering by itself, + and if this is needed? + Patch by Ilina Stoilkovska. Many thanks. + + * contrib/hbpgsql/hbpgsql.hbx + + contrib/hbpgsql/rddcopy.c + + contrib/hbpgsql/hbpgsql.h + * contrib/hbpgsql/postgres.c + * contrib/hbpgsql/hbpgsql.hbp + + moved PQ related declarations to separate header. low-level functions made public. + % moved new PQCOPYFROMWA() to separate source to untie the main wrappers from RDD components + * HB_ prefix to PQCOPYFROMWA() name + * minor mods to above + + * package/winuni/mpkg_win_uni.bat + * package/winuni/mpkg_win_uni.nsi + - deleted x64 flavor of some exes which don't give any benefit of the 64-bitness + 2011-08-19 02:58 UTC-0800 Pritpal Bedi (bedipritpal@hotmail.com) * contrib/hbcuied/cu_object.prg + Implemented: two-way saving/loading of screens from PRG sources. @@ -157585,11 +157620,11 @@ % minor optimization in hb_itemParam() ! fixed enumerator variable clearing in hb_itemCopy() -2006-09-21 09:52 UTC+0100 Viktor Szakats (viktor.szakats syenar.hu) +2006-09-21 09:52 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) * harbour/source/common/expropt2.c ! Fixed leak introduced in previous commit. -2006-09-20 23:17 UTC+0100 Viktor Szakats (viktor.szakats syenar.hu) +2006-09-20 23:17 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) * harbour/include/hbexprb.c * harbour/include/hbexprop.h * harbour/source/common/expropt2.c @@ -157768,7 +157803,7 @@ * harbour/utils/hbtest/rt_class.prg + added tests for class and shared class variables/allocating -2006-09-17 18:52 UTC+0100 Viktor Szakats (viktor.szakats syenar.hu) +2006-09-17 18:52 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) * harbour/tests/testrpt.prg ! Fixed fatal typo. @@ -157886,7 +157921,7 @@ It's also possible that this code will exploit some bugs in other code which uses GC allocated memory blocks. -2006-09-14 15:23 UTC+0100 Viktor Szakats (viktor.szakats syenar.hu) +2006-09-14 15:23 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) * harbour/tests/testlbl.prg ! use lower name in report name to work properly on case sensitive file systems @@ -158206,7 +158241,7 @@ ! Bug fixed in hb_cdpcmp(), which caused strange comparison results as ( s1 > s2 ) != ( s2 > s1 ). -2006-09-05 15:51 UTC+0100 Viktor Szakats (viktor.szakats syenar.hu) +2006-09-05 15:51 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) * harbour/include/hbset.h * harbour/include/set.ch * harbour/source/pp/pptable.c @@ -158256,7 +158291,7 @@ * harbour/source/vm/runner.c + Honoring _SET_DEFEXTENSIONS setting all over the code. -2006-09-05 12:44 UTC+0100 Viktor Szakats (viktor.szakats syenar.hu) +2006-09-05 12:44 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) * harbour/source/debug/debugger.prg ! Fixed and made multiplatform the filename extension handling parts. @@ -158285,7 +158320,7 @@ * harbour/source/vm/hvm.c * minor modification -2006-09-04 18:10 UTC+0100 Viktor Szakats (viktor.szakats syenar.hu) +2006-09-04 18:10 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) * harbour/source/rtl/tlabel.prg * harbour/source/rtl/treport.prg ! Made the logic multiplatform where it's decided whether to @@ -158875,7 +158910,7 @@ * harbour/source/vm/hvm.c ! fixed bug#1533096 reported by Chen -2006-08-07 02:20 UTC+0100 Viktor Szakats (viktor.szakats syenar.hu) +2006-08-07 02:20 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) * harbour/make_b32.bat * harbour/make_vc.bat ! install call redirected to nul instead of make_b32.log to avoid @@ -158916,11 +158951,11 @@ ! fixed typo in my last commit - additional dummy evaluations of EVAL block -2006-08-04 16:00 UTC+0100 Viktor Szakats (viktor.szakats syenar.hu) +2006-08-04 16:00 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) * harbour/source/rtl/fstemp.c + Implemented prefix parameter in temp file generation for Win32. -2006-08-04 15:24 UTC+0100 Viktor Szakats (viktor.szakats syenar.hu) +2006-08-04 15:24 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) * harbour/include/hbundoc.api + Added _tctemp() undocumented call. @@ -158975,7 +159010,7 @@ * fixed for current state of preprocessor -2006-07-27 01:18 UTC+0100 Viktor Szakats (viktor.szakats syenar.hu) +2006-07-27 01:18 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) * harbour/source/rtl/dbedit.prg ! Previous non-strict compatible part made fully compatible by dropping an Eval() on the field value block. Strict branch @@ -159112,7 +159147,7 @@ ! Fixed header description of makefile * Added INSTALL rule. -2006-07-20 12:36 UTC+0100 Viktor Szakats (viktor.szakats syenar.hu) +2006-07-20 12:36 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) + harbour/utils/hbpptest/compare.bat + harbour/utils/hbpptest/.cvsignore * harbour/utils/hbpptest/pp_test.prg @@ -159149,11 +159184,11 @@ * harbour/source/rdd/workarea.c * code cleanup -2006-07-18 13:25 UTC+0100 Viktor Szakats (viktor.szakats syenar.hu) +2006-07-18 13:25 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) * harbour/include/hbextern.ch ! Removed __dbfList() reference. -2006-07-18 12:51 UTC+0100 Viktor Szakats (viktor.szakats syenar.hu) +2006-07-18 12:51 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) - harbour/source/rtl/dummy.prg * harbour/source/rtl/Makefile * harbour/common.mak @@ -159177,7 +159212,7 @@ ! fixed problems reported by Marek with EXIT procedures after my last commit -2006-07-18 10:21 UTC+0100 Viktor Szakats (viktor.szakats syenar.hu) +2006-07-18 10:21 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) * harbour/source/lang/msgcs852.c * harbour/source/lang/msgcsiso.c * harbour/source/lang/msgcskam.c @@ -159248,7 +159283,7 @@ * harbour/source/rdd/dbcmd.c ! fixed possible access to uninitialized variable in __dbApp()/__dbCopy() -2006-07-17 03:43 UTC+0100 Viktor Szakats (viktor.szakats syenar.hu) +2006-07-17 03:43 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) * harbour/source/rtl/dbedit.prg % Optimized codeblock creation. + Restored 100% compatible codeblock creation for STRICT mode. @@ -159257,7 +159292,7 @@ * Comments reviewed/changed/added. ; Review done, now 100% compatible. -2006-07-17 00:41 UTC+0100 Viktor Szakats (viktor.szakats syenar.hu) +2006-07-17 00:41 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) * harbour/common.mak * harbour/makefile.bc * harbour/makefile.vc @@ -159475,7 +159510,7 @@ * doc/en/clipper.txt * added documentation for WITH OBJECT usage -2006-07-13 16:49 UTC+0100 Viktor Szakats (viktor.szakats syenar.hu) +2006-07-13 16:49 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) * harbour/source/rdd/dbtotal.prg % Unused variable removed, one other optimized out, other minor optimizations. ! Fixed not resetting the error block when used on a table containing @@ -159513,7 +159548,7 @@ * harbour/source/rtl/dbdelim.prg * updated for strict Clipper DBCREATE() parameters -2006-07-13 12:27 UTC+0100 Viktor Szakats (viktor.szakats syenar.hu) +2006-07-13 12:27 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) * harbour/source/rtl/hvm.c ! errorlevel changed to int from byte. @@ -159572,7 +159607,7 @@ * harbour/source/vm/itemapi.c * make hb_itemClear() safe for not allocated stack items -2006-07-10 20:43 UTC+0100 Viktor Szakats (viktor.szakats syenar.hu) +2006-07-10 20:43 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) By Marek Paliwoda: @@ -159580,7 +159615,7 @@ + Generalized linker flags (LDFLAGS) and small exe generation improvements. -2006-07-10 13:29 UTC+0100 Viktor Szakats (viktor.szakats syenar.hu) +2006-07-10 13:29 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) * harbour/source/rdd/dbcmd.c ! AFIELDS() made fully CA-Cl*pper compatible. @@ -159650,7 +159685,7 @@ * harbour/source/vm/runner.c ! fixed possible memory leaks when corrupted .hrb file is loaded -2006-07-05 20:30 UTC+0100 Viktor Szakats (viktor.szakats syenar.hu) +2006-07-05 20:30 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) - harbour/Common.mak + harbour/common.mak * harbour/make_b32.bat @@ -159772,7 +159807,7 @@ * xharbour/bin/pack_src.sh + added USRRDD -2006-06-28 15:46 UTC+0100 Viktor Szakats (viktor.szakats syenar.hu) +2006-06-28 15:46 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) * harbour/config/w32/mingw32.cf ! One minor fix and another minor correction made after testing the Win9x branch. @@ -159781,7 +159816,7 @@ * harbour/makefile.bc + Added gtdef.c file -2006-06-28 07:59 UTC+0100 Viktor Szakats (viktor.szakats syenar.hu) +2006-06-28 07:59 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) * harbour/config/w32/mingw32.cf % Removed Windows system libs we don't need to link in Harbour. @@ -159821,7 +159856,7 @@ * updated for current xHarbour state - not tested but I guess it works for Lorenzo -2006-06-27 19:45 UTC+0100 Viktor Szakats (viktor.szakats syenar.hu) +2006-06-27 19:45 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) * harbour/config/w32/mingw32.cf ! Fix to make it work in environments where "gcc @__lib__.tmp" construct is not possible. The "@" expansion is done by gcc @@ -159950,11 +159985,11 @@ * harbour/source/rtl/hbgtcore.c * changed 'char *' to 'const char *' in hb_gtSetDefault(), hb_gtLoad() -2006-06-22 21:41 UTC+0100 Viktor Szakats (viktor.szakats syenar.hu) +2006-06-22 21:41 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) * harbour/makefile.bc * Fix to prev. -2006-06-22 19:43 UTC+0100 Viktor Szakats (viktor.szakats syenar.hu) +2006-06-22 19:43 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) * harbour/source/rtl/errorsys.prg ! Fixed to use OutErr() instead of QOut() for CA-Cl*pper compatibility. (Thanks Chen) @@ -159966,7 +160001,7 @@ * harbour/utils/hbtest/rt_array.prg * Removed one codeblock unused var warning. -2006-06-22 17:28 UTC+0100 Viktor Szakats (viktor.szakats syenar.hu) +2006-06-22 17:28 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) * harbour/makefile.bc * Updated for latest changes. @@ -160033,7 +160068,7 @@ * fixed 'unreachable code' warning in IF/ELSEIF * fixed 'variable unused' warnings when -w3 switvh was used -2006-06-22 00:25 UTC+0100 Viktor Szakats (viktor.szakats syenar.hu) +2006-06-22 00:25 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) * harbour/include/common.ch * harbour/source/debug/dbghelp.prg * harbour/source/debug/dbgmenu.prg @@ -160122,24 +160157,24 @@ by 3-rd party code then create problems with binary compatibility after updating local HVM functions. -2006-06-20 11:33 UTC+0100 Viktor Szakats (viktor.szakats syenar.hu) +2006-06-20 11:33 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) * harbour/source/rtl/gtwin/gtwin.c ! Stupid bug fixed in prev commit. -2006-06-20 09:45 UTC+0100 Viktor Szakats (viktor.szakats syenar.hu) +2006-06-20 09:45 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) * harbour/source/rtl/gtwin/gtwin.c * harbour/source/rtl/gtwxt/gtwxt.c ! Possible (double) fix to properly handle embedded zero bytes when getting clipboard content. -2006-06-20 08:55 UTC+0100 Viktor Szakats (viktor.szakats syenar.hu) +2006-06-20 08:55 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) * harbour/source/rtl/gtwin/gtwin.c + Copied Windows Clipboard support from the GTWVT driver. So now it is available in Win32 console apps too. (Thanks Przemek for the functions and instructions). Set/Get the Clipboard using: hb_GTInfo( GTI_CLIPBOARDDATA[, ] ) -2006-06-20 02:37 UTC+0100 Viktor Szakats (viktor.szakats syenar.hu) +2006-06-20 02:37 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) * harbour/source/rtl/tbrowse.prg ! Fixed TBrowseNew() not initializing :skipBlock() ! Fixed TBrowse:skipBlock() (throwing proper error, NIL parameter @@ -161070,7 +161105,7 @@ ! fixed ordKeyGoto() - only the index file was repositioned but I forgot to also change the record in DBF -2006-04-07 15:30 UTC+0100 Viktor Szakats (viktor.szakats syenar.hu) +2006-04-07 15:30 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) * harbour/source/vm/classes.c % Optimized __CLSADDMSG() to call hb_parc() only once instead of 25 times for most cases. @@ -161962,7 +161997,7 @@ * all compiler structures are deallocated on exit now -2006-02-15 20:24 UTC+0100 Viktor Szakats (viktor.szakats syenar.hu) +2006-02-15 20:24 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) * harbour/hrbdll.bc * harbour/hrbdll.vc * harbour/makefile.bc @@ -162346,11 +162381,11 @@ * source/vm/mainwin.c * minor fix -2006-02-07 18:20 UTC+0100 Viktor Szakats (viktor.szakats syenar.hu) +2006-02-07 18:20 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) * source/vm/mainwin.c ! Fixed previous commit. -2006-02-07 12:20 UTC+0100 Viktor Szakats (viktor.szakats syenar.hu) +2006-02-07 12:20 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) * makefile.bc + Updated for latest changes. @@ -163113,7 +163148,7 @@ * makefile.bc ! Updated with BarCode stuff -2005-12-02 17:12 UTC+0100 Viktor Szakats (viktor.szakats syenar.hu) +2005-12-02 17:12 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) * include/hbmath.h ! Fixed a few declarations to be in sync with the implementation. (Thanks Chen) @@ -163125,7 +163160,7 @@ math.ch --> hbmath.ch * Some formating to 76 characters per line -2005-11-24 23:24 UTC+0100 Viktor Szakats (viktor.szakats syenar.hu) +2005-11-24 23:24 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) * include/hbpcode.h + Comment added about adding new pcodes at the end of the list for compatibility. @@ -163162,7 +163197,7 @@ + tests/symbolt.prg ; Missed from prev commit. -2005-11-22 10:31 UTC+0100 Viktor Szakats (viktor.szakats syenar.hu) +2005-11-22 10:31 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) * source/rtl/symbol.prg * source/vm/dynsym.c * include/hbextern.ch @@ -163174,7 +163209,7 @@ + TOFIX added to symbol.prg to remove the remaining one C function inside BEGINDUMP. (Antonio, can you take a look?) -2005-11-22 10:08 UTC+0100 Viktor Szakats (viktor.szakats syenar.hu) +2005-11-22 10:08 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) * doc/en/hb_apifs.txt ! Fixed doc for hb_fsSetDevMode() @@ -163251,14 +163286,14 @@ + added hb_itemUnShare() - /* un-share given string item */ and hb_itemClone() - /* clone the given item */ -2005-11-21 18:03 UTC+0100 Viktor Szakats (viktor.szakats syenar.hu) +2005-11-21 18:03 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) - include/math.ch + include/hbmath.ch * include/hbmath.h * tests/mathtest.prg ! math.ch -> hbmath.ch (rename) -2005-11-21 17:44 UTC+0100 Viktor Szakats (viktor.szakats syenar.hu) +2005-11-21 17:44 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) + tests/simplet.prg * src/rtl/symbol.prg * Embedded example code moved to the test dir. @@ -163291,7 +163326,7 @@ * harbour/contrib/rdd_ads/makefile.vc - removed module ads0 -2005-11-19 00:30 UTC+0100 Viktor Szakats (viktor.szakats syenar.hu) +2005-11-19 00:30 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) * include/hbapifs.c * src/rtl/filesys.c ! hb_fsSetDevMode() fixed back to return a BOOL value @@ -163346,7 +163381,7 @@ * harbour/source/vm/runner.c * updated for modified HB_SYMB structure. -2005-11-15 05:10 UTC+0100 Viktor Szakats (viktor.szakats syenar.hu) +2005-11-15 05:10 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) * hrbdll.bc * hrbdll.vc * makefile.bc @@ -163402,7 +163437,7 @@ * harbour/source/rdd/dbffpt/dbffpt1.c * synced with xHarbour -2005-11-14 20:50 UTC+0100 Viktor Szakats (viktor.szakats syenar.hu) +2005-11-14 20:50 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) * hrbdll.vc * makefile.nt * makefile.vc @@ -163885,7 +163920,7 @@ NOTE: with hb_retptr( im ) -2005-10-28 10:23 UTC+0100 Viktor Szakats (viktor.szakats syenar.hu) +2005-10-28 10:23 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) * hrbdll.bc * hrbdll.vc * makefile.bc @@ -164089,7 +164124,7 @@ NOTE: * harbour/source/vm/maindllp.c ! fixed some declaration I missed in previous commit -2005-10-24 12:08 UTC+0100 Viktor Szakats (viktor.szakats syenar.hu) +2005-10-24 12:08 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) * hrbdll.bc * hrbdll.vc * makefile.bc @@ -164444,7 +164479,7 @@ NOTE: Many, many thanks to Przemek Czerpak for his work. -2005-09-20 10:16 UTC+0100 Viktor Szakats (viktor.szakats syenar.hu) +2005-09-20 10:16 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) * source/rtl/tget.prg ! One previous fix reverted because it broke numeric data entry. @@ -164470,7 +164505,7 @@ NOTE: + tests\sbartest.prg Added sample of scrollbar class -2005-06-14 21:11 UTC+0100 Viktor Szakats (viktor.szakats syenar.hu) +2005-06-14 21:11 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) * source/rtl/disksphb.c * hb_DiskSpace() changed to not give a runtime error in case @@ -164490,12 +164525,12 @@ NOTE: * config/w32/global.cf ! Changed all line beginning spaces to Tabs. -2005-06-11 13:01 UTC+0100 Viktor Szakats (viktor.szakats syenar.hu) +2005-06-11 13:01 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) * source/rtl/idle.c ! Fix to prev. commit. -2005-06-09 18:09 UTC+0100 Viktor Szakats (viktor.szakats syenar.hu) +2005-06-09 18:09 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) * source/rtl/tget.prg ! :display fixed (again) to always call VarGet block @@ -166075,7 +166110,7 @@ NOTE: * source/rtl/tget.prg * GetNew() no longer evaluates passed set/get codeblock -2004-08-01 14:38 UTC+0100 Viktor Szakats (viktor.szakats syenar.hu) +2004-08-01 14:38 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) * source/rtl/filesys.c ! Out of bound buffer access fixed. (I couldn't test this) @@ -166131,7 +166166,7 @@ NOTE: * hrbdll.bc + Added module scalar.prg -2004-07-26 10:50 UTC+0100 Viktor Szakats (viktor.szakats syenar.hu) +2004-07-26 10:50 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) * source/compiler/cmdcheck.c ! Writing out of bound when using -x compiler switch fixed. @@ -167065,7 +167100,7 @@ NOTE: * fixed typo for -ks switch -2004-04-01 09:09 UTC+0100 Viktor Szakats (viktor.szakats syenar.hu) +2004-04-01 09:09 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) * source/common/hbffind.c ! Fix for NT4 @@ -167073,7 +167108,7 @@ NOTE: * source/rdd/dbsort.prg * Fix by Mitja Podgornik -2004-04-01 08:49 UTC+0100 Viktor Szakats (viktor.szakats syenar.hu) +2004-04-01 08:49 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) * bin/bld.bat * Updated diff --git a/harbour/contrib/hbpgsql/hbpgsql.h b/harbour/contrib/hbpgsql/hbpgsql.h new file mode 100644 index 0000000000..939b10df24 --- /dev/null +++ b/harbour/contrib/hbpgsql/hbpgsql.h @@ -0,0 +1,92 @@ +/* + * $Id: postgres.c 16949 2011-07-17 14:23:26Z vszakats $ + */ + +/* + * Harbour Project source code: + * PostgreSQL RDBMS wrapper header. + * + * Copyright 2010 Viktor Szakats (harbour.01 syenar.hu) (GC support) + * Copyright 2003 Rodrigo Moreno rodrigo_moreno@yahoo.com + * www - http://harbour-project.org + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this software; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, + * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). + * + * As a special exception, the Harbour Project gives permission for + * additional uses of the text contained in its release of Harbour. + * + * The exception is that, if you link the Harbour libraries with other + * files to produce an executable, this does not by itself cause the + * resulting executable to be covered by the GNU General Public License. + * Your use of that executable is in no way restricted on account of + * linking the Harbour library code into it. + * + * This exception does not however invalidate any other reasons why + * the executable file might be covered by the GNU General Public License. + * + * This exception applies only to the code released by the Harbour + * Project under the name Harbour. If you copy code from other + * Harbour Project or Free Software Foundation releases into a copy of + * Harbour, as the General Public License permits, the exception does + * not apply to the code that you add in this way. To avoid misleading + * anyone as to the status of such modified files, you must delete + * this exception notice from them. + * + * If you write modifications of your own for Harbour, it is your choice + * whether to permit this exception to apply to your modifications. + * If you do not wish that, delete this exception notice. + * + * See COPYING for licensing terms. + * + */ + +#include "hbapi.h" + +#include "libpq-fe.h" +#include "pg_config.h" + +#define VARHDRSZ 4 +#define BOOLOID 16 +#define INT8OID 20 +#define INT2OID 21 +#define INT4OID 23 +#define TEXTOID 25 +#define OIDOID 26 +#define FLOAT4OID 700 +#define FLOAT8OID 701 +#define CASHOID 790 +#define BPCHAROID 1042 +#define VARCHAROID 1043 +#define DATEOID 1082 +#define TIMEOID 1083 +#define TIMESTAMPOID 1114 +#define TIMESTAMPTZOID 1184 +#define TIMETZOID 1266 +#define BITOID 1560 +#define VARBITOID 1562 +#define NUMERICOID 1700 + +#define INV_WRITE 0x00020000 +#define INV_READ 0x00040000 + +#ifndef PG_VERSION_NUM +#define PG_VERSION_NUM 0 +#endif + +extern void hb_PGconn_ret( PGconn * p ); +extern PGconn * hb_PGconn_par( int iParam ); +extern void hb_PGresult_ret( PGresult * p ); +extern PGresult * hb_PGresult_par( int iParam ); diff --git a/harbour/contrib/hbpgsql/hbpgsql.hbp b/harbour/contrib/hbpgsql/hbpgsql.hbp index a695cbb455..f39598dc99 100644 --- a/harbour/contrib/hbpgsql/hbpgsql.hbp +++ b/harbour/contrib/hbpgsql/hbpgsql.hbp @@ -30,6 +30,7 @@ hbpgsql.hbx postgres.c +rddcopy.c tpostgre.prg hdbcpg.prg diff --git a/harbour/contrib/hbpgsql/hbpgsql.hbx b/harbour/contrib/hbpgsql/hbpgsql.hbx index b8ffc8d495..9d0a05eb01 100644 --- a/harbour/contrib/hbpgsql/hbpgsql.hbx +++ b/harbour/contrib/hbpgsql/hbpgsql.hbx @@ -25,6 +25,7 @@ #command DYNAMIC => EXTERNAL #endif +DYNAMIC HB_PQCOPYFROMWA DYNAMIC HDBCPGCONNECTION DYNAMIC HDBCPGDATABASEMETADATA DYNAMIC HDBCPGPREPAREDSTATEMENT @@ -77,6 +78,8 @@ DYNAMIC PQPASS DYNAMIC PQPORT DYNAMIC PQPREPARE DYNAMIC PQPROTOCOLVERSION +DYNAMIC PQPUTCOPYDATA +DYNAMIC PQPUTCOPYEND DYNAMIC PQREQUESTCANCEL DYNAMIC PQRESET DYNAMIC PQRESULT2ARRAY diff --git a/harbour/contrib/hbpgsql/postgres.c b/harbour/contrib/hbpgsql/postgres.c index 37d284f9f8..cd02d429e0 100644 --- a/harbour/contrib/hbpgsql/postgres.c +++ b/harbour/contrib/hbpgsql/postgres.c @@ -53,40 +53,11 @@ * */ -#include "hbapi.h" +#include "hbpgsql.h" + #include "hbapierr.h" #include "hbapiitm.h" -#include "libpq-fe.h" - -#define VARHDRSZ 4 -#define BOOLOID 16 -#define INT8OID 20 -#define INT2OID 21 -#define INT4OID 23 -#define TEXTOID 25 -#define OIDOID 26 -#define FLOAT4OID 700 -#define FLOAT8OID 701 -#define CASHOID 790 -#define BPCHAROID 1042 -#define VARCHAROID 1043 -#define DATEOID 1082 -#define TIMEOID 1083 -#define TIMESTAMPOID 1114 -#define TIMESTAMPTZOID 1184 -#define TIMETZOID 1266 -#define BITOID 1560 -#define VARBITOID 1562 -#define NUMERICOID 1700 - -#define INV_WRITE 0x00020000 -#define INV_READ 0x00040000 - -#ifndef PG_VERSION_NUM -#define PG_VERSION_NUM 0 -#endif - static HB_GARBAGE_FUNC( PGconn_release ) { void ** ph = ( void ** ) Cargo; @@ -108,7 +79,7 @@ static const HB_GC_FUNCS s_gcPGconnFuncs = hb_gcDummyMark }; -static void hb_PGconn_ret( PGconn * p ) +void hb_PGconn_ret( PGconn * p ) { if( p ) { @@ -122,7 +93,7 @@ static void hb_PGconn_ret( PGconn * p ) hb_retptr( NULL ); } -static PGconn * hb_PGconn_par( int iParam ) +PGconn * hb_PGconn_par( int iParam ) { void ** ph = ( void ** ) hb_parptrGC( &s_gcPGconnFuncs, iParam ); @@ -150,7 +121,7 @@ static const HB_GC_FUNCS s_gcPGresultFuncs = hb_gcDummyMark }; -static void hb_PGresult_ret( PGresult * p ) +void hb_PGresult_ret( PGresult * p ) { if( p ) { @@ -164,7 +135,7 @@ static void hb_PGresult_ret( PGresult * p ) hb_retptr( NULL ); } -static PGresult * hb_PGresult_par( int iParam ) +PGresult * hb_PGresult_par( int iParam ) { void ** ph = ( void ** ) hb_parptrGC( &s_gcPGresultFuncs, iParam ); @@ -1177,6 +1148,34 @@ HB_FUNC( PQEXECPREPARED ) hb_errRT_BASE( EG_ARG, 2020, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS ); } +HB_FUNC( PQPUTCOPYDATA ) +{ +#if PG_VERSION_NUM >= 80000 + PGconn * conn = hb_PGconn_par( 1 ); + + if( conn ) + hb_retni( PQputCopyData( conn, hb_parcx( 2 ), hb_parclen( 2 ) ) ); + else + hb_errRT_BASE( EG_ARG, 2020, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS ); +#else + hb_retc_null(); +#endif +} + +HB_FUNC( PQPUTCOPYEND ) +{ +#if PG_VERSION_NUM >= 80000 + PGconn * conn = hb_PGconn_par( 1 ); + + if( conn ) + hb_retni( PQputCopyEnd( conn, NULL ) ); + else + hb_errRT_BASE( EG_ARG, 2020, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS ); +#else + hb_retc_null(); +#endif +} + /* TODO: Implement Full Large Objects Support diff --git a/harbour/contrib/hbpgsql/rddcopy.c b/harbour/contrib/hbpgsql/rddcopy.c new file mode 100644 index 0000000000..23001a4739 --- /dev/null +++ b/harbour/contrib/hbpgsql/rddcopy.c @@ -0,0 +1,460 @@ +/* + * $Id: postgres.c 16949 2011-07-17 14:23:26Z vszakats $ + */ + +/* + * Harbour Project source code: + * PostgreSQL RDBMS low level (client api) interface code. + * + * Copyright 2010 Viktor Szakats (harbour.01 syenar.hu) (GC support) + * Copyright 2003 Rodrigo Moreno rodrigo_moreno@yahoo.com + * www - http://harbour-project.org + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this software; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, + * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). + * + * As a special exception, the Harbour Project gives permission for + * additional uses of the text contained in its release of Harbour. + * + * The exception is that, if you link the Harbour libraries with other + * files to produce an executable, this does not by itself cause the + * resulting executable to be covered by the GNU General Public License. + * Your use of that executable is in no way restricted on account of + * linking the Harbour library code into it. + * + * This exception does not however invalidate any other reasons why + * the executable file might be covered by the GNU General Public License. + * + * This exception applies only to the code released by the Harbour + * Project under the name Harbour. If you copy code from other + * Harbour Project or Free Software Foundation releases into a copy of + * Harbour, as the General Public License permits, the exception does + * not apply to the code that you add in this way. To avoid misleading + * anyone as to the status of such modified files, you must delete + * this exception notice from them. + * + * If you write modifications of your own for Harbour, it is your choice + * whether to permit this exception to apply to your modifications. + * If you do not wish that, delete this exception notice. + * + * See COPYING for licensing terms. + * + */ + +#include "hbpgsql.h" + +#include "hbapierr.h" +#include "hbapiitm.h" +#include "hbapirdd.h" +#include "hbvm.h" +#include "hbdate.h" + +typedef struct +{ + char * buffer; + int position; + int length; + HB_BOOL str_trim; + PGconn * connection; +} pgCopyContext; + +#if PG_VERSION_NUM >= 80000 +static HB_BOOL addToContext( pgCopyContext * context, const char c ) +{ + if( context->position == context->length ) + { + if( PQputCopyData(context->connection, context->buffer, context->position) == -1 ) + return HB_FALSE; + + context->position = 0; + } + context->buffer[context->position++] = ( HB_BYTE ) c; + return HB_TRUE; +} +static HB_BOOL addStrToContext( pgCopyContext * context, const char * str ) +{ + while( * str ) + { + if( context->position == context->length ) + { + if( PQputCopyData( context->connection, context->buffer, context->position ) == -1 ) + return HB_FALSE; + + context->position = 0; + } + context->buffer[ context->position++ ] = ( HB_BYTE ) * str++; + } + return HB_TRUE; +} +static HB_BOOL addStrnToContext( pgCopyContext * context, const char * str, HB_SIZE size ) +{ + HB_SIZE nSize = 0; + while( nSize < size ) + { + if( context->connection == NULL || context->position == context->length ) + { + if( PQputCopyData(context->connection, context->buffer, context->position) == -1 ) + return HB_FALSE; + context->position = 0; + } + context->buffer[ context->position++ ] = ( HB_BYTE ) str[ nSize++ ]; + } + return HB_TRUE; +} + +/* Export field value into the buffer in PG accepted CSV format */ +static HB_BOOL exportBufSqlVar( pgCopyContext * context, PHB_ITEM pValue, const char * szQuote, const char * szEsc ) +{ + switch( hb_itemType( pValue ) ) + { + case HB_IT_STRING: + case HB_IT_MEMO: + { + HB_SIZE nLen = hb_itemGetCLen( pValue ); + HB_SIZE nCnt = 0; + const char * szVal = hb_itemGetCPtr( pValue ); + + if( ! addStrToContext( context, szQuote ) ) + return HB_FALSE; + + if( context->str_trim ) + { + while( nLen && HB_ISSPACE( szVal[ nLen - 1 ] ) ) + nLen--; + } + + while( *szVal && nCnt++ < nLen ) + { + /* if( *szVal == *szDelim || *szVal == *szEsc || *szVal == *szQuote ) + we don't need to escape delim in CSV mode, + only the quote and the escape itself */ + + if( *szVal == *szQuote || *szVal == *szEsc ) + if( ! addToContext( context, *szEsc ) ) + return HB_FALSE; + if( ( HB_UCHAR ) *szVal >= 32 ) + if( ! addToContext( context, *szVal ) ) + return HB_FALSE; + szVal++; + } + if( ! addStrToContext( context, szQuote ) ) + return HB_FALSE; + break; + } + + case HB_IT_DATE: + { + char szDate[ 9 ]; + + if( ! addStrToContext( context, szQuote ) ) + return HB_FALSE; + hb_itemGetDS( pValue, szDate ); + if( szDate[ 0 ] == ' ' ) + { + if( ! addStrToContext( context, "0100-01-01" ) ) + return HB_FALSE; + } + else + { + if( ! addStrnToContext( context, &szDate[ 0 ], 4 ) || + ! addToContext( context, '-' ) || + ! addStrnToContext( context, &szDate[ 4 ], 2 ) || + ! addToContext( context, '-' ) || + ! addStrnToContext( context, &szDate[ 6 ], 2 ) ) + return HB_FALSE; + } + if( ! addStrToContext( context, szQuote ) ) + return HB_FALSE; + break; + } + + case HB_IT_TIMESTAMP: + { + long lDate, lTime; + char szDateTime[ 24 ]; + + hb_itemGetTDT( pValue, &lDate, &lTime ); + hb_timeStampStr( szDateTime, lDate, lTime ); + if( ! addStrToContext( context, szQuote ) || + ! addStrToContext( context, szDateTime ) || + ! addStrToContext( context, szQuote ) ) + return HB_FALSE; + break; + } + + case HB_IT_LOGICAL: + /* if(! addStrToContext( context, szQuote ) || ! addToContext( context, hb_itemGetL( pValue ) ? 'Y' : 'N' ) || ! addStrToContext( context, szQuote ) ) */ + if( ! addToContext( context, hb_itemGetL( pValue ) ? 'Y' : 'N' ) ) + return HB_FALSE; + break; + + case HB_IT_INTEGER: + case HB_IT_LONG: + case HB_IT_DOUBLE: + { + char szResult[ HB_MAX_DOUBLE_LENGTH ]; + int iSize, iWidth, iDec; + + hb_itemGetNLen( pValue, &iWidth, &iDec ); + iSize = ( iDec > 0 ? iWidth + 1 + iDec : iWidth ); + if( hb_itemStrBuf( szResult, pValue, iSize, iDec ) ) + { + int iPos = 0; + while( iSize && HB_ISSPACE( szResult[ iPos ] ) ) + { + iPos++; + iSize--; + } + if( ! addStrnToContext( context, &szResult[ iPos ], iSize ) ) + return HB_FALSE; + } + else + if( ! addToContext( context, '0' ) ) + return HB_FALSE; + break; + } + /* an "M" field or the other, might be a "V" in SixDriver */ + default: + return HB_FALSE; + } + + return HB_TRUE; +} +#endif + +HB_FUNC( HB_PQCOPYFROMWA ) +{ +#if PG_VERSION_NUM >= 80000 + PGconn * pConn = hb_PGconn_par( 1 ); + const char * szTable = hb_parcx( 2 ); + PHB_ITEM pWhile = hb_param( 3, HB_IT_BLOCK ); + PHB_ITEM pFor = hb_param( 4, HB_IT_BLOCK ); + PHB_ITEM pFields = hb_param( 5, HB_IT_ARRAY ); + HB_ULONG nCount = hb_parnldef( 6, 0 ); + HB_BOOL str_rtrim = hb_parldef( 7, HB_TRUE ); + HB_ULONG nBufLen = hb_parnldef( 8, 1 ); + HB_USHORT uiFields; + HB_ULONG uiRecCount = 0; + /* HB_ULONG uiRecNo = 0; + DBORDERINFO pInfo; + int iOrd; */ + HB_BOOL bNoFieldPassed = ( pFields == NULL || hb_arrayLen( pFields ) == 0 ); + HB_BOOL bEof = HB_FALSE; + AREAP pArea = ( AREAP ) hb_rddGetCurrentWorkAreaPointer(); + PHB_ITEM pItem; + HB_USHORT uiFieldCopy = 0; + HB_USHORT uiIter; + pgCopyContext * context; + char * szInit; + static const char * s_szQuote = "\""; + static const char * s_szEsc = "\""; + static const char * s_szDelim = ","; + char * szFields = NULL; + char * szTmp = NULL; + PGresult * pgResult = NULL; + HB_BOOL bFail = HB_FALSE; + + if( pArea ) + { + pItem = hb_itemNew( NULL ); + + context = ( pgCopyContext * ) hb_xgrab( sizeof( pgCopyContext ) ); + memset( context, 0, sizeof( pgCopyContext ) ); + + context->buffer = ( char * ) hb_xgrab( sizeof( char ) * nBufLen * 1400 ); + context->position = 0; + context->length = sizeof( char ) * nBufLen * 1400; + context->str_trim = str_rtrim; + context->connection = pConn; + + SELF_FIELDCOUNT( pArea, &uiFields ); + + if( ! bNoFieldPassed ) + { + szFields = ( char * ) hb_xgrab( sizeof( char ) * 2 ); + szFields[ 0 ] = '('; + szFields[ 1 ] = '\0'; + uiFieldCopy = ( HB_USHORT ) hb_arrayLen( pFields ); + + for( uiIter = 1; uiIter <= uiFieldCopy; uiIter++ ) + { + const char * szFieldName = hb_arrayGetCPtr( pFields, uiIter ); + if( szFieldName ) + { + int iPos = hb_rddFieldIndex( pArea, szFieldName ); + + szTmp = hb_xstrcpy( NULL, szFields, szFieldName, NULL ); + hb_xfree( szFields ); + szFields = szTmp; + if( uiIter != uiFieldCopy ) + { + szTmp = hb_xstrcpy( NULL, szFields, s_szDelim, NULL ); + hb_xfree( szFields ); + szFields = szTmp; + } + + if( iPos ) + { + PHB_ITEM pFieldNum = hb_itemPutNI( NULL, iPos ); + hb_itemArrayPut( pFields, uiIter, pFieldNum ); + hb_itemRelease( pFieldNum ); + continue; + } + } + + if( hb_arrayDel( pFields, uiIter ) ) + { + hb_arraySize( pFields, hb_arrayLen( pFields ) - 1 ); + uiIter--; + uiFieldCopy--; + } + } + szTmp = hb_xstrcpy( NULL, szFields, ")", NULL ); + hb_xfree( szFields ); + szFields = szTmp; + } + + if( szFields ) + { + szInit = hb_xstrcpy( NULL, "COPY ", szTable, " ", szFields, " FROM STDIN WITH DELIMITER '", s_szDelim, "' CSV QUOTE AS '", s_szQuote, "' ESCAPE AS '", s_szEsc, "'", NULL ); + hb_xfree( szFields ); + } + else + szInit = hb_xstrcpy( NULL, "COPY ", szTable, " FROM STDIN WITH DELIMITER '", s_szDelim, "' CSV QUOTE AS '", s_szQuote, "' ESCAPE AS '", s_szEsc, "'", NULL ); + + pgResult = PQexec( context->connection, szInit ); + if( PQresultStatus( pgResult ) != PGRES_COPY_IN ) + { + PQclear( pgResult ); + hb_xfree( szInit ); + hb_xfree( context ); + hb_retl( HB_FALSE ); + return; + } + + PQclear( pgResult ); + hb_xfree( szInit ); + /* uiRecCount = 0; */ + while( ( nCount == 0 || uiRecCount < nCount ) && + ( ! pWhile || hb_itemGetL( hb_vmEvalBlock( pWhile ) ) ) ) + { + + if( SELF_EOF( pArea, &bEof ) != HB_SUCCESS ) + break; + + if( bEof ) + break; + + if( ! pFor || hb_itemGetL( hb_vmEvalBlock( pFor ) ) ) + { + if( bNoFieldPassed ) + { + for( uiIter = 1; uiIter <= uiFields; uiIter++ ) + { + SELF_GETVALUE( pArea, uiIter, pItem ); + if( ! exportBufSqlVar( context, pItem, s_szQuote, s_szEsc ) || ! addStrToContext( context, s_szDelim ) ) + { + bFail = HB_TRUE; + break; + } + } + } + else + { + for( uiIter = 1; uiIter <= uiFieldCopy; uiIter++ ) + { + SELF_GETVALUE( pArea, ( HB_USHORT ) hb_arrayGetNI( pFields, uiIter ), pItem ); + if( ! exportBufSqlVar( context, pItem, s_szQuote, s_szEsc ) || ! addStrToContext( context, s_szDelim ) ) + { + bFail = HB_TRUE; + break; + } + } + } + + if( bFail ) + break; + + context->position--; /* overwrite last comma with newline */ + if( ! addStrnToContext( context, "\n", 1 ) ) /* PostgreSQL handles both \r\n & \n, use shorter */ + { + bFail = HB_TRUE; + break; + } + + uiRecCount++; + } + + if( SELF_SKIP( pArea, 1 ) != HB_SUCCESS ) + break; + } + + while( HB_TRUE ) + { + if( bFail ) + { + PQputCopyEnd( context->connection, "export buffer problems" ); + hb_retl( HB_FALSE ); + break; + } + + if( ! addStrnToContext( context, "\\.\n", 3 ) ) /* end CSV transfer */ + { + hb_retl( HB_FALSE ); + break; + } + + if( PQputCopyData( context->connection, context->buffer, context->position ) == -1 ) + { + hb_retl( HB_FALSE ); + break; + } + + if( PQputCopyEnd( context->connection, NULL ) == -1 ) + { + hb_retl( HB_FALSE ); + break; + } + + pgResult = PQgetResult( context->connection ); + while ( pgResult ) + { + if( PQresultStatus( pgResult ) != PGRES_COMMAND_OK ) + bFail = HB_TRUE; + + PQclear( pgResult ); + pgResult = PQgetResult( context->connection ); + } + + if( bFail ) + { + hb_retl( HB_FALSE ); + break; + } + + hb_retl( HB_TRUE ); + break; + } + + hb_itemRelease( pItem ); + hb_xfree( context->buffer ); + hb_xfree( context ); + } + else + hb_errRT_DBCMD( EG_NOTABLE, EDBCMD_NOTABLE, NULL, HB_ERR_FUNCNAME ); +#else + hb_retc_null(); +#endif +} diff --git a/harbour/contrib/rddsql/sqlbase.c b/harbour/contrib/rddsql/sqlbase.c index 0c2166af79..bfa1a891d8 100644 --- a/harbour/contrib/rddsql/sqlbase.c +++ b/harbour/contrib/rddsql/sqlbase.c @@ -542,7 +542,7 @@ static HB_ERRCODE sqlbasePutValue( SQLBASEAREAP pArea, HB_USHORT uiIndex, PHB_IT errCode = HB_SUCCESS; pField = pArea->area.lpFields + ( uiIndex - 1 ); - if ( ( ( HB_IS_MEMO( pItem ) || HB_IS_STRING( pItem ) ) && pField->uiType == HB_FT_STRING ) || + if ( ( ( HB_IS_MEMO( pItem ) || HB_IS_STRING( pItem ) ) && ( pField->uiType == HB_FT_STRING || pField->uiType == HB_FT_MEMO ) ) || ( HB_IS_DATE( pItem ) && pField->uiType == HB_FT_DATE ) || ( HB_IS_TIMESTAMP( pItem ) && pField->uiType == HB_FT_TIMESTAMP ) || ( HB_IS_NUMBER( pItem ) && ( pField->uiType == HB_FT_INTEGER || pField->uiType == HB_FT_LONG || diff --git a/harbour/package/winuni/mpkg_win_uni.bat b/harbour/package/winuni/mpkg_win_uni.bat index 292d1b6065..3ffdf34c97 100644 --- a/harbour/package/winuni/mpkg_win_uni.bat +++ b/harbour/package/winuni/mpkg_win_uni.bat @@ -72,12 +72,8 @@ for %%a in ( %HB_ABSROOT%bin\*-%HB_VS%.dll ) do ( ) del _hbtemp.sed - copy /y %~dp0..\..\pkg\win\mingw64\harbour-%HB_VF%-win-mingw64\bin\harbour.exe %HB_ABSROOT%bin\harbour-x64.exe - copy /y %~dp0..\..\pkg\win\mingw64\harbour-%HB_VF%-win-mingw64\bin\hbformat.exe %HB_ABSROOT%bin\hbformat-x64.exe - copy /y %~dp0..\..\pkg\win\mingw64\harbour-%HB_VF%-win-mingw64\bin\hbi18n.exe %HB_ABSROOT%bin\hbi18n-x64.exe copy /y %~dp0..\..\pkg\win\mingw64\harbour-%HB_VF%-win-mingw64\bin\hbmk2.exe %HB_ABSROOT%bin\hbmk2-x64.exe copy /y %~dp0..\..\pkg\win\mingw64\harbour-%HB_VF%-win-mingw64\bin\hbnetio.exe %HB_ABSROOT%bin\hbnetio-x64.exe - copy /y %~dp0..\..\pkg\win\mingw64\harbour-%HB_VF%-win-mingw64\bin\hbpp.exe %HB_ABSROOT%bin\hbpp-x64.exe copy /y %~dp0..\..\pkg\win\mingw64\harbour-%HB_VF%-win-mingw64\bin\hbrun.exe %HB_ABSROOT%bin\hbrun-x64.exe copy /y %~dp0..\..\pkg\win\mingw64\harbour-%HB_VF%-win-mingw64\bin\hbtest.exe %HB_ABSROOT%bin\hbtest-x64.exe diff --git a/harbour/package/winuni/mpkg_win_uni.nsi b/harbour/package/winuni/mpkg_win_uni.nsi index ee188e1ddc..dfcf338baf 100644 --- a/harbour/package/winuni/mpkg_win_uni.nsi +++ b/harbour/package/winuni/mpkg_win_uni.nsi @@ -142,12 +142,8 @@ SectionEnd !ifndef PKG_NO_COMP_MINGW64 Section /o "x64 tools" hb_main_x64 SetOutPath $INSTDIR\bin - File "$%HB_ABSROOT%bin\harbour-x64.exe" - File "$%HB_ABSROOT%bin\hbformat-x64.exe" - File "$%HB_ABSROOT%bin\hbi18n-x64.exe" File "$%HB_ABSROOT%bin\hbmk2-x64.exe" File "$%HB_ABSROOT%bin\hbnetio-x64.exe" - File "$%HB_ABSROOT%bin\hbpp-x64.exe" File "$%HB_ABSROOT%bin\hbrun-x64.exe" File "$%HB_ABSROOT%bin\hbtest-x64.exe" SectionEnd