mirror of https://github.com/OpenTTD/OpenTTD
(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.release/0.4.5
parent
9a96f5b64e
commit
53d1c3f117
1
Makefile
1
Makefile
|
@ -300,6 +300,7 @@ CC_VERSION = $(shell $(CC) -dumpversion | cut -c 1,3)
|
||||||
# this is a workaround to test for >=
|
# this is a workaround to test for >=
|
||||||
ifeq ($(shell if test $(CC_VERSION) -ge 29; then echo true; fi), true)
|
ifeq ($(shell if test $(CC_VERSION) -ge 29; then echo true; fi), true)
|
||||||
CFLAGS += -O -Wall -Wno-multichar -Wsign-compare -Wstrict-prototypes
|
CFLAGS += -O -Wall -Wno-multichar -Wsign-compare -Wstrict-prototypes
|
||||||
|
CFLAGS += -Wwrite-strings
|
||||||
endif
|
endif
|
||||||
ifeq ($(shell if test $(CC_VERSION) -ge 30; then echo true; fi), true)
|
ifeq ($(shell if test $(CC_VERSION) -ge 30; then echo true; fi), true)
|
||||||
CFLAGS += -W -Wno-unused-parameter
|
CFLAGS += -W -Wno-unused-parameter
|
||||||
|
|
|
@ -271,7 +271,8 @@ enum {
|
||||||
};
|
};
|
||||||
void ShowSaveLoadDialog(int mode);
|
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
|
// callback from drivers that is called if the game size changes dynamically
|
||||||
void GameSizeChanged(void);
|
void GameSizeChanged(void);
|
||||||
|
|
|
@ -158,10 +158,8 @@ int32 CmdChangePresidentName(int x, int y, uint32 flags, uint32 p1, uint32 p2)
|
||||||
DeleteName(old_str);
|
DeleteName(old_str);
|
||||||
|
|
||||||
if (p->name_1 == STR_SV_UNNAMED) {
|
if (p->name_1 == STR_SV_UNNAMED) {
|
||||||
byte *s = " Transport";
|
ttd_strlcat(
|
||||||
byte *d = (byte*)_decode_parameters, b;
|
(char*)_decode_parameters, " Transport", sizeof(_decode_parameters));
|
||||||
d--; do d++; while (*d);
|
|
||||||
do *d++ = b = *s++; while(d != (byte*)endof(_decode_parameters) && b != 0);
|
|
||||||
DoCommandByTile(0, p1, 0, DC_EXEC, CMD_CHANGE_COMPANY_NAME);
|
DoCommandByTile(0, p1, 0, DC_EXEC, CMD_CHANGE_COMPANY_NAME);
|
||||||
}
|
}
|
||||||
MarkWholeScreenDirty();
|
MarkWholeScreenDirty();
|
||||||
|
|
18
ttd.c
18
ttd.c
|
@ -203,12 +203,20 @@ static const DriverDesc *ChooseDefaultDriver(const DriverDesc *dd)
|
||||||
return best;
|
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);
|
assert(size > 0);
|
||||||
while (--len && *src)
|
while (--size > 0 && *src != '\0') *dst++ = *src++;
|
||||||
*dst++=*src++;
|
*dst = '\0';
|
||||||
*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)
|
static char *strecpy(char *dst, const char *src)
|
||||||
|
|
Loading…
Reference in New Issue