diff options
Diffstat (limited to 'doc/src/sgml/generate-errcodes-table.pl')
-rw-r--r-- | doc/src/sgml/generate-errcodes-table.pl | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/doc/src/sgml/generate-errcodes-table.pl b/doc/src/sgml/generate-errcodes-table.pl new file mode 100644 index 00000000000..5d0ccffadd9 --- /dev/null +++ b/doc/src/sgml/generate-errcodes-table.pl @@ -0,0 +1,63 @@ +#!/usr/bin/perl +# +# Generate the errcodes-table.sgml file from errcodes.txt +# Copyright (c) 2000-2011, PostgreSQL Global Development Group + +use warnings; +use strict; + +print "<!-- autogenerated from src/backend/utils/errcodes.txt, do not edit -->\n"; + +open my $errcodes, $ARGV[0] or die; + +while (<$errcodes>) { + chomp; + + # Skip comments + next if /^#/; + next if /^\s*$/; + + # Emit section headers + if (/^Section:/) { + + # Remove the Section: string + s/^Section: //; + # Escape dashes for SGML + s/-/—/; + # Wrap PostgreSQL in <productname/> + s/PostgreSQL/<productname>PostgreSQL<\/>/g; + + print "\n\n"; + print "<row>\n"; + print "<entry spanname=\"span13\">"; + print "<emphasis role=\"bold\">$_</></entry>\n"; + print "</row>\n"; + + next; + } + + die unless /^([^\s]{5})\s+([EWS])\s+([^\s]+)(?:\s+)?([^\s]+)?/; + + (my $sqlstate, + my $type, + my $errcode_macro, + my $condition_name) = ($1, $2, $3, $4); + + # Skip lines without PL/pgSQL condition names + next unless defined($condition_name); + + my $meaning = $condition_name; + # Remove underscores + $meaning =~ s/_/ /g; + # And capitalize + $meaning =~ tr/[a-z]/[A-Z]/; + + print "\n"; + print "<row>\n"; + print "<entry><literal>$sqlstate</literal></entry>\n"; + print "<entry>$meaning</entry>\n"; + print "<entry>$condition_name</entry>\n"; + print "</row>\n"; +} + +close $errcodes; |