#include <windows.h>
#include <stdio.h>
#include "kbstr.h"

#pragma comment(linker, "/opt:nowin98")  

int main(int argc, char *argv[])
{//古い kbtim_xxx.kpi があったら新しい kbtim.kpi で置き換える
 //kbtim.kpi をビルドしたときに自動実行される
 //開発用。一般には公開しない
    char szThis[MAX_PATH*2];  //自分自身のファイル名
    char szPath[MAX_PATH*2];  //[kbtim.kpi があるフォルダ(=自分があるフォルダ)]\ //
    char szKbTim[MAX_PATH*2]; //[kbtim.kpi があるフォルダ]\kbtim.kpi 
    char szSearch[MAX_PATH*2];//[kbtim.kpi があるフォルダ]\kbtim_*.ini
    kbStr_Initialize();
    //自分自身のファイル名
    GetModuleFileName(NULL, szThis, sizeof(szThis));
    //[kbtim.kpi があるフォルダ]\ //
    kbExtractFilePath(szPath, szThis, sizeof(szPath));
    //[kbtim.kpi があるフォルダ]\kbtim.kpi
    kbStrLCpy(szKbTim, szPath, sizeof(szKbTim));
    kbStrLCat(szKbTim, "kbtim.kpi", sizeof(szKbTim));
    //[kbtim.kpi があるフォルダ]\*.ini
    kbStrLCpy(szSearch, szPath, sizeof(szSearch));
    kbStrLCat(szSearch, "kbtim_*.ini", sizeof(szSearch));
    //kbtim.kpi を検索
    WIN32_FIND_DATA fd;
    HANDLE hFind;
    hFind = FindFirstFile(szKbTim, &fd);
    if(hFind == INVALID_HANDLE_VALUE){
        fprintf(stderr, "\"kbtim.kpi\" が見つかりません\n");
        return 0;
    }
    FindClose(hFind);
    //kbtim_xxx.ini を検索
    //kbtim_xxx.kpi が削除されてるかもしれないので、ini の方を検索する
    hFind = FindFirstFile(szSearch, &fd);
    if(hFind != INVALID_HANDLE_VALUE){
        do{
            if(strcmp(fd.cFileName, ".") == 0 ||
               strcmp(fd.cFileName, "..") == 0 ||
               (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)){
                continue;
            }
            char szIni[MAX_PATH*2];
            char szKpi[MAX_PATH*2];
            kbStrLCpy(szIni, szPath, sizeof(szIni));
            kbStrLCat(szIni, fd.cFileName, sizeof(szIni));
            kbExtractReplacedFileExt(szKpi, szIni, ".kpi");
            if(kbStrCmpI(szKpi, szKbTim) == 0){//有り得ないが念のため
                continue;
            }
            BOOL bSuccess = ::CopyFile(szKbTim, szKpi, FALSE);
            if(bSuccess){//上書き or 作成成功
                fprintf(stderr, "上書き or 作成成功 \"%s\"\n", szKpi);
            }
            else if(!bSuccess){//上書き失敗
                fprintf(stderr, "上書き失敗 \"%s\"\n", szKpi);
            }
        }while(FindNextFile(hFind, &fd));
        FindClose(hFind);
    }
    return 0;
}
