diff options
author | Kartik K. Agaram <vc@akkartik.com> | 2016-10-06 09:25:22 -0700 |
---|---|---|
committer | Kartik K. Agaram <vc@akkartik.com> | 2016-10-06 09:25:22 -0700 |
commit | 5af07e1c2c65e74ecacaa3077e17a492a8532ab0 (patch) | |
tree | dbf3759688d41c2ec5e244ff2bbc76164f90167e /termbox | |
parent | d4ecd588afffccd8184f1ff70e7d13c72c38c7d5 (diff) | |
download | mu-5af07e1c2c65e74ecacaa3077e17a492a8532ab0.tar.gz |
3444
Fix CI. Turns out strlcpy and strlcat are not implemented on Linux.
Diffstat (limited to 'termbox')
-rw-r--r-- | termbox/output.inl | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/termbox/output.inl b/termbox/output.inl index 1ea4d810..43ebed3b 100644 --- a/termbox/output.inl +++ b/termbox/output.inl @@ -178,6 +178,16 @@ static char *terminfo_try_path(const char *path, const char *term) { return read_file(tmp); } +void string_copy(char* dest, const char* src, int dest_capacity) { + strncpy(dest, src, dest_capacity); + dest[dest_capacity-1] = '\0'; +} + +void string_append(char* dest, const char* src, int dest_capacity) { + strncat(dest, src, dest_capacity); + dest[dest_capacity-1] = '\0'; +} + static char *load_terminfo(void) { char tmp[4096]; const char *term = getenv("TERM"); @@ -196,8 +206,8 @@ static char *load_terminfo(void) { if (home) { // snprintf guarantee for older compilers assert(sizeof(tmp) > sizeof(home)+sizeof("/.terminfo")+1); - strlcpy(tmp, home, sizeof(tmp)); - strlcat(tmp, "/.terminfo", sizeof(tmp)); + string_copy(tmp, home, sizeof(tmp)); + string_append(tmp, "/.terminfo", sizeof(tmp)); char *data = terminfo_try_path(tmp, term); if (data) return data; @@ -235,7 +245,7 @@ static const char *terminfo_copy_string(char *data, int str, int table) { const char *src = data + table + off; int len = strlen(src); char *dst = malloc(len+1); - strlcpy(dst, src, len); + string_copy(dst, src, len); return dst; } |