diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2010-10-30 23:02:32 +0000 | 
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2010-10-30 23:02:32 +0000 | 
| commit | b3cded65e92ba4d9b5e5a33fb95c4d551bda9c1b (patch) | |
| tree | 69d40fbef2c0c4ee32fe97b7a28b510f2e3c2dbc /binutils/bin2c.c | |
| parent | 7a815afd9b5121ee0f65dc1e1de1c0de6de97679 (diff) | |
Notes
Diffstat (limited to 'binutils/bin2c.c')
| -rw-r--r-- | binutils/bin2c.c | 105 | 
1 files changed, 105 insertions, 0 deletions
| diff --git a/binutils/bin2c.c b/binutils/bin2c.c new file mode 100644 index 000000000000..b83f02d3c98e --- /dev/null +++ b/binutils/bin2c.c @@ -0,0 +1,105 @@ +/* bin2c.c -- dump binary file in hex format +   Copyright 2007 Free Software Foundation, Inc. + +   This file is part of GNU Binutils. + +   This program is free software; you can redistribute it and/or modify +   it under the terms of the GNU General Public License as published by +   the Free Software Foundation; either version 2 of the License, or +   (at your option) any later version. + +   This program is distributed in the hope that it will be useful, +   but WITHOUT ANY WARRANTY; without even the implied warranty of +   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the +   GNU General Public License for more details. + +   You should have received a copy of the GNU General Public License +   along with this program; if not, write to the Free Software +   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA +   02110-1301, USA.  */ + +#include "sysdep.h" +#include "bfd.h" +#include "bucomm.h" + +#if !defined O_BINARY && defined _O_BINARY +  /* For MSC-compatible compilers.  */ +# define O_BINARY _O_BINARY +# define O_TEXT _O_TEXT +#endif + +#ifdef __BEOS__ +  /* BeOS 5 has O_BINARY and O_TEXT, but they have no effect.  */ +# undef O_BINARY +# undef O_TEXT +#endif + +#if O_BINARY +# ifndef __DJGPP__ +#  define setmode _setmode +#  define fileno(_fp) _fileno (_fp) +# endif /* not DJGPP */ +# define SET_BINARY(_f) \ +  do { if (!isatty (_f)) setmode (_f, O_BINARY); } while (0) +#else +# define SET_BINARY(f) (void) 0 +# define O_BINARY 0 +# define O_TEXT 0 +#endif /* O_BINARY */ + +int +main (int argc, char *argv[]) +{ +  int c; +  int i; + +#if defined (HAVE_SETLOCALE) && defined (HAVE_LC_MESSAGES) +  setlocale (LC_MESSAGES, ""); +#endif +#if defined (HAVE_SETLOCALE) +  setlocale (LC_CTYPE, ""); +#endif +  bindtextdomain (PACKAGE, LOCALEDIR); +  textdomain (PACKAGE); + +  if (argc != 1) +    { +      int ishelp = 0; +      int isvers = 0; +      FILE *stream; + +      if (argc == 2 && argv[1][0] == '-') +	{ +	  const char *opt = &argv[1][1]; +	  if (*opt == '-') +	    ++opt; +	  ishelp = *opt == 'h' || *opt == 'H'; +	  isvers = *opt == 'v' || *opt == 'V'; +	} + +      if (isvers) +	print_version ("bin2c"); + +      stream = ishelp ? stdout : stderr; +      fprintf (stream, _("Usage: %s < input_file > output_file\n"), argv[0]); +      fprintf (stream, _("Prints bytes from stdin in hex format.\n")); +      exit (!ishelp); +    } + +  SET_BINARY (fileno (stdin)); + +  i = 0; +  while ((c = getc (stdin)) != EOF) +    { +      printf ("0x%02x,", c); +      if (++i == 16) +	{ +	  printf ("\n"); +	  i = 0; +	} +    } +  if (i != 0) +    printf ("\n"); + +  exit (0); +} | 
