b0b9b22bb5
Work-around for a maple-linux/linux emulation bug that was diagnosed by Remi Card on FreeBSD.
58 lines
940 B
C
58 lines
940 B
C
/* $OpenBSD: resolv_display.c,v 1.1 1999/06/18 15:32:17 espie Exp $ */
|
|
|
|
#include <netdb.h>
|
|
#include <sys/types.h>
|
|
#include <sys/socket.h>
|
|
#include <stdlib.h>
|
|
#include <stdio.h>
|
|
#include <string.h>
|
|
|
|
extern int h_errno;
|
|
|
|
int main(int argc, char *argv[])
|
|
{
|
|
struct hostent *ent;
|
|
char *end;
|
|
char *name;
|
|
|
|
if (argc < 2)
|
|
exit(EXIT_FAILURE);
|
|
|
|
name = strdup(argv[1]);
|
|
|
|
end = strchr(name, ':');
|
|
if (end == name)
|
|
{
|
|
puts(end);
|
|
exit(EXIT_SUCCESS);
|
|
}
|
|
if (end)
|
|
*end = 0;
|
|
|
|
ent = gethostbyname(name);
|
|
if (!ent)
|
|
{
|
|
herror("maple");
|
|
exit(EXIT_FAILURE);
|
|
}
|
|
|
|
if (end)
|
|
*end = ':';
|
|
else
|
|
end = "";
|
|
switch(ent->h_addrtype)
|
|
{
|
|
case AF_INET:
|
|
if (ent->h_length == 4)
|
|
{
|
|
unsigned char *addr = ent->h_addr;
|
|
|
|
printf("%u.%u.%u.%u%s\n", addr[0], addr[1], addr[2], addr[3], end);
|
|
exit(EXIT_SUCCESS);
|
|
}
|
|
default:
|
|
fprintf(stderr, "maple: unsupported address type %d\n", ent->h_addrtype);
|
|
exit(EXIT_FAILURE);
|
|
}
|
|
}
|