svn commit: r309125 - stable/11/contrib/elftoolchain/strings
Ed Maste
emaste at FreeBSD.org
Fri Nov 25 00:26:00 UTC 2016
Author: emaste
Date: Fri Nov 25 00:25:59 2016
New Revision: 309125
URL: https://svnweb.freebsd.org/changeset/base/309125
Log:
MFC r307969: strings: fix exit status if a file before the last one fails
Previously a command like "strings f1 f2 f3" reported the exit status
based only on processing the last file.
As with GNU strings, report an error exit status if an error was
encountered processing any of the files. While here simplify the
exit status handling to just success (0) / failure (1).
Modified:
stable/11/contrib/elftoolchain/strings/strings.c
Directory Properties:
stable/11/ (props changed)
Modified: stable/11/contrib/elftoolchain/strings/strings.c
==============================================================================
--- stable/11/contrib/elftoolchain/strings/strings.c Thu Nov 24 22:54:55 2016 (r309124)
+++ stable/11/contrib/elftoolchain/strings/strings.c Fri Nov 25 00:25:59 2016 (r309125)
@@ -48,12 +48,6 @@
ELFTC_VCSID("$Id: strings.c 3446 2016-05-03 01:31:17Z emaste $");
-enum return_code {
- RETURN_OK,
- RETURN_NOINPUT,
- RETURN_SOFTWARE
-};
-
enum radix_style {
RADIX_DECIMAL,
RADIX_HEX,
@@ -107,7 +101,7 @@ main(int argc, char **argv)
{
int ch, rc;
- rc = RETURN_OK;
+ rc = 0;
min_len = 0;
encoding_size = 1;
if (elf_version(EV_CURRENT) == EV_NONE)
@@ -197,7 +191,8 @@ main(int argc, char **argv)
if (!*argv)
rc = handle_file("{standard input}");
else while (*argv) {
- rc = handle_file(*argv);
+ if (handle_file(*argv) != 0)
+ rc = 1;
argv++;
}
return (rc);
@@ -209,11 +204,11 @@ handle_file(const char *name)
int fd, rt;
if (name == NULL)
- return (RETURN_NOINPUT);
+ return (1);
if (strcmp("{standard input}", name) != 0) {
if (freopen(name, "rb", stdin) == NULL) {
warnx("'%s': %s", name, strerror(errno));
- return (RETURN_NOINPUT);
+ return (1);
}
} else {
return (find_strings(name, (off_t)0, (off_t)0));
@@ -221,7 +216,7 @@ handle_file(const char *name)
fd = fileno(stdin);
if (fd < 0)
- return (RETURN_NOINPUT);
+ return (1);
rt = handle_elf(name, fd);
return (rt);
}
@@ -239,7 +234,7 @@ handle_binary(const char *name, int fd)
(void) lseek(fd, (off_t)0, SEEK_SET);
if (!fstat(fd, &buf))
return (find_strings(name, (off_t)0, buf.st_size));
- return (RETURN_SOFTWARE);
+ return (1);
}
/*
@@ -257,7 +252,7 @@ handle_elf(const char *name, int fd)
Elf_Scn *scn;
int rc;
- rc = RETURN_OK;
+ rc = 0;
/* If entire file is chosen, treat it as a binary file */
if (entire_file)
return (handle_binary(name, fd));
@@ -272,7 +267,7 @@ handle_elf(const char *name, int fd)
if (gelf_getehdr(elf, &elfhdr) == NULL) {
(void) elf_end(elf);
warnx("%s: ELF file could not be processed", name);
- return (RETURN_SOFTWARE);
+ return (1);
}
if (elfhdr.e_shnum == 0 && elfhdr.e_type == ET_CORE) {
@@ -352,7 +347,7 @@ find_strings(const char *name, off_t off
if ((obuf = (char*)calloc(1, min_len + 1)) == NULL) {
(void) fprintf(stderr, "Unable to allocate memory: %s\n",
strerror(errno));
- return (RETURN_SOFTWARE);
+ return (1);
}
(void) fseeko(stdin, offset, SEEK_SET);
@@ -426,7 +421,7 @@ find_strings(const char *name, off_t off
}
_exit1:
free(obuf);
- return (RETURN_OK);
+ return (0);
}
#define USAGE_MESSAGE "\
More information about the svn-src-stable
mailing list