[4109]
Re3: "を開くと落ちる
すす
URI指定に対応 って大丈夫かな?
--- sakura_org\CCommandLine.cpp Thu Nov 3 20:53:18 2005
+++ sakura_core\CCommandLine.cpp Fri Nov 11 17:35:14 2005
@@ -219,12 +219,46 @@
// ファイル名には使えない文字なのでファイル名に含まれている場合は考慮不要
// またSHIFT-JISの2バイト目の考慮も不要
int len = lstrlen( pszToken + 1 );
+
+ // Nov. 11, 2005 susu
+ // "のみの場合落ちるので修正
+ if ( len == 0 ) {
+ break;
+ }
+
cmWork.SetData( &pszToken[1], len - ( pszToken[len] == '"' ? 1 : 0 ));
cmWork.Replace( "\"\"", "\"" );
strcpy( m_fi.m_szPath, cmWork.GetPtr() ); /* ファイル名 */
}else{
strcpy( m_fi.m_szPath, pszToken ); /* ファイル名 */
}
+
+ // Nov. 11, 2005 susu
+ // 不正なファイル名のままだとファイル保存時ダイアログが出なくなるので
+ // 簡単なファイルチェックを行うように修正
+ if (!memcmp(m_fi.m_szPath, "file:///", 8)) {
+ char tmp_str[_MAX_PATH + 1];
+ strcpy(tmp_str, &(m_fi.m_szPath[8]));
+ strcpy(m_fi.m_szPath, tmp_str);
+ }
+ for (int i = 0; i < strlen(m_fi.m_szPath); i ++) {
+ if ( (m_fi.m_szPath[i] == '<' || // 0x3C
+ m_fi.m_szPath[i] == '>' || // 0x3E
+ m_fi.m_szPath[i] == '?' || // 0x3F
+ m_fi.m_szPath[i] == '"' || // 0x22
+ m_fi.m_szPath[i] == '|' || // 0x7C
+ m_fi.m_szPath[i] == '*' || // 0x2A
+ ( m_fi.m_szPath[i] == ':' && i != 1) // 0x3A
+ ) &&
+ ( i > 0 && ! _IS_SJIS_1( (unsigned char)(m_fi.m_szPath[i - 1] )) )){
+ char msg_str[_MAX_PATH + 1];
+ sprintf( msg_str, "%s\r\n上記のファイル名は不正です。ファイル名に \\ / : * ? \" < > | の文字は使えません。 ", m_fi.m_szPath );
+ MessageBox( NULL, msg_str, "FileNameError", MB_OK);
+ strcpy( m_fi.m_szPath, "" );
+ break;
+ }
+ }
+
}else{
++pszToken; // 先頭の'-'はskip
char *arg;