|
@@ -249,21 +249,23 @@ void close_addr(unsigned char *addr, unsigned char *netmask, void *arg)
|
|
|
|
|
|
char *split_if_spec(char *str, ...)
|
|
char *split_if_spec(char *str, ...)
|
|
{
|
|
{
|
|
- char **arg, *end;
|
|
|
|
|
|
+ char **arg, *end, *ret = NULL;
|
|
va_list ap;
|
|
va_list ap;
|
|
|
|
|
|
va_start(ap, str);
|
|
va_start(ap, str);
|
|
while ((arg = va_arg(ap, char **)) != NULL) {
|
|
while ((arg = va_arg(ap, char **)) != NULL) {
|
|
if (*str == '\0')
|
|
if (*str == '\0')
|
|
- return NULL;
|
|
|
|
|
|
+ goto out;
|
|
end = strchr(str, ',');
|
|
end = strchr(str, ',');
|
|
if (end != str)
|
|
if (end != str)
|
|
*arg = str;
|
|
*arg = str;
|
|
if (end == NULL)
|
|
if (end == NULL)
|
|
- return NULL;
|
|
|
|
|
|
+ goto out;
|
|
*end++ = '\0';
|
|
*end++ = '\0';
|
|
str = end;
|
|
str = end;
|
|
}
|
|
}
|
|
|
|
+ ret = str;
|
|
|
|
+out:
|
|
va_end(ap);
|
|
va_end(ap);
|
|
- return str;
|
|
|
|
|
|
+ return ret;
|
|
}
|
|
}
|