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:

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

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だとファイルサイズが０　または　内部エラー また　はファイルが存在しない

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
| ) |

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