Commit Diff


commit - 72bcf0f9f354aa395c61c7846287a7af638554a2
commit + 8251fdbcd71582c610ee8e416cae5c67e4f93796
blob - 59101dc2bb6cbc53f2bf0eb0f4f422fc393b595f
blob + 65bbcded88384d5d5c7e151f84e6271868044a5d
--- include/got_error.h
+++ include/got_error.h
@@ -60,3 +60,4 @@ static const struct got_error {
 
 const struct got_error * got_error(int code);
 const struct got_error *got_error_from_errno();
+const struct got_error *got_ferror(FILE *, int);
blob - 183e6da09dee8316f23a8ae9c65b57dffa7c7886
blob + d3b27c7b3c12ab39f0d540327d2e92a792b03eda
--- lib/error.c
+++ lib/error.c
@@ -15,6 +15,7 @@
  */
 
 #include <errno.h>
+#include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 
@@ -47,3 +48,11 @@ got_error_from_errno()
 	strerror_r(errno, msg, sizeof(msg));
 	return &err;
 }
+
+const struct got_error *
+got_ferror(FILE *f, int code)
+{
+	if (ferror(f))
+		return got_error_from_errno();
+	return got_error(code);
+}
blob - 9e1a9b8db3b262c35d1665c49b4a057dec9afc56
blob + 8519e443701a5f873894589949d2854b5a2e04ec
--- lib/pack.c
+++ lib/pack.c
@@ -83,8 +83,7 @@ get_packfile_size(size_t *size, const char *path_idx)
 
 	if (stat(path_pack, &sb) != 0) {
 		free(path_pack);
-		return got_error(GOT_ERR_IO);
-
+		return got_error_from_errno();
 	}
 
 	free(path_pack);
@@ -120,7 +119,7 @@ got_packidx_open(struct got_packidx_v2_hdr **packidx, 
 
 	n = fread(&p->magic, sizeof(p->magic), 1, f);
 	if (n != 1) {
-		err = got_error(ferror(f) ? GOT_ERR_IO : GOT_ERR_BAD_PACKIDX);
+		err = got_ferror(f, GOT_ERR_BAD_PACKIDX);
 		goto done;
 	}
 
@@ -133,7 +132,7 @@ got_packidx_open(struct got_packidx_v2_hdr **packidx, 
 
 	n = fread(&p->version, sizeof(p->version), 1, f);
 	if (n != 1) {
-		err = got_error(ferror(f) ? GOT_ERR_IO : GOT_ERR_BAD_PACKIDX);
+		err = got_ferror(f, GOT_ERR_BAD_PACKIDX);
 		goto done;
 	}
 
@@ -146,7 +145,7 @@ got_packidx_open(struct got_packidx_v2_hdr **packidx, 
 
 	n = fread(&p->fanout_table, sizeof(p->fanout_table), 1, f);
 	if (n != 1) {
-		err = got_error(ferror(f) ? GOT_ERR_IO : GOT_ERR_BAD_PACKIDX);
+		err = got_ferror(f, GOT_ERR_BAD_PACKIDX);
 		goto done;
 	}
 
@@ -166,7 +165,7 @@ got_packidx_open(struct got_packidx_v2_hdr **packidx, 
 
 	n = fread(p->sorted_ids, sizeof(*p->sorted_ids), nobj, f);
 	if (n != nobj) {
-		err = got_error(ferror(f) ? GOT_ERR_IO : GOT_ERR_BAD_PACKIDX);
+		err = got_ferror(f, GOT_ERR_BAD_PACKIDX);
 		goto done;
 	}
 
@@ -181,7 +180,7 @@ got_packidx_open(struct got_packidx_v2_hdr **packidx, 
 
 	n = fread(p->crc32, sizeof(*p->crc32), nobj, f);
 	if (n != nobj) {
-		err = got_error(ferror(f) ? GOT_ERR_IO : GOT_ERR_BAD_PACKIDX);
+		err = got_ferror(f, GOT_ERR_BAD_PACKIDX);
 		goto done;
 	}
 
@@ -195,7 +194,7 @@ got_packidx_open(struct got_packidx_v2_hdr **packidx, 
 
 	n = fread(p->offsets, sizeof(*p->offsets), nobj, f);
 	if (n != nobj) {
-		err = got_error(ferror(f) ? GOT_ERR_IO : GOT_ERR_BAD_PACKIDX);
+		err = got_ferror(f, GOT_ERR_BAD_PACKIDX);
 		goto done;
 	}
 
@@ -213,7 +212,7 @@ got_packidx_open(struct got_packidx_v2_hdr **packidx, 
 
 	n = fread(p->large_offsets, sizeof(*p->large_offsets), nobj, f);
 	if (n != nobj) {
-		err = got_error(ferror(f) ? GOT_ERR_IO : GOT_ERR_BAD_PACKIDX);
+		err = got_ferror(f, GOT_ERR_BAD_PACKIDX);
 		goto done;
 	}
 
@@ -223,7 +222,7 @@ got_packidx_open(struct got_packidx_v2_hdr **packidx, 
 checksum:
 	n = fread(&p->trailer, sizeof(p->trailer), 1, f);
 	if (n != 1) {
-		err = got_error(ferror(f) ? GOT_ERR_IO : GOT_ERR_BAD_PACKIDX);
+		err = got_ferror(f, GOT_ERR_BAD_PACKIDX);
 		goto done;
 	}
 
@@ -317,7 +316,7 @@ read_packfile_hdr(FILE *f, struct got_packidx_v2_hdr *
 
 	n = fread(&hdr, sizeof(hdr), 1, f);
 	if (n != 1)
-		return got_error(ferror(f) ? GOT_ERR_IO : GOT_ERR_BAD_PACKFILE);
+		return got_ferror(f, GOT_ERR_BAD_PACKIDX);
 
 	if (betoh32(hdr.signature) != GOT_PACKFILE_SIGNATURE ||
 	    betoh32(hdr.version) != GOT_PACKFILE_VERSION ||
@@ -360,10 +359,10 @@ dump_packed_object(FILE **f, FILE *packfile, off_t off
 
 		n = fread(&sizeN, sizeof(sizeN), 1, packfile);
 		if (n != 1) {
-			err = got_error(ferror(packfile) ?
-			    GOT_ERR_IO : GOT_ERR_BAD_PACKFILE);
+			err = got_ferror(packfile, GOT_ERR_BAD_PACKIDX);
 			goto done;
 		}
+
 		if (i == 0) {
 			type = (sizeN & GOT_PACK_OBJ_SIZE0_TYPE_MASK) >>
 			    GOT_PACK_OBJ_SIZE0_TYPE_MASK_SHIFT;
@@ -397,15 +396,13 @@ dump_packed_object(FILE **f, FILE *packfile, off_t off
 
 		n = fread(data, len, 1, packfile);
 		if (n != 1) {
-			err = got_error(ferror(packfile) ?
-			    GOT_ERR_IO : GOT_ERR_BAD_PACKFILE);
+			err = got_ferror(packfile, GOT_ERR_BAD_PACKIDX);
 			goto done;
 		}
 
 		n = fwrite(data, len, 1, *f);
 		if (n != 1) {
-			err = got_error(ferror(*f) ?
-			    GOT_ERR_IO : GOT_ERR_BAD_PACKFILE);
+			err = got_ferror(*f, GOT_ERR_BAD_PACKIDX);
 			goto done;
 		}