mirror of
https://git.freebsd.org/ports.git
synced 2025-07-17 17:29:23 -04:00
Don't depend on GNU share+unshare to extract the distfile. Sed trickery
is lighter weight. Increase the granularity of the statistics. Rounding to whole msec isn't accurate enough on a LAN.
This commit is contained in:
parent
7e2dad2edc
commit
c60dbe4b55
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=21837
2 changed files with 111 additions and 7 deletions
|
@ -2,7 +2,7 @@
|
|||
# Ports collection makefile for: fping
|
||||
# Version required: 1.20
|
||||
# Date created: Tue Mar 25, 1997
|
||||
# Whom: David O'Brien (obrien@FreeBSD.org)
|
||||
# Whom: David O'Brien (obrien@NUXI.com)
|
||||
#
|
||||
# $FreeBSD$
|
||||
#
|
||||
|
@ -16,17 +16,16 @@ MASTER_SITES= ftp://ftp.uu.net/usenet/comp.sources.unix/volume26/fping/ \
|
|||
ftp://ftp.isnet.is/pub/Usenet/Usenet.src/comp.sources.unix/v26/fping/
|
||||
EXTRACT_SUFX= .Z
|
||||
|
||||
MAINTAINER= obrien@NUXI.com
|
||||
|
||||
BUILD_DEPENDS= gunshar:${PORTSDIR}/archivers/gshar+gunshar
|
||||
MAINTAINER= obrien@FreeBSD.org
|
||||
|
||||
DIST_SUBDIR= fping
|
||||
EXTRACT_CMD= zcat
|
||||
EXTRACT_BEFORE_ARGS=
|
||||
EXTRACT_AFTER_ARGS= | gunshar -d ${WRKDIR}
|
||||
EXTRACT_AFTER_ARGS= | ${SED} -e '1,/Archive-Name/d' | ${SH}
|
||||
NO_WRKSUBDIR= yes
|
||||
MAN8= fping.8
|
||||
|
||||
|
||||
post-install:
|
||||
@strip ${PREFIX}/sbin/fping
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
--- fping.c.orig Tue Mar 25 01:24:16 1997
|
||||
+++ fping.c Tue Mar 25 01:24:02 1997
|
||||
--- fping.c.orig Mon Sep 20 13:10:23 1999
|
||||
+++ fping.c Mon Sep 20 13:15:05 1999
|
||||
@@ -185,7 +185,9 @@
|
||||
|
||||
extern char *optarg;
|
||||
|
@ -10,3 +10,108 @@
|
|||
|
||||
|
||||
#ifdef __cplusplus
|
||||
@@ -234,9 +236,9 @@
|
||||
int timeout = DEFAULT_TIMEOUT;
|
||||
int interval = DEFAULT_INTERVAL;
|
||||
|
||||
-long max_reply=0;
|
||||
-long min_reply=10000;
|
||||
-int total_replies=0;
|
||||
+long max_reply=0; /* usec */
|
||||
+long min_reply=10000; /* usec */
|
||||
+int total_replies=0; /* usec */
|
||||
double sum_replies=0;
|
||||
|
||||
struct timeval timeout_timeval;
|
||||
@@ -385,6 +387,7 @@
|
||||
}
|
||||
if (!ping_file) errno_crash_and_burn("fopen");
|
||||
while(fgets(line,132,ping_file)) {
|
||||
+ line[132-1] = '\0';
|
||||
sscanf(line,"%s",host);
|
||||
if ((!*host) || (host[0]=='#')) /* magic to avoid comments */
|
||||
continue;
|
||||
@@ -411,8 +414,8 @@
|
||||
cursor=cursor->next;
|
||||
}
|
||||
|
||||
- gettimeofday(&start_time,&tz);
|
||||
cursor=rrlist;
|
||||
+ gettimeofday(&start_time,&tz);
|
||||
while (num_waiting) { /* while pings are outstanding */
|
||||
if ( (timeval_diff(¤t_time,&cursor->last_time)> timeout) ||
|
||||
cursor->num_packets_sent==0) {
|
||||
@@ -455,11 +458,11 @@
|
||||
min_reply=0; max_reply=0; total_replies=1; sum_replies=0;
|
||||
}
|
||||
|
||||
- fprintf(stderr," %8d msec (min round trip time)\n",min_reply);
|
||||
- fprintf(stderr," %8d msec (avg round trip time)\n",(int)sum_replies/total_replies);
|
||||
- fprintf(stderr," %8d msec (max round trip time)\n",max_reply);
|
||||
+ fprintf(stderr," %8.3f msec (min round trip time)\n",min_reply/1000.0);
|
||||
+ fprintf(stderr," %8.3f msec (avg round trip time)\n",sum_replies/total_replies/1000.0);
|
||||
+ fprintf(stderr," %8.3f msec (max round trip time)\n",max_reply/1000.0);
|
||||
fprintf(stderr," %8.3f sec (elapsed real time)\n",
|
||||
- timeval_diff( &end_time,&start_time)/1000.0);
|
||||
+ timeval_diff( &end_time,&start_time)/1000000.0);
|
||||
fprintf(stderr,"\n");
|
||||
|
||||
}
|
||||
@@ -493,8 +496,6 @@
|
||||
struct icmp *icp = (struct icmp *) buffer;
|
||||
int n,len;
|
||||
|
||||
- gettimeofday(&h->last_time,&tz);
|
||||
-
|
||||
icp->icmp_type = ICMP_ECHO;
|
||||
icp->icmp_code = 0;
|
||||
icp->icmp_cksum = 0;
|
||||
@@ -504,12 +505,15 @@
|
||||
#define SIZE_PACK_SENT (sizeof(h->num_packets_sent))
|
||||
#define SIZE_LAST_TIME (sizeof(h->last_time))
|
||||
|
||||
- bcopy(&h->last_time,&buffer[SIZE_ICMP_HDR],SIZE_LAST_TIME);
|
||||
bcopy(&h->num_packets_sent,
|
||||
&buffer[SIZE_ICMP_HDR+SIZE_LAST_TIME], SIZE_PACK_SENT);
|
||||
|
||||
len = SIZE_ICMP_HDR+SIZE_LAST_TIME+SIZE_PACK_SENT;
|
||||
|
||||
+ /* set the time at the very last possible point */
|
||||
+ gettimeofday(&h->last_time,&tz);
|
||||
+ bcopy(&h->last_time,&buffer[SIZE_ICMP_HDR],SIZE_LAST_TIME);
|
||||
+
|
||||
icp->icmp_cksum = in_cksum( (u_short *)icp, len );
|
||||
|
||||
n = sendto( s, buffer, len, 0, (struct sockaddr *)&h->saddr,
|
||||
@@ -578,10 +582,12 @@
|
||||
return 1; /* packet received, don't about it anymore */
|
||||
}
|
||||
|
||||
+ /* get time of receipt as close to the real time as possible */
|
||||
+ gettimeofday(¤t_time,&tz);
|
||||
+
|
||||
n=icp->icmp_seq;
|
||||
h=table[n];
|
||||
|
||||
- gettimeofday(¤t_time,&tz);
|
||||
bcopy(&icp->icmp_data[0],&sent_time,sizeof(sent_time));
|
||||
bcopy(&icp->icmp_data[SIZE_LAST_TIME],&the_index, sizeof(the_index));
|
||||
this_reply = timeval_diff(¤t_time,&sent_time);
|
||||
@@ -594,7 +600,7 @@
|
||||
if (dns_flag) printf("%s",get_host_by_address(response_addr.sin_addr));
|
||||
else printf("%s",h->host);
|
||||
if (verbose_flag) printf(" is alive");
|
||||
- if (elapsed_flag) printf(" (%d msec)",this_reply);
|
||||
+ if (elapsed_flag) printf(" (%.3f msec)",this_reply/1000.0);
|
||||
printf("\n");
|
||||
}
|
||||
num_alive++;
|
||||
@@ -756,7 +762,7 @@
|
||||
|
||||
temp =
|
||||
(((a->tv_sec*1000000)+ a->tv_usec) -
|
||||
- ((b->tv_sec*1000000)+ b->tv_usec))/1000;
|
||||
+ ((b->tv_sec*1000000)+ b->tv_usec));
|
||||
|
||||
return (long) temp;
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue