/***************************************************************************************
Macro: acmeStrcat_s(PJSTR s1, jde_n_char nBufferSize, const JCHAR * s2)
Notes: Appends s2 to s1 up to the capacity of s1 (not including the null-term).
Although this is meant as a replacement for jdeStrncat - due to the fact
that most existing code as of 1/11/10 was using jdeStrncat incorrectly
to avoid buffer overflows - it does NOT have the same behavior as jdeStrncat.
jdeStrncat will append n number of chars from s1 to s2 and doesn't have any buffer overrun protection.
For a true replacement to jdeStrncat that also has buffer overflow protetion
use acmeStrncat_s.
params:
s1 Null-terminated destination string
s2 Null-terminated source String
nBufferSize Size of s1 in number of characters (jde_n_char). Use DIM(s1) for a JCHAR array.
Returns:
PJSTR
Returns the same pointer that jdeStrncat returns.
Example:
acmeStrcat_s(s1, DIM(s1), s2);
Developer note:
This is roughly equivelent to wcscat_s or strcat_s except that currently the underlying
implementation is jdeStrncat to be as compliant as possible with jde coding standards.
*/
#define acmeStrcat_s(s1, nBufferSize, s2) \
jdeStrncat(s1, s2, nBufferSize - jdeStrlen(s1) - 1)