From owner-man-jp@jp.freebsd.org  Mon Jun  7 02:28:31 1999
Received: (from daemon@localhost)
	by castle.jp.freebsd.org (8.9.3+3.2W/8.7.3) id CAA88893;
	Mon, 7 Jun 1999 02:28:31 +0900 (JST)
	(envelope-from owner-man-jp@jp.FreeBSD.org)
Received: from mail.yk.rim.or.jp (root@mail.yk.rim.or.jp [202.247.130.37])
	by castle.jp.freebsd.org (8.9.3+3.2W/8.7.3) with ESMTP id CAA88888
	for <man-jp@jp.freebsd.org>; Mon, 7 Jun 1999 02:28:31 +0900 (JST)
	(envelope-from k-horik@yk.rim.or.jp)
Received: from localhost (ppp893.yk.rim.or.jp [202.247.185.144])
	by mail.yk.rim.or.jp (8.8.8/3.6W-RIMNET-98-06-09) with ESMTP id CAA04510
	for <man-jp@jp.freebsd.org>; Mon, 7 Jun 1999 02:28:29 +0900 (JST)
To: man-jp@jp.freebsd.org
X-Mailer: Mew version 1.93 on Emacs 19.34 / Mule 2.3 (SUETSUMUHANA)
Mime-Version: 1.0
Content-Type: Multipart/Mixed;
	boundary="--Next_Part(Sun_Jun__6_22:40:17_1999_41)--"
Content-Transfer-Encoding: 7bit
Message-Id: <19990607022734F.k-horik@yk.rim.or.jp>
Date: Mon, 07 Jun 1999 02:27:34 +0900
From: Kazuo Horikawa <k-horik@yk.rim.or.jp>
X-Dispatcher: imput version 980905(IM100)
Lines: 180
Reply-To: man-jp@jp.freebsd.org
Precedence: list
X-Distribute: distribute version 2.1 (Alpha) patchlevel 24e+990526
X-Sequence: man-jp 1564
Subject: [man-jp 1564] (demi) syncstat.pl
Errors-To: owner-man-jp@jp.freebsd.org
Sender: owner-man-jp@jp.freebsd.org
X-Originator: k-horik@yk.rim.or.jp

