119 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Perl
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			119 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Perl
		
	
	
		
			Executable File
		
	
	
	
	
| #!/usr/bin/perl -w
 | |
| 
 | |
| #  GNOME entry finder utility.
 | |
| #  (C) 2000 The Free Software Foundation
 | |
| # 
 | |
| #  Author(s): Kenneth Christiansen
 | |
| 
 | |
| 
 | |
| $VERSION = "1.0.0 beta 5";
 | |
| $LANG    = $ARGV[0];
 | |
| $OPTION2 = $ARGV[1];
 | |
| $SEARCH  = "Name";
 | |
| 
 | |
| if (! $LANG){
 | |
|     print "desk.pl:  missing file arguments\n";
 | |
|     print "Try `desk.pl --help' for more information.\n";
 | |
|     exit;
 | |
| }
 | |
| 
 | |
| if ($OPTION2){
 | |
|     $SEARCH=$OPTION2;
 | |
| }
 | |
| 
 | |
| if ($LANG){
 | |
| 
 | |
| if ($LANG=~/^-(.)*/){
 | |
| 
 | |
|     if ("$LANG" eq "--version" || "$LANG" eq "-V"){
 | |
|         print "GNOME Entry finder $VERSION\n";
 | |
| 	print "Written by Kenneth Christiansen <kenneth\@gnome.org>, 2000.\n\n";
 | |
| 	print "Copyright (C) 2000 Free Software Foundation, Inc.\n";
 | |
| 	print "This is free software; see the source for copying conditions.  There is NO\n";
 | |
| 	print "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n";
 | |
|         exit;
 | |
|     }
 | |
| 
 | |
|     elsif ($LANG eq "--help" || "$LANG" eq "-H"){
 | |
| 	print "Usage: ./desk.pl [OPTIONS] ...LANGCODE ENTRY\n";
 | |
| 	print "Checks .desktop and alike files for missing translations.\n\n";
 | |
| 	print "  -V, --version                shows the version\n";
 | |
| 	print "  -H, --help                   shows this help page\n";
 | |
| 	print "\nReport bugs to <kenneth\@gnome.org>.\n";
 | |
|         exit;
 | |
|     }
 | |
| 
 | |
|     else{
 | |
|     	print "desk.pl: invalid option -- $LANG\n";
 | |
|     	print "Try `desk.pl --help' for more information.\n";
 | |
|         exit;
 | |
|     }
 | |
| }
 | |
| 
 | |
| else{
 | |
| 
 | |
|     $a="find ../ -print | egrep '.*\\.(desktop|soundlist"
 | |
|       ."|directory)' ";
 | |
| 
 | |
|     $b="find ../ -print | egrep '.*\\.(desktop|soundlist"
 | |
|       ."|directory)' "; 
 | |
| 
 | |
|     print "Searching for missing $SEARCH\[$LANG\] entries...\n";
 | |
| 
 | |
|     open(BUF1, "$a|");
 | |
|     open(BUF2, "$b|");
 | |
| 
 | |
|     @buf1 = <BUF1>;
 | |
|     foreach my $file (@buf1){ 
 | |
|         open FILE, "<$file";
 | |
|         while (<FILE>) {
 | |
|            if ($_=~/$SEARCH\[$LANG\]\=/o){ 
 | |
|                 $file = unpack("x2 A*",$file) . "\n";		
 | |
|                 push @buff1, $file;
 | |
|                 last;
 | |
|            }
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     @buf2 = <BUF2>;
 | |
|     foreach my $file (@buf2){
 | |
|         open FILE, "<$file";
 | |
|         while (<FILE>) {
 | |
|            if ($_=~/$SEARCH\=/o){
 | |
|                 $file = unpack("x2 A*",$file) . "\n";
 | |
|                 push @buff2, $file;
 | |
|                 last;
 | |
|            }
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     @bufff1 = sort (@buff1);
 | |
|     @bufff2 = sort (@buff2);
 | |
| 
 | |
|     my %in2;
 | |
|     foreach (@bufff1) {
 | |
|         $in2{$_} = 1;
 | |
|     }
 | |
|  
 | |
|    foreach (@bufff2){
 | |
|         if (!exists($in2{$_})){
 | |
|             push @result, $_ } 
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     open(OUT1, ">MISSING.$LANG.$SEARCH");
 | |
|        print OUT1 @result ;
 | |
|     close OUT1;
 | |
| 
 | |
| 
 | |
|     stat("MISSING.$LANG.$SEARCH");
 | |
|         print "\nWell, you need to fix these:\n\n" if -s _;
 | |
|         print @result if -s _;
 | |
|         print "\nThe list is saved in MISSING.$LANG.$SEARCH\n" if -s _;
 | |
|         print "\nWell, it's all perfect! Congratulation!\n" if -z _;
 | |
|         unlink "MISSING.$LANG.$SEARCH" if -z _;
 | |
|     exit;	
 | |
| }
 | |
| 
 | |
| 
 | 
