/******************************************************** * File: node2dpat.c * Created at Sun Jan 28 22:10:31 MSK 2001 by raorn // raorn@binec.ru * 2D address handling * $Id: node2dpat.c,v 1.2 2001/02/18 15:26:23 raorn Exp $ *******************************************************/ #include "crashecho.h" int NodeCompare(uchar * pat, ushort num) { uchar buf[10], c; snprintf(buf, 10, "%u", num); if (pat[0] == 0) return (0); for (c = 0; c < strlen(pat); c++) { if (pat[c] == '*') return (0); if (pat[c] != buf[c] && pat[c] != '?') return (1); if (buf[c] == 0) return (1); } if (buf[c] != 0) return (1); return (0); } bool Parse2DPat(uchar * buf, struct Node2DPat * node) { ulong c = 0, tempc = 0; uchar temp[10]; bool GotNet = FALSE; strcpy(node->Net, "*"); strcpy(node->Node, "*"); if (strcmp(buf, "*") == 0) return (TRUE); for (c = 0; c < strlen(buf); c++) { if (buf[c] == '/') { if (GotNet) return (FALSE); strcpy(node->Net, temp); GotNet = TRUE; tempc = 0; } else if ((buf[c] >= '0' && buf[c] <= '9') || buf[c] == '*' || buf[c] == '?') { if (tempc < 9) { temp[tempc++] = buf[c]; temp[tempc] = 0; } } else return (FALSE); } strcpy(node->Node, temp); return (TRUE); } int Compare2DPat(struct Node2DPat *nodepat, ushort net, ushort node) { if (NodeCompare(nodepat->Net, net) != 0) return (1); if (NodeCompare(nodepat->Node, node) != 0) return (1); return (0); }