View | Details | Raw Unified | Return to bug 102961
Collapse All | Expand All

(-)src/util.c (-15 / +10 lines)
Lines 2141-2148 gchar * Link Here
2141
gaim_str_sub_away_formatters(const char *str, const char *name)
2141
gaim_str_sub_away_formatters(const char *str, const char *name)
2142
{
2142
{
2143
	char *c;
2143
	char *c;
2144
	gchar *cpy;
2144
	GString *cpy;
2145
	int cnt = 0;
2146
	time_t t;
2145
	time_t t;
2147
	struct tm *tme;
2146
	struct tm *tme;
2148
	char tmp[20];
2147
	char tmp[20];
Lines 2150-2161 gaim_str_sub_away_formatters(const char Link Here
2150
	g_return_val_if_fail(str  != NULL, NULL);
2149
	g_return_val_if_fail(str  != NULL, NULL);
2151
	g_return_val_if_fail(name != NULL, NULL);
2150
	g_return_val_if_fail(name != NULL, NULL);
2152
2151
2153
	cpy = g_malloc(BUF_LONG);
2152
	/* Create an empty GString that is hopefully big enough for most messages */
2153
	cpy = g_string_sized_new(1024);
2154
2154
2155
	t = time(NULL);
2155
	t = time(NULL);
2156
	tme = localtime(&t);
2156
	tme = localtime(&t);
2157
2157
2158
	cpy[0] = '\0';
2159
	c = (char *)str;
2158
	c = (char *)str;
2160
	while (*c) {
2159
	while (*c) {
2161
		switch (*c) {
2160
		switch (*c) {
Lines 2164-2202 gaim_str_sub_away_formatters(const char Link Here
2164
				switch (*(c + 1)) {
2163
				switch (*(c + 1)) {
2165
				case 'n':
2164
				case 'n':
2166
					/* append name */
2165
					/* append name */
2167
					strcpy(cpy + cnt, name);
2166
					g_string_append(cpy, name);
2168
					cnt += strlen(name);
2169
					c++;
2167
					c++;
2170
					break;
2168
					break;
2171
				case 'd':
2169
				case 'd':
2172
					/* append date */
2170
					/* append date */
2173
					strftime(tmp, 20, "%m/%d/%Y", tme);
2171
					strftime(tmp, 20, "%m/%d/%Y", tme);
2174
					strcpy(cpy + cnt, tmp);
2172
					g_string_append(cpy, tmp);
2175
					cnt += strlen(tmp);
2176
					c++;
2173
					c++;
2177
					break;
2174
					break;
2178
				case 't':
2175
				case 't':
2179
					/* append time */
2176
					/* append time */
2180
					strftime(tmp, 20, "%I:%M:%S %p", tme);
2177
					strftime(tmp, 20, "%I:%M:%S %p", tme);
2181
					strcpy(cpy + cnt, tmp);
2178
					g_string_append(cpy, tmp);
2182
					cnt += strlen(tmp);
2183
					c++;
2179
					c++;
2184
					break;
2180
					break;
2185
				default:
2181
				default:
2186
					cpy[cnt++] = *c;
2182
					g_string_append_c(cpy, *c);
2187
				}
2183
				}
2188
			} else {
2184
			} else {
2189
				cpy[cnt++] = *c;
2185
				g_string_append_c(cpy, *c);
2190
			}
2186
			}
2191
			break;
2187
			break;
2192
		default:
2188
		default:
2193
			cpy[cnt++] = *c;
2189
			g_string_append_c(cpy, *c);
2194
		}
2190
		}
2195
		c++;
2191
		c++;
2196
	}
2192
	}
2197
	cpy[cnt] = '\0';
2198
2193
2199
	return cpy;
2194
	return g_string_free(cpy, FALSE);
2200
}
2195
}
2201
2196
2202
gchar *
2197
gchar *

Return to bug 102961