mirror of
https://github.com/sheumann/hush.git
synced 2024-12-22 14:30:31 +00:00
Fix for a bug identied by Harald Kuthe, when using many interfaces (29
in this case) the order was incorrect and there were duplicate entries.
This commit is contained in:
parent
9c83e83628
commit
2e99d43846
@ -15,7 +15,7 @@
|
|||||||
* that either displays or sets the characteristics of
|
* that either displays or sets the characteristics of
|
||||||
* one or more of the system's networking interfaces.
|
* one or more of the system's networking interfaces.
|
||||||
*
|
*
|
||||||
* Version: $Id: interface.c,v 1.22 2004/04/14 17:57:11 andersen Exp $
|
* Version: $Id: interface.c,v 1.23 2004/07/23 01:49:46 bug1 Exp $
|
||||||
*
|
*
|
||||||
* Author: Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org>
|
* Author: Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org>
|
||||||
* and others. Copyright 1993 MicroWalt Corporation
|
* and others. Copyright 1993 MicroWalt Corporation
|
||||||
@ -889,30 +889,25 @@ static int sockets_open(int family)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* like strcmp(), but knows about numbers */
|
/* like strcmp(), but knows about numbers */
|
||||||
static int nstrcmp(const char *astr, const char *b)
|
static int nstrcmp(const char *a, const char *b)
|
||||||
{
|
{
|
||||||
const char *a = astr;
|
const char *a_ptr = a;
|
||||||
|
const char *b_ptr = b;
|
||||||
|
|
||||||
while (*a == *b) {
|
while (*a == *b) {
|
||||||
if (*a == '\0')
|
if (*a == '\0') {
|
||||||
return 0;
|
return 0;
|
||||||
|
}
|
||||||
|
if (!isdigit(*a) && isdigit(*(a+1))) {
|
||||||
|
a_ptr = a+1;
|
||||||
|
b_ptr = b+1;
|
||||||
|
}
|
||||||
a++;
|
a++;
|
||||||
b++;
|
b++;
|
||||||
}
|
}
|
||||||
if (isdigit(*a)) {
|
|
||||||
if (!isdigit(*b))
|
if (isdigit(*a) && isdigit(*b)) {
|
||||||
return -1;
|
return atoi(a_ptr) > atoi(b_ptr) ? 1 : -1;
|
||||||
while (a > astr) {
|
|
||||||
a--;
|
|
||||||
if (!isdigit(*a)) {
|
|
||||||
a++;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (!isdigit(*b))
|
|
||||||
return -1;
|
|
||||||
b--;
|
|
||||||
}
|
|
||||||
return atoi(a) > atoi(b) ? 1 : -1;
|
|
||||||
}
|
}
|
||||||
return *a - *b;
|
return *a - *b;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user