www.pudn.com > MP3+JPEG.rar > fsystem.h
#ifndef __FS_H__
#define __FS_H__
// lanzhu add
#include "Typedef.h"
// write your header here
#include "fs_gen.h"
#include "misc.h"
#ifdef WITHFAT32
// lanzhu modified
#ifndef CLUSTER
#define CLUSTER UINT32
#endif
//typedef UINT32 CLUSTER;
#else
#ifndef CLUSTER
#define CLUSTER UINT32
#endif
//typedef UINT16 CLUSTER;
#endif
// modified by lanzhu
//typedef UINT16 dosdate;
//typedef UINT16 dostime;
#ifndef dosdate
#define dosdate UINT16
#endif
#ifndef dostime
#define dostime UINT16
#endif
/*
// marked ny lanzhu @ 12/30/2005
#define BOOL int
#define ULONG unsigned long
#define UWORD unsigned int
#define UDWORD unsigned long
#define UBYTE unsigned char
#define BYTE unsigned char
#define XDATA xdata
#define LONG signed long
#define WORD signed int
#define DWORD signed long
*/
/********************************************************************/
/*error code, copy from error.h of freedos fs,by WangHuidi 2004-08-25*/
/********************************************************************/
/* Internal system error returns */
#define DE_INVLDFUNC -1 /* Invalid function number */
#define DE_FILENOTFND -2 /* File not found */
#define DE_PATHNOTFND -3 /* Path not found */
#define DE_TOOMANY -4 /* Too many open files */
#define DE_ACCESS -5 /* Access denied */
#define DE_INVLDHNDL -6 /* Invalid handle */
#define DE_INVLDACC -12 /* Invalid access */
#define DE_BLKINVLD -20 /* invalid block */
#define DE_HNDLDSKFULL -28 /* handle disk full (?) */
#define DE_FILEEXISTS -80 /* File exists*/
/********************************************************************/
/********************************************************************/
/* FAT file system attribute bits*/
#define D_NORMAL 0 /* normal */
#define D_RDONLY 0x01 /* read-only file */
#define D_HIDDEN 0x02 /* hidden */
#define D_SYSTEM 0x04 /* system */
#define D_VOLID 0x08 /* volume id */
#define D_DIR 0x10 /* subdir */
#define D_ARCHIVE 0x20 /* archive bit */
/* /// Added D_DEVICE bit. - Ron Cemer */
//2006.5.31
#define D_FILE (0x40)
//#define D_LFN (D_RDONLY | D_HIDDEN | D_SYSTEM | D_VOLID)
//#define D_ALL (D_RDONLY | D_HIDDEN | D_SYSTEM | D_DIR | D_ARCHIVE)
#define D_ALL (D_FILE | D_RDONLY | D_HIDDEN | D_SYSTEM | D_DIR | D_ARCHIVE)
/***************** open flags ******************/ //wanghuidi
#define O_OPEN 0x0100 /* not */
#define O_TRUNC 0x0200 /* both */
#define O_CREAT 0x0400
#define O_RDONLY 0x0000
#define O_WRONLY 0x0001
#define O_RDWR 0x0002
/***************** seek mode ******************/
#define SEEK_SET 0 /* offset from beginning of the file*/
#define SEEK_CUR 1 /* offset from current location */
#define SEEK_END 2 /* offset from eof */
#ifdef LFN_API
//mapping common name to LFN api and short name api
#define fat_unlink fs_lfndelete
#define fat_mkdir fs_lfnmkdir
#define fat_open fs_lfnopen
#define fat_rename fs_lfnrename
#define fat_rmdir fs_lfnrmdir
#define fat_chdir fs_lfncd
#define fat_findfirst fs_lfnfindfirst
#define fat_findnext fs_lfnfindnext
#define fat_deleteall fs_lfndeleteall //20050224
extern INT16 fs_lfndelete(INT8 * dirpath);
extern INT16 fs_lfnmkdir(INT8 * dirpath);
extern INT32 fs_lfnopen(INT8 *path , UINT16 flags , UINT16 attrib);
extern INT16 fs_lfnrename(INT8 * path1 , INT8 * path2);
extern INT16 fs_lfnrmdir(INT8 * dirpath);
extern INT16 fs_lfncd(INT8 * PathName);
extern INT16 fs_lfnfindfirst(INT8 *name , struct f_info *f_info , UINT16 attr);
extern INT16 fs_lfnfindnext(struct f_info *f_info);
extern INT16 fs_lfndeleteall (INT8 *); // added by Yongliang 2004-11-25
#else
#define fat_unlink fs_delete
#define fat_mkdir fs_mkdir
#define fat_open fs_fopen
#define fat_rename fs_rename
#define fat_rmdir fs_rmdir
#define fat_chdir fs_cd //added by WangHuidi
#define fat_findfirst fs_findfirst
#define fat_findnext fs_findnext
#define fat_deleteall fs_deleteall //added by Yongliang 2004-11-25
extern INT16 fs_delete(INT8 * path);
extern INT16 fs_mkdir(INT8 * dir);
extern INT32 fs_fopen(INT8 *path , UINT16 flags , UINT16 attrib);
extern INT16 fs_rename(INT8 * path1 , INT8 * path2);
extern INT16 fs_rmdir(INT8 * path);
extern INT16 fs_cd(INT8 * PathName);
extern INT16 fs_findfirst(INT8 *name , struct f_info *f_info , UINT16 attr);
extern INT16 fs_findnext(struct f_info *f_info);
extern INT16 fs_deleteall (INT8 *); // added by Yongliang 2004-11-25
#endif
#define fat_close fs_fclose
#define fat_seek fs_fseek
#define fat_write fs_fwrite
#define fat_read fs_fread
#define fat_getfsize fs_getfsize
#define fat_getftime fs_getftime
#define fat_setfattr fs_setfattr
#define fat_getfattr fs_getfattr
#define fat_setfsize fs_setfsize
#define fat_setftime fs_setftime
#define fat_getcurdir fs_getcurdir
#define fat_getcwd fs_getcwd
#define fat_free fs_free
#define fat_init fs_init
extern UINT8 fs_getcurdir( UINT8 drive , INT8 *buf);
extern INT8 *fs_getcwd(INT8 *buf , INT16 buflen);
extern INT16 fs_fclose(INT16 fd);
#ifdef _555_FS_
extern INT32 fs_fread(INT16 fd , UINT32 bp , UINT16 n);
extern INT32 fs_fwrite(INT16 fd , UINT32 bp , UINT16 n);
#else
extern INT32 fs_fread(INT16 fd , LPDATA bp , UINT16 n);
extern INT32 fs_fwrite(INT16 fd , LPDATA bp , UINT16 n);
#endif
extern CLUSTER fs_free( UINT8 disk);
extern INT32 fs_fseek(INT16 fd , INT32 foffset , INT16 origin);
extern INT32 fs_getfsize(INT16 fd);
extern INT16 fs_setfattr(INT16 fd , UINT16 attrp);
extern INT16 fs_getfattr(INT16 fd);
extern BOOL fs_setfsize(INT16 fd , INT32 size);
#ifdef _555_FS_
INT16 fs_setftime(INT16 fd , UINT16 , UINT16 , UINT16); // 2004-11-23 Yongliang change argument list
INT16 fs_getftime (INT16 fd , UINT16 * , UINT16 * , UINT16 * , UINT16 * , UINT16 *); // 2004-11-23 Yongliang change function
#else
extern INT16 fs_setftime(INT16 fd , dosdate dp , dostime tp);
extern INT16 fs_getftime(INT16 fd , dosdate * dp , dostime * tp);
#endif
extern dostime fs_gettime(void);
extern dosdate fs_getdate(void);
extern BOOL dir_exists(INT8 * path);
extern INT16 fs_changedisk( UINT8 disk); //wanghuidi ,20050217
extern void fs_init(void);
extern INT16 fs_mount(UBYTE dsk);
extern INT16 fs_unmount(UBYTE dsk);
#ifdef _555_FS_
//20050224 add
extern INT16 fs_mount ( UINT8 , UINT8 , UINT8);
extern INT16 fs_umount ( UINT8);
extern INT16 fs_getinfo (INT8 * , INT8 * , INT8 * , UINT32 * , UINT32 * , UINT16 dsk);
#endif
/********************************************************/
#endif