Replace isurl() with isipv6addr().

Reported by:	Koji Kondo <koji@jp.above.net>
Obtained from:	NetBSD
This commit is contained in:
Hajimu UMEMOTO 2000-05-22 17:18:38 +00:00
parent d4af7a50dc
commit 07da07565e
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=60805
3 changed files with 32 additions and 1 deletions

View file

@ -77,6 +77,7 @@ char *hookup __P((const char *, char *));
void idle __P((int, char **));
int initconn __P((void));
void intr __P((void));
int isipv6addr __P((const char *));
void list_vertical __P((StringList *));
void lcd __P((int, char **));
int login __P((const char *, char *, char *));

View file

@ -273,7 +273,7 @@ main(argc, argv)
#endif
if (argc > 0) {
if (isurl(argv[0])) {
if (strchr(argv[0], ':') != NULL && ! isipv6addr(argv[0])) {
anonftp = 1; /* Handle "automatic" transfers. */
rval = auto_fetch(argc, argv);
if (rval >= 0) /* -1 == connected and cd-ed */

View file

@ -58,6 +58,9 @@ __RCSID_SOURCE("$NetBSD: util.c,v 1.16.2.1 1997/11/18 01:02:33 mellon Exp $");
#include <string.h>
#include <time.h>
#include <unistd.h>
#ifdef INET6
#include <netdb.h>
#endif
#include "ftp_var.h"
#include "pathnames.h"
@ -846,3 +849,30 @@ controlediting()
}
}
#endif /* !SMALL */
/*
* Determine if given string is an IPv6 address or not.
* Return 1 for yes, 0 for no
*/
int
isipv6addr(const char *addr)
{
int rv = 0;
#ifdef INET6
struct addrinfo hints, *res;
memset(&hints, 0, sizeof(hints));
hints.ai_family = PF_INET6;
hints.ai_socktype = SOCK_DGRAM; /*dummy*/
hints.ai_flags = AI_NUMERICHOST;
if (getaddrinfo(addr, "0", &hints, &res) != 0)
rv = 0;
else {
rv = 1;
freeaddrinfo(res);
}
if (debug)
printf("isipv6addr: got %d for %sn", rv, addr);
#endif
return (rv == 1) ? 1 : 0;
}