#include "xed-portability.h"
#include "xed-util.h"
#include <string.h>
int xed_strncat(char* dst, const char* src, int len) {
int dst_len = XED_STATIC_CAST(int,xed_strlen(dst));
int orig_max = dst_len + len;
int new_length = dst_len + XED_STATIC_CAST(int,xed_strlen(src)) + 1;
if (len <= 0)
return 0;
if (new_length > orig_max)
return 0;
#if defined(_WIN32) && !defined(__GNUC__)
# if defined(XED_MSVC6) || defined(XED_MSVC7) || defined(XED_IPF) || defined(PIN_CRT)
strncat(dst, src, len-1);
# else
strcat_s(dst, xed_strlen(dst)+len, src);
# endif
#else
strncat(dst,src,len-1);
#endif
return orig_max - XED_STATIC_CAST(int,xed_strlen(dst));
}
xed_uint_t xed_strlen(const char* s) {
return XED_STATIC_CAST(xed_uint_t,strlen(s));
}
void xed_strcpy(char* dst, const char* src) {
const char* psrc = src;
char* pdst = dst;
while(*psrc)
*pdst++ = *psrc++;
*pdst = 0;
}
int xed_strncpy(char* dst, const char* src, int len) {
int orig_max = len;
const char* psrc = src;
char* pdst = dst;
int i=0;
if (len <= 0)
return 0;
for(;*psrc && i<len;i++)
*pdst++ = *psrc++;
if (i<len)
*pdst = 0;
return orig_max - XED_STATIC_CAST(int,xed_strlen(dst));
}