} 
static inline int pcmcia_devmatch(struct pcmcia_device *dev,				  struct pcmcia_device_id *did){	if (did->match_flags & PCMCIA_DEV_ID_MATCH_MANF_ID) {		if ((!dev->has_manf_id) || (dev->manf_id != did->manf_id))			return 0;	}	if (did->match_flags & PCMCIA_DEV_ID_MATCH_CARD_ID) {		if ((!dev->has_card_id) || (dev->card_id != did->card_id))			return 0;	}	if (did->match_flags & PCMCIA_DEV_ID_MATCH_FUNCTION) {		if (dev->func != did->function)			return 0;	}	if (did->match_flags & PCMCIA_DEV_ID_MATCH_PROD_ID1) {		if (!dev->prod_id[0])			return 0;		if (strcmp(did->prod_id[0], dev->prod_id[0]))			return 0;	}	if (did->match_flags & PCMCIA_DEV_ID_MATCH_PROD_ID2) {		if (!dev->prod_id[1])			return 0;		if (strcmp(did->prod_id[1], dev->prod_id[1]))			return 0;	}	if (did->match_flags & PCMCIA_DEV_ID_MATCH_PROD_ID3) {		if (!dev->prod_id[2])			return 0;		if (strcmp(did->prod_id[2], dev->prod_id[2]))			return 0;	}	if (did->match_flags & PCMCIA_DEV_ID_MATCH_PROD_ID4) {		if (!dev->prod_id[3])			return 0;		if (strcmp(did->prod_id[3], dev->prod_id[3]))			return 0;	}	if (did->match_flags & PCMCIA_DEV_ID_MATCH_DEVICE_NO) {		/* handle pseudo multifunction devices:		 * there are at most two pseudo multifunction devices.		 * if we're matching against the first, schedule a		 * call which will then check whether there are two		 * pseudo devices, and if not, add the second one.		 */		if (dev->device_no == 0)			pcmcia_add_pseudo_device(dev->socket->pcmcia);		if (dev->device_no != did->device_no)			return 0;	}	if (did->match_flags & PCMCIA_DEV_ID_MATCH_FUNC_ID) {		if ((!dev->has_func_id) || (dev->func_id != did->func_id))			return 0;		/* if this is a pseudo-multi-function device,		 * we need explicit matches */		if (did->match_flags & PCMCIA_DEV_ID_MATCH_DEVICE_NO)			return 0;		if (dev->device_no)			return 0;		/* also, FUNC_ID matching needs to be activated by userspace		 * after it has re-checked that there is no possible module		 * with a prod_id/manf_id/card_id match.		 */		if (!dev->allow_func_id_match)			return 0;	}	if (did->match_flags & PCMCIA_DEV_ID_MATCH_FAKE_CIS) {		if (!dev->socket->fake_cis) {			/* FIXME: evaluate using firmware helpers to			 * automagically load it from userspace */			return 0;		}	}	if (did->match_flags & PCMCIA_DEV_ID_MATCH_ANONYMOUS) {		int i;		for (i=0; i<4; i++)			if (dev->prod_id[i])				return 0;		if (dev->has_manf_id || dev->has_card_id || dev->has_func_id)			return 0;	}	dev->dev.driver_data = (void *) did;	return 1;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/daa9517d9eccc3598b2b0cdfa0b016ae4a4fcdce/ds.c/buggy/drivers/pcmcia/ds.c