فهرست منبع

(main): Convert lseek whence values to portable integers on the wire.
Check for whence values out of range.

Paul Eggert 26 سال پیش
والد
کامیت
d091cd947a
1فایلهای تغییر یافته به همراه11 افزوده شده و 1 حذف شده
  1. 11 1
      src/rmt.c

+ 11 - 1
src/rmt.c

@@ -254,6 +254,7 @@ top:
 	char position_string[STRING_SIZE];
 	off_t count = 0;
 	int negative;
+	int whence;
 	char *p;
 
 	get_string (count_string);
@@ -288,7 +289,16 @@ top:
 	      }
 	  }
 
-	count = lseek (tape, count, atoi (position_string));
+	switch (atoi (position_string))
+	  {
+	  case 0: whence = SEEK_SET; break;
+	  case 1: whence = SEEK_CUR; break;
+	  case 2: whence = SEEK_END; break;
+	  default:
+	    report_error_message (N_("Seek direction out of range"));
+	    exit (EXIT_FAILURE);
+	  }
+	count = lseek (tape, count, whence);
 	if (count < 0)
 	  goto ioerror;