Main Page | Alphabetical List | Class List | File List | Class Members | File Members | Related Pages

dkcSJISFileSystem.h File Reference

ShiftJISを考慮したファイルシステム. More...

#include "dkcOSIndependent.h"
#include "dkcMemoryStream.h"
#include "dkcString.h"
#include "dkcStack.h"
#include "dirent.h"
#include "unistd.h"
#include "fcntl.h"
#include "utime.h"

Include dependency graph for dkcSJISFileSystem.h:

Include dependency graph

This graph shows which files directly or indirectly include this file:

Included by dependency graph

Go to the source code of this file.

Classes

struct  dkc_PathString
struct  dkc_FileFinder
struct  dkc_FindFile

Typedefs

typedef dkc_PathString DKC_PATHSTRING
typedef dkc_FileFinder DKC_FILE_FINDER
typedef dkc_FindFile DKC_FINDFILE

Enumerations

enum  edkcFileFinder { edkcFileFinderEmpty = 0, edkcFileFinderSearching, edkcFileFinderFinish }

Functions

DKC_EXTERN BOOL WINAPI dkcIsEffectivePath (const char *path, size_t size)
DKC_EXTERN BOOL WINAPI dkcIsRelativityPath (const char *path)
DKC_EXTERN BOOL WINAPI dkcIsAbsolutelyPath (const char *path)
DKC_EXTERN int WINAPI dkcCurrentDirectoryConcatenate (char *dest, size_t dsize, const char *src)
DKC_EXTERN int WINAPI dkcDirectoryConcatenate (char *dest, size_t dlen, size_t dsize, const char *src)
DKC_EXTERN BOOL WINAPI dkcIsTailPathSep (const char *src, size_t dlen)
 srcの一番後ろににがついていたらTRUE

DKC_EXTERN BOOL WINAPI dkcPushBackPathSep (char *dest, size_t dlen, size_t size)
 path separatorを挿入する必要があり、挿入出来たらTRUE

DKC_EXTERN int WINAPI dkcToAbsolutelyPath (char *dest, size_t dsize, const char *src, size_t ssize)
 パスを正規化(相対パスから絶対パス)する関数

DKC_EXTERN DKC_PATHSTRING
*WINAPI 
dkcAllocPathString (const char *path)
DKC_EXTERN int WINAPI dkcFreePathString (DKC_PATHSTRING **)
DKC_EXTERN size_t WINAPI dkcPathStringSize (const DKC_PATHSTRING *)
DKC_EXTERN const char *WINAPI dkcPathStringPointer (const DKC_PATHSTRING *)
DKC_EXTERN int WINAPI dkcPathStringDevideBegin (DKC_PATHSTRING *, char *buff, size_t size)
DKC_EXTERN int WINAPI dkcPathStringDevideNext (DKC_PATHSTRING *, char *buff, size_t size)
DKC_EXTERN void WINAPI dkcPathStringDevideEnd (DKC_PATHSTRING *)
DKC_EXTERN int WINAPI dkcPathStringCopy (DKC_PATHSTRING *, const char *buff, size_t size)
 パスを正規化して入れる。

DKC_EXTERN int WINAPI dkcPathStringConcatenate (DKC_PATHSTRING *, const char *buff, size_t size)
 パスを正規化して繋げる。

DKC_EXTERN int WINAPI dkcPathStringGetDrive (DKC_PATHSTRING *, char *buff, size_t size)
DKC_EXTERN int WINAPI dkcPathStringGetFileExtension (DKC_PATHSTRING *, char *buff, size_t size)
DKC_EXTERN int WINAPI dkcPathStringGetFileName (DKC_PATHSTRING *, char *buff, size_t size)
DKC_EXTERN int WINAPI dkcPathStringGetDirectory (DKC_PATHSTRING *, char *buff, size_t size)
DKC_EXTERN int WINAPI dkcPathStringDevideBegin_Logic (DKC_PATHSTRING *, size_t *count, char *buff, size_t size)
 dkcPathStringDevideBegin()

DKC_EXTERN int WINAPI dkcPathStringDevideNext_Logic (DKC_PATHSTRING *, size_t *count, char *buff, size_t size)
 dkcPathStringDevideNext()

DKC_EXTERN void WINAPI dkcPathStringDevideEnd_Logic (size_t *count)
 dkcPathStringDevideEnd()

