#!/usr/bin/perl
#
# Generate the spiexceptions.h header from errcodes.txt
# Copyright (c) 2000-2021, PostgreSQL Global Development Group

use strict;
use warnings;

print
  "/* autogenerated from src/backend/utils/errcodes.txt, do not edit */\n";
print "/* there is deliberately not an #ifndef SPIEXCEPTIONS_H here */\n";

open my $errcodes, '<', $ARGV[0] or die;

while (<$errcodes>)
{
	chomp;

	# Skip comments
	next if /^#/;
	next if /^\s*$/;

	# Skip section headers
	next if /^Section:/;

	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 non-errors
	next unless $type eq 'E';

	# Skip lines without PL/pgSQL condition names
	next unless defined($condition_name);

	# Change some_error_condition to SomeErrorCondition
	$condition_name =~ s/([a-z])([^_]*)(?:_|$)/\u$1$2/g;

	print "\n{\n\t\"spiexceptions.$condition_name\", "
	  . "\"$condition_name\", $errcode_macro\n},\n";
}

close $errcodes;
