diff options
author | Thomas E. Dickey <dickey@invisible-island.net> | 2021-03-14 19:24:48 -0400 |
---|---|---|
committer | Thomas E. Dickey <dickey@invisible-island.net> | 2021-03-17 19:09:25 -0400 |
commit | a383f6cc5d64715012e7c53c70a624c303103d4d (patch) | |
tree | 79baccc36c5f8f2a7c3830a7aa01931c4bfa6112 /man/makelinks | |
parent | 1fd32263c0d11310b7d04f34f43051f802cc8ea7 (diff) | |
download | xorg-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-x | man/makelinks | 121 |
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; |