DKC_EXTERN int WINAPI dkcPathStringElementInsert_Logic (DKC_PATHSTRING *, size_t count, const char *src, size_t len)
 パスの要素を挿入する。(正規化はしない lenは文字数

DKC_EXTERN int WINAPI dkcPathStringElementErase_Logic (DKC_PATHSTRING *, size_t count)
DKC_EXTERN int WINAPI dkcPathStringElementReplace_Logic (DKC_PATHSTRING *, size_t count, const char *, size_t len)
 パスの要素を置換する。(正規化はしない lenは文字数

DKC_EXTERN BOOL WINAPI dkcSetCurrentDirectory (const char *filename)
DKC_EXTERN BOOL WINAPI dkcGetCurrentDirectory (char *buff, size_t size)
DKC_EXTERN int WINAPI dkcCreateDirectory (const char *pPath)
DKC_EXTERN BOOL WINAPI dkcFileCopy (const char *dest, const char *src)
DKC_EXTERN BOOL WINAPI dkcFileCopyEx (const char *dest, const char *src, size_t inner_buffer_size, BOOL bThreadLock)
DKC_EXTERN BOOL WINAPI dkcFileRemove (const char *filename)
DKC_EXTERN BOOL WINAPI dkcFileRename (const char *oldname, const char *newname)
DKC_EXTERN BOOL WINAPI dkcFileExist (const char *filename)
DKC_EXTERN UINT WINAPI dkcFileSize (const char *filename)
DKC_EXTERN DKC_FINDFILE *WINAPI dkcAllocFindFile ()
DKC_EXTERN int WINAPI dkcFreeFindFile (DKC_FINDFILE **)
DKC_EXTERN int WINAPI dkcFindFirstFile (DKC_FINDFILE *ptr, const char *target)
DKC_EXTERN int WINAPI dkcFindNextFile (DKC_FINDFILE *ptr)
DKC_EXTERN int WINAPI dkcFindClose (DKC_FINDFILE *ptr)
DKC_EXTERN int WINAPI dkcFindFileGetFileName (DKC_FINDFILE *ptr, char *buff, size_t buffsize)
DKC_EXTERN BOOL WINAPI dkcFindFileIsFolder (DKC_FINDFILE *ptr)
DKC_EXTERN BOOL WINAPI dkcFindFileIsDot (DKC_FINDFILE *ptr)
DKC_EXTERN BOOL WINAPI dkcFindFileIsNormalFile (DKC_FINDFILE *ptr)
DKC_EXTERN BOOL WINAPI dkcFindFileIsReadOnly (DKC_FINDFILE *ptr)
DKC_EXTERN void WINAPI dkcFindFileSize (DKC_FINDFILE *ptr, ULONG *, ULONG *)


Detailed Description

ShiftJISを考慮したファイルシステム.

d金魚

Note:
Licence is "BSD Licence"
dkc_PathStringはパスを相対パスでも必ず絶対パスにして格納します。
dkc_FileFinderはSJIS問題に対応しています。(多分^^;;)

Typedef Documentation

typedef struct dkc_FileFinder DKC_FILE_FINDER
 

Fileを検索するための機構の状態を保存する構造体

typedef struct dkc_FindFile DKC_FINDFILE
 

typedef struct dkc_PathString DKC_PATHSTRING
 

Note:
仕様: mStringにディレクトリを入れる。 内部で必ず絶対パスに変換してからmStringに入れる。


Enumeration Type Documentation

enum edkcFileFinder
 

Enumeration values:
edkcFileFinderEmpty  何も行っていない。
edkcFileFinderSearching  ただ今検索中
edkcFileFinderFinish  検索終了。


Function Documentation

DKC_EXTERN DKC_FINDFILE* WINAPI dkcAllocFindFile  ) 
 

DKC_EXTERN DKC_PATHSTRING* WINAPI dkcAllocPathString const char *  path  ) 
 

Parameters:
path[in] ファイル、ディレクトリへのパスを入れる。
Returns:
無効な文字列が使われていたり、上手く割り当て出来なかったらNULL
Note:
パスが相対パスだった場合、内部で勝手に絶対パスに変換される。

DKC_EXTERN int WINAPI dkcCreateDirectory const char *  pPath  ) 
 

