2012-10-23 22:16 UTC+0200 Viktor Szakats (harbour syenar.net)

* contrib/hbamf/hbamf.hbp
  * contrib/hbblink/hbblink.hbp
  * contrib/hbcomm/hbcomm.hbp
  * contrib/hbcups/hbcups.hbp
  * contrib/hbcurl/hbcurl.hbm
  * contrib/hbdroid/hbdroid.hbp
  * contrib/hbexpat/hbexpat.hbp
  * contrib/hbfbird/hbfbird.hbp
  * contrib/hbfimage/hbfimage.hbp
  * contrib/hbformat/hbformat.hbp
  * contrib/hbfoxpro/hbfoxpro.hbp
  * contrib/hbfship/hbfship.hbp
  * contrib/hbgs/hbgs.hbp
  * contrib/hbgt/hbgt.hbp
  * contrib/hbhttpd/hbhttpd.hbp
  * contrib/hblzf/hblzf.hbp
  * contrib/hbmagic/hbmagic.hbp
  * contrib/hbmemio/hbmemio.hbp
  * contrib/hbmisc/hbmisc.hbp
  * contrib/hbmlzo/hbmlzo.hbp
  * contrib/hbmxml/hbmxml.hbp
  * contrib/hbnetio/hbnetio.hbp
  * contrib/hbnf/hbnf.hbp
  * contrib/hboslib/hboslib.hbp
  * contrib/hbsms/hbsms.hbp
  * contrib/hbssl/hbssl.hbm
  * contrib/hbtpathy/hbtpathy.hbp
  * contrib/hbxdiff/hbxdiff.hbp
  * contrib/hbxpp/hbxpp.hbp
  * contrib/hbziparc/hbziparc.hbp
    * do not copy .ch/.hbx files to central Harbour
      directory. It means that if you need to use
      these files from now on, you need to use the
      .hbc files to add these packages to your project:
      freeimag.ch ftmenuto.ch hbblink.ch hbcurl.ch hbexpat.ch
      hbfoxpro.ch hblzf.ch hbmagic.ch hbmlzo.ch hbmxml.ch
      hbssl.ch hbxdiff.ch hbxppext.ch telepath.ch
      (and more if you need an .hbx file.) INCOMPATIBLE.
      This is a gradual step to complete this TODO:
         2012-03-04 20:31 UTC+0100

  * contrib/hbfbird/readme.txt
  * contrib/hbfimage/readme.txt
  * contrib/hbmysql/readme.txt
  * contrib/hbnf/doc/en/chdir.txt
  * contrib/hbnf/doc/en/cint86.txt
  * contrib/hbziparc/doc/en/hbziparc.txt
  * contrib/rddads/doc/en/readme.txt
  * contrib/rddads/readme.txt
  * doc/en/file.txt
  * doc/dirstruc.txt
  * doc/en/dir.txt
  * doc/gmake.txt
  * doc/gtapi.txt
  * extras/httpsrv/readme.txt
  * utils/hbmk2/hbmk2.1
    * various updates (removed OS specific stuff,
      added reference to .hbc files, hbmk2,
      removed certain outdated information,
      DOS -> MS-DOS)

  - tests/dosshell.prg
  + tests/osshell.prg
    * renamed/changed to be OS agnostic

  * config/dir.mk
  * config/dos/djgpp.mk
  * config/globsh.mk
    * DOS -> MS-DOS

  * extras/httpsrv/uhttpd.prg
  * src/debug/dbghelp.prg
  * utils/hbmk2/hbmk2.es_PE.po
  * utils/hbmk2/hbmk2.prg
  * utils/hbmk2/hbmk2.pt_BR.po
    * DOS -> OS

  * contrib/gtwvg/class.prg
  * contrib/gtwvg/crt.prg
  * contrib/gtwvg/dialog.prg
  * contrib/gtwvg/mle.prg
  * contrib/gtwvg/syswnd.prg
  * contrib/gtwvg/wnd.prg
    * removed unnecessary parentheses
This commit is contained in:
Viktor Szakats
2012-10-23 20:49:40 +00:00
parent 71909fe634
commit cd42aa6417
61 changed files with 219 additions and 265 deletions

View File

