Petit controleur de mask irc en c

Soyez le premier à donner votre avis sur cette source.

Snippet vu 6 262 fois - Téléchargée 28 fois

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

Ajouter un commentaire Commentaires
Messages postés
380
Date d'inscription
samedi 22 janvier 2005
Statut
Membre
Dernière intervention
13 août 2011
7
salut mask vaut 1
Messages postés
5
Date d'inscription
mardi 20 mai 2008
Statut
Membre
Dernière intervention
22 avril 2011

qui peut me aidé sur le rôle de ce ligne :
int mask = 0x0001;
Messages postés
402
Date d'inscription
mardi 1 mai 2001
Statut
Membre
Dernière intervention
15 août 2011

il faut aussi gérer le point d'interrogation
Messages postés
380
Date d'inscription
samedi 22 janvier 2005
Statut
Membre
Dernière intervention
13 août 2011
7
j'oubliais si vous avez des questions irc.ax-proxima.net ou www.ax-proxima.net pour passer par l'aplet java
Messages postés
380
Date d'inscription
samedi 22 janvier 2005
Statut
Membre
Dernière intervention
13 août 2011
7
oui les * = n'importe koi et x fois

la fonction est un simplifier de match.c

match.c etait trop lourd pour une simple comparaison de mask irc , je l'ai donc refaite simplifié en gardant le meme raisonnement.

et important avec les mask irc , il faut tenir compte de la case !!!!
Afficher les 6 commentaires

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.