>
</File>
</Filter>
+ <Filter
+ Name="command"
+ >
+ <File
+ RelativePath="..\..\..\..\system\command\command.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\system\command\command.h"
+ >
+ </File>
+ </Filter>
</Filter>
<Filter
Name="application"
{
return FILE_ERR_NG;
}
- } while ( ubBuf[0] == 0xe5 || ubBuf[0] == 0x2e );
-
-
+ } while ( ubBuf[0] == 0xe5 || ubBuf[0] == 0x2e || ubBuf[11] == 0x0f );
+
/* ファイル名 */
p = pFileInf->szFileName;
for ( i = 0; i < 8; i++ )
HANDLE FatVol_Open(C_DRVOBJ *pDrvObj, const char *pszPath, int iMode)
{
C_FATVOL *self;
-
HANDLE hFile;
-
-
FATVOL_UINT uiDirStartCluster;
FATVOL_UINT uiDirCluster;
FATVOL_UINT uiDirEntryPos;
-
char szName[8+3];
int iNameLen;
-
FATVOL_UINT uiFileCluster;
unsigned char ubFileAttr;
FILE_POS FileSize;
/* ディレクトリを閉じる */
FatVol_RelClusterBuf(self, pClusterBuf, 1);
}
+ else
+ {
+ /* 存在した場合 */
+ if ( iMode & FILE_OPEN_CREATE )
+ {
+ FatVol_FreeCluster(self, uiFileCluster);
+ FatVol_SetNextCluster(self, uiFileCluster, FATVOL_CLUSTER_ENDMARKER);
+ FileSize = 0;
+ }
+ }
/* モードチェック */
if ( ((ubFileAttr & 0x10) && !(iMode & FILE_OPEN_DIR))
#include "assoc.h"
+C_ASSOC *Assoc_Create(void)
+{
+ return NULL;
+}
+
+
+C_ASSOC *Assoc_CreateEx(C_MEMHEAP *pMemHeap)
+{
+ return NULL;
+}
+
/* 連想バッファのコンストラクタ */
-/*void Assoc_Constructor(C_ASSOC *self, C_MEMHEAP *pMemHeap) */
-void Assoc_CreateEx(C_ASSOC *self, C_MEMHEAP *pMemHeap)
+void Assoc_Constructor(C_ASSOC *self, C_MEMHEAP *pMemHeap)
{
self->pMemHeap = pMemHeap;
self->pRoot = NULL;
#endif
/* 生成/削除 */
-#if 0
C_ASSOC *Assoc_Create(void); /* 連想バッファの生成 */
+C_ASSOC *Assoc_CreateEx(C_MEMHEAP *pMemHeap); /* 連想バッファの生成 */
void Assoc_Delete(C_ASSOC *self); /* 連想バッファの削除 */
-
void Assoc_Constructor(C_ASSOC *self, C_MEMHEAP *pMemHeap); /* 連想バッファのコンストラクタ */
void Assoc_Destructor(C_ASSOC *self); /* 連想バッファのデストラクタ */
-#endif
-void Assoc_Create(C_ASSOC *self); /* 連想バッファの生成 */
-void Assoc_CreateEx(C_ASSOC *self, C_MEMHEAP *pMemHeap); /* 連想バッファの生成 */
-void Assoc_Delete(C_ASSOC *self); /* 連想バッファの削除 */
-
/* 操作 */
ASSOC_ERR Assoc_Add(C_ASSOC *self, const char *pszKey, const void *pData, long lSize); /* データの登録 */
void Command_Initialize(void)
{
/* システムメモリを使う連想配列を生成 */
- Assoc_CreateEx(&Command_Assoc, SysMem_GetMemHeap());
+ Assoc_Constructor(&Command_Assoc, SysMem_GetMemHeap());
}
/* コマンドを登録する */
int i, j, k;
self = &g_File;
-
-#if 0
- /* パス生成 */
- if ( *pszPath == '/' )
- {
- /* 絶対パス */
- strncpy(szBuf, pszPath+1, FILE_MAX_PATH);
- }
- else
- {
- /* 相対パス */
- strcpy(szBuf, Process_GetCurrentDir(HANDLE_NULL));
- iLen = strlen(szBuf);
- if ( szBuf[0] != '\0' )
- {
- strncat(szBuf, "/", FILE_MAX_PATH - iLen);
- iLen++;
- }
- strncat(szBuf, pszPath, FILE_MAX_PATH - iLen);
- }
- szBuf[FILE_MAX_PATH-1] = '\0';
-
- /* 相対パス解決 */
- for ( i = 0; szBuf[i] == '\0'; i++ )
- {
- j = i;
- if ( szBuf[i] == '/' )
- {
- if ( szBuf[i+1] == '/' )
- {
- j = i + 1;
- }
- else if ( szBuf[i+1] == '.' && (szBuf[i+2] == '/' || szBuf[i+2] == '\0') )
- {
- j = i + 2;
- }
- else if ( szBuf[i+1] == '.' && szBuf[i+2] == '.' && (szBuf[i+3] == '/' || szBuf[i+3] == '\0') )
- {
- j = i + 3;
- while ( i > 0 )
- {
- if ( szBuf[--i] == '/' )
- {
- break;
- }
- }
- }
- if ( i != j )
- {
- for ( k = 0; szBuf[j+k] != '\0'; k++ )
- {
- szBuf[i + k] = szBuf[j + k];
- }
- szBuf[i + k] = '\0';
- }
- }
- }
-
- /* 末尾の '/' の削除 */
- iLen = strlen(szBuf);
- while ( iLen > 0 && szBuf[iLen-1] == '/' )
- {
- szBuf[iLen-1] = '\0';
- iLen--;
- }
-#endif
/* 絶対パスに変換 */
ErrCode = File_RelPathToAbsPath(szBuf, pszPath, sizeof(szBuf));
// ---------------------------------------------------------------------------
-// Hyper Operating System V4 コンフィギュレーター
-// CRE_CYC API の処理
-//
-// Copyright (C) 1998-2003 by Project HOS
-// http://sourceforge.jp/projects/hos/
+// Hyper Operating System V4 Advance コンフィギュレーター
+// CRE_CYC API の処理
+//
+// Copyright (C) 1998-2009 by Project HOS
+// http://sourceforge.jp/projects/hos/
// ---------------------------------------------------------------------------
ID cre_cyc(ID cycid, const T_CCYC *pk_ccyc)
{
ER_ID erid;
-
+
/* %jp{IDチェック}%en{check ID} */
#if _KERNEL_SPT_CRE_CYC_E_ID
if ( !_KERNEL_CYC_CHECK_CYCID(cycid) )
return E_ID; /* %jp{不正ID番号}%en{Invalid ID number} */
}
#endif
-
+
_KERNEL_ENTER_SVC(); /* %jp{サービスコールに入る}%en{enter service-call} */
/* %jp{存在チェック}%en{check object} */
_KERNEL_T_CYCCB *cyccb;
_KERNEL_T_CYCCB_RO *cyccb_ro;
_KERNEL_T_TIMOBJ *pk_timobj;
-
-
+
+
/* %jp{ID のチェック} */
#if _KERNEL_SPT_STA_CYC_E_ID
if ( !_KERNEL_CYC_CHECK_CYCID(cycid) )