@@ -16,6 +16,92 @@
The license applies to all entries newer than 2009-04-28.
*/
2012-10-23 22:16 UTC+0200 Viktor Szakats (harbour syenar.net)
* contrib/hbamf/hbamf.hbp
* contrib/hbblink/hbblink.hbp
* contrib/hbcomm/hbcomm.hbp
* contrib/hbcups/hbcups.hbp
* contrib/hbcurl/hbcurl.hbm
* contrib/hbdroid/hbdroid.hbp
* contrib/hbexpat/hbexpat.hbp
* contrib/hbfbird/hbfbird.hbp
* contrib/hbfimage/hbfimage.hbp
* contrib/hbformat/hbformat.hbp
* contrib/hbfoxpro/hbfoxpro.hbp
* contrib/hbfship/hbfship.hbp
* contrib/hbgs/hbgs.hbp
* contrib/hbgt/hbgt.hbp
* contrib/hbhttpd/hbhttpd.hbp
* contrib/hblzf/hblzf.hbp
* contrib/hbmagic/hbmagic.hbp
* contrib/hbmemio/hbmemio.hbp
* contrib/hbmisc/hbmisc.hbp
* contrib/hbmlzo/hbmlzo.hbp
* contrib/hbmxml/hbmxml.hbp
* contrib/hbnetio/hbnetio.hbp
* contrib/hbnf/hbnf.hbp
* contrib/hboslib/hboslib.hbp
* contrib/hbsms/hbsms.hbp
* contrib/hbssl/hbssl.hbm
* contrib/hbtpathy/hbtpathy.hbp
* contrib/hbxdiff/hbxdiff.hbp
* contrib/hbxpp/hbxpp.hbp
* contrib/hbziparc/hbziparc.hbp
* do not copy .ch/.hbx files to central Harbour
directory. It means that if you need to use
these files from now on, you need to use the
.hbc files to add these packages to your project:
freeimag.ch ftmenuto.ch hbblink.ch hbcurl.ch hbexpat.ch
hbfoxpro.ch hblzf.ch hbmagic.ch hbmlzo.ch hbmxml.ch
hbssl.ch hbxdiff.ch hbxppext.ch telepath.ch
(and more if you need an .hbx file.) INCOMPATIBLE.
This is a gradual step to complete this TODO:
2012-03-04 20:31 UTC+0100
* contrib/hbfbird/readme.txt
* contrib/hbfimage/readme.txt
* contrib/hbmysql/readme.txt
* contrib/hbnf/doc/en/chdir.txt
* contrib/hbnf/doc/en/cint86.txt
* contrib/hbziparc/doc/en/hbziparc.txt
* contrib/rddads/doc/en/readme.txt
* contrib/rddads/readme.txt
* doc/en/file.txt
* doc/dirstruc.txt
* doc/en/dir.txt
* doc/gmake.txt
* doc/gtapi.txt
* extras/httpsrv/readme.txt
* utils/hbmk2/hbmk2.1
* various updates (removed OS specific stuff,
added reference to .hbc files, hbmk2,
removed certain outdated information,
DOS -> MS-DOS)
- tests/dosshell.prg
+ tests/osshell.prg
* renamed/changed to be OS agnostic
* config/dir.mk
* config/dos/djgpp.mk
* config/globsh.mk
* DOS -> MS-DOS
* extras/httpsrv/uhttpd.prg
* src/debug/dbghelp.prg
* utils/hbmk2/hbmk2.es_PE.po
* utils/hbmk2/hbmk2.prg
* utils/hbmk2/hbmk2.pt_BR.po
* DOS -> OS
* contrib/gtwvg/class.prg
* contrib/gtwvg/crt.prg
* contrib/gtwvg/dialog.prg
* contrib/gtwvg/mle.prg
* contrib/gtwvg/syswnd.prg
* contrib/gtwvg/wnd.prg
* removed unnecessary parentheses
2012-10-23 15:50 UTC+0200 Viktor Szakats (harbour syenar.net)
* contrib/hbwin/tests/testax.prg
* contrib/hbwin/tests/testcom1.prg
@@ -62,7 +148,7 @@
* contrib/hbct/tests/*.prg
% deleted #include "ct.ch" where it's not used
! added #require "ct.ch" where ct.ch is #included
! added #require "ct" where ct.ch is #included
* contrib/hbct/tests/csetarge.prg
% CLS not needed anymore to force interactive UI
@@ -954,7 +1040,7 @@
% reworked bit functions to use HB_BIT*()
* contrib/hbnf/workdays.prg
* deleted unnecessary parantheses
* deleted unnecessary parentheses
2012-10-16 11:12 UTC+0200 Viktor Szakats (harbour syenar.net)
* contrib/hbnf/acctmnth.prg
@@ -2368,7 +2454,7 @@
true. I assumed it was meant to check for numeric and replaced
with HB_ISNUMERIC() calls.
% ADel()/ASize() pairs replaced with hb_ADel( ,, .T. ) calls
* removed some unnecessary parantheses and minor formatting
* removed some unnecessary parentheses and minor formatting
! fixed one [] operator on a string (possibly used with the
intention to preallocate a 255 byte long string)
* replaced K_TAB used a character constant with 9
@@ -9637,7 +9723,7 @@
* tests/statics.prg
* tests/testwarn.prg
* tests/tstmacro.prg
% removed superfluous parantheses from RETURN statements
% removed superfluous parentheses from RETURN statements
* examples/hbapollo/tests/test65.prg
* examples/hbapollo/tests/test66.prg
@@ -12576,7 +12662,7 @@
* contrib/hbamf/amfenc.c
* contrib/hbamf/amfstdio.c
! fixed about 30 compiler warnings mostly on missing
paranthesis causing ambiguous expressions, superfluous
parenthesis causing ambiguous expressions, superfluous
variable initializations and one case where probably
an 'else' was missing. Please review the patch to
see if ambiguous cases were correctly fixed.
@@ -14545,7 +14631,7 @@
* contrib/hbtip/thtml.prg
! fixed chr() usage for unicode mode
* formatted (hbformat and manual)
% deleted excessive parantheses
% deleted excessive parentheses
! STATICs converted to THREAD STATIC
* contrib/hbtip/cgi.prg
@@ -22200,7 +22286,7 @@
2011-06-03 02:16 UTC+0200 Viktor Szakats (harbour syenar.net)
* src/rtl/listbox.prg
! missing paranthesis, causing miscalculation in :changeItem()
! missing parenthesis, causing miscalculation in :changeItem()
with dropdown listboxes. pls test.
2011-06-03 01:55 UTC+0200 Viktor Szakats (harbour syenar.net)
@@ -28021,7 +28107,7 @@
is implementet the way it is make changes which don't break
f.e. OS/2. Not throwing an RTE from this function is
intentional.
* Added parantheses to recent patch to hb_fsCopy().
* Added parentheses to recent patch to hb_fsCopy().
2011-02-21 18:25 UTC+0100 Viktor Szakats (harbour syenar.net)
* src/rtl/fscopy.c
@@ -32065,7 +32151,7 @@
2011-01-08 13:47 UTC+0100 Viktor Szakats (harbour syenar.net)
* contrib/hbmisc/nconvert.prg
* Removed unnecessary parantheses.
* Removed unnecessary parentheses.
! Corrected to use ENDDO instead of END.
2011-01-08 13:43 UTC+0100 Viktor Szakats (harbour syenar.net)
@@ -50204,7 +50290,7 @@
2010-06-28 21:14 UTC+0200 Viktor Szakats (harbour syenar.net)
* contrib/hbqt/hbmk2_plugin_ui.prg
% Deleted unnecessary parantheses
% Deleted unnecessary parentheses
% Using FOR EACH.
% Minor optimizations
! Variables renamed to not use one-letter variable names
@@ -97561,7 +97647,7 @@
! Changed harbour.exe path in internal command trace/error output
to use the same base dir as hbmk2 itself. In cross-compile
situations this is more accurate. Since harbour.exe shouldn't
necessarily exist, I've put harbour.exe path in paranthesis
necessarily exist, I've put harbour.exe path in parenthesis
to suggest it's not a real path.
; NOTE: Actually now hbmk2 autodetection code is lagging behind
GNU Make, so hbmk may need to get a bigger internal revision
@@ -103098,7 +103184,7 @@
+ Added self-guards to header.
! Converted all comments to ANSI C.
+ Added note to header that it's used from C code.
! Put negative macro values into parantheses.
! Put negative macro values into parentheses.
! Fixed bad typo in test program which broke it for all platforms.
% Minor optimization to TP_REOPEN().
! Moved internal structure macros from header to .prg.
@@ -104617,7 +104703,7 @@
* source/rtl/hbsocket.c
! Added one 'static'.
* Added one pair of paranthesis (formatting).
* Added one pair of parenthesis (formatting).
* source/rtl/hbgtcore.c
* source/rtl/hbsha1.c
@@ -131085,7 +131171,7 @@
returned string and expecting some format. NOTE added
about this to source to avoid similar errors in future.
The Wine text got moved between the Windows name and
version number, and have been put into paranthesis:
version number, and have been put into parenthesis:
Like: 'Windows XP SP3 (Wine) 5.1'. Please test.
2009-02-20 13:08 UTC+0100 Viktor Szakats (harbour syenar.net)
@@ -132368,7 +132454,7 @@
in every line of an .hbp file, and also for every library
passed on the command line:
hbmk hello.prg -lonlyforlinux{linux}
The filter expression can use paranthesis, '&' for AND,
The filter expression can use parenthesis, '&' for AND,
'|' for OR and '!' for not. F.e.: {linux&!owatcom}
% Minor optimizations.
@@ -226664,7 +226750,7 @@ NOTE: You have to recompile all PRG sources!
19990915-11:15 GMT+1 Viktor Szakats <info@szelvesz.hu>
* source/rtl/dir.c
! Two warnings fixed about possibly missing paranthesis.
! Two warnings fixed about possibly missing parenthesis.
+ Reformatted.
* source/rtl/adir.prg
! Default flags reset to "HSD"

View File

@@ -8,7 +8,7 @@ ifneq ($(HB_PLATFORM),)
ifneq ($(HB_COMPILER),)
ifeq ($(HB_HOST_PLAT),dos)
# do not use rules for parallel processing in DOS
# do not use rules for parallel processing in MS-DOS
JOB_SRV := NO
else
# these make versions does not work correctly with

View File

@@ -80,7 +80,7 @@ define lib_object
endef
# We have to use script to overcome the DOS limit of max 128 characters
# We have to use script to overcome the MS-DOS limit of max 128 characters
# in commmand line
define create_library
@$(ECHO) $(ECHOQUOTE)CREATE $(LIB_DIR)/$@$(ECHOQUOTE) > __lib__.tmp

View File

@@ -190,7 +190,7 @@ endif
ifeq ($(HB_SHELL),dos)
# NOTE: DOS command line length has a limit of 126 characters.
# NOTE: MS-DOS command line length has a limit of 126 characters.
# When using DJGPP GNU Make to invoke other DJGPP tools this limit
# is about 13KB, as they do special trick to overcome it.
# See these DJGPP FAQs:

View File

@@ -577,7 +577,7 @@ METHOD wvtDialog:Inkey()
::lEventHandled := ::aObjects[ ::nUseObj ]:ShowPopup()
ENDIF
IF !( ::lEventHandled )
IF ! ::lEventHandled
IF ::nCurObj > 0
IF !Empty( ::aDialogKeys )
IF ( n := AScan( ::aDialogKeys, {| e_ | e_[ 1 ] == ::nKey } ) ) > 0
@@ -599,7 +599,7 @@ METHOD wvtDialog:Inkey()
ENDIF
ENDIF
IF !( ::lEventHandled )
IF ! ::lEventHandled
IF HB_ISBLOCK( SetKey( ::nKey ) )
Eval( SetKey( ::nKey ) )
ENDIF
@@ -1566,7 +1566,7 @@ METHOD WvtLabel:Create( lConfg )
::hFont := Wvt_CreateFont( ::cFont, ::nFontHeight, ::nFontWidth, ::nFontWeight, ::lItalic, ;
::lUnderline, ::lStrikeout, ::nCharSet, ::nFontQuality, ::nAngle )
IF ::hFont != 0
IF !( lConfg )
IF ! lConfg
::bPaint := {|| Wvt_DrawLabelObj( ::nTop, ::nLeft, ::nBottom, ::nRight, ;
::Text, ::nAlignHorz, ::nAlignVert, ::nTextColor, ::nBackColor, ::hFont ) }
AAdd( ::aPaint, { ::bPaint, { WVT_BLOCK_LABEL, ::nTop, ::nLeft, ::nBottom, ::nRight } } )
@@ -1828,7 +1828,7 @@ METHOD WvtToolBar:HoverOn()
METHOD WvtToolBar:HoverOff()
IF ::lFloating .AND. !( ::lHidden )
IF ::lFloating .AND. ! ::lHidden
::lHidden := .T.
::lActive := .F.
AEval( ::aObjects, {| o | o:lActive := ::lActive } )
@@ -3279,7 +3279,7 @@ METHOD WvtProgressBar:Create()
METHOD WvtProgressBar:Display( nCurrent, nTotal )
IF !( ::lActive )
IF ! ::lActive
RETURN Self
ENDIF

View File

@@ -525,7 +525,7 @@ METHOD WvgCrt:lockUpdate()
METHOD WvgCrt:menuBar()
IF !( HB_ISOBJECT( ::oMenu ) )
IF ! HB_ISOBJECT( ::oMenu )
::oMenu := WvgMenuBar():New( self ):create()
ENDIF

View File

@@ -244,7 +244,7 @@ METHOD WvgDialog:getFrameState()
METHOD WvgDialog:menuBar()
IF !( HB_ISOBJECT( ::oMenu ) )
IF ! HB_ISOBJECT( ::oMenu )
::oMenu := WvgMenuBar():New( self ):create()
ENDIF

View File

@@ -155,13 +155,13 @@ METHOD WvgMLE:create( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
IF ::tabStop
::style += WS_TABSTOP
ENDIF
IF !::editable
IF ! ::editable
::style += ES_READONLY
ENDIF
IF ::border
::style += WS_BORDER
ENDIF
IF !( ::wordWrap )
IF ! ::wordWrap
IF ::horizScroll
::style += WS_HSCROLL
ELSE

View File

@@ -354,31 +354,31 @@ METHOD wndProc( hWnd, nMessage, nwParam, nlParam ) CLASS WvgFontDialog
CASE nMessage == WM_INITDIALOG
::hWnd := hWnd
IF !Empty( ::title )
IF ! Empty( ::title )
WVG_SetWindowText( ::hWnd, ::title )
ENDIF
IF !( ::buttonCancel )
IF ! ::buttonCancel
WVG_EnableWindow( WVG_GetDlgItem( ::hWnd,IDCANCEL ), .F. )
ENDIF
IF !( ::buttonApply )
IF ! ::buttonApply
WVG_EnableWindow( WVG_GetDlgItem( ::hWnd,1026 ), .F. )
ENDIF
IF !( ::buttonHelp )
IF ! ::buttonHelp
WVG_EnableWindow( WVG_GetDlgItem( ::hWnd,1038 ), .F. )
ENDIF
IF !( ::strikeOut )
IF ! ::strikeOut
WVG_EnableWindow( WVG_GetDlgItem( ::hWnd,1040 ), .F. )
ENDIF
IF !( ::underscore )
IF ! ::underscore
WVG_EnableWindow( WVG_GetDlgItem( ::hWnd,1041 ), .F. )
ENDIF
IF !( ::name )
IF ! ::name
WVG_EnableWindow( WVG_GetDlgItem( ::hWnd,1136 ), .F. )
ENDIF
IF !( ::style )
IF ! ::style
WVG_EnableWindow( WVG_GetDlgItem( ::hWnd,1137 ), .F. )
ENDIF
IF !( ::size )
IF ! ::size
WVG_EnableWindow( WVG_GetDlgItem( ::hWnd,1138 ), .F. )
ENDIF

View File

@@ -312,7 +312,7 @@ METHOD WvgWindow:create( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
::visible := lVisible
IF Empty( ::oParent )
IF ! ( __objGetClsName( Self ) $ "WVGCRT,WVGDIALOG" )
IF !( __objGetClsName( Self ) $ "WVGCRT,WVGDIALOG" )
::oParent := WvgSetAppWindow()
ENDIF
ENDIF

View File

@@ -9,8 +9,6 @@
-w3 -es2
-instfile=inc:hbamf.hbx
hbamf.hbx
amfenc.c

View File

@@ -9,9 +9,6 @@
-w3 -es2
-instfile=inc:hbblink.ch
-instfile=inc:hbblink.hbx
hbblink.hbx
blinker.prg

View File

@@ -9,8 +9,6 @@
-w3 -es2
-instfile=inc:hbcomm.hbx
hbcomm.hbx
comm.prg

View File

@@ -16,8 +16,6 @@
-depcontrol=cups:${HB_WITH_CUPS}
-depincpath=cups:/usr/include
-instfile=inc:hbcups.hbx
hbcups.hbx
core.c

View File

@@ -15,9 +15,6 @@
-depcontrol=curl:${HB_WITH_CURL}
-depincpath=curl:/usr/include
-instfile=inc:hbcurl.ch
-instfile=inc:hbcurl.hbx
hbcurl.hbx
core.c

View File

@@ -18,8 +18,6 @@
-depincpath=jni:/usr/include
-depfinish=jni
-instfile=inc:hbdroid.hbx
-cflag=-I"${HBMK_DIR_JNI}/win32"{win}
hbdroid.hbx

View File

@@ -16,9 +16,6 @@
-depincpathlocal=expat:3rd/expat
-depfinish=expat
-instfile=inc:hbexpat.ch
-instfile=inc:hbexpat.hbx
-cflag=-DXML_STATIC
hbexpat.hbx

View File

@@ -21,8 +21,6 @@
-depimplibs=firebird:../lib/fbclient_ms.lib{(allgcc|allmsvc|allpocc)&!hbdyn}
-depimplibd=firebird:fbclient
-instfile=inc:hbfbird.hbx
# For FireBird headers
-c=gnu90

View File

@@ -2,13 +2,10 @@
* $Id$
*/
README 23/12/2003 - Harbour Low Level api for Firebird and Interbase RDBMS
README 2003.12.23 - Harbour Low Level api for Firebird and Interbase RDBMS
This work is not finished yet. It's to be seem like Harbour TMysql routines.
To use with bcc, you need import library, ex: implib fbclient.lib fbclient.dll or implib gds32.lib gds32.dll.
On Linux you will need link fbclient.so, this can be found usually at /usr/lib.
For full firebird documentation look at:
Firebird home: http://firebird.sourceforge.net/index.php
@@ -21,29 +18,27 @@ The Class implementation has no all implementation like TMysql has, because Fire
For example, you can't navigate in records like Mysql do, ex: Getrow( number of row ), in firebird you can
just go forward.
You will need ibase.h, it can be found at firebird/include
FILES:
firebird.c - Low level api
TFirebird.prg - Class implementation, it's to be seems like TMysql.
TFirebrd.prg - Class implementation, it's to be seems like TMysql.
tests\simple.prg - Simple test class
tests\stress.prg - Stress test class
tests\test.prg - Testing using only low level api
tests\test.c - Pure C code to test firebird access.
tests\testapi.c - Pure C code to test firebird access.
TODO:
Full implementation of blob control. For now, we have only partial control, only for text blobs (sybtype 1).
Full implementation of blob control. For now, we have only partial control, only for text blobs (subtype 1).
Improve Insert and Update commands using DSQL.
Implements to do:
FBOpenBlob( blob_id )
FBReadBlob(blob_id, string, segment_size)
FBReadBlob( blob_id, string, segment_size )
FBCreateBlob()
FBPutBlob(blob_id, string, segment_size)
FBPutBlob( blob_id, string, segment_size )
FBCloseBlob( blob_id )
@@ -52,7 +47,6 @@ BUGS:
Fix a few segment faults. I Need some help to find what's going on here.
That's all folks and sorry my poor english
Rodrigo Moreno - rodrigo_moreno@yahoo.com

