📄 filesys.c
字号:
if (*(FileSysHandleTable[handle]) == FAT_ID)
{
result = FAT_filelength(handle);
FileSys_Errno = FATErrno;
return result;
}
#endif
FileSys_Errno = ERROR_INVALID_DEVICE;
return -1;
}
/*************************************************************
Function: getdiskspace
Description:
get the total size of free space on disk
Input:
None
Output:
free bytes on disk
-1 if file system error
**************************************************************/
long fs_getdiskspace(void)
{
long result;
if (FileSys_Running == 0)
{
FileSys_Errno = ERROR_FILE_SYSTEM_NOT_INIT;
return -1;
}
FileSys_Errno = 0;
#ifdef NOR_FLASH_DISK_ID
if (CurrentDrive == NOR_FLASH_DISK_ID)
{
result = NOR_FFS_getdiskspace();
FileSys_Errno = NOR_FFS_Errno;
return result;
}
#endif
#ifdef NAND_FLASH_DISK_ID
if (CurrentDrive == NAND_FLASH_DISK_ID)
{
result = NAND_FFS_getdiskspace();
FileSys_Errno = NAND_FFS_Errno;
return result;
}
#endif
#ifdef RAMDISK_ID
if (CurrentDrive == RAMDISK_ID)
{
result = RD_getdiskspace();
FileSys_Errno = RDerrno;
return result;
}
#endif
#ifdef FAT_ID
if (CurrentDrive == FAT_ID)
{
result = FAT_getdiskspace(0);
FileSys_Errno = FATErrno;
return result;
}
#endif
FileSys_Errno = ERROR_INVALID_DEVICE;
return -1;
}
/**** added by chilong 01/28/2002 ****/
/*************************************************************
Function: getDiskTotalCapacity
Description:
get the total size of a disk
Input:
None
Output:
free bytes on disk
-1 if file system error
**************************************************************/
long getDiskTotalCapacity(void)
{
long result;
if (FileSys_Running == 0)
{
FileSys_Errno = ERROR_FILE_SYSTEM_NOT_INIT;
return -1;
}
FileSys_Errno = 0;
// NAND_FLASH & NOR_FLASH not supported yet
#ifdef NOR_FLASH_DISK_ID
if (CurrentDrive == NOR_FLASH_DISK_ID)
{
// result = NOR_FFS_getDiskTotalCapacity();
FileSys_Errno = NOR_FFS_Errno;
return result;
}
#endif
#ifdef NAND_FLASH_DISK_ID
if (CurrentDrive == NAND_FLASH_DISK_ID)
{
// result = NAND_FFS_getDiskTotalCapacity();
FileSys_Errno = NAND_FFS_Errno;
return result;
}
#endif
// NAND_FLASH & NOR_FLASH not supported yet
#ifdef RAMDISK_ID
if (CurrentDrive == RAMDISK_ID)
{
result = RD_getDiskTotalCapacity();
FileSys_Errno = RDerrno;
return result;
}
#endif
#ifdef FAT_ID
if (CurrentDrive == FAT_ID)
{
result = FAT_getDiskTotalCapacity(0);
FileSys_Errno = FATErrno;
return result;
}
#endif
FileSys_Errno = ERROR_INVALID_DEVICE;
return -1;
}
/*************************************************************
Function: getDiskTotalCapacity2
Description:
get the total size of a disk
Input:
drive -- driver number starting from 1
Output:
free bytes on disk
-1 if file system error
**************************************************************/
long getDiskTotalCapacity2(int driveNO)
{
long result;
if (FileSys_Running == 0)
{
FileSys_Errno = ERROR_FILE_SYSTEM_NOT_INIT;
return -1;
}
driveNO--; // internal drive number starts from 0
FileSys_Errno = 0;
#ifdef NOR_FLASH_DISK_ID
if (driveNO == NOR_FLASH_DISK_ID)
{
// result = NOR_FFS_getDiskTotalCapacity();
FileSys_Errno = NOR_FFS_Errno;
return result;
}
#endif
#ifdef NAND_FLASH_DISK_ID
if (driveNO == NAND_FLASH_DISK_ID)
{
/* Kevin */
result = NAND_FFS_getDiskTotalCapacity();
//result = -1;
FileSys_Errno = NAND_FFS_Errno;
return result;
}
#endif
#ifdef RAMDISK_ID
if (driveNO == RAMDISK_ID)
{
result = RD_getDiskTotalCapacity();
FileSys_Errno = RDerrno;
return result;
}
#endif
#ifdef FAT_ID
if (driveNO == FAT_ID)
{
result = FAT_getDiskTotalCapacity(0);
FileSys_Errno = FATErrno;
return result;
}
#endif
FileSys_Errno = ERROR_INVALID_DEVICE;
return -1;
}
/*************************************************************
Function: getDiskUsedSpace
Description:
get the total used size of a disk
Input:
None
Output:
free bytes on disk
-1 if file system error
**************************************************************/
long getDiskUsedSpace(void)
{
long result;
if (FileSys_Running == 0)
{
FileSys_Errno = ERROR_FILE_SYSTEM_NOT_INIT;
return -1;
}
FileSys_Errno = 0;
// NAND_FLASH & NOR_FLASH not supported yet
#ifdef NOR_FLASH_DISK_ID
if (CurrentDrive == NOR_FLASH_DISK_ID)
{
// result = NOR_FFS_getDiskUsedSpace();
FileSys_Errno = NOR_FFS_Errno;
return result;
}
#endif
#ifdef NAND_FLASH_DISK_ID
if (CurrentDrive == NAND_FLASH_DISK_ID)
{
// result = NAND_FFS_getDiskUsedSpace();
result = -1;
FileSys_Errno = NAND_FFS_Errno;
return result;
}
#endif
// NAND_FLASH & NOR_FLASH not supported yet
#ifdef RAMDISK_ID
if (CurrentDrive == RAMDISK_ID)
{
result = RD_getDiskUsedSpace();
FileSys_Errno = RDerrno;
return result;
}
#endif
#ifdef FAT_ID
if (CurrentDrive == FAT_ID)
{
result = FAT_getDiskUsedSpace(0);
FileSys_Errno = FATErrno;
return result;
}
#endif
FileSys_Errno = ERROR_INVALID_DEVICE;
return -1;
}
/*************************************************************
Function: getDiskUsedSpace2
Description:
get the total used size of a disk
Input:
drive -- drive number starting from 1
Output:
free bytes on disk
-1 if file system error
**************************************************************/
long getDiskUsedSpace2(int driveNO)
{
long result;
if (FileSys_Running == 0)
{
FileSys_Errno = ERROR_FILE_SYSTEM_NOT_INIT;
return -1;
}
driveNO--; // internal drive number starts from 0
FileSys_Errno = 0;
#ifdef NOR_FLASH_DISK_ID
if (driveNO == NOR_FLASH_DISK_ID)
{
// result = NOR_FFS_getDiskUsedSpace();
FileSys_Errno = NOR_FFS_Errno;
return result;
}
#endif
#ifdef NAND_FLASH_DISK_ID
if (driveNO == NAND_FLASH_DISK_ID)
{
/* Kevin */
result = NAND_FFS_getdiskspace();
//result = NAND_FFS_getDiskUsedSpace();
//result = -1;
FileSys_Errno = NAND_FFS_Errno;
return result;
}
#endif
#ifdef RAMDISK_ID
if (driveNO == RAMDISK_ID)
{
result = RD_getDiskUsedSpace();
FileSys_Errno = RDerrno;
return result;
}
#endif
#ifdef FAT_ID
if (driveNO == FAT_ID)
{
result = FAT_getDiskUsedSpace(0);
FileSys_Errno = FATErrno;
return result;
}
#endif
FileSys_Errno = ERROR_INVALID_DEVICE;
return -1;
}
/**** added by chilong 01/28/2002 ****/
/*************************************************************
Function: getdiskspace2
Description:
get the total size of free space on the specific disk
Input:
driveNO - the drive number (starts from 1)
Output:
free bytes on disk
-1 if file system error
**************************************************************/
long getdiskspace2(int driveNO)
{
long result;
if (FileSys_Running == 0)
{
FileSys_Errno = ERROR_FILE_SYSTEM_NOT_INIT;
return -1;
}
driveNO--; // internal drive number starts from 0
FileSys_Errno = 0;
#ifdef NOR_FLASH_DISK_ID
if (driveNO == NOR_FLASH_DISK_ID)
{
result = NOR_FFS_getdiskspace();
FileSys_Errno = NOR_FFS_Errno;
return result;
}
#endif
#ifdef NAND_FLASH_DISK_ID
if (driveNO == NAND_FLASH_DISK_ID)
{
result = NAND_FFS_getdiskspace();
FileSys_Errno = NAND_FFS_Errno;
return result;
}
#endif
#ifdef RAMDISK_ID
if (driveNO == RAMDISK_ID)
{
result = RD_getdiskspace();
FileSys_Errno = RDerrno;
return result;
}
#endif
#ifdef FAT_ID
if (driveNO == FAT_ID)
{
result = FAT_getdiskspace(0);
FileSys_Errno = FATErrno;
return result;
}
#endif
FileSys_Errno = ERROR_INVALID_DEVICE;
return -1;
}
/*************************************************************
Function: stat
Description: get file's information of specified file
Input:
path: filename
buffer: stat struct associated with the file handle
Output:
0 : SUCCESS
-1: FAILURE
**************************************************************/
//int fs_stat(unsigned char *name, struct _stat *buffer)
int fs_stat(char *name, struct _stat *buffer)
{
int result;
short driveNO;
/**** added by chilong 01/15/2002 ****/
//unsigned char *Pathname1;
char *Pathname1; // by zhang xue ping
/**** added by chilong 01/15/2002 ****/
if (FileSys_Running == 0)
{
FileSys_Errno = ERROR_FILE_SYSTEM_NOT_INIT;
return -1;
}
/**** added by chilong 12/7/2001 ****/
if (name == NULL || buffer == NULL)
return -1;
/**** added by chilong 12/7/2001 ****/
/**** added by chilong 01/15/2002 ****/
if ((Pathname1 = (char *)ap_malloc(MAX_PATHNAME_LEN + 2)) == NULL)
{
FileSys_Errno = ERROR_ALLOC_MEM;
return -1;
}
/**** added by chilong 01/15/2002 ****/
FileSys_Errno = 0;
driveNO = getDriveNO(name, Pathname1);
if (driveNO == -1)
{
ap_free(Pathname1);
return -1;
}
buffer->st_dev = driveNO;
buffer->st_rdev = driveNO;
#ifdef NOR_FLASH_DISK_ID
if (driveNO == NOR_FLASH_DISK_ID)
{
result = NOR_FFS_stat(Pathname1, buffer);
FileSys_Errno = NOR_FFS_Errno;
ap_free(Pathname1);
return result;
}
#endif
#ifdef NAND_FLASH_DISK_ID
if (driveNO == NAND_FLASH_DISK_ID)
{
result = NAND_FFS_stat((unsigned char *)Pathname1, buffer);
FileSys_Errno = NAND_FFS_Errno;
ap_free(Pathname1);
return result;
}
#endif
#ifdef RAMDISK_ID
if (driveNO == RAMDISK_ID)
{
result = RD_stat((unsigned char *)Pathname1, buffer);
FileSys_Errno = RDerrno;
ap_free(Pathname1);
return result;
}
#endif
#ifdef FAT_ID
if (driveNO == FAT_ID)
{
result = FAT_stat((unsigned char *)Pathname1, buffer);
FileSys_Errno = FATErrno;
ap_free(Pathname1);
return result;
}
#endif
FileSys_Errno = ERROR_INVALID_DEVICE;
ap_free(Pathname1);
return -1;
}
/**** added by MSC 03/07/2002 ****/
/*************************************************************
Function: stat2
Description: get file's information of an opened file
Input:
handle: file handle
buffer: stat struct associated with the file handle
Output:
0 : SUCCESS
-1: FAILURE
**************************************************************/
int fs_stat2(int handle, struct _stat *buffer)
{
int result;
if (FileSys_Running == 0)
{
FileSys_Errno = ERROR_FILE_SYSTEM_NOT_INIT;
return -1;
}
if ((handle < 0) || (handle >= MAX_OPEN_FILE) || (FileSysHandleTable[handle] == NULL))
{
FileSys_Errno = ERROR_INVALID_HANDLE;
return -1;
}
buffer->st_dev = buffer->st_rdev = *(FileSysHandleTable[handle]);
#ifdef NOR_FLASH_DISK_ID
if (*(FileSysHandleTable[handle]) == NOR_FLASH_DISK_ID)
{
result = NOR_FFS_stat2(handle, buffer);
FileSys_Errno = NOR_FFS_Errno;
return result;
}
#endif
#ifdef NAND_FLASH_DISK_ID
if (*(FileSysHandleTable[handle]) == NAND_FLASH_DISK_ID)
{
//result = NAND_FFS_stat2(handle, buffer);
//FileSys_Errno = NAND_FFS_Errno;
result = 0;
return result;
}
#endif
#ifdef RAMDISK_ID
if (*(FileSysHandleTable[handle]) == RAMDISK_ID)
{
/* marked by chilong 05/05/2002
result = RD_stat2(handle, buffer);
FileSys_Errno = RDerrno;
return result;
marked by chilong 05/05/2002 */
// modified by chilong 05/05/2002 temporarily
return -1;
}
#endif
#ifdef FAT_ID
if (*(FileSysHandleTable[handle]) == FAT_ID)
{
result = FAT_stat2(handle, buffer);
FileSys_Errno = FATErrno;
return result;
}
#endif
FileSys_Errno = ERROR_INVALID_DEVICE;
return -1;
}
/*************************************************************
Function: setStat2
Description: set file's information of an opened file
Input:
handle: file handle
buffer: stat struct associated with the file handle
Output:
0 : SUCCESS
-1: FAILURE
**************************************************************/
int fs_setStat2(int handle, struct _stat *buffer)
{
int result;
if (FileSys_Running == 0)
{
FileSys_Errno = ERROR_FILE_SYSTEM_NOT_INIT;
return -1;
}
if ((handle < 0) || (handle >= MAX_OPEN_FILE) || (FileSysHandleTable[handle] == NULL))
{
FileSys_Errno = ERROR_INVALID_HANDLE;
return -1;
}
buffer->st_dev = buffer->st_rdev = *(FileSysHandleTable[handle]);
#ifdef NOR_FLASH_DISK_ID
if (*(FileSysHandleTable[handle]) == NOR_FLASH_DISK_ID)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -