浏览代码

*** empty log message ***

François Pinard 30 年之前
父节点
当前提交
586f2118b1
共有 1 个文件被更改,包括 43 次插入43 次删除
  1. 43 43
      src/diffarch.c

+ 43 - 43
src/diffarch.c

@@ -1,5 +1,5 @@
 /* Diff files from a tar archive.
-   Copyright (C) 1988 Free Software Foundation
+   Copyright (C) 1988, 1992 Free Software Foundation
 
 This file is part of GNU Tar.
 
@@ -139,7 +139,7 @@ diff_archive()
 
 	default:
 		msg("Unknown file type '%c' for %s, diffed as normal file",
-			head->header.linkflag, head->header.name);
+			head->header.linkflag, current_file_name);
 		/* FALL THRU */
 
 	case LF_OLDNORMAL:
@@ -150,8 +150,8 @@ diff_archive()
 		 * Appears to be a file.
 		 * See if it's really a directory.
 		 */
-		namelen = strlen(head->header.name)-1;
-		if (head->header.name[namelen] == '/')
+		namelen = strlen(current_file_name)-1;
+		if (current_file_name[namelen] == '/')
 			goto really_dir;
 
 		
@@ -165,7 +165,7 @@ diff_archive()
 
 		if (!S_ISREG(filestat.st_mode)) {
 			fprintf(msg_file, "%s: not a regular file\n",
-				head->header.name);
+				current_file_name);
 			skip_file((long)hstat.st_size);
 			different++;
 			goto quit;
@@ -187,17 +187,17 @@ diff_archive()
 			goto quit;
 		}
 
