summaryrefslogtreecommitdiff
path: root/ping.c
diff options
context:
space:
mode:
authorMatt Kraai2000-12-22 01:48:07 +0000
committerMatt Kraai2000-12-22 01:48:07 +0000
commita9819b290848e0a760f3805d5937fa050235d707 (patch)
treeb8cb8d939032c0806d62161b01e5836cb808dc3f /ping.c
parente9f07fb6e83b75a50760599a5d31f494841eddf7 (diff)
downloadbusybox-a9819b290848e0a760f3805d5937fa050235d707.zip
busybox-a9819b290848e0a760f3805d5937fa050235d707.tar.gz
Use busybox error handling functions wherever possible.
Diffstat (limited to 'ping.c')
-rw-r--r--ping.c30
1 files changed, 11 insertions, 19 deletions
diff --git a/ping.c b/ping.c
index 4be2120..e9242e9 100644
--- a/ping.c
+++ b/ping.c
@@ -1,6 +1,6 @@
/* vi: set sw=4 ts=4: */
/*
- * $Id: ping.c,v 1.29 2000/12/18 03:57:16 kraai Exp $
+ * $Id: ping.c,v 1.30 2000/12/22 01:48:07 kraai Exp $
* Mini ping implementation for busybox
*
* Copyright (C) 1999 by Randolph Chung <tausq@debian.org>
@@ -190,10 +190,8 @@ static void ping(const char *host)
int pingsock, c;
char packet[DEFDATALEN + MAXIPLEN + MAXICMPLEN];
- if ((pingsock = socket(AF_INET, SOCK_RAW, 1)) < 0) { /* 1 == ICMP */
- perror("ping: creating a raw socket");
- exit(1);
- }
+ if ((pingsock = socket(AF_INET, SOCK_RAW, 1)) < 0) /* 1 == ICMP */
+ perror_msg_and_die("creating a raw socket");
/* drop root privs if running setuid */
setuid(getuid());
@@ -216,12 +214,8 @@ static void ping(const char *host)
c = sendto(pingsock, packet, sizeof(packet), 0,
(struct sockaddr *) &pingaddr, sizeof(struct sockaddr_in));
- if (c < 0 || c != sizeof(packet)) {
- if (c < 0)
- perror("ping: sendto");
- error_msg("write incomplete\n");
- exit(1);
- }
+ if (c < 0 || c != sizeof(packet))
+ perror_msg_and_die("sendto");
signal(SIGALRM, noresp);
alarm(5); /* give the host 5000ms to respond */
@@ -234,7 +228,7 @@ static void ping(const char *host)
(struct sockaddr *) &from, &fromlen)) < 0) {
if (errno == EINTR)
continue;
- perror("ping: recvfrom");
+ perror_msg("recvfrom");
continue;
}
if (c >= 76) { /* ip + icmp */
@@ -439,12 +433,10 @@ static void ping(const char *host)
* proto->p_proto to have the correct value for "icmp" */
if ((pingsock = socket(AF_INET, SOCK_RAW,
(proto ? proto->p_proto : 1))) < 0) { /* 1 == ICMP */
- if (errno == EPERM) {
- error_msg("permission denied. (are you root?)\n");
- } else {
- perror("ping: creating a raw socket");
- }
- exit(1);
+ if (errno == EPERM)
+ error_msg_and_die("permission denied. (are you root?)\n");
+ else
+ perror_msg_and_die("creating a raw socket");
}
/* drop root privs if running setuid */
@@ -498,7 +490,7 @@ static void ping(const char *host)
(struct sockaddr *) &from, &fromlen)) < 0) {
if (errno == EINTR)
continue;
- perror("ping: recvfrom");
+ perror_msg("recvfrom");
continue;
}
unpack(packet, c, &from);