Home | History | Annotate | Line # | Download | only in binutils
      1   1.1  christos /* bin2c.c -- dump binary file in hex format
      2  1.10  christos    Copyright (C) 2007-2025 Free Software Foundation, Inc.
      3   1.1  christos 
      4   1.1  christos    This file is part of GNU Binutils.
      5   1.1  christos 
      6   1.1  christos    This program is free software; you can redistribute it and/or modify
      7   1.1  christos    it under the terms of the GNU General Public License as published by
      8   1.1  christos    the Free Software Foundation; either version 3 of the License, or
      9   1.1  christos    (at your option) any later version.
     10   1.1  christos 
     11   1.1  christos    This program is distributed in the hope that it will be useful,
     12   1.1  christos    but WITHOUT ANY WARRANTY; without even the implied warranty of
     13   1.1  christos    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     14   1.1  christos    GNU General Public License for more details.
     15   1.1  christos 
     16   1.1  christos    You should have received a copy of the GNU General Public License
     17   1.1  christos    along with this program; if not, write to the Free Software
     18   1.1  christos    Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
     19   1.1  christos    02110-1301, USA.  */
     20   1.1  christos 
     21   1.1  christos #include <stdio.h>
     22   1.1  christos #include <stdlib.h>
     23   1.1  christos #include "binary-io.h"
     24   1.1  christos 
     25   1.1  christos int
     26   1.1  christos main (int argc, char *argv[])
     27   1.1  christos {
     28   1.1  christos   int c;
     29   1.1  christos   int i;
     30   1.1  christos 
     31   1.1  christos   if (argc != 1)
     32   1.1  christos     {
     33   1.1  christos       int ishelp = 0;
     34   1.1  christos       FILE *stream;
     35   1.1  christos 
     36   1.1  christos       if (argc == 2 && argv[1][0] == '-')
     37   1.1  christos 	{
     38   1.1  christos 	  const char *opt = &argv[1][1];
     39   1.1  christos 	  if (*opt == '-')
     40   1.1  christos 	    ++opt;
     41   1.1  christos 	  ishelp = *opt == 'h' || *opt == 'H';
     42   1.1  christos 	}
     43   1.1  christos 
     44   1.1  christos       stream = ishelp ? stdout : stderr;
     45   1.1  christos       fprintf (stream, "Usage: %s < input_file > output_file\n", argv[0]);
     46   1.1  christos       fprintf (stream, "Prints bytes from stdin in hex format.\n");
     47   1.1  christos       exit (!ishelp);
     48   1.1  christos     }
     49   1.1  christos 
     50   1.1  christos   SET_BINARY (fileno (stdin));
     51   1.1  christos 
     52   1.1  christos   i = 0;
     53   1.1  christos   while ((c = getc (stdin)) != EOF)
     54   1.1  christos     {
     55   1.1  christos       printf ("0x%02x,", c);
     56   1.1  christos       if (++i == 16)
     57   1.1  christos 	{
     58   1.1  christos 	  printf ("\n");
     59   1.1  christos 	  i = 0;
     60   1.1  christos 	}
     61   1.1  christos     }
     62   1.1  christos   if (i != 0)
     63   1.1  christos     printf ("\n");
     64   1.1  christos 
     65   1.1  christos   exit (0);
     66   1.1  christos }
     67