[ttssh2-commit] [10347] 改行変換、BOM削除

Back to archive index
scmno****@osdn***** scmno****@osdn*****
2022年 11月 6日 (日) 15:24:08 JST


Revision: 10347
          https://osdn.net/projects/ttssh2/scm/svn/commits/10347
Author:   zmatsuo
Date:     2022-11-06 15:24:08 +0900 (Sun, 06 Nov 2022)
Log Message:
-----------
改行変換、BOM削除

- CRLF->LF

Modified Paths:
--------------
    trunk/buildtools/svnrev/svnrev.pl

-------------- next part --------------
Modified: trunk/buildtools/svnrev/svnrev.pl
===================================================================
--- trunk/buildtools/svnrev/svnrev.pl	2022-11-05 16:52:27 UTC (rev 10346)
+++ trunk/buildtools/svnrev/svnrev.pl	2022-11-06 06:24:08 UTC (rev 10347)
@@ -1,302 +1,302 @@
-use strict;
-use warnings;
-use utf8;
-use Getopt::Long 'GetOptions';
-use POSIX 'strftime';
-
-binmode STDOUT, ':encoding(utf8)';
-
-my $version = "5.0";
-my $svn = "svn";
-my $git = "git";
-my $out_header = "svnversion.h";
-my $out_bat = "sourcetree_info.bat";
-my $out_cmake = "";
-my $source_root = "..";
-my $date = strftime "%Y%m%d", localtime;
-my $time = strftime "%H%M%S", localtime;
-my $verbose = 0;
-my $script_name = $0;
-my $header = "This file was generated by buildtools/svnrev/svnrev.pl";
-my %svninfo = (
-	name => '',
-	release => 0,
-	Revision => ''
-	);
-
-sub read_toolinfo {
-	my $info = "toolinfo.txt";
-	if (!-f $info) {
-		return;
-	}
-	open(my $FD, "<:utf8:crlf", $info);
-	while (my $l = <$FD>) {
-		chomp $l;
-		$l =~ s/^\x{FEFF}//;	# remove BOM
-		if ($l =~ /^#/) {
-			next;
-		}
-		if ($l =~ /^svn=\s*(.*)$/) {
-			$svn = $1;
-		}
-		if ($l =~ /^git=\s*(.*)$/) {
-			$git = $1;
-		}
-	}
-	close($FD);
-}
-
-sub search_svn {
-	my @test_list = (
-		"C:/Program Files (x86)/Subversion/bin/svn.exe",
-		"C:/Program Files/Subversion/bin/svn.exe",
-		"C:/Program Files/TortoiseSVN/bin/svn.exe",
-		"C:/cygwin64/bin/svn.exe",
-		"C:/cygwin/bin/svn.exe",
-		"/usr/bin/svn.exe"	# msys, cygwin
-		);
-	for (my $i = 0; $i < @test_list; $i++) {
-		my $test = $test_list[$i];
-		if (-e $test) {
-			$svn = $test;
-			return;
-		}
-	}
-}
-
-sub search_git {
-	my @test_list = (
-		"C:/Program Files/Git/bin/git.exe",
-		"C:/cygwin64/bin/git.exe",
-		"C:/cygwin/bin/git.exe",
-		"/usr/bin/git.exe"	# msys, cygwin
-		);
-	for (my $i = 0; $i < @test_list; $i++) {
-		my $test = $test_list[$i];
-		if (-e $test) {
-			$git = $test;
-			return;
-		}
-	}
-}
-
-sub dump_info()
-{
-	my %info = @_;
-
-	print "SVNREVISION $info{'Revision'}\n";
-	print "RELEASE $info{'release'}\n";
-	print "BRANCH_NAME $info{'name'}\n";
-}
-
-sub write_info_header
-{
-	my ($out_header, %svninfo) = @_;
-	my $revision = $svninfo{'Revision'};
-
-	open(my $FD, ">$out_header") || die "error $out_header";
-	print $FD "/* $header */\n";
-	print $FD "/* #define TT_VERSION_STR \"$version\" check teraterm/common/tt-version.h */\n";
-	if ($revision ne '') {
-		print $FD "#define SVNVERSION $revision\n";
-	} else {
-		print $FD "#undef SVNVERSION\n";
-	}
-	if ($svninfo{'release'}) {
-		print $FD "#define TERATERM_RELEASE 1\n";
-	} else {
-		print $FD "#undef TERATERM_RELEASE\n";
-	}
-	print $FD "#define BRANCH_NAME \"$svninfo{'name'}\"\n";
-	close($FD);
-}
-
-sub write_info_bat
-{
-	my ($out_header, %svninfo) = @_;
-	my $revision = $svninfo{'Revision'};
-
-	open(my $FD, ">$out_bat") || die "error $out_bat";
-	print $FD "\@rem $header\n";
-	print $FD "set VERSION=$version\n";
-	if ($revision ne '') {
-		print $FD "set SVNVERSION=$revision\n";
-	} else {
-		print $FD "set SVNVERSION=unknown\n";
-	}
-	print $FD "set RELEASE=$svninfo{'release'}\n";
-	print $FD "set DATE=$date\n";
-	print $FD "set TIME=$time\n";
-	close($FD);
-}
-
-sub write_info_cmake
-{
-	my ($out_header, %svninfo) = @_;
-	my $revision = $svninfo{'Revision'};
-
-	open(my $FD, ">$out_cmake") || die "error $out_cmake";
-	print $FD "# $header\n";
-	print $FD "set(VERSION \"$version\")\n";
-	if ($revision ne '') {
-		print $FD "set(SVNVERSION \"$revision\")\n";
-	} else {
-		print $FD "#set(SVNVERSION \"0000\")\n";
-	}
-	print $FD "set(RELEASE $svninfo{'release'})\n";
-	print $FD "set(DATE \"$date\")\n";
-	print $FD "set(TIME \"$time\")\n";
-	close($FD);
-}
-
-sub read_revision_from_header()
-{
-	my ($out_header) = @_;
-
-	# ヘッダーファイルがない場合
-	if (! -f $out_header) {
-		return '';
-	}
-
-	open FH, '<', $out_header || die "error open $out_header";
-	while (<FH>) {
-		if (/#define SVNVERSION (\d+)/) {
-			close FH;
-			return $1;
-		}
-	}
-	close FH;
-
-	# パターンマッチしない場合
-	return '';
-}
-
-&search_svn();
-&search_git();
-&read_toolinfo();
-
-GetOptions(
-	'root=s' => \$source_root,
-	'svn=s' => \$svn,
-	'git=s' => \$git,
-	'header=s' => \$out_header,
-	'bat=s' => \$out_bat,
-	'cmake=s' => \$out_cmake,
-	'verbose' => \$verbose
-);
-
-$git =~ s/"//g;
-$git =~ s/\\/\//g;
-$svn =~ s/"//g;
-$svn =~ s/\\/\//g;
-
-if ($verbose != 0) {
-	print "root=$source_root\n";
-	print "svn=\"$svn\"\n";
-	print "git=\"$git\"\n";
-	print "header=\"$out_header\"\n";
-	print "bat=\"$out_bat\"\n";
-	print "cmake=\"$out_cmake\"\n";
-}
-
-if (-d "$source_root/.svn" && $svn ne "") {
-	# svn infoを実行、出力をすべて取り込む
-	if (!open(my $FD, "-|", "\"$svn\" info --xml $source_root 2>&1")) {
-		# svn が実行できない
-		print "$script_name: '$svn' can not execute\n";
-	}
-	else {
-		# 出力をすべて取り込む
-		my $text = do { local $/; <$FD> };
-		close($FD);
-
-		# xmlパーサがインストールされていない環境もあるので
-		# パターンマッチで実装
-		if ($text =~ /<commit([^>]+)>/) {
-			my $commit = $1;
-			if ($commit =~ /revision=\"(\d+)\"/) {
-				$svninfo{'Revision'} = $1;
-			}
-		}
-		if ($text =~ /<relative-url>(.+)<\/relative-url>/) {
-			my $url = $1;
-			my $name = $url;
-			$name =~ s/^\^\/(.*)$/$1/; # "\/" を削除する
-			$svninfo{'name'} = $name;
-			my $release = 0;
-			if ($url =~ /tags\/(teraterm-(\d+)_(\d+))/) {
-				# パス名からリリースと判定
-				my $tag = $1;
-				my $version = "$2.$3";
-				$release = 1;
-			}
-			$svninfo{'release'} = $release;
-		}
-	}
-}
-elsif(-d "$source_root/.git" && $git ne "") {
-	my $branch = `\"$git\" rev-parse --abbrev-ref HEAD`;
-	if ($branch eq '') {
-		# git が実行できない
-		print "$script_name: \"$git\" can not execute\n";
-	}
-	else {
-		$branch =~ s/[\r\n]$//g;
-		$svninfo{'name'} = $branch;
-
-		if (-d "$source_root/.git/svn") {
-			# use git svn log
-			my $revision = `\"$git\" svn log --oneline -1`;
-			$revision =~ s/^r(\d+).*$/$1/;
-			$svninfo{'Revision'} = $1;
-		}
-		else {
-			$svninfo{'Revision'} = undef;
-		}
-
-		my $release = 0;
-		if ($branch =~ /tags\/(teraterm-(\d+)_(\d+))/) {
-			# リリースと判定
-			my $tag = $1;
-			my $version = "$2.$3";
-			$release = 1;
-		}
-		$svninfo{'release'} = $release;
-	}
-}
-else {
-	# do not use VCS
-}
-
-if ($verbose != 0) {
-	&dump_info(%svninfo);
-}
-
-# read revision from out header file
-my $header_revision = &read_revision_from_header($out_header);
-if ($verbose != 0) {
-	print "Revision of header is '$header_revision'\n";
-}
-
-# output for source(C,C++) header
-if (! -f $out_header ||
-    $header_revision ne $svninfo{'Revision'}) {
-	if ($verbose != 0) {
-		print "write '$out_header'\n";
-	}
-	write_info_header($out_header, %svninfo);
-}
-
-# output for bat file
-if ($verbose != 0) {
-	print "write '$out_bat'\n";
-}
-write_info_bat($out_bat, %svninfo);
-
-# output for cmake
-if ($out_cmake ne "") {
-	if ($verbose != 0) {
-		print "write '$out_cmake'\n";
-	}
-	write_info_cmake($out_cmake, %svninfo);
-}
+use strict;
+use warnings;
+use utf8;
+use Getopt::Long 'GetOptions';
+use POSIX 'strftime';
+
+binmode STDOUT, ':encoding(utf8)';
+
+my $version = "5.0";
+my $svn = "svn";
+my $git = "git";
+my $out_header = "svnversion.h";
+my $out_bat = "sourcetree_info.bat";
+my $out_cmake = "";
+my $source_root = "..";
+my $date = strftime "%Y%m%d", localtime;
+my $time = strftime "%H%M%S", localtime;
+my $verbose = 0;
+my $script_name = $0;
+my $header = "This file was generated by buildtools/svnrev/svnrev.pl";
+my %svninfo = (
+	name => '',
+	release => 0,
+	Revision => ''
+	);
+
+sub read_toolinfo {
+	my $info = "toolinfo.txt";
+	if (!-f $info) {
+		return;
+	}
+	open(my $FD, "<:utf8:crlf", $info);
+	while (my $l = <$FD>) {
+		chomp $l;
+		$l =~ s/^\x{FEFF}//;	# remove BOM
+		if ($l =~ /^#/) {
+			next;
+		}
+		if ($l =~ /^svn=\s*(.*)$/) {
+			$svn = $1;
+		}
+		if ($l =~ /^git=\s*(.*)$/) {
+			$git = $1;
+		}
+	}
+	close($FD);
+}
+
+sub search_svn {
+	my @test_list = (
+		"C:/Program Files (x86)/Subversion/bin/svn.exe",
+		"C:/Program Files/Subversion/bin/svn.exe",
+		"C:/Program Files/TortoiseSVN/bin/svn.exe",
+		"C:/cygwin64/bin/svn.exe",
+		"C:/cygwin/bin/svn.exe",
+		"/usr/bin/svn.exe"	# msys, cygwin
+		);
+	for (my $i = 0; $i < @test_list; $i++) {
+		my $test = $test_list[$i];
+		if (-e $test) {
+			$svn = $test;
+			return;
+		}
+	}
+}
+
+sub search_git {
+	my @test_list = (
+		"C:/Program Files/Git/bin/git.exe",
+		"C:/cygwin64/bin/git.exe",
+		"C:/cygwin/bin/git.exe",
+		"/usr/bin/git.exe"	# msys, cygwin
+		);
+	for (my $i = 0; $i < @test_list; $i++) {
+		my $test = $test_list[$i];
+		if (-e $test) {
+			$git = $test;
+			return;
+		}
+	}
+}
+
+sub dump_info()
+{
+	my %info = @_;
+
+	print "SVNREVISION $info{'Revision'}\n";
+	print "RELEASE $info{'release'}\n";
+	print "BRANCH_NAME $info{'name'}\n";
+}
+
+sub write_info_header
+{
+	my ($out_header, %svninfo) = @_;
+	my $revision = $svninfo{'Revision'};
+
+	open(my $FD, ">$out_header") || die "error $out_header";
+	print $FD "/* $header */\n";
+	print $FD "/* #define TT_VERSION_STR \"$version\" check teraterm/common/tt-version.h */\n";
+	if ($revision ne '') {
+		print $FD "#define SVNVERSION $revision\n";
+	} else {
+		print $FD "#undef SVNVERSION\n";
+	}
+	if ($svninfo{'release'}) {
+		print $FD "#define TERATERM_RELEASE 1\n";
+	} else {
+		print $FD "#undef TERATERM_RELEASE\n";
+	}
+	print $FD "#define BRANCH_NAME \"$svninfo{'name'}\"\n";
+	close($FD);
+}
+
+sub write_info_bat
+{
+	my ($out_header, %svninfo) = @_;
+	my $revision = $svninfo{'Revision'};
+
+	open(my $FD, ">$out_bat") || die "error $out_bat";
+	print $FD "\@rem $header\n";
+	print $FD "set VERSION=$version\n";
+	if ($revision ne '') {
+		print $FD "set SVNVERSION=$revision\n";
+	} else {
+		print $FD "set SVNVERSION=unknown\n";
+	}
+	print $FD "set RELEASE=$svninfo{'release'}\n";
+	print $FD "set DATE=$date\n";
+	print $FD "set TIME=$time\n";
+	close($FD);
+}
+
+sub write_info_cmake
+{
+	my ($out_header, %svninfo) = @_;
+	my $revision = $svninfo{'Revision'};
+
+	open(my $FD, ">$out_cmake") || die "error $out_cmake";
+	print $FD "# $header\n";
+	print $FD "set(VERSION \"$version\")\n";
+	if ($revision ne '') {
+		print $FD "set(SVNVERSION \"$revision\")\n";
+	} else {
+		print $FD "#set(SVNVERSION \"0000\")\n";
+	}
+	print $FD "set(RELEASE $svninfo{'release'})\n";
+	print $FD "set(DATE \"$date\")\n";
+	print $FD "set(TIME \"$time\")\n";
+	close($FD);
+}
+
+sub read_revision_from_header()
+{
+	my ($out_header) = @_;
+
+	# ヘッダーファイルがない場合
+	if (! -f $out_header) {
+		return '';
+	}
+
+	open FH, '<', $out_header || die "error open $out_header";
+	while (<FH>) {
+		if (/#define SVNVERSION (\d+)/) {
+			close FH;
+			return $1;
+		}
+	}
+	close FH;
+
+	# パターンマッチしない場合
+	return '';
+}
+
+&search_svn();
+&search_git();
+&read_toolinfo();
+
+GetOptions(
+	'root=s' => \$source_root,
+	'svn=s' => \$svn,
+	'git=s' => \$git,
+	'header=s' => \$out_header,
+	'bat=s' => \$out_bat,
+	'cmake=s' => \$out_cmake,
+	'verbose' => \$verbose
+);
+
+$git =~ s/"//g;
+$git =~ s/\\/\//g;
+$svn =~ s/"//g;
+$svn =~ s/\\/\//g;
+
+if ($verbose != 0) {
+	print "root=$source_root\n";
+	print "svn=\"$svn\"\n";
+	print "git=\"$git\"\n";
+	print "header=\"$out_header\"\n";
+	print "bat=\"$out_bat\"\n";
+	print "cmake=\"$out_cmake\"\n";
+}
+
+if (-d "$source_root/.svn" && $svn ne "") {
+	# svn infoを実行、出力をすべて取り込む
+	if (!open(my $FD, "-|", "\"$svn\" info --xml $source_root 2>&1")) {
+		# svn が実行できない
+		print "$script_name: '$svn' can not execute\n";
+	}
+	else {
+		# 出力をすべて取り込む
+		my $text = do { local $/; <$FD> };
+		close($FD);
+
+		# xmlパーサがインストールされていない環境もあるので
+		# パターンマッチで実装
+		if ($text =~ /<commit([^>]+)>/) {
+			my $commit = $1;
+			if ($commit =~ /revision=\"(\d+)\"/) {
+				$svninfo{'Revision'} = $1;
+			}
+		}
+		if ($text =~ /<relative-url>(.+)<\/relative-url>/) {
+			my $url = $1;
+			my $name = $url;
+			$name =~ s/^\^\/(.*)$/$1/; # "\/" を削除する
+			$svninfo{'name'} = $name;
+			my $release = 0;
+			if ($url =~ /tags\/(teraterm-(\d+)_(\d+))/) {
+				# パス名からリリースと判定
+				my $tag = $1;
+				my $version = "$2.$3";
+				$release = 1;
+			}
+			$svninfo{'release'} = $release;
+		}
+	}
+}
+elsif(-d "$source_root/.git" && $git ne "") {
+	my $branch = `\"$git\" rev-parse --abbrev-ref HEAD`;
+	if ($branch eq '') {
+		# git が実行できない
+		print "$script_name: \"$git\" can not execute\n";
+	}
+	else {
+		$branch =~ s/[\r\n]$//g;
+		$svninfo{'name'} = $branch;
+
+		if (-d "$source_root/.git/svn") {
+			# use git svn log
+			my $revision = `\"$git\" svn log --oneline -1`;
+			$revision =~ s/^r(\d+).*$/$1/;
+			$svninfo{'Revision'} = $1;
+		}
+		else {
+			$svninfo{'Revision'} = undef;
+		}
+
+		my $release = 0;
+		if ($branch =~ /tags\/(teraterm-(\d+)_(\d+))/) {
+			# リリースと判定
+			my $tag = $1;
+			my $version = "$2.$3";
+			$release = 1;
+		}
+		$svninfo{'release'} = $release;
+	}
+}
+else {
+	# do not use VCS
+}
+
+if ($verbose != 0) {
+	&dump_info(%svninfo);
+}
+
+# read revision from out header file
+my $header_revision = &read_revision_from_header($out_header);
+if ($verbose != 0) {
+	print "Revision of header is '$header_revision'\n";
+}
+
+# output for source(C,C++) header
+if (! -f $out_header ||
+    $header_revision ne $svninfo{'Revision'}) {
+	if ($verbose != 0) {
+		print "write '$out_header'\n";
+	}
+	write_info_header($out_header, %svninfo);
+}
+
+# output for bat file
+if ($verbose != 0) {
+	print "write '$out_bat'\n";
+}
+write_info_bat($out_bat, %svninfo);
+
+# output for cmake
+if ($out_cmake ne "") {
+	if ($verbose != 0) {
+		print "write '$out_cmake'\n";
+	}
+	write_info_cmake($out_cmake, %svninfo);
+}


ttssh2-commit メーリングリストの案内
Back to archive index