diff -urN gns-2.20.org/config.awk gns-2.20/config.awk --- gns-2.20.org/config.awk Sat Aug 26 01:28:22 2000 +++ gns-2.20/config.awk Thu Apr 12 23:13:56 2001 @@ -63,6 +63,7 @@ PERLCMD = "perl"; NKFCMD = "nkf"; NKFCODE = "-j"; + NKFINNERCODE = "-s"; # hachi add. MAILCMD = "mail"; CHMODCMD = "chmod go+w"; diff -urN gns-2.20.org/mkd.awk gns-2.20/mkd.awk --- gns-2.20.org/mkd.awk Tue Nov 7 15:08:24 2000 +++ gns-2.20/mkd.awk Thu Apr 12 23:05:38 2001 @@ -4,6 +4,8 @@ #### mailto: gorry@hauN.org #### #### History: +#### 2001/04/12 V2.20j hachi patch add. JISコードのマスタファイル対応 +#### #### 2000/11/07 V2.20 パラメータ置換データベース設置。 #### 2000/09/25 V2.12 @closeが正しく処理されないバグを修正。 #### 2000/08/25 V2.10 @s1・@s2を追加。 @@ -158,10 +160,29 @@ } ######################################################################## +### ファイル存在チェック +## hachi add. #2.20j +# +function is_existfile(f ,ret) { + ret=(getline < f) + close(f) + return (ret>=0) +} + +######################################################################## +### 入力ファイルを文字コード変換、テンポラリファイルへ出力 +## hachi add. #2.20j +# +function nkf_inner_convert(fin,fout ,cmd) { + cmd = NKFCMD " " NKFINNERCODE " " fin "> " fout; + system(cmd); +} + +######################################################################## ### 1日分のマスタファイルを得る ## 同時に段落タグ置換作業を行なう # -function GetDiary( year, month, date, wday, part , line, sectionmode, nsection, fin, sections ) +function GetDiary( year, month, date, wday, part , line, sectionmode, nsection, fin, sections, cmd, dtmp ) { PARAM_WEATHER = ""; PARAM_TOPIC = ""; @@ -175,7 +196,17 @@ sections="abcdefghijklmnopqrstuvwxyz"; # print fin; - while ( (getline line 0 ) { + # hachi add. #2.20j + # 一度文字コードを変更したものを + # テンポラリファイルに出力してそちらからマスタファイルを読む + if ( !is_existfile(fin) ) { + CloseSection( sectionmode ); + return; + } + dtmp = TMPDIR SLASH "%tmp999.out"; + nkf_inner_convert(fin,dtmp); + + while ( (getline line 0 ) { sub( "\r", "", line ); if ( length(line) <= 0 ) { if ( sectionmode == 1 ) { @@ -264,22 +295,28 @@ DIARYLINE[DIARYLINES++] = line; } CloseSection( sectionmode ); - close( fin ); + close( dtmp ); } ######################################################################## ### 表示アイテムの初期化 # -function Setup_ITEMS( fin, line, i ) +function Setup_ITEMS( fin, line, i, dtmp ) { if ( WDAYS[0] == "" ) { fin = KEEPDIR SLASH ITEMNAME; i = 0; - while ( (getline line 0 ) { + # hachi add. #2.20j + # 一度文字コードを変更したものを + # テンポラリファイルに出力してそちらからマスタファイルを読む + dtmp = TMPDIR SLASH "%tmp999.out"; + nkf_inner_convert(fin,dtmp); + + while ( (getline line 0 ) { gsub( "\r", "", line ); WDAYS[i++] = line; } - close( fin ); + close( dtmp ); TITLEMARK = WDAYS[7]; SENTENSEMARK = WDAYS[8]; FOOTNOTEMARK = WDAYS[9]; @@ -301,11 +338,21 @@ ######################################################################## ### パラメータ置換データベースの初期化 # -function MakeParamReplaceDatabase( fin, s1, s2 ) +function MakeParamReplaceDatabase( fin, s1, s2, dtmp ) { FS = "[ \t]+"; NPARAMREPLACE = 0; - while ( ( getline 0 ) { + + # hachi add. #2.20j + # 一度文字コードを変更したものを + # テンポラリファイルに出力してそちらからマスタファイルを読む + if ( !is_existfile(fin) ) { + return; + } + dtmp = TMPDIR SLASH "%tmp999.out"; + nkf_inner_convert(fin,dtmp); + + while ( ( getline 0 ) { if ( match( $1, "^#" ) ) { continue; } @@ -320,17 +367,27 @@ gsub( "\r", "", PARAMREPLACE_Obj[ s1 ] ); NPARAMREPLACE++; } - close( fin ); + close( dtmp ); } ######################################################################## ### URL置換データベースの初期化 # -function MakeReplaceDatabase( fin ) +function MakeReplaceDatabase( fin ,dtmp) { FS = "[ \t]+"; NREPLACE = 0; - while ( ( getline 0 ) { + + # hachi add. #2.20j + # 一度文字コードを変更したものを + # テンポラリファイルに出力してそちらからマスタファイルを読む + if ( !is_existfile(fin) ) { + return; + } + dtmp = TMPDIR SLASH "%tmp999.out"; + nkf_inner_convert(fin,dtmp); + + while ( ( getline 0 ) { if ( match( $1, "^#" ) ) { continue; } @@ -343,7 +400,7 @@ gsub( "\r", "", REPLACE_Obj[ $1 ] ); NREPLACE++; } - close( fin ); + close( dtmp ); } ######################################################################## @@ -479,13 +536,23 @@ ######################################################################## ### ファイル内容を置換しながらcat # -function CatFile( fout, fin, year, month, part , line ) +function CatFile( fout, fin, year, month, part , line, dtmp ) { - while ( ( getline line 0 ) { + # hachi add. #2.20j + # 一度文字コードを変更したものを + # テンポラリファイルに出力してそちらからマスタファイルを読む + if ( !is_existfile(fin) ) { + CloseSection( sectionmode ); + return; + } + dtmp = TMPDIR SLASH "%tmp999.out"; + nkf_inner_convert(fin,dtmp); + + while ( ( getline line 0 ) { sub( "\r", "", line ); print Replace( line, year, month, part, 0 )>fout; } - close( fin ); + close( dtmp ); } ########################################################################