View File

@@ -19,9 +19,6 @@
-depincpath=freeimage:/opt/local/include
-depimplibs=freeimage:../Dist/FreeImage.dll
-instfile=inc:freeimag.ch
-instfile=inc:hbfimage.hbx
# For FreeImage headers
-c=gnu90

View File

@@ -15,13 +15,12 @@
FreeImage Library is a porting to xHarbour of famous FreeImage Project library.
Actually based on FreeImage version 3.8.0
FreeImage Project's web site is http://freeimage.sourceforge.net/
COMPILING
=========
USAGE
=====
** requirements: to build FreeImage library: gcc-c++, libstdc++-devel
Add hbfimage.hbc to your hbmk2 project.
DOCUMENTATION
=============
@@ -34,9 +33,3 @@ SAMPLES
For samples look at tests dir.
fitest.prg is an API test application.
NOTES
=====
WARNING: if you are using Windows platform, download the
FreeImage.dll in tests before use it.

View File

@@ -9,8 +9,6 @@
-w3 -es2
-instfile=inc:hbformat.hbx
hbformat.hbx
hbfmtcls.prg

View File

@@ -9,9 +9,6 @@
-w3 -es2
-instfile=inc:hbfoxpro.ch
-instfile=inc:hbfoxpro.hbx
hbfoxpro.hbx
dll.prg

