Frost Moon Project

Src/sslib/TempFile.cpp -MagicPNG Ver.1.00- - Frost Moon Project   アクセスランキング  

Home > ソフトウェア > MagicPNG > MagicPNG100.zip > Src > sslib > TempFile.cpp

 
//TempFile.cpp
//一時ファイル

#include"../StdAfx.h"
#include"sslib.h"
#include<ctype.h>


namespace sslib{
namespace tempfile{

#ifndef DISABLE_FILEO_PERATION

//一意の名前を持つディレクトリ名を取得
tstring generateDirName(const TCHAR* prefix,const TCHAR* base_dir){
    std::vector<TCHAR> temp_dir(MAX_PATHW);

    if(base_dir!=NULL){
        if(!path::fileExists(base_dir)){
            if(!fileoperation::createDirectory(base_dir))return _T("");
        }
    }

    ::GetTempFileName(path::getTempDirPath().c_str(),prefix,0,&temp_dir[0]);
    ::DeleteFile(&temp_dir[0]);

    return (base_dir!=NULL)?path::addTailSlash(base_dir)+=path::getFileName(&temp_dir[0]):&temp_dir[0];
}

//一意の名前を持つディレクトリを作成
tstring createDir(const TCHAR* prefix,const TCHAR* base_dir){
    tstring dir_name(generateDirName(prefix,base_dir));

    return (!dir_name.empty()&&fileoperation::createDirectory(dir_name.c_str()))?dir_name:_T("");
}

//一意の名前を持つファイル名を取得
tstring generateName(const TCHAR* prefix,const TCHAR* base_dir){
    tstring file_name(create(prefix,base_dir));

    if(!file_name.empty()){
        ::DeleteFile(file_name.c_str());
    }
    return file_name;
}

//一意の名前を持つファイルを作成
tstring create(const TCHAR* prefix,const TCHAR* base_dir){
    std::vector<TCHAR> temp_dir(MAX_PATH);

    if(base_dir!=NULL){
        lstrcpyn(&temp_dir[0],base_dir,temp_dir.size());
        if(!path::fileExists(base_dir)){
            if(!fileoperation::createDirectory(base_dir))return _T("");
        }
    }else{
        lstrcpyn(&temp_dir[0],path::getTempDirPath().c_str(),temp_dir.size());
    }

    return (::GetTempFileName(&temp_dir[0],prefix,0,&temp_dir[0])!=0)?&temp_dir[0]:_T("");
}

#endif

//namespace tempfile
}
//namespace sslib
}


Home > ソフトウェア > MagicPNG > MagicPNG100.zip > Src > sslib > TempFile.cpp