* src/vm/itemapi.c
- hb_itemGetNL() no longer works for date types.
INCOMPATIBLE. If you used it to retrieve date/time,
use hb_itemGetDL() instead.
! Fixed typo in prev addition.
* include/hbapi.h
* src/vm/arrays.c
+ Added hb_arrayGetNSize(), hb_arraySetNSize().
! Fixed old typo in TRACE() call of hb_arrayGetNInt().
* src/vm/extend.c
! Fixed typo in prev addition.
* src/rtl/filesys.c
! Applied fixed from Przemek to hb_fsReadAt()/hb_fsWriteAt()
code to be MT safe plus fix other problems.
; QUESTION: Shouls the same applied to hb_fsWriteLarge()/hb_fsReadLarge()
loops? (BTW inactive in 32-bit Harbour builds)
* contrib/hbct/screen2.c
! Type cleanup.
* contrib/hbct/pack.c
* contrib/xhb/hbxml.c
* contrib/xhb/hbxml.h
* contrib/hbgt/charmixg.c
* contrib/hbgt/charodd.c
* contrib/hbgt/strexpan.c
* contrib/hbgt/asciisgt.c
* contrib/hbgt/strright.c
* contrib/hbgt/strasint.c
* contrib/hbgt/strdiffg.c
* contrib/hbgt/chrtotal.c
* contrib/hbgt/strcount.c
* contrib/hbgt/strleft.c
* contrib/hbgt/chrfirst.c
* contrib/hbgt/chrcount.c
* contrib/hbgt/strpbrk.c
* contrib/hbgt/chareven.c
* contrib/hbgt/bitflags.c
* contrib/hbgt/strcspn.c
* contrib/hbgt/atdiff.c
* contrib/hbnf/proper.c
* contrib/hbnf/getenvrn.c
! Fixed to use Harbour size types.
* contrib/hbnf/dispc.c
! Started using Harbour type, but this is code is
deadly and needs further work. I still wonder how
to create code which mixes properly HB_FOFFSET and
HB_SIZE.
* contrib/xhb/cstructc.c
* Formatting.
61 lines
1.4 KiB
C
61 lines
1.4 KiB
C
/*
|
|
* $Id$
|
|
*/
|
|
|
|
/*
|
|
* GT CLIPPER STANDARD HEADER
|
|
*
|
|
* File......: strexpan.c
|
|
* Author....: Andy M Leighton
|
|
* BBS.......: The Dark Knight Returns
|
|
* Net/Node..: 050/069
|
|
* User Name.: Andy Leighton
|
|
* Date......: 24/05/93
|
|
* Revision..: 1.00
|
|
*
|
|
* This is an original work by Andy Leighton and is placed in the
|
|
* public domain.
|
|
*/
|
|
|
|
#include "hbapi.h"
|
|
|
|
HB_FUNC( GT_STREXPAND )
|
|
{
|
|
const char *in;
|
|
char *out;
|
|
int nIns = 1;
|
|
const char *insert = " ";
|
|
HB_ISIZ len;
|
|
HB_ISIZ i, p;
|
|
int j;
|
|
|
|
if (HB_ISCHAR(1) && (HB_ISNUM(2) || hb_pcount() < 2) && (HB_ISCHAR(3) || hb_pcount() < 3)) {
|
|
in = hb_parc(1);
|
|
len = hb_parclen(1);
|
|
|
|
if (HB_ISNUM(2))
|
|
nIns = hb_parni(2);
|
|
|
|
if (HB_ISCHAR(3))
|
|
insert = hb_parc(3);
|
|
|
|
out = (char *)hb_xgrab(len * (nIns + 1)); /* alloc us some memory */
|
|
|
|
for (i = 0, p = 0; i < len; i++) { /* loop thru input */
|
|
out[p++] = in[i]; /* insert a character from input */
|
|
|
|
if (i < (len - 1)) { /* do not insert fill chars on last */
|
|
/* char of input */
|
|
for (j = 1; j <= nIns; j++) /* insert the fill characters */
|
|
out[p++] = insert[0];
|
|
}
|
|
}
|
|
out[p] = '\0'; /* Add terminating NUL */
|
|
|
|
hb_retc(out);
|
|
hb_xfree(out); /* free alloc'ed mem */
|
|
} else {
|
|
hb_retc_null(); /* parameter mismatch - error NullStr */
|
|
}
|
|
}
|