"SfR Fresh" - the SfR Freeware/Shareware Archive

Member "wine-docs-1.0/po4a/testsuite/stats.man" of archive wine-docs-1.0.tar.gz:


As a special service "SfR Fresh" has tried to format the requested source page into HTML format using source code syntax highlighting with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file. That can be also achieved for any archive member file by clicking within an archive contents listing on the first character of the file(path) respectively on the according byte size field.
    1 #! /usr/bin/perl -w
    2 
    3 # This script looks all installed man page, and report some stats about them
    4 #  (usefull only to guide reflexions to po-man implementation)
    5 
    6 use strict;
    7 
    8 use File::Find ();
    9 
   10 # for the convenience of &wanted calls, including -eval statements:
   11 #use vars qw/*name *dir *prune/;
   12 #*name   = *File::Find::name;
   13 #*dir    = *File::Find::dir;
   14 #*prune  = *File::Find::prune;
   15 
   16 my %page;
   17 $page{'pod'}{'desc'} = "generated by Pod::Man";
   18 $page{'help2man'}{'desc'} = "generated by help2man";
   19 $page{'docbook-to-man'}{'desc'} = "generated by docbook-to-man";
   20 $page{'docbook2man'}{'desc'} = "generated by docbook2man";
   21 $page{'latex2man'}{'desc'} = "generated by latex2man";
   22 $page{'db2man.xsl'}{'desc'} = "generated by db2man.xsl";
   23 $page{'mtex2man'}{'desc'} = "generated by mtex2man(1)";
   24 $page{'auto'}{'desc'} = "contains 'THIS FILE HAS BEEN AUTOMATICALLY GENERATED.  DO NOT EDIT.'";
   25 $page{'notedit'}{'desc'} = "contains 'DO NOT EDIT' or 'generated', but I dunno by who.";
   26 $page{'man'}{'desc'} = "seem to be a source file";
   27 
   28 my %used=();    # used macros
   29 my %defined=(); # self defined macros
   30 
   31 foreach my $type (keys %page) {
   32     $page{$type}{'defcount'} = 0;
   33 }
   34 
   35 sub wanted {
   36     my ($dev,$ino,$mode,$nlink,$uid,$gid);
   37 
   38     if ((($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($_)) && -f $_) {
   39 	my $file = $File::Find::dir."/".$_;
   40 	return unless $file =~ m|/usr/share/man/man|; # pass translations
   41 	if ($file =~ /\.gz$/) {
   42 	    open FILE,"zcat $file|" || die "Can't open $file\n";
   43 	} else {
   44 	    open FILE,"<$file" || die "Can't open $file\n";
   45 	}
   46 	
   47 	my $header="";
   48 	while ($_=<FILE>) {
   49 	    last unless /^.."/;#"
   50 #	    chomp;
   51 	    $header .= "    $_";
   52 	}
   53 	$header = "\n$header" if (length $header);
   54 	my $define="";
   55 	while (<FILE>) {
   56 	    if (m/^\.de (.*)$/) {
   57 		my $macro=$1;
   58 		$define .= $macro.",";
   59 		$defined{$macro} =(defined($defined{$macro}) ? $defined{$macro}+1 : 1);
   60 		next;
   61 	    } elsif (m/^\.de/) {
   62 		print "DEF: $_";
   63 	    } elsif (m/^\.([^ ]*)/) {
   64 		my $macro=$1;
   65 		chomp($macro);
   66 		$macro =~ s/\s*$//g;
   67 		$macro =~ s/^\s*//g;
   68 		$macro =~ s/.".*$/|"/;
   69 		next unless (length($macro));
   70 #		unless ($define =~ m/$macro/) { # ignore self defined macro	
   71 		    $used{$macro} = (defined($used{$macro}) ? $used{$macro}+1 : 1);	    
   72 #		}
   73 	    }
   74 	}
   75 	close FILE;
   76 	my $type="man";
   77 	     if ($header =~ /Pod::Man/)                 { $type="pod";
   78 	} elsif ($header =~ /generated by help2man/)    { $type="help2man";
   79 	} elsif ($header =~ /with docbook-to-man/)      { $type="docbook-to-man";
   80 	} elsif ($header =~ /generated by docbook2man/) { $type="docbook2man";
   81 	} elsif ($header =~ /created with latex2man/)   { $type="latex2man";
   82 	} elsif ($header =~ /Generated by db2man.xsl/)  { $type="db2man.xsl";
   83 	} elsif ($header =~ /generated automatically by mtex2man/)  { $type="mtex2man";
   84 	} elsif ($header =~ /THIS FILE HAS BEEN AUTOMATICALLY GENERATED.  DO NOT EDIT./) {
   85 	    $type="auto";
   86 	} elsif ($header =~ /DO NOT EDIT/i || $header =~ /generated/i) {
   87 	    $type="notedit";
   88 	}
   89 	if (length($define)) {
   90 	    $page{$type}{'define'}{$file} = $define;
   91 	    $page{$type}{'defcount'}++; 
   92 	}
   93 	push @{$page{$type}{'files'}},$file;
   94 	push @{$page{$type}{'headers'}},"$file\n$header";
   95     }
   96 }
   97 # Traverse desired filesystems
   98 File::Find::find({wanted => \&wanted}, '/usr/share/man');
   99 
  100 my $total=0;
  101 foreach my $type (sort keys %page) {
  102     $page{$type}{'num'} = scalar @{$page{$type}{'files'}};
  103     $total += $page{$type}{'num'};
  104 }
  105 print "Seen $total pages.\n";
  106 foreach my $type (sort {$page{$a}{'num'} <=> $page{$b}{'num'}} keys %page) {
  107     print "  ".$page{$type}{'num'}." ".$page{$type}{'desc'}.". ".
  108 	$page{$type}{'defcount'}." seem to define new macro.\n";
  109 }
  110 
  111 print "\nHere is a list of the (regular and self defined) macros used:\n";
  112 foreach my $macro (sort {$used{$a} <=> $used{$b}} keys %used) {
  113     print " $macro (used ".$used{$macro}." times)\n";
  114 }
  115 
  116 #print "\nHere is the list of pages seeming to be source page, and defining new macros:\n";
  117 #foreach my $page(sort { $page{'man'}{'define'}{$a} cmp $page{'man'}{'define'}{$b}
  118 #		      } keys %{$page{'man'}{'define'}}) {
  119 #    print $page{'man'}{'define'}{$page}.". in $page\n";
  120 #}