#ifndef LIBTCC_UTILS_STRING_H # define LIBTCC_UTILS_STRING_H 1 # include # include /* copy a string and truncate it. */ static inline char * pstrcpy(char *buf, size_t buf_size, const char *s) { char *q, *q_end; int c; if (buf_size > 0) { q = buf; q_end = buf + buf_size - 1; while (q < q_end) { c = *s++; if (c == '\0') break; *q++ = c; } *q = '\0'; } return buf; } /* strcat and truncate. */ static inline char * pstrcat(char *buf, size_t buf_size, const char *s) { size_t len; len = strlen(buf); if (len < buf_size) pstrcpy(buf + len, buf_size - len, s); return buf; } static inline char * pstrncpy(char *out, const char *in, size_t num) { memcpy(out, in, num); out[num] = '\0'; return out; } #endif /* !LIBTCC_UTILS_STRING_H */