Files
harbour-core/harbour/source/rtl/mtran.c

62 lines
1.2 KiB
C

#include <extend.h>
#include <ctype.h>
#define CHR_HARD1 (char)141
#define CHR_HARD2 (char)10
#define CHR_SOFT1 (char)13
#define CHR_SOFT2 (char)10
void ProcessSymbols( SYMBOL *, WORD );
HARBOUR HB_MEMOTRAN(void);
static SYMBOL symbols[] = {
{ "MEMOTRAN", FS_PUBLIC, HB_MEMOTRAN, 0 }
};
void Memotran__InitSymbols( void )
{
ProcessSymbols( symbols, sizeof(symbols)/sizeof( SYMBOL ) );
}
char *hb_memotran( char *string, char *hardcr, char *softcr )
{
char *s;
if( string )
{
for( s = string; *s; ++s )
if( *s == CHR_HARD1 && *(s+1) == CHR_HARD2 )
*s++ = *hardcr;
if( *s == CHR_SOFT1 && *(s+1) == CHR_SOFT2 )
*s++ = *softcr;
*s = '\0';
}
return string;
}
HARBOUR HB_MEMOTRAN( void )
{
if( _pcount() == 1 )
{
PHB_ITEM pItem = _param(1, IT_STRING );
if( pItem )
{
if( IS_STRING( pItem ) )
{
PHB_ITEM pItem2 = _param(2, IT_STRING );
PHB_ITEM pItem3 = _param(3, IT_STRING );
char *hardcr = ( pItem2 ) ? pItem2->value.szText:";";
char *softcr = ( pItem3 ) ? pItem3->value.szText:" ";
_retc( hb_memotran( pItem->value.szText, hardcr, softcr ) );
}
}
}
}