View File

@@ -9,8 +9,6 @@
-w3 -es2
-instfile=inc:hbfship.hbx
hbfship.hbx
fldarr.prg

View File

@@ -21,8 +21,6 @@
-depimplibs=gs:${HB_WITH_GS_BIN}/gsdll2.dll{os2}
-depimplibd=gs:gs
-instfile=inc:hbgs.hbx
hbgs.hbx
core.c

View File

@@ -9,8 +9,6 @@
-w3 -es2
-instfile=inc:hbgt.hbx
hbgt.hbx
asciisgt.c

View File

@@ -9,8 +9,6 @@
-w3 -es2
-instfile=inc:hbhttpd.hbx
hbhttpd.hbx
core.prg

View File

@@ -16,9 +16,6 @@
-depincpathlocal=lzf:3rd/liblzf
-depfinish=lzf
-instfile=inc:hblzf.ch
-instfile=inc:hblzf.hbx
hblzf.hbx
core.c

View File

@@ -15,9 +15,6 @@
-depincpath=libmagic:/usr/include
-depincpath=libmagic:/opt/local/include
-instfile=inc:hbmagic.ch
-instfile=inc:hbmagic.hbx
hbmagic.hbx
core.c

View File

@@ -9,8 +9,6 @@
-w3 -es2
-instfile=inc:hbmemio.hbx
hbmemio.hbx
memio.c

