40 const char *hname,
int hnlen)
45 if (Unamelen && (Unamelen > unlen+1 || strncmp(uname,Uname,Unamelen)))
return 0;
49 if (HnameL && !HnamelenL)
return !strcmp(HnameL, hname);
53 if (HnamelenL > hnlen)
return 0;
57 if (HnameL && strncmp(HnameL, hname, HnamelenL))
return 0;
61 if (!HnameR)
return 1;
62 return !strcmp(hname+hnlen-HnamelenR, hname);
75 if (!target || !strcmp(target,
"*"))
76 {Uname = HnameL = HnameR = 0;
77 Unamelen = HnamelenL = HnamelenR = 0;
80 strlcpy(Buff, target,
sizeof(Buff)-1);
85 if (!(HnameL = index(Uname,
'@')))
86 {
if ((Unamelen = strlen(Uname)))
87 {
if (Uname[Unamelen-1] ==
'*') Unamelen--;
88 else if (index(Uname,
':')) Uname[Unamelen++] =
'@';
89 else if (index(Uname,
'.')) Uname[Unamelen++] =
':';
90 else Uname[Unamelen++] =
'.';
99 if ((Unamelen = strlen(Uname)))
100 {
if (Uname[Unamelen-1] ==
'*') Unamelen--;
101 else if (index(Uname,
':')) Uname[Unamelen++] =
'@';
102 else if (index(Uname,
'.')) Uname[Unamelen++] =
':';
103 else Uname[Unamelen++] =
'.';
108 if (!(theast = index(HnameL,
'*')))
117 if (!(HnamelenL = strlen(HnameL))) HnameL = 0;
121 if ((HnamelenR = strlen(theast))) HnameR = theast+1;
123 Hnamelen = HnamelenL+HnamelenR;
void Set(const char *target)
int Match(const char *uname, int unlen, const char *hname, int hnlen)