shithub: scc

Download patch

ref: f252835dfc4dcd929a86547da426b5c5ab4df65b
parent: 458a063eb092b36470332d6418a3dde377e8e2be
author: Roberto E. Vargas Caballero <k0ga@shike2.com>
date: Tue Feb 13 09:46:02 EST 2018

[ar] Simplify copy()

--- a/ar/main.c
+++ b/ar/main.c
@@ -139,30 +139,24 @@
 }
 
 static void
-copy(char *fname, struct ar_hdr *hdr, FILE *dst, FILE *src)
+copy(struct arop *op)
 {
 	int c;
 	long siz, n;
+	struct ar_hdr *hdr = &op->hdr;
 
 	if (vflag)
-		printf("a - %s\n", fname);
-	fwrite(&hdr, sizeof(hdr), 1, dst);
-	siz = atol(hdr->ar_size);
-	if (siz < 0) {
-		fprintf(stderr, "ar:corrupted member header '%s'\n", fname);
-		exit(1);
-	}
+		printf("a - %s\n", op->fname);
+
+	fwrite(&hdr, sizeof(hdr), 1, op->dst);
+	siz = op->size;
 	if ((siz & 1) == 1)
 		siz++;
 	while (siz--) {
-		if ((c = getc(src)) == EOF)
+		if ((c = getc(op->src)) == EOF)
 			break;
-		fputc(c, dst);
+		fputc(c, op->dst);
 	}
-	if (ferror(src)) {
-		perror("ar:writing temporary");
-		exit(1);
-	}
 }
 
 static void
@@ -292,7 +286,7 @@
 {
 	if (inlist(op->fname, files))
 		return;
-	copy(op->fname, &op->hdr, op->dst, op->src);
+	copy(op);
 }
 
 static char *
@@ -346,7 +340,7 @@
 	FILE *fp;
 
 	if (fflush(tmp) == EOF) {
-		perror("ar:writing members");
+		perror("ar:writing temporary");
 		exit(1);
 	}
 	if (tmpafile) {