#!C:\Home\Tools\igawk.exe -f
#//
#//	dbase64enc.awk - 「dbase64enc.exe」と似た処理を、Gawkを使用して行うスクリプト
#//
#//	* Sat Jun 23 23:59:59 JST 2018 Naoyuki Sawa
#//	- 1st リリース。
#//	- 動作確認に使用したGawkのバージョンは、以下の通りです。
#//	  □http://www.kt.rim.or.jp/~kbk/gawk-3.1/gawk-mbcs-win32-20091124.zip
#//	  ＞igawk.exe --version
#//	  │igawk: C version 1.1
#//	  │GNU Awk 3.1.7(windows special Nov 24 2009)
#//	  │Copyright (C) 1989, 1991-2009 Free Software Foundation.
#//	- 「dbase64enc.exe」と似た処理を、Gawkを使用して行うスクリプトです。
#//	  「C:/Home/Share/Piece/clip/tool/base64.awk」の使用例でもあります。
#//
#==================================================================================================
@include C:/Home/Share/Piece/clip/tool/base64.awk
#//↑「SET AWKPATH=C:/Home/Share/Piece/clip/tool」を設定していれば「@include base64.awk」で済みますが、現在の所AWKPATHは設定していないのでフルパスで指定する事にしました。
#==================================================================================================
#//「dbase64enc.exe」と似た処理を、Gawkを使って行うスクリプトです。
#//「dbase64enc.exe」は入力全体をまとめて変換しますが、当スクリプトは行単位で変換するという違いは有ります。
BEGIN {
	mode = "e"
	for(i = 1; i < ARGC; i++) {
		if(substr(ARGV[i], 1, 1) != "-") { break }
		switch(substr(ARGV[i], 2)) {
		case "e":	#//-e : encode input file (default)
		case "d":	#//-d : decode input text
			mode = substr(ARGV[i], 2)
			delete ARGV[i]
			break
		default:
			print "dbase64enc.awk - Base64 encode/decode script"
			print "USAGE:"
			print "  igawk.exe              -f C:/Home/Share/Piece/clip/tool/dbase64enc.awk [-e] [  text_files...] > base64_file"
			print "  igawk.exe              -f C:/Home/Share/Piece/clip/tool/dbase64enc.awk  -d  [base64_files...] >   text_file"
			print "  igawk.exe -v BINMODE=1 -f C:/Home/Share/Piece/clip/tool/dbase64enc.awk [-e] [binary_files...] > base64_file"
			print "  igawk.exe -v BINMODE=2 -f C:/Home/Share/Piece/clip/tool/dbase64enc.awk  -d  [base64_files...] > binary_file"
			print "  (※igawk.exeの-fに絶対パスを指定する場合は、パスセパレータに'/'を使う必要が有るようです。'\\'を使うとスクリプトが読み込めませんでした。)"
			print "NOTE:"
			print "  - バイナリファイルの扱いについて、下記の記事を参考にさせて頂きました。"
			print "    「to_dk notebook」(http://tounderlinedk.blogspot.com/)さんの、"
			print "    『BINMODE = バイナリモードで読み書きする（mawk,Gawk専用） - AWK』(http://tounderlinedk.blogspot.com/2010/09/binmode-awk.html)の記事"
			print "    『AWKでバイナリ入力する方法（Gawk専用） - AWK』(http://tounderlinedk.blogspot.com/2010/10/awkgawk-awk.html)の記事"
			print "  - ただし、現在の所、バイナリファイルは上手くエンコード出来ていません。"
			print "    バイナリファイルを扱うには、--ctype=ASCIIや、RS=""の指定も必要です。"
			print "    当スクリプトはあくまでもサンプルであり、深く使う事は無いと思うので、バイナリファイルの対応は不完全なままでも構わないと判断しました。"
			exit 1
		}
	}
}
#//------------------------------------------------------------------------------------------------
{
	switch(mode) {
	case "e": print base64_encode($0); break
	case "d": print base64_decode($0); break
	}
}
#//------------------------------------------------------------------------------------------------
