#!/usr/bin/perl # # Simple program to generate the string array for the lxw_strerror() function # from the Doxygen comments in the lxw_error enum: # # perl dev/release/gen_error_strings.pl include/xlsxwriter/common.h # # SPDX-License-Identifier: BSD-2-Clause # Copyright 2014-2024, John McNamara, jmcnamara@cpan.org. # use warnings; use strict; my $in_enum = 0; my @strings; my $filename = shift || 'include/xlsxwriter/common.h'; open my $fh, '<', $filename or die "Couldn't open $filename: $!\n"; while (<$fh>) { $in_enum = 1 if /typedef enum lxw_error/; $in_enum = 0 if /} lxw_error;/; # Match doxygen strings in the enum. if ($in_enum && m{/\*\*}) { # Strip the comment parts. s{/\*\*}{}; s{\*/}{}; s{^\s+}{}; s{\s+$}{}; push @strings, $_; } } # Print out an array of strings based on the doxygen comments. print "\n"; print "// Copy to src/utility.c\n\n"; print "char *error_strings[LXW_MAX_ERRNO + 1] = {\n"; for my $string (@strings) { print qq{ "$string",\n}; } print qq{ "Unknown error number."\n}; print "};\n\n";