Files
harbour-core/harbour/contrib/hbgt/strexpan.c
Viktor Szakats ec13203192 2010-06-19 12:23 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
* 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.
2010-06-19 10:26:02 +00:00

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 */
}
}