bin2c.c revision 214571
1/* bin2c.c -- dump binary file in hex format 2 Copyright 2007 Free Software Foundation, Inc. 3 4 This file is part of GNU Binutils. 5 6 This program is free software; you can redistribute it and/or modify 7 it under the terms of the GNU General Public License as published by 8 the Free Software Foundation; either version 2 of the License, or 9 (at your option) any later version. 10 11 This program is distributed in the hope that it will be useful, 12 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 GNU General Public License for more details. 15 16 You should have received a copy of the GNU General Public License 17 along with this program; if not, write to the Free Software 18 Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 19 02110-1301, USA. */ 20 21#include "sysdep.h" 22#include "bfd.h" 23#include "bucomm.h" 24 25#if !defined O_BINARY && defined _O_BINARY 26 /* For MSC-compatible compilers. */ 27# define O_BINARY _O_BINARY 28# define O_TEXT _O_TEXT 29#endif 30 31#ifdef __BEOS__ 32 /* BeOS 5 has O_BINARY and O_TEXT, but they have no effect. */ 33# undef O_BINARY 34# undef O_TEXT 35#endif 36 37#if O_BINARY 38# ifndef __DJGPP__ 39# define setmode _setmode 40# define fileno(_fp) _fileno (_fp) 41# endif /* not DJGPP */ 42# define SET_BINARY(_f) \ 43 do { if (!isatty (_f)) setmode (_f, O_BINARY); } while (0) 44#else 45# define SET_BINARY(f) (void) 0 46# define O_BINARY 0 47# define O_TEXT 0 48#endif /* O_BINARY */ 49 50int 51main (int argc, char *argv[]) 52{ 53 int c; 54 int i; 55 56#if defined (HAVE_SETLOCALE) && defined (HAVE_LC_MESSAGES) 57 setlocale (LC_MESSAGES, ""); 58#endif 59#if defined (HAVE_SETLOCALE) 60 setlocale (LC_CTYPE, ""); 61#endif 62 bindtextdomain (PACKAGE, LOCALEDIR); 63 textdomain (PACKAGE); 64 65 if (argc != 1) 66 { 67 int ishelp = 0; 68 int isvers = 0; 69 FILE *stream; 70 71 if (argc == 2 && argv[1][0] == '-') 72 { 73 const char *opt = &argv[1][1]; 74 if (*opt == '-') 75 ++opt; 76 ishelp = *opt == 'h' || *opt == 'H'; 77 isvers = *opt == 'v' || *opt == 'V'; 78 } 79 80 if (isvers) 81 print_version ("bin2c"); 82 83 stream = ishelp ? stdout : stderr; 84 fprintf (stream, _("Usage: %s < input_file > output_file\n"), argv[0]); 85 fprintf (stream, _("Prints bytes from stdin in hex format.\n")); 86 exit (!ishelp); 87 } 88 89 SET_BINARY (fileno (stdin)); 90 91 i = 0; 92 while ((c = getc (stdin)) != EOF) 93 { 94 printf ("0x%02x,", c); 95 if (++i == 16) 96 { 97 printf ("\n"); 98 i = 0; 99 } 100 } 101 if (i != 0) 102 printf ("\n"); 103 104 exit (0); 105} 106