-		diff_fd = open(head->header.name, O_NDELAY|O_RDONLY|O_BINARY);
+		diff_fd = open(current_file_name, O_NDELAY|O_RDONLY|O_BINARY);
 
 		if (diff_fd < 0 && !f_absolute_paths) {
 			char tmpbuf[NAMSIZ+2];
 
 			tmpbuf[0]='/';
-			strcpy(&tmpbuf[1],head->header.name);
+			strcpy(&tmpbuf[1],current_file_name);
 			diff_fd=open(tmpbuf, O_NDELAY|O_RDONLY);
 		}
 		if (diff_fd < 0) {
-			msg_perror("cannot open %s",head->header.name);
+			msg_perror("cannot open %s",current_file_name);
 			if (head->header.isextended)
 				skip_extended_headers();
 			skip_file((long)hstat.st_size);
@@ -214,7 +214,7 @@ diff_archive()
 
 		check = close(diff_fd);
 		if (check < 0)
-			msg_perror("Error while closing %s",head->header.name);
+			msg_perror("Error while closing %s",current_file_name);
 
 	quit:
 		break;
@@ -225,18 +225,18 @@ diff_archive()
 			break;
 		dev = filestat.st_dev;
 		ino = filestat.st_ino;
-		err = stat(head->header.linkname, &filestat);
+		err = stat(current_link_name, &filestat);
 		if (err < 0) {
 			if (errno==ENOENT) {
-				fprintf(msg_file, "%s: does not exist\n",head->header.name);
+				fprintf(msg_file, "%s: does not exist\n",current_file_name);
 			} else {
-				msg_perror("cannot stat file %s",head->header.name);
+				msg_perror("cannot stat file %s",current_file_name);
 			}
 			different++;
 			break;
 		}
 		if(filestat.st_dev!=dev || filestat.st_ino!=ino) {
-			fprintf(msg_file, "%s not linked to %s\n",head->header.name,head->header.linkname);
+			fprintf(msg_file, "%s not linked to %s\n",current_file_name,current_link_name);
 			break;
 		}
 		break;
@@ -246,25 +246,25 @@ diff_archive()
 	case LF_SYMLINK:
 	{
 		char linkbuf[NAMSIZ+3];
-		check = readlink(head->header.name, linkbuf,
+		check = readlink(current_file_name, linkbuf,
 				 (sizeof linkbuf)-1);
 		
 		if (check < 0) {
 			if (errno == ENOENT) {
 				fprintf(msg_file,
 					"%s: no such file or directory\n",
-					head->header.name);
+					current_file_name);
 			} else {
-				msg_perror("cannot read link %s",head->header.name);
+				msg_perror("cannot read link %s",current_file_name);
 			}
 			different++;
 			break;
 		}
 
 		linkbuf[check] = '\0';	/* Null-terminate it */
-		if (strncmp(head->header.linkname, linkbuf, check) != 0) {
+		if (strncmp(current_link_name, linkbuf, check) != 0) {
 			fprintf(msg_file, "%s: symlink differs\n",
-				head->header.linkname);
+				current_link_name);
 			different++;
 		}
 	}
@@ -299,7 +299,7 @@ diff_archive()
 		if(do_stat(&filestat))
 			break;
 		if(hstat.st_rdev != filestat.st_rdev) {
-			fprintf(msg_file, "%s: device numbers changed\n", head->header.name);
+			fprintf(msg_file, "%s: device numbers changed\n", current_file_name);
 			different++;
 			break;
 		}
@@ -309,14 +309,14 @@ diff_archive()
 		if((hstat.st_mode & 07777) != (filestat.st_mode & 07777))
 #endif
 		{
-			fprintf(msg_file, "%s: mode or device-type changed\n", head->header.name);
+			fprintf(msg_file, "%s: mode or device-type changed\n", current_file_name);
 			different++;
 			break;
 		}
 		break;
 
 	case LF_DUMPDIR:
-		data=diff_dir=get_dir_contents(head->header.name,0);
+		data=diff_dir=get_dir_contents(current_file_name,0);
 		if (data) {
 			wantbytes((long)(hstat.st_size),compare_dir);
 			free(data);
@@ -326,15 +326,15 @@ diff_archive()
 
 	case LF_DIR:
 		/* Check for trailing / */
-		namelen = strlen(head->header.name)-1;
+		namelen = strlen(current_file_name)-1;
 	really_dir:
-		while (namelen && head->header.name[namelen] == '/')
-			head->header.name[namelen--] = '\0';	/* Zap / */
+		while (namelen && current_file_name[namelen] == '/')
+		  current_file_name[namelen--] = '\0';	/* Zap / */
 
 		if(do_stat(&filestat))
 			break;
 		if(!S_ISDIR(filestat.st_mode)) {
-			fprintf(msg_file, "%s is no longer a directory\n",head->header.name);
+			fprintf(msg_file, "%s is no longer a directory\n",current_file_name);
 			different++;
 			break;
 		}
@@ -346,8 +346,8 @@ diff_archive()
 		break;
 
 	case LF_MULTIVOL:
-		namelen = strlen(head->header.name)-1;
-		if (head->header.name[namelen] == '/')
+		namelen = strlen(current_file_name)-1;
+		if (current_file_name[namelen] == '/')
 			goto really_dir;
 
 		if(do_stat(&filestat))
@@ -355,7 +355,7 @@ diff_archive()
 
 		if (!S_ISREG(filestat.st_mode)) {
 			fprintf(msg_file, "%s: not a regular file\n",
-				head->header.name);
+				current_file_name);
 			skip_file((long)hstat.st_size);
 			different++;
 			break;
@@ -370,17 +370,17 @@ diff_archive()
 			break;
 		}
 
-		diff_fd = open(head->header.name, O_NDELAY|O_RDONLY|O_BINARY);
+		diff_fd = open(current_file_name, O_NDELAY|O_RDONLY|O_BINARY);
 
 		if (diff_fd < 0) {
-			msg_perror("cannot open file %s",head->header.name);
+			msg_perror("cannot open file %s",current_file_name);
 			skip_file((long)hstat.st_size);
 			different++;
 			break;
 		}
 		err = lseek(diff_fd, offset, 0);
 		if(err!=offset) {
-			msg_perror("cannot seek to %ld in file %s",offset,head->header.name);
+			msg_perror("cannot seek to %ld in file %s",offset,current_file_name);
 			different++;
 			break;
 		}
@@ -389,7 +389,7 @@ diff_archive()
 
 		check = close(diff_fd);
 		if (check < 0) {
-			msg_perror("Error while closing %s",head->header.name);
+			msg_perror("Error while closing %s",current_file_name);
 		}
 		break;
 
@@ -409,15 +409,15 @@ char *buffer;
 	err=read(diff_fd,diff_buf,bytes);
 	if(err!=bytes) {
 		if(err<0) {
-			msg_perror("can't read %s",head->header.name);
+			msg_perror("can't read %s",current_file_name);
 		} else {
-			fprintf(msg_file,"%s: could only read %d of %d bytes\n",head->header.name,err,bytes);
+			fprintf(msg_file,"%s: could only read %d of %d bytes\n",current_file_name,err,bytes);
 		}
 		different++;
 		return -1;
 	}
 	if(bcmp(buffer,diff_buf,bytes)) {
-		fprintf(msg_file, "%s: data differs\n",head->header.name);
+		fprintf(msg_file, "%s: data differs\n",current_file_name);
 		different++;
 		return -1;
 	}
@@ -430,7 +430,7 @@ long bytes;
 char *buffer;
 {
 	if(bcmp(buffer,diff_dir,bytes)) {
-		fprintf(msg_file, "%s: data differs\n",head->header.name);
+		fprintf(msg_file, "%s: data differs\n",current_file_name);
 		different++;
 		return -1;
 	}
@@ -447,7 +447,7 @@ sigh(what)
 {
 
 	fprintf(msg_file, "%s: %s differs\n",
-		head->header.name, what);
+		current_file_name, what);
 }
 
 void
@@ -506,12 +506,12 @@ struct stat *statp;
 {
 	int err;
 
-	err = f_follow_links ? stat(head->header.name, statp) : lstat(head->header.name, statp);
+	err = f_follow_links ? stat(current_file_name, statp) : lstat(current_file_name, statp);
 	if (err < 0) {
 		if (errno==ENOENT) {
-			fprintf(msg_file, "%s: does not exist\n",head->header.name);
+			fprintf(msg_file, "%s: does not exist\n",current_file_name);
 		} else
-			msg_perror("can't stat file %s",head->header.name);
+			msg_perror("can't stat file %s",current_file_name);
 /*		skip_file((long)hstat.st_size);
 		different++;*/
 		return 1;
@@ -569,7 +569,7 @@ int	filesize;
 		while (numbytes > RECORDSIZE) {
 			if ((err = read(diff_fd, buf, RECORDSIZE)) != RECORDSIZE) {
 	 			if (err < 0) 
-					msg_perror("can't read %s", head->header.name);
+					msg_perror("can't read %s", current_file_name);
 				else
 					fprintf(msg_file, "%s: could only read %d of %d bytes\n", 
 						err, numbytes);
@@ -586,7 +586,7 @@ int	filesize;
 		}
 		if ((err = read(diff_fd, buf, numbytes)) != numbytes) {
  			if (err < 0) 
-				msg_perror("can't read %s", head->header.name);
+				msg_perror("can't read %s", current_file_name);
 			else
 				fprintf(msg_file, "%s: could only read %d of %d bytes\n", 
 						err, numbytes);
@@ -617,7 +617,7 @@ int	filesize;
 	userec(datarec);
 	free(sparsearray);
 	if (different)
-		fprintf(msg_file, "%s: data differs\n", head->header.name);
+		fprintf(msg_file, "%s: data differs\n", current_file_name);
 
 }