]> granicus.if.org Git - postgresql/blob - src/backend/utils/generate-errcodes.pl
Update copyright notices for year 2012.
[postgresql] / src / backend / utils / generate-errcodes.pl
1 #!/usr/bin/perl
2 #
3 # Generate the errcodes.h header from errcodes.txt
4 # Copyright (c) 2000-2012, PostgreSQL Global Development Group
5
6 use warnings;
7 use strict;
8
9 print "/* autogenerated from src/backend/utils/errcodes.txt, do not edit */\n";
10 print "/* there is deliberately not an #ifndef ERRCODES_H here */\n";
11
12 open my $errcodes, $ARGV[0] or die;
13
14 while (<$errcodes>) {
15     chomp;
16
17     # Skip comments
18     next if /^#/;
19     next if /^\s*$/;
20
21     # Emit a comment for each section header
22     if (/^Section:(.*)/) {
23                 my $header = $1;
24                 $header =~ s/^\s+//;
25                 print "\n/* $header */\n";
26                 next;
27         }
28
29     die "unable to parse errcodes.txt" unless /^([^\s]{5})\s+[EWS]\s+([^\s]+)/;
30
31     (my $sqlstate, my $errcode_macro) = ($1, $2);
32
33     # Split the sqlstate letters
34     $sqlstate = join ",", split "", $sqlstate;
35     # And quote them
36     $sqlstate =~ s/([^,])/'$1'/g;
37
38     print "#define $errcode_macro MAKE_SQLSTATE($sqlstate)\n";
39 }
40
41 close $errcodes;