1#!/usr/bin/perl -w 2 3# Usage: ./enum2debug.pl isakmp.h >vpnc-debug.c 2>vpnc-debug.h 4 5use strict; 6 7my $in_enum = 0; 8my $element; 9my $arrayname; 10 11print STDERR << 'EOF'; 12/* Automatically generated with enum2debug.pl: Don't edit! */ 13 14struct debug_strings { 15 unsigned int id; 16 const char *string; 17}; 18 19extern const char *val_to_string(unsigned int, const struct debug_strings *); 20 21EOF 22 23print << 'EOF'; 24/* Automatically generated with enum2debug.pl: Don't edit! */ 25 26#include <stdio.h> 27 28#include "vpnc-debug.h" 29#include "isakmp.h" 30 31const char *val_to_string(unsigned int val, const struct debug_strings *dstrings) 32{ 33 static const char *unknown = " (unknown)"; 34 static const char *na = ""; 35 unsigned int i; 36 37 if (dstrings == NULL) 38 return na; 39 40 for (i = 0; dstrings[i].id != 0 || dstrings[i].string != NULL; i++) 41 if (dstrings[i].id == val) 42 return dstrings[i].string; 43 return unknown; 44} 45 46EOF 47 48while (<>) { 49 if (/^enum\W+(\w+)\W*/) { 50 print STDERR "extern const struct debug_strings $1_array[];\n"; 51 print "const struct debug_strings $1_array[] = {\n"; 52 $in_enum = 1; 53 } elsif ($in_enum && /^}/) { 54 print "\t{ 0,\t(const char *) 0 }\n};\n\n"; 55 $in_enum = 0; 56 } elsif ($in_enum && /^\W*(\w+)\W*/) { 57 print "\t{ $1,\t\" ($1)\" },\n"; 58 } 59} 60 61exit 0; 62 63__END__ 64