diff options
author | Brian Norris <norris@broadcom.com> | 2010-07-19 10:33:16 -0700 |
---|---|---|
committer | Artem Bityutskiy <Artem.Bityutskiy@nokia.com> | 2010-07-21 12:59:57 +0300 |
commit | 880e6c65503a1a969bd00959b1e7a19a31914c61 (patch) | |
tree | 4c68a76158b61d7af61070c33455d199bcc5f4c6 | |
parent | 48ae9d621bc8df3ca54e8e852632f7af77ec5ea0 (diff) |
nanddump: add "forcebinary" flag
Restrict binary dumping so that by default, binary garbage is not
printed directly to a terminal. Output redicted to files or piped to
other commands should not be affected (as judged by "isatty(ofd)").
A new flag "-a" or "--forcebinary" is included so that users can
override this behavior if necessary.
Signed-off-by: Brian Norris <norris@broadcom.com>
Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
-rw-r--r-- | nanddump.c | 22 |
1 files changed, 21 insertions, 1 deletions
@@ -45,6 +45,7 @@ static void display_help (void) "\n" " --help Display this help and exit\n" " --version Output version information and exit\n" +"-a --forcebinary Force printing of binary data to tty\n" "-c --canonicalprint Print canonical Hex+ASCII dump\n" "-f file --file=file Dump to file\n" "-i --ignoreerrors Ignore errors\n" @@ -85,6 +86,7 @@ static const char *dumpfile; // dump file name static bool omitbad = false; static bool quiet = false; // suppress diagnostic output static bool canonical = false; // print nice + ascii +static bool forcebinary = false; // force printing binary to tty static void process_options (int argc, char * const argv[]) { @@ -92,10 +94,11 @@ static void process_options (int argc, char * const argv[]) for (;;) { int option_index = 0; - static const char *short_options = "bs:f:il:opqnc"; + static const char *short_options = "bs:f:il:opqnca"; static const struct option long_options[] = { {"help", no_argument, 0, 0}, {"version", no_argument, 0, 0}, + {"forcebinary", no_argument, 0, 'a'}, {"canonicalprint", no_argument, 0, 'c'}, {"file", required_argument, 0, 'f'}, {"ignoreerrors", no_argument, 0, 'i'}, @@ -147,6 +150,9 @@ static void process_options (int argc, char * const argv[]) case 'o': omitoob = true; break; + case 'a': + forcebinary = true; + break; case 'c': canonical = true; case 'p': @@ -170,6 +176,13 @@ static void process_options (int argc, char * const argv[]) exit(EXIT_FAILURE); } + if (forcebinary && pretty_print) { + fprintf(stderr, "The forcebinary and pretty print options are\n" + "mutually-exclusive. Choose one or the " + "other.\n"); + exit(EXIT_FAILURE); + } + if ((argc - optind) != 1 || error) display_help (); @@ -355,6 +368,13 @@ int main(int argc, char * const argv[]) exit(EXIT_FAILURE); } + if (!pretty_print && !forcebinary && isatty(ofd)) { + fprintf(stderr, "Not printing binary garbage to tty. Use '-a'\n" + "or '--forcebinary' to override.\n"); + close(fd); + exit(EXIT_FAILURE); + } + /* Initialize start/end addresses and block size */ if (length) end_addr = start_addr + length; |