From Mark C. Brown:
[obnox/wireshark/wip.git] / epan / make-sminmpec.pl
1 #!/usr/bin/perl -w
2 # create the sminmpec.c file from 
3 # http://www.iana.org/assignments/enterprise-numbers
4 #
5 # $Id$
6 #
7 # Ethereal - Network traffic analyzer
8 # By Gerald Combs <gerald@ethereal.com>
9 # Copyright 2004 Gerald Combs
10 #
11 # This program is free software; you can redistribute it and/or
12 # modify it under the terms of the GNU General Public License
13 # as published by the Free Software Foundation; either version 2
14 # of the License, or (at your option) any later version.
15 #
16 # This program is distributed in the hope that it will be useful,
17 # but WITHOUT ANY WARRANTY; without even the implied warranty of
18 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19 # GNU General Public License for more details.
20 #
21 # You should have received a copy of the GNU General Public License
22 # along with this program; if not, write to the Free Software
23 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
24 use strict;
25
26 my $in = shift;
27 my $out = shift;
28
29 open IN, "< $in";
30 open OUT, "> $out";
31
32 my $body = '';
33 my $code;
34
35 sub escape_non_ascii {
36     my $val = unpack 'C', $_[0];
37     return sprintf '\0%.3o',$val;
38 }
39
40 while(<IN>) {
41         s/[\000-\037]//g;
42         s/\\/\\\\/g;
43         s/"/\\"/g;
44         s/([\x80-\xFF])/escape_non_ascii($1)/ge;
45         
46         if (/^(\d+)/) {
47                 $code = $1;
48         } if (/^  (\S.*)/ ) {
49                 my $name = $1;
50                 $body .= "\t{ $code,\t\"$name\" },\n";
51         }
52 }
53
54 close IN;
55
56 print OUT <<"_SMINMPEC";
57 /*
58  * THIS FILE IS AUTOGENERATED, DO NOT EDIT
59  * generated from http://www.iana.org/assignments/enterprise-numbers
60  * run "epan/make-sminmspec <infile> <outfile>" to regenerate
61  */
62 #ifdef HAVE_CONFIG_H
63 # include "config.h"
64 #endif
65
66 #include <glib.h>
67
68 #include <epan/value_string.h>
69 #include <epan/sminmpec.h>
70
71 const value_string sminmpec_values[] = {
72
73 $body
74         {0, NULL}
75 };
76
77 _SMINMPEC
78
79 close OUT;