# HG changeset patch # User tron # Date 1106493407 0 # Node ID 55b99683ce51aaf635cbff530ac56657b73dd378 # Parent 74e602e41692cc6288f358d00dbe22c355539107 (svn r1616) Introduce ttd_strlcat() and use it to de-uglify some piece of code in misc_cmd. While here rename the len parameter of ttd_strlcpy() to size, because it is a buffer size and not a string length. Also add -Wwrite-strings to the Makefile, because the above mentioned piece of code was the only part which triggered this warning. diff -r 74e602e41692 -r 55b99683ce51 Makefile --- a/Makefile Sun Jan 23 14:15:42 2005 +0000 +++ b/Makefile Sun Jan 23 15:16:47 2005 +0000 @@ -300,6 +300,7 @@ # this is a workaround to test for >= ifeq ($(shell if test $(CC_VERSION) -ge 29; then echo true; fi), true) CFLAGS += -O -Wall -Wno-multichar -Wsign-compare -Wstrict-prototypes + CFLAGS += -Wwrite-strings endif ifeq ($(shell if test $(CC_VERSION) -ge 30; then echo true; fi), true) CFLAGS += -W -Wno-unused-parameter diff -r 74e602e41692 -r 55b99683ce51 functions.h --- a/functions.h Sun Jan 23 14:15:42 2005 +0000 +++ b/functions.h Sun Jan 23 15:16:47 2005 +0000 @@ -271,7 +271,8 @@ }; void ShowSaveLoadDialog(int mode); -void ttd_strlcpy(char *dst, const char *src, size_t len); +void ttd_strlcpy(char *dst, const char *src, size_t size); +void ttd_strlcat(char *dst, const char *src, size_t size); // callback from drivers that is called if the game size changes dynamically void GameSizeChanged(void); diff -r 74e602e41692 -r 55b99683ce51 misc_cmd.c --- a/misc_cmd.c Sun Jan 23 14:15:42 2005 +0000 +++ b/misc_cmd.c Sun Jan 23 15:16:47 2005 +0000 @@ -158,10 +158,8 @@ DeleteName(old_str); if (p->name_1 == STR_SV_UNNAMED) { - byte *s = " Transport"; - byte *d = (byte*)_decode_parameters, b; - d--; do d++; while (*d); - do *d++ = b = *s++; while(d != (byte*)endof(_decode_parameters) && b != 0); + ttd_strlcat( + (char*)_decode_parameters, " Transport", sizeof(_decode_parameters)); DoCommandByTile(0, p1, 0, DC_EXEC, CMD_CHANGE_COMPANY_NAME); } MarkWholeScreenDirty(); diff -r 74e602e41692 -r 55b99683ce51 ttd.c --- a/ttd.c Sun Jan 23 14:15:42 2005 +0000 +++ b/ttd.c Sun Jan 23 15:16:47 2005 +0000 @@ -203,12 +203,20 @@ return best; } -void ttd_strlcpy(char *dst, const char *src, size_t len) +void ttd_strlcpy(char *dst, const char *src, size_t size) { - assert(len > 0); - while (--len && *src) - *dst++=*src++; - *dst = 0; + assert(size > 0); + while (--size > 0 && *src != '\0') *dst++ = *src++; + *dst = '\0'; +} + +void ttd_strlcat(char *dst, const char *src, size_t size) +{ + assert(size > 0); + for (; size > 0 && *dst != '\0'; --size, ++dst) {} + assert(size > 0); + while (--size > 0 && *src != '\0') *dst++ = *src++; + *dst = '\0'; } static char *strecpy(char *dst, const char *src)