View File

@@ -9,8 +9,6 @@
-w3 -es2
-instfile=inc:hbmisc.hbx
hbmisc.hbx
bbabble.c

View File

@@ -16,9 +16,6 @@
-depincpathlocal=minilzo:3rd/minilzo
-depfinish=minilzo
-instfile=inc:hbmlzo.ch
-instfile=inc:hbmlzo.hbx
hbmlzo.hbx
core.c

View File

@@ -16,9 +16,6 @@
-depincpathlocal=mxml:3rd/minixml
-depfinish=mxml
-instfile=inc:hbmxml.ch
-instfile=inc:hbmxml.hbx
hbmxml.hbx
core.c

View File

@@ -3,7 +3,7 @@
*/
+---------------------------------------------------------------+
| 22/november/2001 - Harbour MySQL access classes - readme file |
| 2001/November/22 - Harbour MySQL access classes - readme file |
+---------------------------------------------------------------+
@@ -13,7 +13,7 @@ This is work in progress, so it has to be fully tested and needs a few more meth
This set of files gives you a mean to access a MySQL server, I've developed and tested them on a OS/2 platform,
In their present state MySQL classes are made up of these files:
mysql.c : low level wrapper around MySQL client API. It requires libmysqlclient.a library
mysql.c : low level wrapper around MySQL client API.
mysql.ch : clipper level defines of MySQL types
tmysql.prg : MySQL access classes
test.prg : a little test program which wont work for you :-) since it uses a .dbf file not
@@ -25,7 +25,7 @@ test.prg : a little test program which wont work for you :-) since it uses a
2) Add hbmysql.hbc to your hbmk2 command line (you can also try to
recompile programs in utils and tests subdirs just to test everything)
and be sure to have libmysql.dll in your PATH.
and be sure to have MySQL dynamic libraries configured.
+---------------------+

View File

@@ -9,8 +9,6 @@
-w3 -es2
-instfile=inc:hbnetio.hbx
hbnetio.hbx
netiosrv.c

View File

