version 1.14.2.1, 2002/03/07 17:37:46 |
version 1.15, 2001/12/05 16:54:51 |
|
|
* subpattern to lowercase. |
* subpattern to lowercase. |
*/ |
*/ |
for (subi = 0; |
for (subi = 0; |
i < len && subi < sizeof(sub) - 1 && pattern[i] != ','; |
i < len && subi < sizeof(sub) - 1 && pattern[i] != ','; |
subi++, i++) |
subi++, i++) |
sub[subi] = dolower && isupper(pattern[i]) ? |
sub[subi] = dolower && isupper(pattern[i]) ? |
tolower(pattern[i]) : pattern[i]; |
tolower(pattern[i]) : pattern[i]; |
/* If subpattern too long, return failure (no match). */ |
/* If subpattern too long, return failure (no match). */ |
if (subi >= sizeof(sub) - 1) |
if (subi >= sizeof(sub) - 1) |
return 0; |
return 0; |
|
|
* Returns first item from client-list that is also supported by server-list, |
* Returns first item from client-list that is also supported by server-list, |
* caller must xfree() returned string. |
* caller must xfree() returned string. |
*/ |
*/ |
#define MAX_PROP 40 |
#define MAX_PROP 20 |
#define SEP "," |
#define SEP "," |
char * |
char * |
match_list(const char *client, const char *server, u_int *next) |
match_list(const char *client, const char *server, u_int *next) |
|
|
s = sp = xstrdup(server); |
s = sp = xstrdup(server); |
|
|
for ((p = strsep(&sp, SEP)), i=0; p && *p != '\0'; |
for ((p = strsep(&sp, SEP)), i=0; p && *p != '\0'; |
(p = strsep(&sp, SEP)), i++) { |
(p = strsep(&sp, SEP)), i++) { |
if (i < MAX_PROP) |
if (i < MAX_PROP) |
sproposals[i] = p; |
sproposals[i] = p; |
else |
else |
|
|
nproposals = i; |
nproposals = i; |
|
|
for ((p = strsep(&cp, SEP)), i=0; p && *p != '\0'; |
for ((p = strsep(&cp, SEP)), i=0; p && *p != '\0'; |
(p = strsep(&cp, SEP)), i++) { |
(p = strsep(&cp, SEP)), i++) { |
for (j = 0; j < nproposals; j++) { |
for (j = 0; j < nproposals; j++) { |
if (strcmp(p, sproposals[j]) == 0) { |
if (strcmp(p, sproposals[j]) == 0) { |
ret = xstrdup(p); |
ret = xstrdup(p); |