Fixed the bug in news/live_game/... where the value in something|something1|something3 was returned instead of picking one of them

This commit is contained in:
gunnar_g 2009-04-10 12:43:19 +00:00
parent 4d581f5ae0
commit 14815a0962
1 changed files with 5 additions and 25 deletions

View File

@ -532,33 +532,13 @@ misc_string_assign(gchar **string, const gchar *contents)
void void
misc_string_choose_random(gchar *string) misc_string_choose_random(gchar *string)
{ {
const gchar STR_SEP = '|';
gint i = 0;
gint count = 1; gint count = 1;
const gchar* start; gchar **array;
for (i = 0; string[i]; i++) array = g_strsplit(string, "|", -1);
count += (string[i] == STR_SEP); count = g_strv_length(array);
count = math_rndi(0, count - 1);
if (count == 1) strcpy(string, array[count]);
return;
count = math_rndi(0, count - 1) + 1;
start = g_strdup(string);
for (i = 0; string[i]; i++)
if (string[i] == STR_SEP)
{
count--;
if (count == 1)
start = string + i + 1;
else if (!count)
{
string[i] = '\0';
break;
}
}
strcpy(string, start);
} }
/** Replace a token in a string by another string. /** Replace a token in a string by another string.