1 #ifndef _SAFE_STRINGS_H_INCLUDED_ 
    2 #define _SAFE_STRINGS_H_INCLUDED_ 
   29 #if ( !defined( _MSC_VER ) && !defined(NO_SAFE_STRINGS) ) || defined( _MSC_VER ) && _MSC_VER >= 1400  && !defined(NO_SAFE_STRINGS) 
   37 #ifndef SAFESTRINGS_TEST_APP 
   39 #       ifndef __safe_strings_error_handler 
   40 #               define __safe_strings_error_handler( val ) Error(file, line,"%s: String error. Please Report.\nTrying to put into " SIZE_T_ARG " byte buffer:\n%s", #val, sizeInBytes,strSource) 
   46 #       define __safe_strings_error_handler( errnoVal ) extern void error_handler( int errnoValue, const char* errnoStr,  const char* file, const char* function, int line );\ 
   47                                                                                                                                 error_handler( errnoVal, #errnoVal, __FILE__, __FUNCTION__, __LINE__ ); 
   50 extern errno_t scp_strcpy_s( 
const char* file, 
int line, 
char* strDest, 
size_t sizeInBytes, 
const char* strSource );
 
   51 extern errno_t scp_strcat_s( 
const char* file, 
int line, 
char* strDest, 
size_t sizeInBytes, 
const char* strSource );
 
   53 template< 
size_t size>
 
   57         return scp_strcpy_s( file, line, strDest, size, strSource );
 
   60 template< 
size_t size >
 
   64         return scp_strcat_s( file, line, strDest, size, strSource );
 
   67 #define strcpy_s( ... ) scp_strcpy_s( __FILE__, __LINE__, __VA_ARGS__ ) 
   68 #define strcat_s( ... ) scp_strcat_s( __FILE__, __LINE__, __VA_ARGS__ ) 
   70 #elif defined(_MSC_VER) && _MSC_VER < 1400 || defined(NO_SAFE_STRINGS) 
   72 #pragma message("safe_strings disabled - this is not good!") 
   74 inline errno_t strcpy_s( 
char* strDest, 
size_t sizeInBytes, 
const char* strSource )
 
   76         strcpy( strDest, strSource ); 
 
   80 inline errno_t strcat_s( 
char* strDest, 
size_t sizeInBytes, 
const char* strSource )
 
   82         strcat( strDest, strSource ); 
 
   88         strcpy( strDest, strSource );
 
   94         strcat( strDest, strSource ); 
 
  100 #endif // _SAFE_STRINGS_H_INCLUDED_ 
errno_t scp_strcat_s(const char *file, int line, char *strDest, size_t sizeInBytes, const char *strSource)
 
errno_t scp_strcpy_s(const char *file, int line, char *strDest, size_t sizeInBytes, const char *strSource)