rcsを使う(その3)

アニメ『かりん』(2005)

吸血鬼アニメってたくさんありますね。2005年ぐらいになると公式のPV動画が出てきません。本編そのものはたくさん見つかるのに。
このアニメに出てくる吸血鬼は、血と一緒に、ストレスや不幸を吸い取ってくれます。なんて良心的なんでしょうか。で、主人公の果林は、もちろん血を吸いはしますが、血を増やす性質を持ってます。増血鬼らしい。正直この増血鬼の設定がよく分かりません。まだ数話しか見ていないので、この設定なくてもいいんじゃないかと思えるのですが、後々ストーリーに効いてくるんでしょうか。献血とか。たぶん、誰も不幸にならないと思うアニメなので、一気に見てしまうと思います。

今回はrcsを理解するため、管理ファイル(,v)のフォーマット解析スクリプトを書き始めようかと思います。

現在のカレントディレクトリは、チェックインした後なので、管理ファイルだけです。

takk@deb9:~/tmp$ find
.
./RCS
./RCS/test.c,v
takk@deb9:~/tmp$ 

現在の管理ファイルの全内容です。

takk@deb9:~/tmp$ cat RCS/test.c,v  | cat -n
     1	head	1.3;
     2	access;
     3	symbols;
     4	locks; strict;
     5	comment	@ * @;
     6	
     7	
     8	1.3
     9	date	2018.09.13.11.00.44;	author takk;	state Exp;
    10	branches;
    11	next	1.2;
    12	
    13	1.2
    14	date	2018.09.12.11.58.02;	author takk;	state Exp;
    15	branches;
    16	next	1.1;
    17	
    18	1.1
    19	date	2018.09.12.11.49.34;	author takk;	state Exp;
    20	branches;
    21	next	;
    22	
    23	
    24	desc
    25	@TEST
    26	@
    27	
    28	
    29	1.3
    30	log
    31	@TEST
    32	@
    33	text
    34	@#include <stdio.h>
    35	int main()
    36	{
    37		printf("HELLO1\n");
    38		printf("HELLO2\n");
    39		printf("HELLO3\n");
    40		return 0;
    41	}
    42	@
    43	
    44	
    45	1.2
    46	log
    47	@2nd Check in
    48	@
    49	text
    50	@d4 3
    51	a6 1
    52		printf("HELLO\n");
    53	@
    54	
    55	
    56	1.1
    57	log
    58	@Initial revision
    59	@
    60	text
    61	@d1 1
    62	d4 1
    63	@
takk@deb9:~/tmp$ 

さて、解析スクリプトを書いてみましょう。

takk@deb9:~/tmp$ cat -n my-rcs.pl
     1	open(IN,"<RCS/$ARGV[0],v");
     2	while(<IN>){
     3		chomp;
     4		if(/^head\t(\d+\.\d+);/){
     5			$head = $1;
     6			next;
     7		}
     8		if(/^(\d+\.\d+)$/){
     9			$rev = $1;
    10			next;
    11		}
    12		if(/^(date\t\d\d\d\d\..*)$/){
    13			$date = $1;
    14			if($rev eq $head){
    15				print "$date\n";
    16			}
    17		}
    18	
    19	}
    20	close(IN);
takk@deb9:~/tmp$ 

headのレビジョンと同一レビジョンのdateを表示するスクリプトです。

実行してみます。

takk@deb9:~/tmp$ perl my-rcs.pl test.c
date	2018.09.13.11.00.44;	author takk;	state Exp;
takk@deb9:~/tmp$ 

次回から少しずつスクリプトにコードを増やしていきます。

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA