Petit controleur de mask irc en c

Contenu du snippet

Permet de de verifier deux chaines de carateres avec un caractere joker '*' , utile pour les bots et services irc!

fonction host_compare return 1 si correspondance sinon return 0;

testé avec ces genre de mask :
  • @*2.fr -> yoyo49!yoyo@tele2.fr = 1
  • !*@tele2.fr -> yoyo49!yoyo@tele2.fr = 1
  • !*@tele2.fr -> yoyo49!yoyo@tele3.fr = 0
  • !*@*2.fr -> yoyo49!yoyo@tele2.fr = 1
  • !*@tele2.ft -> yoyo49!yoyo@tele2.fr = 0

yo*!*@* -> yoyo49!yoyo@tele2.fr = 1
ya*!*@* -> yoyo49!yoyo@tele2.fr = 0
  • !yo*@* -> yoyo49!yoyo@tele2.fr = 1
  • !ya*@* -> yoyo49!yoyo@tele2.fr = 0
  • !*t@* -> yoyo49!yoyo@tele2.fr = 0
  • !y*@* -> yoyo49!yoyo@tele2.fr = 1
  • !*t*@* -> yoyo49!yoyo@tele2.fr = 0
  • !*y*@* -> yoyo49!yoyo@tele2.fr = 1

y*A*!*@* -> yoyo49!yoyo@tele2.fr = 0
  • !*@* -> yoyo49!yoyo@tele2.fr = 1
  • !*@*tel.* -> yoyo49!yoyo@tele2.fr = 0
  • !*@*tele2.* -> yoyo49!yoyo@tele2.fr = 1

Source / Exemple :


#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int host_compare(char *mask,char *host);

int host_compare(char *mask,char *host)
{
	char *masktemp = NULL;
	char *hosttemp = host;
	
	while(1)
	{
		if (*mask == '*')
		{
			while (*mask == '*')
				mask++;
				
			masktemp = mask; 
			hosttemp = host;
			
		}
		
		if (!*mask)
		{
			if (!*host) return 1;
				
			if (!masktemp) return 0;
		} 
		else
		{
			if (!*host) return 0;
		}
		if(*mask != *host)
		{
			if (!masktemp)
				return 0;
			
			mask = masktemp;
			host = ++hosttemp;
		} 
		else
		{
			mask++;
			host++;
		}
	}
	return 1;
}

int main()
{
	int i;
	i = host_compare("*!*@tele2.fr","yoyo49!yoyo@tele2.fr");
	printf("%s %s %d\n","*!*@tele2.fr","yoyo49!yoyo@tele2.fr",i);
	
	i = host_compare("*!*@tele2.fr","yoyo49!yoyo@tele3.fr");
	printf("%s %s %d\n","*!*@tele2.fr","yoyo49!yoyo@tele3.fr",i);
	
	i = host_compare("*!*@*2.fr","yoyo49!yoyo@tele2.fr");
	printf("%s %s %d\n","*!*@*2.fr","yoyo49!yoyo@tele2.fr",i);
	

	return 0;
}

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.