/* Return value: a pointer to the subscribed string.  */
gchar* scs_subscribe(SCS_collection *c, const gchar *s)
/* Return value: a pointer to the subscribed string.  */
gchar* scs_subscribe(SCS_collection *c, const gchar *s)
{
		(*ip)++;
	} else {
		ip = g_slice_new(guint);
		*ip = 0;
		len = strlen(s) + 1;
		if (len <= SCS_SMALL_SIZE) {
			len = SCS_SMALL_SIZE;
		} else if (len <= SCS_MEDIUM_SIZE) {
			len = SCS_MEDIUM_SIZE;
		} else if (len <= SCS_LARGE_SIZE) {
			len = SCS_LARGE_SIZE;
		} else if (len < SCS_HUGE_SIZE) {
			len = SCS_HUGE_SIZE;
		} else {
			len = SCS_HUGE_SIZE;
			g_warning("mate SCS: string truncated due to huge size");
		}
		orig = (gchar *)g_slice_alloc(len);
		g_strlcpy(orig,s,len);
		g_hash_table_insert(c->hash,orig,ip);
	}
	return orig;
}