Note:
Thread safe ではありません。(多分safeでなくても大丈夫だと思いますが。

DKC_EXTERN int WINAPI dkcCurrentDirectoryConcatenate char *  dest,
size_t  dsize,
const char *  src
 

Parameters:
dest[out] バッファへのポインタ
dsize[in] destのサイズ
src[in] ファイルの文字列 無条件でsrcに入れた文字列をカレントディレクトリ+srcとしてdestに出力する。
Note:
dsizeがdkcdMAXPATH_LEN以下だと失敗する。
Returns:
edk_SUCCEEDEDで成功

DKC_EXTERN int WINAPI dkcDirectoryConcatenate char *  dest,
size_t  dlen,
size_t  dsize,
const char *  src
 

Parameters:
dest[in] カレントディレクトリの文字列が入っているバッファへのポインタ
dlen[in] destの文字数
dsize[in] destのサイズ
src[in] 元文字列
Returns:
dlen + 2 > dsizeだとバッファオーバーフローする可能性があるので失敗する。

DKC_EXTERN BOOL WINAPI dkcFileCopy const char *  dest,
const char *  src
 

Note:
thread safe ではありません。(気になる方はdkcFileCopyExをお使いください。) 何故ならコピーするファイルがデカいと処理が止まったままになってしまうからです。

DKC_EXTERN BOOL WINAPI dkcFileCopyEx const char *  dest,
const char *  src,
size_t  inner_buffer_size,
BOOL  bThreadLock
 

Parameters:
inner_buffer_size[in] 内部のコピーで使うバッファのサイズを設定する。
bThreadLock[in] TRUEだとスレッドをロックする。(大きいファイルの場合は危険)
Returns:
TRUEだと成功

Todo:
HDのサイズ等を取得してコピーするのが安全かどうかを調べなければならない。 スレッド生成してすぐに処理を返すとか? スレッドをロックするオプションは廃止する。

DKC_EXTERN BOOL WINAPI dkcFileExist const char *  filename  ) 
 

Returns:
TRUEだとファイルが存在する

DKC_EXTERN BOOL WINAPI dkcFileRemove const char *  filename  ) 
 

ファイルを削除する。

Returns:
削除できたらTRUE
Parameters:
filename[in] ファイル名

DKC_EXTERN BOOL WINAPI dkcFileRename const char *  oldname,
const char *  newname
 

Parameters:
oldname[in] 古い名前へのポインタ
newname[in] 新しい名前へのポインタ

DKC_EXTERN UINT WINAPI dkcFileSize const char *  filename  ) 
 

Returns:
0だとファイルサイズが0 または 内部エラー また はファイルが存在しない

DKC_EXTERN int WINAPI dkcFindClose DKC_FINDFILE ptr  ) 
 

FindClose()

See also:
dkcFindFirstFile()

DKC_EXTERN int WINAPI dkcFindFileGetFileName DKC_FINDFILE ptr,
char *  buff,
size_t  buffsize
 

DKC_EXTERN BOOL WINAPI dkcFindFileIsDot DKC_FINDFILE ptr  ) 
 

DKC_EXTERN BOOL WINAPI dkcFindFileIsFolder DKC_FINDFILE ptr  ) 
 

DKC_EXTERN BOOL WINAPI dkcFindFileIsNormalFile DKC_FINDFILE ptr  ) 
 

DKC_EXTERN BOOL WINAPI dkcFindFileIsReadOnly DKC_FINDFILE ptr  ) 
 

DKC_EXTERN void WINAPI dkcFindFileSize DKC_FINDFILE ptr,
ULONG *  ,
ULONG * 
 

DKC_EXTERN int WINAPI dkcFindFirstFile DKC_FINDFILE ptr,
const char *  target
 

Windowsで言うFindFirstFile()のラッパー UNIXやLINUXでも動くかも?

DKC_EXTERN int WINAPI dkcFindNextFile DKC_FINDFILE ptr  ) 
 

FindNextFile()

See also:
dkcFindFirstFile()

DKC_EXTERN int WINAPI dkcFreeFindFile DKC_FINDFILE **   ) 
 

DKC_EXTERN int WINAPI dkcFreePathString DKC_PATHSTRING **   ) 
 

DKC_EXTERN BOOL WINAPI dkcGetCurrentDirectory char *  buff,
size_t  size
 

Returns:
TRUEで成功

DKC_EXTERN BOOL WINAPI dkcIsAbsolutelyPath const char *  path  ) 
 

