changeset 1853:f37c0a881cd8 draft

(svn r2359) Use strecpy instead of str_cat (which was rather a cpy than a cat, btw), remove the latter and simplify some constructs
author tron <tron@openttd.org>
date Sun, 22 May 2005 07:43:18 +0000
parents e67817ae950c
children 7a0ce7d2056d
files strings.c
diffstat 1 files changed, 15 insertions(+), 25 deletions(-) [+]
line wrap: on
line diff
--- a/strings.c
+++ b/strings.c
@@ -124,11 +124,6 @@
 	}
 };
 
-static char *str_cat(char *dst, const char *src)
-{
-	while ((*dst++ = *src++) != '\0') {}
-	return dst - 1;
-}
 
 static const char *GetStringPtr(StringID string)
 {
@@ -464,21 +459,18 @@
 				buff = FormatNoCommaNumber(buff, GetParamInt32());
 				break;
 			case 2: /* {REV} */
-				buff = str_cat(buff, _openttd_revision);
+				buff = strecpy(buff, _openttd_revision, NULL);
 				break;
 			case 3: { /* {SHORTCARGO} */
 				// Short description of cargotypes. Layout:
 				// 8-bit = cargo type
 				// 16-bit = cargo count
-				const char *s;
 				StringID cargo_str = _cargo_string_list[_opt_ptr->landscape][(byte)GetParamInt8()];
 				uint16 multiplier = (cargo_str == STR_LITERS) ? 1000 : 1;
 				// liquid type of cargo is multiplied by 100 to get correct amount
 				buff = FormatCommaNumber(buff, GetParamInt16() * multiplier);
-				s = GetStringPtr(cargo_str);
-
-				memcpy(buff++, " ", 1);
-				while (*s) *buff++ = *s++;
+				buff = strecpy(buff, " ", NULL);
+				buff = strecpy(buff, GetStringPtr(cargo_str), NULL);
 			} break;
 			case 4: /* {CURRCOMPACT64} */
 				// 64 bit compact currency-unit
@@ -494,14 +486,11 @@
 			GetParamInt16();
 			//assert(0);
 			break;
-		case 0x87: { // {VOLUME}
-			const char *s;
+		case 0x87: // {VOLUME}
 			buff = FormatCommaNumber(buff, GetParamInt16() * 1000);
-			memcpy(buff++, " ", 1);
-			s = GetStringPtr(STR_LITERS);
-			while (*s) *buff++ = *s++;
+			buff = strecpy(buff, " ", NULL);
+			buff = strecpy(buff, GetStringPtr(STR_LITERS), NULL);
 			break;
-		}
 
 		case 0x88: // {STRING}
 			buff = GetString(buff, (uint16)GetParamUint16());
@@ -684,8 +673,8 @@
 		num = 12;
 	}
 
-	buff = str_cat(buff, _surname_list[base + ((num * (byte)(x >> 16)) >> 8)]);
-	buff = str_cat(buff, " & Co.");
+	buff = strecpy(buff, _surname_list[base + (num * GB(x, 16, 8) >> 8)], NULL);
+	buff = strecpy(buff, " & Co.", NULL);
 
 	return buff;
 }
@@ -715,7 +704,7 @@
 		num = 12;
 	}
 
-	buff = str_cat(buff, _surname_list[base + ((num * (byte)(x >> 16)) >> 8)]);
+	buff = strecpy(buff, _surname_list[base + (num * GB(x, 16, 8) >> 8)], NULL);
 
 	return buff;
 }
@@ -749,7 +738,7 @@
 {
 	switch (ind) {
 		case 1: // not used
-			return str_cat(buff, _silly_company_names[GetParamInt32() & 0xFFFF]);
+			return strecpy(buff, _silly_company_names[GetParamInt32() & 0xFFFF], NULL);
 
 		case 2: // used for Foobar & Co company names
 			return GenAndCoName(buff);
@@ -758,19 +747,20 @@
 			return GenPlayerName_4(buff);
 
 		case 4: // song names
-			return str_cat(buff, _song_names[GetParamUint16() - 1]);
+			return strecpy(buff, _song_names[GetParamUint16() - 1], NULL);
 	}
 
 	// town name?
 	if (IS_INT_INSIDE(ind - 6, 0, SPECSTR_TOWNNAME_LAST-SPECSTR_TOWNNAME_START + 1)) {
 		buff = GetSpecialTownNameString(buff, ind - 6);
-		return str_cat(buff, " Transport");
+		return strecpy(buff, " Transport", NULL);
 	}
 
 	// language name?
 	if (IS_INT_INSIDE(ind, (SPECSTR_LANGUAGE_START - 0x70E4), (SPECSTR_LANGUAGE_END - 0x70E4) + 1)) {
 		int i = ind - (SPECSTR_LANGUAGE_START - 0x70E4);
-		return str_cat(buff, i == _dynlang.curr ? _langpack->own_name : _dynlang.ent[i].name);
+		return strecpy(buff,
+			i == _dynlang.curr ? _langpack->own_name : _dynlang.ent[i].name, NULL);
 	}
 
 	// resolution size?
@@ -782,7 +772,7 @@
 	// screenshot format name?
 	if (IS_INT_INSIDE(ind, (SPECSTR_SCREENSHOT_START - 0x70E4), (SPECSTR_SCREENSHOT_END - 0x70E4) + 1)) {
 		int i = ind - (SPECSTR_SCREENSHOT_START - 0x70E4);
-		return str_cat(buff, GetScreenshotFormatDesc(i));
+		return strecpy(buff, GetScreenshotFormatDesc(i), NULL);
 	}
 
 	assert(0);