~vanvugt/ubuntu/oneiric/mediatomb/fix-770964-784431

« back to all changes in this revision

Viewing changes to config/bin2hex.pl

  • Committer: Bazaar Package Importer
  • Author(s): Andres Mejia
  • Date: 2009-04-22 21:39:19 UTC
  • mto: (4.2.1 sid)
  • mto: This revision was merged to the branch mainline in revision 9.
  • Revision ID: james.westby@ubuntu.com-20090422213919-52m015y6gcpv1m1g
Tags: upstream-0.12.0~svn2018
ImportĀ upstreamĀ versionĀ 0.12.0~svn2018

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/usr/bin/perl
 
2
 
 
3
#
 
4
# bin2hex.pl by Chami.com
 
5
# http://www.chami.com/tips/
 
6
#
 
7
 
 
8
# number of characters per line
 
9
$chars_per_line = 15;
 
10
 
 
11
# -------------------------------------
 
12
 
 
13
# language id
 
14
#
 
15
# 0 = Perl (default)
 
16
# 1 = C / C++
 
17
# 2 = Pascal / Delphi
 
18
#
 
19
$lang  = $ARGV[1];
 
20
 
 
21
$rem_begin  = "begin binary data:";
 
22
$rem_end    = "end binary data.";
 
23
 
 
24
# initialize for Perl strings
 
25
# by default
 
26
$_var       = "# $rem_begin\n".
 
27
              "$bin_data = # %d}n";
 
28
$_begin     = "\"";
 
29
$_end       = "\";}\n";
 
30
$_break     = "\".\n\"";
 
31
$_format    = "\\x%02X";
 
32
$_separator = "";
 
33
$_comment   = "# $rem_end ".
 
34
              "size = %d bytes";
 
35
 
 
36
 
 
37
# C / C++
 
38
if(1 == $lang)
 
39
{
 
40
  $_var       = "/* $rem_begin */\n".
 
41
                "char bin_data[] = ".
 
42
                "/* %d */\n";
 
43
  $_begin     = "{";
 
44
  $_end       = "};\n";
 
45
  $_break     = "\n";
 
46
  $_format    = "0x%02X";
 
47
  $_separator = ",";
 
48
  $_comment   = "/* $rem_end ".
 
49
                "size = %d bytes */";
 
50
}
 
51
elsif(2 == $lang)
 
52
{
 
53
  $_var       = "{ $rem_begin }\n".
 
54
                "const bin_data : ".
 
55
                "array [1..%d] of ".
 
56
                "byte = \n";
 
57
  $_begin     = "(";
 
58
  $_end       = ");\n";
 
59
  $_break     = "\n";
 
60
  $_format    = "$%02X";
 
61
  $_separator = ",";
 
62
  $_comment   = "{ $rem_end ".
 
63
                "size = %d bytes }";
 
64
}
 
65
 
 
66
if(open(F, "<".$ARGV[0]))
 
67
{
 
68
  binmode(F);
 
69
 
 
70
  $s = '';
 
71
  $i = 0;
 
72
  $count = 0;
 
73
  $first = 1;
 
74
  $s .= $_begin;
 
75
  while(!eof(F))
 
76
  {
 
77
    if($i >= $chars_per_line)
 
78
    {
 
79
      $s .= $_break;
 
80
      $i = 0;
 
81
    }
 
82
    if(!$first)
 
83
    {
 
84
      $s .= $_separator;
 
85
    }
 
86
    $s .= sprintf(
 
87
            $_format, ord(getc(F)));
 
88
    ++$i;
 
89
    ++$count;
 
90
    $first = 0;
 
91
  }
 
92
  $s .= $_end;
 
93
  $s .= sprintf $_comment, $count;
 
94
  $s .= "\n\n";
 
95
 
 
96
  $s = "\n".sprintf($_var, $count).$s;
 
97
 
 
98
  print $s;
 
99
 
 
100
  close( F );
 
101
}
 
102
else
 
103
{
 
104
  print
 
105
    "bin2hex.pl by Chami.com\n".
 
106
    "\n".
 
107
    "usage:\n".
 
108
    "  perl bin2hex.pl <binary file>".
 
109
    " <language id>\n".
 
110
    "\n".
 
111
    "  <binary file> : path to the ".
 
112
    "binary file\n".
 
113
    "  <language id> : 0 = Perl, ".
 
114
    "1 = C/C++/Java, ".
 
115
    "2 = Pascal/Delphi\n".
 
116
    "\n";
 
117
}
 
118