/* printf("func: mask %08lx match %08lx set %08lx clear %08lx action %ld data %s\n",fhp->mask,fhp->match,fhp->set,fhp->clear,fhp->action,fhp->data); */
switch (fhp->action)
{
case FIL_ACTION_BITS:
{
UMSSelectTags(acc,
UMSTAG_SelReadLocal , TRUE,
UMSTAG_SelMask , fhp->mask ,
UMSTAG_SelMatch , fhp->match,
UMSTAG_SelWriteLocal, TRUE,
UMSTAG_SelSet , fhp->set,
UMSTAG_SelUnset , fhp->clear,
TAG_DONE);
res = FIL_ERROR_OK;
}
break;
case FIL_ACTION_EQUAL:
{
switch (fhp->uid)
{
case ID_LENGTH:
{
UMSMsgNum nr=0L;
while (nr = UMSSearchTags(acc,
UMSTAG_SearchLast , nr,
UMSTAG_SearchLocal , TRUE,
UMSTAG_SearchMask , fhp->mask ,
UMSTAG_SearchMatch , fhp->match,
TAG_DONE))
{
LONG size;
if (UMSReadMsgTags(acc,
UMSTAG_RMsgNum , nr,
UMSTAG_RNoUpdate , TRUE,
(ULONG)fhp->udata , &size,
TAG_DONE))
{
if (size==atol(fhp->data))
{
UMSSelectTags(acc,
UMSTAG_SelWriteLocal, TRUE,
UMSTAG_SelStart , nr,
UMSTAG_SelStop , nr+1,
UMSTAG_SelSet , FIL_LASTBIT,
TAG_DONE);
}
}
SetFromHelp(acc,FIL_LASTBIT,fhp);
}
res = FIL_ERROR_OK;
}
break;
case ID_STRING:
{
if (strchr(fhp->data,'#') || strchr(fhp->data,'?') || strchr(fhp->data,'*'))