Files
harbour-core/harbour/contrib/hbgt/strexpan.c
Viktor Szakats 0407f7eccb 2012-07-18 18:15 UTC+0200 Viktor Szakats (harbour syenar.net)
* contrib/hbgt/tests/test.prg
    * formatting (manual)

  * contrib/hbct/bitnum.c
  * contrib/hbct/charmirr.c
  * contrib/hbct/charonly.c
  * contrib/hbct/charsort.c
  * contrib/hbct/ctpad.c
  * contrib/hbct/ctstr.c
  * contrib/hbct/envparam.c
  * contrib/hbct/expand.c
  * contrib/hbct/files.c
  * contrib/hbct/justify.c
  * contrib/hbct/misc2.c
  * contrib/hbct/numat.c
  * contrib/hbct/pos1.c
  * contrib/hbct/posdiff.c
  * contrib/hbct/relation.c
  * contrib/hbct/replace.c
  * contrib/hbct/strswap.c
  * contrib/hbct/token1.c
  * contrib/hbct/token2.c
    * minor whitespace formatting

  * contrib/hbgt/ascposgt.c
  * contrib/hbgt/atdiff.c
  * contrib/hbgt/bitflags.c
  * contrib/hbgt/chareven.c
  * contrib/hbgt/charmixg.c
  * contrib/hbgt/charodd.c
  * contrib/hbgt/chrcount.c
  * contrib/hbgt/chrfirst.c
  * contrib/hbgt/chrtotal.c
  * contrib/hbgt/strasint.c
  * contrib/hbgt/strcount.c
  * contrib/hbgt/strcspn.c
  * contrib/hbgt/strdiffg.c
  * contrib/hbgt/strexpan.c
  * contrib/hbgt/strleft.c
  * contrib/hbgt/strpbrk.c
  * contrib/hbgt/strright.c
    * reformatted using uncrustify
2012-07-18 16:19:27 +00:00

65 lines
1.6 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 */
}
}