1
0
Fork 0

Compare commits

...

2 Commits

1 changed files with 6 additions and 12 deletions

View File

@ -265,8 +265,7 @@ int parse_argv(int argc, const char **argv, struct options *opts) {
case 'a': opts->addressbook_path = argv[i+1]; ++i; continue; case 'a': opts->addressbook_path = argv[i+1]; ++i; continue;
case 'v': return -2; case 'v': return -2;
case 'h': return -3; case 'h': return -3;
default: default: return -1;
return -1;
} }
} else { } else {
if (opts->command == 'c' || opts->command == 's') { if (opts->command == 'c' || opts->command == 's') {
@ -287,18 +286,13 @@ int parse_argv(int argc, const char **argv, struct options *opts) {
} }
} }
if (command_arg_num == 1) { int r = inet_pton(AF_INET, opts->addr, NULL);
struct sockaddr test = {0}; if (r == -1)
int r = inet_pton(AF_INET, opts->addr, &test); r = inet_pton(AF_INET6, opts->addr, NULL);
if (r == -1) opts->is_alias_passed = r == 0;
r = inet_pton(AF_INET6, opts->addr, &test);
opts->is_alias_passed = r != 1;
}
// opts->is_alias_passed = ((opts->addr[0]>>4) & 0xf) != 0x3;
if (opts->command == '\0' || opts->addr[0] == '\0' if (opts->command == '\0' || opts->addr[0] == '\0'
|| (!opts->is_alias_passed && opts->port[0] == '\0')) || (!opts->is_alias_passed && opts->port == NULL))
return -1; return -1;
return 0; return 0;