/*
 * Xailer source code:
 *
 * StrSql.c
 * Funcion StrSql() y similares
 *
 * Copyright 2021 Jose F. Gimenez <jfgimenez@wanadoo.es>
 * Copyright 2021 Xailer.com
 * All rights reserved
 *
 */

//------------------------------------------------------------------------------

#include "xailer.h"

char * StrSql( const char * cString, const char * cChars )
{
   LPSTR cResult, p1, p2;
   int nChars, n;

   if( cString && *cString && cChars )
      {
      nChars = strlen( cChars );
      cResult = hb_xgrab( ( hb_parclen( 1 ) + 1 ) * 2 );
      p1 = (LPSTR) cString;
      p2 = cResult;

      do
         {
         for( n = 0; n < nChars; n++ )
            if( *p1 == cChars[ n ] )
               {
               *p2++ = *p1;
               break;
               }
         *p2++ = *p1;
         }
      while( *p1++ );
      }
   else
      {
      cResult = hb_xgrab( 1 );
      *cResult = 0;
      }

   return( cResult );
}

//------------------------------------------------------------------------------

XA_FUNC( STRSQL ) // StrSQL( <cString> [,<cChars>] ) --> cString
{
   LPCSTR cChars = hb_parc( 2 );
   LPSTR cRet;

   if( ( cChars == NULL ) || ( *cChars == 0 ) )
      cChars = "'\\";

   cRet = StrSql( hb_parc( 1 ), cChars );

   hb_retc_buffer( cRet );
}

//------------------------------------------------------------------------------

XA_FUNC( STRMYSQL ) // StrMySQL( <cString> ) --> cString
{
   LPSTR cRet = StrSql( hb_parc( 1 ), "'\\" );

   hb_retc_buffer( cRet );
}

//------------------------------------------------------------------------------

XA_FUNC( STRSQLITE ) // StrSQLite( <cString> ) --> cString
{
   LPSTR cRet = StrSql( hb_parc( 1 ), "'" );

   hb_retc_buffer( cRet );
}

//------------------------------------------------------------------------------
