aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--xex.c2
-rw-r--r--xexamine.c10
2 files changed, 6 insertions, 6 deletions
diff --git a/xex.c b/xex.c
index dfdee78..c887ecb 100644
--- a/xex.c
+++ b/xex.c
@@ -173,7 +173,7 @@ int xex_fread_seg_data(xex_segment *seg, FILE *file) {
return 1;
}
- if(ferror(file)) {
+ if(res < 0 || ferror(file)) {
xex_errno = XERR_SYSCALL;
} else {
/* EOF or short read */
diff --git a/xexamine.c b/xexamine.c
index ec1e822..64ecb8b 100644
--- a/xexamine.c
+++ b/xexamine.c
@@ -358,11 +358,6 @@ int main(int argc, char **argv) {
while(xex_fread_seg(&seg, f)) {
segcount++;
- xex_check_seg(&seg);
- if(xex_errno) {
- xex_perror(filename);
- }
-
crc = 0;
crc32(seg.object, seg.len, &crc);
@@ -391,6 +386,11 @@ int main(int argc, char **argv) {
offset = ftell(f);
}
+ if(xex_errno) {
+ fprintf(stderr, SELF ": %s: %s\n",
+ filename, xex_strerror(xex_errno));
+ }
+
if(only_segment && (segcount < only_segment)) {
fprintf(stderr, SELF ": can't show segment %d, only %d segments in file.\n", only_segment, segcount);
return 1;