[Ttssh2-commit] [4328] ログファイルを開いたとき、書き込み中の同名ファイルを開ける問題を修正

Back to archive index

svnno****@sourc***** svnno****@sourc*****
2011年 2月 20日 (日) 14:38:34 JST


Revision: 4328
          http://sourceforge.jp/projects/ttssh2/svn/view?view=rev&revision=4328
Author:   maya
Date:     2011-02-20 14:38:34 +0900 (Sun, 20 Feb 2011)

Log Message:
-----------
ログファイルを開いたとき、書き込み中の同名ファイルを開ける問題を修正
  http://sourceforge.jp/ticket/browse.php?group_id=1412&tid=24365

ログファイルを開くのに _lopen と _lcreat を使っていたが、CreateFile を使い dwShareMode で共有モードを渡すようにした。
  書き込み用に開き、読み込みのみ許すようになる。
LogVar->FileHandle が int なのはおそらく Win16 関数を使っているためで、HANDLE にキャストして Win32 API を使っている箇所もある。
  _lopen, _lcreat, _lclose, _llseek, _lread, _lwrite などが使われているが、Win32 API に切り替えるのが望ましい。

Modified Paths:
--------------
    trunk/doc/en/html/about/history.html
    trunk/doc/ja/html/about/history.html
    trunk/teraterm/teraterm/filesys.cpp
    trunk/teraterm/ttpmacro/ttmbuff.c


-------------- next part --------------
Modified: trunk/doc/en/html/about/history.html
===================================================================
--- trunk/doc/en/html/about/history.html	2011-02-20 03:29:43 UTC (rev 4327)
+++ trunk/doc/en/html/about/history.html	2011-02-20 05:38:34 UTC (rev 4328)
@@ -64,6 +64,7 @@
       <!--li>ƒlƒbƒgƒ[ƒN‹¤—L‚ðƒ}ƒbƒv‚µ‚½ƒ[ƒJƒ‹ƒfƒoƒCƒX‚ð<a href="../setup/teraterm-prn.html#direct">PassThruPort</a>‚ÉŽw’肵‚½ê‡Aˆóü‚ª‚Å‚«‚È‚¢–â‘è‚ðC³‚µ‚½B</li-->
       <!-- li>‘Ήž‚µ‚Ä‚¢‚È‚¢ OSC §Œä•¶Žš—ñ‚𐳂µ‚­–³Ž‹o—ˆ‚È‚¢ê‡‚ª‚ ‚Á‚½–â‘è‚ðC³‚µ‚½B</li -->
       <!-- li>DCS, SOS, APC and PM Control string ‚Ì’¼Œã‚Ì•¶Žš‚𐳂µ‚­ˆµ‚¦‚Ä‚¢‚È‚©‚Á‚½–â‘è‚ðC³‚µ‚½B</li -->
+      <!--li>ƒƒOƒtƒ@ƒCƒ‹‚ð‘‚«ž‚Þ‚½‚ß‚ÉŠJ‚­‚Æ‚«A‘¶Ý‚µ‚Ä‚¢‚ď‘‚«ž‚Ý’†‚̃tƒ@ƒCƒ‹‚ðŠJ‚©‚È‚¢‚悤‚É‚µ‚½B</li-->
     </ul>
   </li>
 

Modified: trunk/doc/ja/html/about/history.html
===================================================================
--- trunk/doc/ja/html/about/history.html	2011-02-20 03:29:43 UTC (rev 4327)
+++ trunk/doc/ja/html/about/history.html	2011-02-20 05:38:34 UTC (rev 4328)
@@ -63,6 +63,7 @@
       <li>ƒlƒbƒgƒ[ƒN‹¤—L‚ðƒ}ƒbƒv‚µ‚½ƒ[ƒJƒ‹ƒfƒoƒCƒX‚ð<a href="../setup/teraterm-prn.html#direct">PassThruPort</a>‚ÉŽw’肵‚½ê‡Aˆóü‚ª‚Å‚«‚È‚¢–â‘è‚ðC³‚µ‚½B</li>
       <li>‘Ήž‚µ‚Ä‚¢‚È‚¢ OSC §Œä•¶Žš—ñ‚𐳂µ‚­–³Ž‹o—ˆ‚È‚¢ê‡‚ª‚ ‚Á‚½–â‘è‚ðC³‚µ‚½B</li>
       <li>DCS, SOS, APC, PM §Œä•¶Žš—ñ‚Ì’¼Œã‚Ì•¶Žš‚𐳂µ‚­ˆµ‚¦‚Ä‚¢‚È‚©‚Á‚½–â‘è‚ðC³‚µ‚½B</li>
+      <li>ƒƒOƒtƒ@ƒCƒ‹‚ð‘‚«ž‚Þ‚½‚ß‚ÉŠJ‚­‚Æ‚«A‘¶Ý‚µ‚Ä‚¢‚ď‘‚«ž‚Ý’†‚̃tƒ@ƒCƒ‹‚ðŠJ‚©‚È‚¢‚悤‚É‚µ‚½B</li>
     </ul>
   </li>
 

Modified: trunk/teraterm/teraterm/filesys.cpp
===================================================================
--- trunk/teraterm/teraterm/filesys.cpp	2011-02-20 03:29:43 UTC (rev 4327)
+++ trunk/teraterm/teraterm/filesys.cpp	2011-02-20 05:38:34 UTC (rev 4328)
@@ -479,7 +479,8 @@
 
 	if (ts.Append > 0)
 	{
-		LogVar->FileHandle = _lopen(LogVar->FullName,OF_WRITE);
+		LogVar->FileHandle = (int)CreateFile(LogVar->FullName, GENERIC_WRITE, FILE_SHARE_READ, NULL,
+		                                     OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
 		if (LogVar->FileHandle>0){
 			_llseek(LogVar->FileHandle,0,2);
 			/* 2007.05.24 Gentaro
@@ -488,11 +489,11 @@
 			*/
 			eLineEnd = Line_FileHead;
 		}
-		else
-			LogVar->FileHandle = _lcreat(LogVar->FullName,0);
 	}
-	else
-		LogVar->FileHandle = _lcreat(LogVar->FullName,0);
+	else {
+		LogVar->FileHandle = (int)CreateFile(LogVar->FullName, GENERIC_WRITE, FILE_SHARE_READ, NULL,
+		                                     CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
+	}
 	LogVar->FileOpen = (LogVar->FileHandle>0);
 	if (! LogVar->FileOpen)
 	{

Modified: trunk/teraterm/ttpmacro/ttmbuff.c
===================================================================
--- trunk/teraterm/ttpmacro/ttmbuff.c	2011-02-20 03:29:43 UTC (rev 4327)
+++ trunk/teraterm/ttpmacro/ttmbuff.c	2011-02-20 05:38:34 UTC (rev 4328)
@@ -110,7 +110,7 @@
 		return FALSE;
 	}
 
-	F = _lopen(FileName,0);
+	F = _lopen(FileName,OF_READ);
 	if (F<=0) {
 		return FALSE;
 	}



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