This is vodz' latest patch. Sorry it took so long...
1) ping cleanup (compile fix from this patch already applied). 2) traceroute call not spare ntohl() now (and reduce size); 3) Fix for functions not declared static in insmod, ash, vi and mount. 4) a more simple API cmdedit :)) 5) adds "stopped jobs" warning to ash on Ctrl-D and fixes "ignoreeof" option 6) reduce exporting library function index->strchr (traceroute), bzero->memset (syslogd)
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
/* vi: set sw=4 ts=4: */
|
||||
/*
|
||||
* $Id: ping.c,v 1.45 2001/07/13 20:56:27 kraai Exp $
|
||||
* $Id: ping.c,v 1.46 2001/07/17 01:12:36 andersen Exp $
|
||||
* Mini ping implementation for busybox
|
||||
*
|
||||
* Copyright (C) 1999 by Randolph Chung <tausq@debian.org>
|
||||
@@ -430,7 +430,6 @@ static void ping(const char *host)
|
||||
if (h->h_addrtype != AF_INET)
|
||||
error_msg_and_die("unknown address type; only AF_INET is currently supported.");
|
||||
|
||||
pingaddr.sin_family = AF_INET; /* h->h_addrtype */
|
||||
memcpy(&pingaddr.sin_addr, h->h_addr, sizeof(pingaddr.sin_addr));
|
||||
strncpy(buf, h->h_name, sizeof(buf) - 1);
|
||||
hostname = buf;
|
||||
|
@@ -131,40 +131,38 @@ static int nflag; /* print addresses numerically */
|
||||
* If the nflag has been supplied, give
|
||||
* numeric value, otherwise try for symbolic name.
|
||||
*/
|
||||
static inline char *
|
||||
inetname(struct in_addr in)
|
||||
static inline void
|
||||
inetname(struct sockaddr_in *from)
|
||||
{
|
||||
char *cp;
|
||||
static char line[50];
|
||||
struct hostent *hp;
|
||||
static char domain[MAXHOSTNAMELEN + 1];
|
||||
static int first = 1;
|
||||
const char *ina;
|
||||
|
||||
if (first && !nflag) {
|
||||
first = 0;
|
||||
if (gethostname(domain, MAXHOSTNAMELEN) == 0 &&
|
||||
(cp = index(domain, '.')))
|
||||
(cp = strchr(domain, '.')))
|
||||
(void) strcpy(domain, cp + 1);
|
||||
else
|
||||
domain[0] = 0;
|
||||
}
|
||||
cp = 0;
|
||||
if (!nflag && in.s_addr != INADDR_ANY) {
|
||||
hp = gethostbyaddr((char *)&in, sizeof (in), AF_INET);
|
||||
if (!nflag && from->sin_addr.s_addr != INADDR_ANY) {
|
||||
hp = gethostbyaddr((char *)&(from->sin_addr), sizeof (from->sin_addr), AF_INET);
|
||||
if (hp) {
|
||||
if ((cp = index(hp->h_name, '.')) &&
|
||||
if ((cp = strchr(hp->h_name, '.')) &&
|
||||
!strcmp(cp + 1, domain))
|
||||
*cp = 0;
|
||||
cp = (char *)hp->h_name;
|
||||
}
|
||||
}
|
||||
if (cp)
|
||||
(void) strcpy(line, cp);
|
||||
else {
|
||||
in.s_addr = ntohl(in.s_addr);
|
||||
strcpy(line, inet_ntoa(in));
|
||||
}
|
||||
return (line);
|
||||
ina = inet_ntoa(from->sin_addr);
|
||||
if (nflag)
|
||||
printf(" %s", ina);
|
||||
else
|
||||
printf(" %s (%s)", (cp ? cp : ina), ina);
|
||||
}
|
||||
|
||||
static inline void
|
||||
@@ -177,12 +175,7 @@ print(u_char *buf, int cc, struct sockaddr_in *from)
|
||||
hlen = ip->ip_hl << 2;
|
||||
cc -= hlen;
|
||||
|
||||
if (nflag)
|
||||
printf(" %s", inet_ntoa(from->sin_addr));
|
||||
else
|
||||
printf(" %s (%s)", inetname(from->sin_addr),
|
||||
inet_ntoa(from->sin_addr));
|
||||
|
||||
inetname(from);
|
||||
#ifdef BB_FEATURE_TRACEROUTE_VERBOSE
|
||||
if (verbose)
|
||||
printf (" %d bytes to %s", cc, inet_ntoa (ip->ip_dst));
|
||||
|
Reference in New Issue
Block a user