Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 8 Mar 2020 20:35:00 +0000 (UTC)
From:      Ed Maste <emaste@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org
Subject:   svn commit: r358778 - stable/12/contrib/elftoolchain/readelf
Message-ID:  <202003082035.028KZ09w095231@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: emaste
Date: Sun Mar  8 20:35:00 2020
New Revision: 358778
URL: https://svnweb.freebsd.org/changeset/base/358778

Log:
  readelf: hoist file opening out of dump_object
  
  Diff reduction with HEAD to facilitate other MFCs.

Modified:
  stable/12/contrib/elftoolchain/readelf/readelf.c

Modified: stable/12/contrib/elftoolchain/readelf/readelf.c
==============================================================================
--- stable/12/contrib/elftoolchain/readelf/readelf.c	Sun Mar  8 20:09:19 2020	(r358777)
+++ stable/12/contrib/elftoolchain/readelf/readelf.c	Sun Mar  8 20:35:00 2020	(r358778)
@@ -7116,15 +7116,8 @@ process_members:
 }
 
 static void
-dump_object(struct readelf *re)
+dump_object(struct readelf *re, int fd)
 {
-	int fd;
-
-	if ((fd = open(re->filename, O_RDONLY)) == -1) {
-		warn("open %s failed", re->filename);
-		return;
-	}
-
 	if ((re->flags & DISPLAY_FILENAME) != 0)
 		printf("\nFile: %s\n", re->filename);
 
@@ -7145,13 +7138,10 @@ dump_object(struct readelf *re)
 		break;
 	default:
 		warnx("Internal: libelf returned unknown elf kind.");
-		goto done;
 	}
 
-	elf_end(re->elf);
-
 done:
-	close(fd);
+	elf_end(re->elf);
 }
 
 static void
@@ -7496,7 +7486,7 @@ main(int argc, char **argv)
 {
 	struct readelf	*re, re_storage;
 	unsigned long	 si;
-	int		 opt, i;
+	int		 fd, opt, i;
 	char		*ep;
 
 	re = &re_storage;
@@ -7621,7 +7611,13 @@ main(int argc, char **argv)
 
 	for (i = 0; i < argc; i++) {
 		re->filename = argv[i];
-		dump_object(re);
+		fd = open(re->filename, O_RDONLY);
+		if (fd < 0) {
+			warn("open %s failed", re->filename);
+		} else {
+			dump_object(re, fd);
+			close(fd);
+		}
 	}
 
 	exit(EXIT_SUCCESS);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202003082035.028KZ09w095231>