summaryrefslogtreecommitdiff
path: root/man/makelinks
diff options
context:
space:
mode:
authorThomas E. Dickey <dickey@invisible-island.net>2021-03-14 19:24:48 -0400
committerThomas E. Dickey <dickey@invisible-island.net>2021-03-17 19:09:25 -0400
commita383f6cc5d64715012e7c53c70a624c303103d4d (patch)
tree79baccc36c5f8f2a7c3830a7aa01931c4bfa6112 /man/makelinks
parent1fd32263c0d11310b7d04f34f43051f802cc8ea7 (diff)
downloadxorg-lib-libXcursor-a383f6cc5d64715012e7c53c70a624c303103d4d.tar.gz
further formatting fixes. added script to create/find ".so" files which are missing
Signed-off-by: Thomas E. Dickey <dickey@invisible-island.net>
Diffstat (limited to 'man/makelinks')
-rwxr-xr-xman/makelinks121
1 files changed, 121 insertions, 0 deletions
diff --git a/man/makelinks b/man/makelinks
new file mode 100755
index 0000000..cfed84d
--- /dev/null
+++ b/man/makelinks
@@ -0,0 +1,121 @@
+#!/usr/bin/env perl
+#-------------------------------------------------------------------------------
+# Copyright 2021, Thomas E. Dickey
+#
+# All Rights Reserved
+#
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, sublicense, and/or sell copies of the Software, and to
+# permit persons to whom the Software is furnished to do so, subject to
+# the following conditions:
+#
+# The above copyright notice and this permission notice shall be included
+# in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+# IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY
+# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#
+# Except as contained in this notice, the name(s) of the above copyright
+# holders shall not be used in advertising or otherwise to promote the
+# sale, use or other dealings in this Software without prior written
+# authorization.
+#-------------------------------------------------------------------------------
+# Ensure that the function-prototypes listed in Xcursor.man have ".so" files,
+# and that those are listed in the makefile.
+
+use strict;
+use warnings;
+
+our %man_links;
+
+sub read_file($) {
+ my $file = shift;
+ my @data;
+ if ( open my $fh, $file ) {
+ @data = <$fh>;
+ close $fh;
+ chomp @data;
+ }
+ return @data;
+}
+
+sub make_man_link($) {
+ my $name = shift;
+ my $link = ".so man__libmansuffix__/Xcursor.__libmansuffix__";
+ my $file = $name . ".man";
+ if ( -f $file ) {
+ my @data = &read_file($file);
+ if ( $#data != 0 or $data[0] ne $link ) {
+ printf "?? wrong: $file\n";
+ }
+ }
+ else {
+ printf "...create: $file\n";
+ open my $fh, ">$file" or die "cannot create $file";
+ printf $fh "%s\n", $link;
+ close $fh;
+ system("git add $file");
+ }
+ $man_links{$name} = $file;
+}
+
+sub scan_man($) {
+ my $file = shift;
+ printf "** scan $file\n";
+ my @data = &read_file($file);
+ my $last = "";
+ for my $n ( 0 .. $#data ) {
+ if ( $last =~ /^\.NS\b/ ) {
+ my $name = $data[$n];
+ $name =~ s/^\s*\w+\s*[*]*\s*(\w+)\b.*/$1/;
+ &make_man_link($name);
+ }
+ $last = $data[$n];
+ }
+}
+
+sub scan_make($) {
+ my $find = shift;
+ my $file = shift;
+ printf "** find $find in $file\n";
+ my @data = &read_file($file);
+ my %data;
+ my $state = 0;
+ for my $n ( 0 .. $#data ) {
+ if ( $data[$n] =~ /^\s*$find\s*=/ ) {
+ $state = 1;
+ }
+ elsif ( $state == 1 ) {
+ if ( $data[$n] =~ /\\$/ ) {
+ }
+ else {
+ $state = 2;
+ }
+ my $name = $data[$n];
+ $name =~ s/^\s*(\w+)\s*[\\]?$/$1/;
+ $data{$name} = 1;
+ }
+ elsif ( $state == 2 ) {
+ last;
+ }
+ }
+ for my $key ( sort keys %data ) {
+ printf "manpage needs $key\n", unless ( defined $man_links{$key} );
+ }
+ for my $key ( sort keys %man_links ) {
+ printf "$file needs $key\n", unless ( defined $data{$key} );
+ }
+}
+
+&scan_man("Xcursor.man");
+&scan_make( "Xcursor_shadows", "Makefile.am" );
+
+1;