34 char *
strecat(
char *dst, 
const char *src, 
const char *last);
 
   35 char *
strecpy(
char *dst, 
const char *src, 
const char *last);
 
   36 char *
stredup(
const char *src, 
const char *last = NULL);
 
   38 int CDECL 
seprintf(
char *str, 
const char *last, 
const char *format, ...) WARN_FORMAT(3, 4);
 
   39 int CDECL 
vseprintf(
char *str, const 
char *last, const 
char *format, va_list ap);
 
   41 char *CDECL 
str_fmt(const 
char *str, ...) WARN_FORMAT(1, 2);
 
   50 bool StrValid(const 
char *str, const 
char *last);
 
   61   return s == NULL || s[0] == 
'\0';
 
   71 static inline size_t ttd_strnlen(
const char *str, 
size_t maxlen)
 
   74   for (t = str; (size_t)(t - str) < maxlen && *t != 
'\0'; t++) {}
 
   78 char *
md5sumToString(
char *buf, 
const char *last, 
const uint8 md5sum[16]);
 
   87 static inline WChar Utf8Consume(
const char **s)
 
  101   if (c < 0x80)       
return 1;
 
  102   if (c < 0x800)      
return 2;
 
  103   if (c < 0x10000)    
return 3;
 
  104   if (c < 0x110000)   
return 4;
 
  120   if (
GB(c, 3, 5) == 0x1E) 
return 4;
 
  121   if (
GB(c, 4, 4) == 0x0E) 
return 3;
 
  122   if (
GB(c, 5, 3) == 0x06) 
return 2;
 
  123   if (
GB(c, 7, 1) == 0x00) 
return 1;
 
  131 static inline bool IsUtf8Part(
char c)
 
  133   return GB(c, 6, 2) == 2;
 
  146   while (IsUtf8Part(*--ret)) {}
 
  153   while (IsUtf8Part(*--ret)) {}
 
  166   return c >= 0xD800 && c <= 0xDBFF;
 
  176   return c >= 0xDC00 && c <= 0xDFFF;
 
  187   return 0x10000 + (((lead - 0xD800) << 10) | (trail - 0xDC00));
 
  227 static inline bool IsPrintable(
WChar c)
 
  229   if (c < 0x20)   
return false;
 
  230   if (c < 0xE000) 
return true;
 
  231   if (c < 0xE200) 
return false;
 
  244   return c == 0x0020  || c == 0x3000; 
 
  248 #if defined(__NetBSD__) || defined(__FreeBSD__) 
  249 #include <sys/param.h> 
  253 #if defined(_GNU_SOURCE) || (defined(__BSD_VISIBLE) && __BSD_VISIBLE) || (defined(__APPLE__) && (!defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE))) || defined(_NETBSD_SOURCE) 
  254 # undef DEFINE_STRCASESTR 
  256 # define DEFINE_STRCASESTR 
  257 char *strcasestr(
const char *haystack, 
const char *needle);
 
  260 int strnatcmp(
const char *s1, 
const char *s2, 
bool ignore_garbage_at_front = 
false);