Browse Source

Plan 9 from Bell Labs 2009-03-10

David du Colombier 15 years ago
parent
commit
e1bc2e12a1
2 changed files with 14 additions and 1 deletions
  1. 11 1
      sys/src/cmd/ip/ping.c
  2. 3 0
      sys/src/libc/port/nrand.c

+ 11 - 1
sys/src/cmd/ip/ping.c

@@ -263,9 +263,13 @@ sender(int fd, int msglen, int interval, int n)
 	if (addresses)
 		print("\t%I -> %s\n", me, target);
 
+	if(rint != 0 && interval <= 0)
+		rint = 0;
+	extra = 0;
 	for(i = 0; i < n; i++){
 		if(i != 0){
-			extra = rint? nrand(interval): 0;
+			if(rint != 0)
+				extra = nrand(interval);
 			sleep(interval + extra);
 		}
 		r = malloc(sizeof *r);
@@ -508,12 +512,16 @@ main(int argc, char **argv)
 		break;
 	case 'i':
 		interval = atoi(EARGF(usage()));
+		if(interval < 0)
+			usage();
 		break;
 	case 'l':
 		lostonly++;
 		break;
 	case 'n':
 		nmsg = atoi(EARGF(usage()));
+		if(nmsg < 0)
+			usage();
 		break;
 	case 'q':
 		quiet = 1;
@@ -526,6 +534,8 @@ main(int argc, char **argv)
 		break;
 	case 'w':
 		waittime = atoi(EARGF(usage()));
+		if(waittime < 0)
+			usage();
 		break;
 	default:
 		usage();

+ 3 - 0
sys/src/libc/port/nrand.c

@@ -10,6 +10,9 @@ nrand(int n)
 
 	if(n < 0)
 		return n;
+	if(n == 1)
+		return 0;
+	/* and if n == 0, you deserve what you get */
 	slop = MASK % n;
 	do
 		v = lrand();