ctr_Repair/trunk/CardSaveData/common/savefile/savefile.cpp

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;
}