mirror of
https://gitlab.freedesktop.org/xorg/lib/libxcursor.git
synced 2025-12-20 04:40:11 +01:00
123 lines
3.7 KiB
Perl
Executable file
123 lines
3.7 KiB
Perl
Executable file
#!/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 $opt_v;
|
|
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/^(const)?\s*\w+\s*[*]*\s*(\w+)\b.*/$2/;
|
|
printf STDERR "MAP '%s' -> '%s'\n", $data[$n], $name if ( $opt_v );
|
|
&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;
|