mirror of
https://github.com/rvtr/ctr_Repair.git
synced 2025-10-31 13:51:08 -04:00
48 lines
1.0 KiB
C++
48 lines
1.0 KiB
C++
//共通関数
|
|
|
|
#include "savefile.h"
|
|
|
|
//終端から前方検索で見つかった境界("/"=0x2f)位置を返す
|
|
//top :検索範囲の先頭指定
|
|
int GetPosDelmLast(wchar_t *s,int top)
|
|
{
|
|
size_t i = wcslen(s);
|
|
if (i < top)return -1;
|
|
if (i ==top)return 0;
|
|
i--;
|
|
while(i > top-1){
|
|
if (s[i]==L'/')return i;
|
|
i--;
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
|
|
//パス名チェック for SD
|
|
//APIで引数エラー(INVALID_ARGUMENT)にならないものをチェック
|
|
bool CheckPath(wchar_t *s)
|
|
{
|
|
int i;
|
|
size_t n = wcslen(s);
|
|
|
|
if (n > 253)return false;
|
|
if (n>251)
|
|
{//オープン時のディレクトリ名は251まで
|
|
if ((s[252]==L'/') || (s[253]==L'/'))return false;
|
|
}
|
|
|
|
for (i =1;i< n-1;i++)
|
|
{
|
|
if (s[i]==L'/')
|
|
{
|
|
//前後の半角スペース: "/ a"、"/a /" -> SD作成時 "/a" に変化
|
|
if ((s[i-1] == ' ')||(s[i+1] == ' '))return false;
|
|
if ((s[i-1] == 0x5c) ||(s[i+1] == 0x5c))return false;
|
|
}
|
|
}
|
|
if (s[i] == ' ')return false;//最後尾
|
|
return true;
|
|
|
|
}
|
|
|