Returns:
パスが絶対パスだったらTRUE

DKC_EXTERN BOOL WINAPI dkcIsEffectivePath const char *  path,
size_t  size
 

Returns:
pathが存在して、有効なパス名だったらTRUE

DKC_EXTERN BOOL WINAPI dkcIsRelativityPath const char *  path  ) 
 

Returns:
パスが相対パスだったらTRUE

DKC_EXTERN BOOL WINAPI dkcIsTailPathSep const char *  src,
size_t  dlen
 

srcの一番後ろににがついていたらTRUE

\

DKC_EXTERN int WINAPI dkcPathStringConcatenate DKC_PATHSTRING ,
const char *  buff,
size_t  size
 

パスを正規化して繋げる。

DKC_EXTERN int WINAPI dkcPathStringCopy DKC_PATHSTRING ,
const char *  buff,
size_t  size
 

パスを正規化して入れる。

DKC_EXTERN int WINAPI dkcPathStringDevideBegin DKC_PATHSTRING ,
char *  buff,
size_t  size
 

DKC_EXTERN int WINAPI dkcPathStringDevideBegin_Logic DKC_PATHSTRING ,
size_t *  count,
char *  buff,
size_t  size
 

dkcPathStringDevideBegin()

DKC_EXTERN void WINAPI dkcPathStringDevideEnd DKC_PATHSTRING  ) 
 

DKC_EXTERN void WINAPI dkcPathStringDevideEnd_Logic size_t *  count  ) 
 

dkcPathStringDevideEnd()

DKC_EXTERN int WINAPI dkcPathStringDevideNext DKC_PATHSTRING ,
char *  buff,
size_t  size
 

Returns:
edk_EndProcessが返ってきたらdkcPathStringDevideEnd()を呼び出して終了する

DKC_EXTERN int WINAPI dkcPathStringDevideNext_Logic DKC_PATHSTRING ,
size_t *  count,
char *  buff,
size_t  size
 

dkcPathStringDevideNext()

DKC_EXTERN int WINAPI dkcPathStringElementErase_Logic DKC_PATHSTRING ,
size_t  count
 

DKC_EXTERN int WINAPI dkcPathStringElementInsert_Logic DKC_PATHSTRING ,
size_t  count,
const char *  src,
size_t  len
 

パスの要素を挿入する。(正規化はしない lenは文字数

DKC_EXTERN int WINAPI dkcPathStringElementReplace_Logic DKC_PATHSTRING ,
size_t  count,
const char *  ,
size_t  len
 

パスの要素を置換する。(正規化はしない lenは文字数

DKC_EXTERN int WINAPI dkcPathStringGetDirectory DKC_PATHSTRING ,
char *  buff,
size_t  size
 

Note:
取得した文字列の最後尾に\を付加させる。

DKC_EXTERN int WINAPI dkcPathStringGetDrive DKC_PATHSTRING ,
char *  buff,
size_t  size
 

DKC_EXTERN int WINAPI dkcPathStringGetFileExtension DKC_PATHSTRING ,
char *  buff,
size_t  size
 

DKC_EXTERN int WINAPI dkcPathStringGetFileName DKC_PATHSTRING ,
char *  buff,
size_t  size
 

DKC_EXTERN const char* WINAPI dkcPathStringPointer const DKC_PATHSTRING  ) 
 

DKC_EXTERN size_t WINAPI dkcPathStringSize const DKC_PATHSTRING  ) 
 

DKC_EXTERN BOOL WINAPI dkcPushBackPathSep char *  dest,
size_t  dlen,
size_t  size
 

path separatorを挿入する必要があり、挿入出来たらTRUE

Parameters:
dest[in] バッファ
dlen[in] destの文字数
size[in] destのサイズ
Returns:
edk_SUCCEEDEDなら成功
edk_OutputBufferWasLostはバッファが足りなかった
その他は入れる必要が無かった。

DKC_EXTERN BOOL WINAPI dkcSetCurrentDirectory const char *  filename  ) 
 

Returns:
TRUEで成功

DKC_EXTERN int WINAPI dkcToAbsolutelyPath char *  dest,
size_t  dsize,
const char *  src,
size_t  ssize
 

パスを正規化(相対パスから絶対パス)する関数


Generated on Mon Apr 26 19:37:12 2004 for dkutil_c by doxygen 1.3.6