string.c
changeset 2234 8a9b4c6d9c2a
parent 2186 db48cf29b983
child 2775 a18db0ab5e51
equal deleted inserted replaced
2233:ee31c1e1477c 2234:8a9b4c6d9c2a
     1 /* $Id$ */
     1 /* $Id$ */
     2 
     2 
     3 #include "stdafx.h"
     3 #include "stdafx.h"
     4 #include "string.h"
     4 #include "string.h"
       
     5 
       
     6 #include <stdarg.h>
     5 
     7 
     6 void ttd_strlcat(char *dst, const char *src, size_t size)
     8 void ttd_strlcat(char *dst, const char *src, size_t size)
     7 {
     9 {
     8 	assert(size > 0);
    10 	assert(size > 0);
     9 	for (; size > 0 && *dst != '\0'; --size, ++dst) {}
    11 	for (; size > 0 && *dst != '\0'; --size, ++dst) {}
    37 	assert(last == NULL || dst <= last);
    39 	assert(last == NULL || dst <= last);
    38 	for (; *src != '\0' && dst != last; ++dst, ++src) *dst = *src;
    40 	for (; *src != '\0' && dst != last; ++dst, ++src) *dst = *src;
    39 	*dst = '\0';
    41 	*dst = '\0';
    40 	return dst;
    42 	return dst;
    41 }
    43 }
       
    44 
       
    45 
       
    46 char* CDECL str_fmt(const char* str, ...)
       
    47 {
       
    48 	char buf[4096];
       
    49 	va_list va;
       
    50 	int len;
       
    51 	char* p;
       
    52 
       
    53 	va_start(va, str);
       
    54 	len = vsprintf(buf, str, va);
       
    55 	va_end(va);
       
    56 	p = malloc(len + 1);
       
    57 	if (p != NULL) memcpy(p, buf, len + 1);
       
    58 	return p;
       
    59 }