@@ -26,8 +26,8 @@
* SEGMENT directives, and also the ENDP and ENDS directives (a very
* minor task).
* $EXAMPLES$
* FT_CHDIR( "C:\clipper" )
* FT_CHDIR( "\" )
* FT_CHDIR( "..\source" )
* FT_CHDIR( "C:\harbour" )
* FT_CHDIR( hb_ps() )
* FT_CHDIR( ".." + hb_ps() + "hbnf" )
* $END$
*/

View File

@@ -111,7 +111,7 @@
* * Pay attention here, this is crucial. Note how to set up the string
* * so it appears in DS:DX.
*
* aRegs[ DS ] := "C:\MISC\MYFILE.XXX"
* aRegs[ DS ] := "C:\misc\myfile.xxx"
* aRegs[ DX ] := REG_DS
* FT_INT86( 33, aRegs ) // Make the call to the DOS interrupt
*

View File

@@ -9,9 +9,6 @@
-w3 -es2
-instfile=inc:ftmenuto.ch
-instfile=inc:hbnf.hbx
hbnf.hbx
alt.c

View File

@@ -9,8 +9,6 @@
-w3 -es2
-instfile=inc:hboslib.hbx
hboslib.hbx
core.prg

View File

@@ -9,8 +9,6 @@
-w3 -es2
-instfile=inc:hbsms.hbx
hbsms.hbx
sms.prg

View File

@@ -34,9 +34,6 @@
# For _fileno() in openssl/applink.c
-c=gnu90
-instfile=inc:hbssl.ch
-instfile=inc:hbssl.hbx
hbssl.hbx
ssl_hb.c

View File

@@ -9,9 +9,6 @@
-w3 -es2
-instfile=inc:telepath.ch
-instfile=inc:hbtpathy.hbx
hbtpathy.hbx
telepath.prg

View File

@@ -16,9 +16,6 @@
-depincpathlocal=xdiff:3rd/libxdiff
-depfinish=xdiff
-instfile=inc:hbxdiff.ch
-instfile=inc:hbxdiff.hbx
hbxdiff.hbx
core.c

View File

@@ -12,9 +12,7 @@
-instfile=inc:dll.ch
-instfile=inc:dmlb.ch
-instfile=inc:hbxpp.ch
-instfile=inc:hbxppext.ch
-instfile=inc:thread.ch
-instfile=inc:hbxpp.hbx
hbxpp.hbx

View File

@@ -89,7 +89,7 @@
* Call this function to determine if the disk inserted is the correct
* one before any other function.
* $EXAMPLES$
* IF hb_ZipTestPK( "A:\test22.zip" ) == 114
* IF hb_ZipTestPK( "test22.zip" ) == 114
* ? "Invalid Diskette"
* ENDIF
* $STATUS$
@@ -345,11 +345,11 @@
*
* hb_SetDiskZip( {| nDisk | Alert( "Please insert disk no " + Str( nDisk, 3 ) ) } )
*
* IF hb_ZipFileByPKSpan( "A:\test.zip", "test.prg" )
* IF hb_ZipFileByPKSpan( "test.zip", "test.prg" )
* ? "File was successfully created"
* ENDIF
*
* IF hb_ZipFileByPKSpan( "A:\test1.zip", { "test.prg", "test.hbp" } )
* IF hb_ZipFileByPKSpan( "test1.zip", { "test.prg", "test.hbp" } )
* ? "File was successfully created"
* ENDIF
*
@@ -361,8 +361,7 @@
* nLen := Len( aFiles )
* aGauge := GaugeNew( 5, 5, 7, 40, "W/B", "W+/B", "." )
* GaugeDisplay( aGauge )
* // assuming F: is a Zip Drive
* hb_ZipFileByPKSpan( "F:\test33.zip", aFiles, 9, {| cFile, nPos | GaugeUpdate( aGauge, nPos / nLen ) },, "hello" )
* hb_ZipFileByPKSpan( "test33.zip", aFiles, 9, {| cFile, nPos | GaugeUpdate( aGauge, nPos / nLen ) },, "hello" )
* RETURN
* $STATUS$
* R
@@ -522,12 +521,12 @@
*
* LOCAL aExtract := hb_GetFilesInZip( "test.zip" ) // extract all files in zip
*
* IF hb_UnzipFile( "test.zip",,,, ".\", aExtract )
* IF hb_UnzipFile( "test.zip",,,, "." + hb_ps(), aExtract )
* ? "File was successfully extracted"
* ENDIF
*
* aExtract := hb_GetFilesInZip( "test2.zip" ) // extract all files in zip
* IF hb_UnzipFile( "test2.zip", {| cFile | QOut( cFile ) },,, ".\", aExtract )
* IF hb_UnzipFile( "test2.zip", {| cFile | QOut( cFile ) },,, "." + hb_ps(), aExtract )
* ? "File was successfully extracted"
* ENDIF
* RETURN
@@ -566,7 +565,7 @@
* $DESCRIPTION$
* This function removes files from an Zip archive.
* $EXAMPLES$
* ? "has the file zipnew.i been deleted ", iif( hb_ZipDeleteFiles( "\test23.zip", "zipnew.i" ), "Yes", "No" )
* ? "has the file zipnew.i been deleted ", iif( hb_ZipDeleteFiles( "test23.zip", "zipnew.i" ), "Yes", "No" )
* $STATUS$
* R
* $COMPLIANCE$

View File

@@ -9,8 +9,6 @@
-w3 -es2
-instfile=inc:hbziparc.hbx
hbziparc.hbx
ziparc.prg

View File

@@ -16,27 +16,22 @@
* The RDD was written by Alexander Kresin <alex@belacy.belgorod.su>
* Additional code and documentation was added by
* Brian Hays <bhays@abacuslaw.com>.
*
* Your Harbour application can access a remote database server for a
* true client/server architecture, or it can use the "local server"
* adsloc32.dll for stand-alone or even small network installations.
* for stand-alone or even small network installations.
*
* <b>For using this RDD you need to have: </b></par>
* <b>ace32.dll ( Advantage Client Engine ), </b></par>
* <b>axcws32.dll ( communication layer for remote server ) or </b></par>
* <b>adsloc32.dll ( local server ) </b></par>
* For using this RDD you need to have all required dynamic libraries
* installed on your system.
*
* You need also to create ace32.lib with the help of implib.exe:
* implib ace32.lib ace32.dll
* For building executables don't forget to include rddads.hbc in your
* hbmk2 project.
*
* For building executables don't forget to include the ace32.lib and
* rddads.lib in the make file or link script.
* You also need to include in your prg file following lines:
*
* You also need to include in your PRG file following lines:
*
* REQUEST ADS </par>
* rddRegister( "ADS", 1 ) </par>
* rddsetdefault( "ADS" ) </par>
* REQUEST ADS
* rddRegister( "ADS", 1 )
* rddsetdefault( "ADS" )
*
* By default RDDADS is tuned for remote server and cdx indexes. To
* change this you may use these commands defined in ads.ch:
@@ -51,7 +46,7 @@
* or functions AdsSetServerType(), AdsSetFileType().
* See the header file ads.ch for details.
*
* Note that the default local server (adsloc32.dll) is useable for
* Note that the default local server is useable for
* file sharing on a small network. The default DLL is limited to
* 5 users, but an unlimited version is available from Extended Systems.
*
@@ -118,7 +113,7 @@
* setting to match Harbour's.
*
* INDEXING and Progress Displays:
* ace32.dll does not support the EVAL/EVERY clauses. Remember, there
* Remote server does not support the EVAL/EVERY clauses. Remember, there
* is an external process doing the indexing that knows nothing of
* Harbour expressions or codeblocks. Even with Local Server it's the
* DLLs doing all the indexing. So to do progress meters

View File

@@ -2,47 +2,43 @@
* $Id$
*/
RDD for Advantage Database Server
Alexander Kresin <alex@belacy.belgorod.su>
RDD for Advantage Database Server
Alexander Kresin <alex@belacy.belgorod.su>
For using this RDD you need to have:
ace32.dll ( Advantage Client Engine ),
axcws32.dll ( communication layer for remote server ) or
adsloc32.dll ( local server )
For using this RDD you need to have all required dynamic libraries
installed on your system.
You need also to create ace32.lib with the help of implib.exe:
implib ace32.lib ace32.dll
For building executables don't forget to include rddads.hbc in your
hbmk2 project.
For building executables don't forget to include the ace32.lib and
rddads.lib to the make file or link script.
You need to include in your prg file the following lines:
You need also to include to your prg file following lines:
REQUEST ADS
REQUEST ADS
and then you can set default RDD using one of the following functions:
and then you can set default RDD using one of the following functions:
rddSetDefault( "ADT" )
rddSetDefault( "ADSNTX" )
rddSetDefault( "ADSCDX" )
rddSetDefault( "ADSVFP" )
rddsetdefault( "ADT" )
rddsetdefault( "ADSNTX" )
rddsetdefault( "ADSCDX" )
rddsetdefault( "ADSVFP" )
You can also use:
You can also use:
REQUEST ADT | ADSNTX | ADSCDX | ADSVFP
REQUEST ADT | ADSNTX | ADSCDX | ADSVFP
instead of REQUEST ADS.
instead of REQUEST ADS.
for backward compatibility with old code it's possible to use also:
rddSetDefault( "ADS" )
and then
#include "ads.ch"
SET FILETYPE TO NTX | CDX | ADT | VFP
command or AdsSetFileType() function to set table type (default is CDX)
for backward compatibility with old code it's possible to use also:
rddsetdefault( "ADS" )
and then
SET FILETYPE TO NTX | CDX | ADT | VFP
command or AdsSetFileType() function to set table type (default is CDX)
By default RDD is tuned for remote server. To change this you may
use commands, defined in ads.ch:
By default RDD is tuned for remote server. To change this you may
use commands, defined in ads.ch:
SET SERVER LOCAL
SET SERVER LOCAL
or function AdsSetServerType().
or function AdsSetServerType().

View File

@@ -100,7 +100,7 @@ Follow are the various directories that exist under the Harbour tree.
| | |
| | +---gtcrs - GT subsystem based on ncurses.
| | |
| | +---gtdos - GT subsystem for DOS compilers.
| | +---gtdos - GT subsystem for MS-DOS compilers.
| | |
| | +---gtgui - Minimal GT for Windows GUI programs.
| | |

View File

@@ -52,8 +52,8 @@
* __Dir( "*.dbf" ) // list all DBF file in current directory
*
* // list all PRG files in Harbour Run-Time library
* // for DOS compatible operating systems
* __Dir( "C:\harbour\source\rtl\*.prg" )
* // for MS-DOS compatible operating systems
* __Dir( "src\rtl\*.prg" )
*
* // list all files in the public section on a Unix like machine
* __Dir( "/pub" )
@@ -107,11 +107,11 @@
* dir "*.dbf" // list all DBF file in current directory
*
* // list all PRG files in Harbour Run-Time library
* // for DOS compatible operating systems
* Dir "C:\harbour\source\rtl\*.prg"
* // for MS-DOS compatible operating systems
* Dir "src\rtl\*.prg"
*
* // list all files in the public section on a Unix like machine
* Dir "/pub"
* Dir "/pub"
* $STATUS$
* R
* $COMPLIANCE$

View File

@@ -958,7 +958,7 @@
* SET DEFAULT TO settings.
* $EXAMPLES$
* COPY FILE C:\harbour\tests\adirtest.prg TO C:\temp\adirtest.prg
* COPY FILE C:\harbour\utils\hbdoc\gennf.prg TO LPT1
* COPY FILE C:\harbour\tests\adirtest.prg TO LPT1
* $STATUS$
* R
* $COMPLIANCE$

View File

@@ -50,8 +50,8 @@ What this means is:
targets.
* The only sources in this directory are C sources (three files).
* The library name is "vm". This will be translated to a real file
name depending on the rules file: "libvm.a" on Unix, "VM.LIB" on
DOS.
name depending on the rules file: "libvm.a" on Unix, "vm.lib" on
Windows.
* The final line includes the rules file. In this case, we include a
set of rules to build a library.
@@ -188,30 +188,13 @@ For Borland C++ 5.5
For Borland C++ 3.x
HB_PLATFORM dos
For DJGPP (GCC port for DOS)
For DJGPP (GCC port for MS-DOS)
HB_PLATFORM dos
HB_COMPILER djgpp
For Watcom C/C++ 10.x (default Makefile creates DOS4G extender executables)
HB_PLATFORM dos
HB_COMPILER watcom
Note: It is possible that you will have to increase the space reserved for
DOS environment variables in order to successfuly run make utility
(Add for example:
SHELL=C:\COMMAND.COM C:\ E=2048 /P
to your CONFIG.SYS )
If you issue a "make install", it will try to install your doc, header,
executable and library files into directories given by
HB_INSTALL_BIN
HB_INSTALL_DOC
HB_INSTALL_LIB
HB_INSTALL_INC
You can set those as environment variables too. There is no default for
HB_INSTALL_DOC, so if you don't define it, then the doc files will not be
installed.
The most used targets are these:
@@ -225,27 +208,13 @@ The most used targets are these:
NOTES
=====
In order to get a clean build after making source changes or after
receiving updated source files, you must use the following two steps:
1) make clean
3) make
Without the first step, changes to the Harbour compiler and/or various
include files will not be reflected in any object modules created from
Harbour source code.
See INSTALL about details.
To rebuild only a part of Harbour, go to the appropriate source directory
and then run 'make'. For example, to rebuild all of Harbour, but not
the test programs, change to the 'source' directory. To rebuild only the
test programs, change to the 'test' directory.
If you are using a DOS-based operating system, then you can build any
program in tests/working by using the build batch file. For example,
'build scroll' will rebuild the scroll.prg program and then run it. This
can also be used for modules that aren't in the Makefile. You can also
pass parameters to the program. For example, 'build readfile harbour.ini'
will rebuild the readfile.prg program and run it with 'harbour.ini' as a
command line parameter.
You can build and/or run any program in tests/working by using hbmk2
and hbrun. For example, 'hbmk2 scroll.prg -run' will build the scroll.prg
program and then run it. 'hbrun scroll.prg' will run the program as
a script. You can also pass parameters to the program. For example,
'hbrun readfile.prg harbour.ini' will rebuild the readfile.prg program
and run it with 'harbour.ini' as a command line parameter.

View File

@@ -18,7 +18,7 @@ implementation of the _gt functions. These are functions named with
gtxxxxxx convention and are called by the _gt functions in gtapi.c.
I've provided the following files to implement the console functions:
gtdos.c - DOS implemenation
gtdos.c - MS-DOS implemenation
gtwin.c - Windows implementation
gtos2.c - OS/2 implementation
gtxxx.c - Generic template for implementation
@@ -257,7 +257,7 @@ gtpca - It's PCANSI terminal GT - it works in similar way to ANSI GT
Now GTTRM can make all GTPCA job and much more.
Supported by all platforms.
gtdos - GT driver for DOS - it uses BIOS and direct hardware screen output
gtdos - GT driver for MS-DOS - it uses BIOS and direct hardware screen output
so it's very similar to Clipper one - in practice due to the same
environment you will noticed that all small details of Clipper
GT drivers are replicated here. You can think about it like 100%
@@ -284,7 +284,7 @@ gttrm - it's like GTCRS and GTSLN but it does not use any external
terminal library like SLANG or CURSES and it does not use
any external database to extract terminal capabilities so
it can be compiled on any POSIX system - I'll add support
also for DOS/Windows in the future. It should automatically
also for MS-DOS/Windows in the future. It should automatically
detect UTF-8 terminal mode and switch internally to Unicode
mode if necessary. In theory is less functional then GTCRS
and GTSLN because I hard coded escape sequences only for few
@@ -316,9 +316,9 @@ GTWVG - GUI emulation of GTWVT. It implements itself on top of GTWVT.
Also all IO commands can be rendered on top of the GUI elements
gtxwc - GT driver for X-Window. It's like GTWVT but for nixes.
Additionaly it has set of predefined vector characters
(box and arrowd drawing characters) which can be used
(box and arrow drawing characters) which can be used
instead of the one defined in font. It means that you
will have all boxes and arrows you know from DOS ans CP437
will have all boxes and arrows you know from MS-DOS and CP437
even if you chose font which does not have them. Additionally
it support some simple graphic output. See tests/gfx.prg
for simple program which demonstrates it.
@@ -327,7 +327,7 @@ gtxwc - GT driver for X-Window. It's like GTWVT but for nixes.
gtalleg- GT driver which uses alegro library for input/output.
It's also GUI driver which support HB_GFX*() drawing.
Multi platform, works on all platforms for which allegro
library has been ported: MS-Win, DOS, VESA, X11, FB, SDL, ...
library has been ported: MS-Win, MS-DOS, VESA, X11, FB, SDL, ...
gtgui - pseudo GT driver which adds to GTNUL Clipboard and Tone
functionality. If you are using some MS-Windows GUI library

View File

@@ -6,8 +6,8 @@ uHTTPD micro web server
Build it without GD: hbmk2 uhttpd.hbp modules.hbp
Build it with GD: hbmk2 uhttpdgd.hbp modulesg.hbp
[ This one needs bgd.dll. Please download it from:
http://www.libgd.org/releases/gd-latest-win32.zip ]
[ This one needs GD lib. Please download it from:
http://www.libgd.org/ ]
To see accepted parameters run: uhttpd -?
Parameters can also be defined using uhttpd.ini file.

View File

@@ -2474,7 +2474,7 @@ STATIC FUNCTION uhttpd_DefError( oError )
cMessage := ErrorMessage( oError )
IF ! Empty( oError:osCode )
cDOSError := "(DOS Error " + hb_NToS( oError:osCode ) + ")"
cDOSError := "(OS Error " + hb_ntos( oError:osCode ) + ")"
ENDIF
// ;
@@ -2482,7 +2482,7 @@ STATIC FUNCTION uhttpd_DefError( oError )
cCallstack := ""
n := 1
DO WHILE ! Empty( ProcName( ++n ) )
cCallstack += "Called from " + ProcName( n ) + "(" + hb_NToS( ProcLine( n ) ) + ") ;"
cCallstack += "Called from " + ProcName( n ) + "(" + hb_ntos( ProcLine( n ) ) + ") ;"
ENDDO
// Build buttons
@@ -2568,7 +2568,7 @@ STATIC FUNCTION ErrorMessage( oError )
// add subsystem's error code if available
IF HB_ISNUMERIC( oError:subCode )
cMessage += "/" + hb_NToS( oError:subCode )
cMessage += "/" + hb_ntos( oError:subCode )
ELSE
cMessage += "/???"
ENDIF

View File

@@ -554,8 +554,8 @@ STATIC FUNCTION GetTopics()
" Open...",;
" Specify a file to be opened in the Code window",;
"",;
" DOS Access",;
" Shell to the DOS environment",;
" OS Access",;
" Shell to the OS environment",;
"",;
" Exit Alt-X",;
" Exit the debugger" }

View File

@@ -4,9 +4,7 @@
*/
//
// DosShell
//
// This program shell to DOS
// This program shells to OS
//
// Written by Eddie Runia <eddie@runia.com>
// www - http://harbour-project.org

View File

@@ -138,9 +138,6 @@ bsd, hpux, sunos: gcc
.IP "\fBHB_PLATFORM\fP" 10
.IP "\fBHB_COMPILER\fP" 10
.IP "\fBHB_INSTALL_PREFIX\fP" 10
.IP "\fBHB_INSTALL_BIN\fP" 10
.IP "\fBHB_INSTALL_INC\fP" 10
.IP "\fBHB_INSTALL_LIB\fP" 10
.IP "\fBHB_MT\fP" 10
.IP "\fBHB_GUI\fP" 10
.IP "\fBHB_SHARED\fP" 10

View File

@@ -849,7 +849,7 @@ msgstr "Comando para compresión:"
#: hbmk2.prg:4604
#, c-format
msgid "Warning: Copying target to %1$s failed with %2$s."
msgstr "Advertencia: Copiando destino a %1$s fallo con error DOS #%2$s."
msgstr "Advertencia: Copiando destino a %1$s fallo con error OS #%2$s."
#: hbmk2.prg:7942 hbmk2.prg:11633 hbmk2.prg:13102
#, c-format

View File

@@ -4435,7 +4435,7 @@ FUNCTION hbmk( aArgs, nArgTarget, /* @ */ lPause, nLevel )
cDefPrefix := "@"
ENDIF
IF hbmk[ _HBMK_cPLAT ] == "dos"
/* workaround for not included automatically CLIB in pure C mode DOS builds */
/* workaround for not included automatically CLIB in pure C mode MS-DOS builds */
AAdd( l_aLIBSYS, "clib3r" )
ENDIF
cBin_Lib := "wlib" + hbmk[ _HBMK_cCCEXT ]

View File

@@ -849,7 +849,7 @@ msgstr "Comando para compressão:"
#: hbmk2.prg:4604
#, c-format
msgid "Warning: Copying target to %1$s failed with %2$s."
msgstr "Atenção: Copiando alvo para %1$s falhou com DOS erro #%2$s."
msgstr "Atenção: Copiando alvo para %1$s falhou com OS erro #%2$s."
#: hbmk2.prg:7942 hbmk2.prg:11633 hbmk2.prg:13102
#, c-format