----Next_Part(Sun_Jun__6_22:40:17_1999_41)--
Content-Type: Text/Plain; charset=iso-2022-jp
Content-Transfer-Encoding: 7bit

 $BKY@n$G$9!#(B

 doc-jp $B$N(B syncstat $B$K?(H/$5$l$F!"86J8$HLuJ8$N%j%S%8%g%s$rI=<($9$k$?$a(B
$B$N(B perl script $B$r;n:n$7$F$_$^$7$?!#(B

 $B:#$N$H$3$m!"(B
$ ./syncstat.pl
filename = doc/ja/man/man1/sh.1 trans = 1.23.2.2 orig = 1.23.2.2
filename = doc/ja/man/man8/boot_i386.8 trans = 1.16 orig = 1.16.2.2
filename = doc/ja/man/man8/dumpon.8 trans = 1.9 orig = 1.9.2.1
filename = doc/ja/man/man8/loader.8 trans = 1.1.2.3 orig = 1.1.2.4
filename = doc/ja/man/man8/loader.4th.8 trans = 1.1.2.2 orig = 1.1.2.3
filename = doc/ja/man/man8/lptcontrol.8 trans = 1.7.2.1 orig = 1.7.2.2
filename = doc/ja/man/man8/mount_cd9660.8 trans = 1.6.2.1 orig = 1.6.2.2
filename = doc/ja/man/man8/natd.8 trans = 1.16.2.2 orig = 1.16.2.3
filename = doc/ja/man/man8/ppp.8 trans = 1.142.2.6 orig = 1.142.2.6
filename = doc/ja/man/man8/vinum.8 trans = 1.5.2.5 orig = 1.5.2.5
$B$J46$8$N=PNO$7$+$G$-$F$^$;$s!#(B

[$BI,MW$J$b$N(B]
 o $BF|K\8l%^%K%e%"%k(B (doc/ja/man $B0J2<(B)
   syncstat.pl $B$N(B $transroot $B$K(B doc/ $B$,$"$k%G%#%l%/%H%jL>$r=q$$$F$/$@$5$$!#(B
 o $B%=!<%9$N(B CVS $B%j%]%8%H%j(B (src $B0J2<(B)
   syncstat.pl $B$N(B $cvsroot $B$K(B src/ $B$,$"$k%G%#%l%/%H%jL>$r=q$$$F$/$@$5$$!#(B
 o syncstat.pl ($B$3$N%a!<%k$KE:IU(B)
 o list.txt ($B$3$N%a!<%k$KE:IU$7$?$b$N$J$I(B)
   $B8!::%U%!%$%k0lMw(B

[$B<B9TJ}K!(B]
$ ./syncstat.pl 

[$B$=$NB>(B]
 o $B8!::%U%!%$%k0lMw(B (list.txt) $B$D$/$k$N$,<j4V$J$N$G(B (src $B$+$i86J8$rC5(B
   $B$9$N$,$A$g$C$HLLE](B)$B!"=q$$$F$b$i$($k$H$&$l$7$$!#(B
 o $B%G%P%C%0(B/$B2~NI$7$F$/$l$k$H$&$l$7$$$+$b!#(B



----Next_Part(Sun_Jun__6_22:40:17_1999_41)--
Content-Type: Text/Plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Description: syncstat.pl
Content-Disposition: attachment; filename=syncstat.pl

#!/usr/bin/perl

$filelist = "list.txt";
$cvsroot = "/pub/cvsup/FreeBSD.cvs/";
$transroot = "/usr/home/horikawa/CVS/";
$releng = "RELENG_3";
$rev_pattern = "\[\\d\\\.\]\+\\d\+";
$branch_pattern = "\[\\d\\\.\]\+\\\.0\\\.\\d\+";
$debug = 0;

# Get original's revision number from translated files
# We will see `%Id: xx.xx' and `Original Revision: xx.xx'.
# We do not see `jpman %Id: xx.xx'.
sub rev_of_trans{
    local($filename) = @_;
    local($revision) = "";

    printf("filename = %s\n", $filename) if $debug;

    open(IN, $transroot.$filename) || die "cannot open $filename.\n";
    while($_ = <IN>){
	if(/jpman\s\%Id:\s\S+,v\s($rev_pattern)/){
	    # Ignore "jpman Id: xx.xx"
	    print "Ignore jpman\n" if $debug;
	    next;
	} elsif(/[Oo]riginal\s[Rr]evision:\s($rev_pattern)/){
	    # Accept "Original Revision: xx.xx"
	    $revision = $1;
	    print "Original revision tag\n" if $debug;
	    last;
	} elsif(/%Id:\s\S+,v\s($rev_pattern)/){
	    # Accept "Id: xx.xx"
	    print "Id: tag\n" if $debug;
	    $revision = $1;
	    last;
	}
    }
    close(IN);
    return $revision;
}

# Get revision number of original files
sub rev_of_orig{
    local($filename) = @_;
    local($branch_number) ="";
    local($revision) = "";

    printf("filename = %s\n", $filename) if $debug;

    open(IN, $cvsroot.$filename.",v") || die "cannot open $filename.\n";
    # First, find symbols line and convert $releng to branch number.
  FIND_BRANCH_LOOP: while($_ = <IN>){
	if(/symbols\s.*$releng:($rev_pattern)/){
	    printf("%s is %s\n", $releng, $1) if $debug;
	    $branch_number = $1;
	    last;
	}
	elsif(/symbols/){
	    while($_ = <IN>){
		if(/$releng:($rev_pattern)/){
		    $branch_number = $1;
		    printf("branch = %s\n", $branch_number) if $debug;
		    last FIND_BRANCH_LOOP;
		} elsif(/^\@\@$/) {
		    last FIND_BRANCH_LOOP;
		}
	    }
	}
    }
    $branch_number || die "Cannot find branch number for $filename\n";

    # "a.b.0.c" will be converted to "a.b.c"
    $branch_number =~ s/\.0\./\./;

    # Next, find exact revision number.
    while($_ = <IN>){
	if(/^($branch_number\.\d+)/){
	    $revision = $1;
	} elsif(/^\@\@$/){
	    last;
	}
    }
    close(IN);

    if ($revision) {
	# return "a.b.c.x"
	print "return $revision\n" if $debug;
	return $revision;
    } else {
	# return "a.b"
	$revision = $branch_number;
	$revision =~ s/\.\d+$//;
	print "return $revision\n" if $debug;
	return $revision;
    }
}
    
open (LIST, $filelist) || die "cannot open $filelist.\n";
while($_ = <LIST>){
    if(/(\S+)\s+(\S+)/){
	$transfilename = $1;
	$origfilename = $2;
    } else {
	die "filelist format is wrong.\n";
    }

    $trans_ver = &rev_of_trans($transfilename);
    $orig_ver = &rev_of_orig($origfilename);
    printf("filename = %s trans = %s orig = %s\n",
	$transfilename, $trans_ver, $orig_ver);
}
close (LIST);


----Next_Part(Sun_Jun__6_22:40:17_1999_41)--
Content-Type: Text/Plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Description: list.txt
Content-Disposition: attachment; filename=list.txt

doc/ja/man/man1/sh.1		src/bin/sh/sh.1
doc/ja/man/man8/boot_i386.8	src/sbin/reboot/boot_i386.8
doc/ja/man/man8/dumpon.8	src/sbin/dumpon/dumpon.8
doc/ja/man/man8/loader.8	src/sys/boot/i386/loader/loader.8
doc/ja/man/man8/loader.4th.8	src/sys/boot/forth/loader.4th.8
doc/ja/man/man8/lptcontrol.8	src/usr.sbin/lptcontrol/lptcontrol.8
doc/ja/man/man8/mount_cd9660.8	src/sbin/mount_cd9660/mount_cd9660.8
doc/ja/man/man8/natd.8		src/sbin/natd/natd.8
doc/ja/man/man8/ppp.8		src/usr.sbin/ppp/ppp.8
doc/ja/man/man8/vinum.8		src/sbin/vinum/vinum.8

----Next_Part(Sun_Jun__6_22:40:17_1999_41)----
