make_re() now doesn't free the argument.
This is good practice and also helped simplifying re_*() functions.
This commit is contained in:
		
							parent
							
								
									a72d40284d
								
							
						
					
					
						commit
						a25363f5c3
					
				
					 1 changed files with 14 additions and 45 deletions
				
			
		| 
						 | 
					@ -425,14 +425,14 @@ regex_match (const GRegex *re, const char *word, int *start, int *end)
 | 
				
			||||||
#define PORT "(:[1-9][0-9]{0,4})"
 | 
					#define PORT "(:[1-9][0-9]{0,4})"
 | 
				
			||||||
#define OPT_PORT "(" PORT ")?"
 | 
					#define OPT_PORT "(" PORT ")?"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
GRegex *
 | 
					static GRegex *
 | 
				
			||||||
make_re (char *grist)
 | 
					make_re (char *grist)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	GRegex *ret;
 | 
						GRegex *ret;
 | 
				
			||||||
	GError *err = NULL;
 | 
						GError *err = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ret = g_regex_new (grist, G_REGEX_CASELESS | G_REGEX_OPTIMIZE, 0, &err);
 | 
						ret = g_regex_new (grist, G_REGEX_CASELESS | G_REGEX_OPTIMIZE, 0, &err);
 | 
				
			||||||
	g_free (grist);
 | 
					
 | 
				
			||||||
	return ret;
 | 
						return ret;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -442,16 +442,11 @@ static const GRegex *
 | 
				
			||||||
re_host (void)
 | 
					re_host (void)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	static GRegex *host_ret;
 | 
						static GRegex *host_ret;
 | 
				
			||||||
	char *grist;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (host_ret) return host_ret;
 | 
						if (host_ret) return host_ret;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	grist = g_strdup (
 | 
						host_ret = make_re ("(" "(" HOST_URL PORT ")|(" HOST ")" ")");
 | 
				
			||||||
		"("
 | 
						
 | 
				
			||||||
			"(" HOST_URL PORT ")|(" HOST ")"
 | 
					 | 
				
			||||||
		")"
 | 
					 | 
				
			||||||
	);
 | 
					 | 
				
			||||||
	host_ret = make_re (grist);
 | 
					 | 
				
			||||||
	return host_ret;
 | 
						return host_ret;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -459,17 +454,10 @@ static const GRegex *
 | 
				
			||||||
re_host6 (void)
 | 
					re_host6 (void)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	static GRegex *host6_ret;
 | 
						static GRegex *host6_ret;
 | 
				
			||||||
	char *grist;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (host6_ret) return host6_ret;
 | 
						if (host6_ret) return host6_ret;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	grist = g_strdup (
 | 
						host6_ret = make_re ("(" "(" IPV6ADDR ")|(" "\\[" IPV6ADDR "\\]" PORT ")" ")");
 | 
				
			||||||
		"("
 | 
					 | 
				
			||||||
			"(" IPV6ADDR ")|(" "\\[" IPV6ADDR "\\]" PORT ")"
 | 
					 | 
				
			||||||
		")"
 | 
					 | 
				
			||||||
	);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	host6_ret = make_re (grist);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return host6_ret;
 | 
						return host6_ret;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -601,6 +589,7 @@ re_url (void)
 | 
				
			||||||
	grist = g_string_free (grist_gstr, FALSE);
 | 
						grist = g_string_free (grist_gstr, FALSE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	url_ret = make_re (grist);
 | 
						url_ret = make_re (grist);
 | 
				
			||||||
 | 
						g_free (grist);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return url_ret;
 | 
						return url_ret;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -612,16 +601,11 @@ static const GRegex *
 | 
				
			||||||
re_email (void)
 | 
					re_email (void)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	static GRegex *email_ret;
 | 
						static GRegex *email_ret;
 | 
				
			||||||
	char *grist;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (email_ret) return email_ret;
 | 
						if (email_ret) return email_ret;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	grist = g_strdup (
 | 
						email_ret = make_re ("(" EMAIL ")");
 | 
				
			||||||
		"("
 | 
					
 | 
				
			||||||
			EMAIL
 | 
					 | 
				
			||||||
		")"
 | 
					 | 
				
			||||||
	);
 | 
					 | 
				
			||||||
	email_ret = make_re (grist);
 | 
					 | 
				
			||||||
	return email_ret;
 | 
						return email_ret;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -648,16 +632,11 @@ static const GRegex *
 | 
				
			||||||
re_nick (void)
 | 
					re_nick (void)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	static GRegex *nick_ret;
 | 
						static GRegex *nick_ret;
 | 
				
			||||||
	char *grist;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (nick_ret) return nick_ret;
 | 
						if (nick_ret) return nick_ret;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	grist = g_strdup (
 | 
						nick_ret = make_re ("(" NICK ")");
 | 
				
			||||||
		"("
 | 
					
 | 
				
			||||||
			NICK
 | 
					 | 
				
			||||||
		")"
 | 
					 | 
				
			||||||
	);
 | 
					 | 
				
			||||||
	nick_ret = make_re (grist);
 | 
					 | 
				
			||||||
	return nick_ret;
 | 
						return nick_ret;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -668,16 +647,11 @@ static const GRegex *
 | 
				
			||||||
re_channel (void)
 | 
					re_channel (void)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	static GRegex *channel_ret;
 | 
						static GRegex *channel_ret;
 | 
				
			||||||
	char *grist;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (channel_ret) return channel_ret;
 | 
						if (channel_ret) return channel_ret;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	grist = g_strdup (
 | 
						channel_ret = make_re ("(" CHANNEL ")");
 | 
				
			||||||
		"("
 | 
					
 | 
				
			||||||
			CHANNEL
 | 
					 | 
				
			||||||
		")"
 | 
					 | 
				
			||||||
	);
 | 
					 | 
				
			||||||
	channel_ret = make_re (grist);
 | 
					 | 
				
			||||||
	return channel_ret;
 | 
						return channel_ret;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -694,15 +668,10 @@ static const GRegex *
 | 
				
			||||||
re_path (void)
 | 
					re_path (void)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	static GRegex *path_ret;
 | 
						static GRegex *path_ret;
 | 
				
			||||||
	char *grist;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (path_ret) return path_ret;
 | 
						if (path_ret) return path_ret;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	grist = g_strdup (
 | 
						path_ret = make_re ("(" FS_PATH ")");
 | 
				
			||||||
		"("
 | 
					
 | 
				
			||||||
			FS_PATH
 | 
					 | 
				
			||||||
		")"
 | 
					 | 
				
			||||||
	);
 | 
					 | 
				
			||||||
	path_ret = make_re (grist);
 | 
					 | 
				
			||||||
	return path_ret;
 | 
						return path_ret;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		
		Reference in a new issue