| 744 | } |
| 745 | |
| 746 | int |
| 747 | str2role(const char *str) |
| 748 | { |
| 749 | int i, len; |
| 750 | |
| 751 | /* Is str valid? */ |
| 752 | if (!str || !str[0]) |
| 753 | return ROLE_NONE; |
| 754 | |
| 755 | /* Match as much of str as is provided */ |
| 756 | len = Strlen(str); |
| 757 | for (i = 0; roles[i].name.m; i++) { |
| 758 | /* Does it match the male name? */ |
| 759 | if (!strncmpi(str, roles[i].name.m, len)) |
| 760 | return i; |
| 761 | /* Or the female name? */ |
| 762 | if (roles[i].name.f && !strncmpi(str, roles[i].name.f, len)) |
| 763 | return i; |
| 764 | /* Or the filecode? */ |
| 765 | if (!strcmpi(str, roles[i].filecode)) |
| 766 | return i; |
| 767 | } |
| 768 | |
| 769 | if ((len == 1 && (*str == '*' || *str == '@')) |
| 770 | || !strncmpi(str, randomstr, len)) |
| 771 | return ROLE_RANDOM; |
| 772 | |
| 773 | /* Couldn't find anything appropriate */ |
| 774 | return ROLE_NONE; |
| 775 | } |
| 776 | |
| 777 | boolean |
| 778 | validrace(int rolenum, int racenum) |
no test coverage detected