- for (i = 0; check[i]; i++) {
- len = strlen(check[i]);
- if (strlen(version) >= len &&
- (strncmp(version, check[i], len) == 0)) {
- verbose("datafellows: %.200s", version);
- datafellows = 1;
+ /* process table, return first match */
+ for (i = 0; check[i].pat; i++) {
+ ret = regcomp(®, check[i].pat, REG_EXTENDED|REG_NOSUB);
+ if (ret != 0) {
+ regerror(ret, ®, ebuf, sizeof(ebuf));
+ ebuf[sizeof(ebuf)-1] = '\0';
+ error("regerror: %s", ebuf);
+ continue;
+ }
+ ret = regexec(®, version, 0, NULL, 0);
+ regfree(®);
+ if (ret == 0) {
+ debug("match: %s pat %s\n", version, check[i].pat);
+ datafellows = check[i].bugs;