52 #if VER_FAT_SL_MAJOR != 5 || VER_FAT_SL_MINOR != 2
53 #error Incompatible FAT_SL version number!
100 if ( (
unsigned char)( de->
name[0] ) == 0xe5 )
112 for ( b = 0, ok = 1 ; b <
sizeof( de->
name ) ; b++ )
114 if ( name[b] ==
'*' )
119 if ( name[b] !=
'?' )
121 if ( de->
name[b] != name[b] )
131 for ( b = 0, ok = 1 ; b <
sizeof( de->
ext ) ; b++ )
145 if ( de->
ext[b] != ext[b] )
166 for ( b = 0, ok = 1 ; b <
sizeof( de->
name ) ; b++ )
168 if ( de->
name[b] != name[b] )
177 for ( b = 0, ok = 1 ; b <
sizeof( de->
ext ) ; b++ )
179 if ( de->
ext[b] != ext[b] )
215 unsigned long nextcluster;
248 static void _f_getfilename (
char * dest,
char * name,
char * ext )
250 unsigned char a, len;
252 for ( len = a =
F_MAXNAME ; a ; a--, len-- )
254 if ( name[a - 1] !=
' ' )
260 for ( a = 0 ; a < len ; a++ )
266 for ( len = a =
F_MAXEXT ; a ; a--, len-- )
268 if ( ext[a - 1] !=
' ' )
279 for ( a = 0 ; a < len ; a++ )
307 unsigned long cluster;
367 char * path = fsname->
path;
380 if ( ( pos->
cluster == 0 ) && ( len == 1 ) && ( name[0] ==
'.' ) )
400 if ( name[0] ==
'.' )
408 if ( mpath != fsname->
path )
420 if ( name[1] !=
'.' )
432 if ( mpath == fsname->
path )
440 if ( mpath == fsname->
path )
455 if ( mpath != fsname->
path )
476 for ( a = 0 ; a < len ; a++ )
513 unsigned char fn_getcwd (
char * buffer,
unsigned char maxlen,
char root )
523 if ( root && maxlen )
529 for ( a = 0 ; a < maxlen ; a++ )
632 find->
ext[a] = de->
ext[a];
691 for ( len = 0 ; fsname.
path[len] ; )
696 if ( len && ( ( fsname.
filename[0] != 32 ) || ( fsname.
fileext[0] != 32 ) ) )
698 fsname.
path[len++] =
'/';
731 static void _f_initentry (
F_DIRENTRY * de,
char * name,
char * ext )
798 if ( ( !de->
name[0] ) || ( (
unsigned char)( de->
name[0] ) == 0xe5 ) )
834 unsigned long cluster;
931 unsigned long cluster;
934 #if F_FILE_CHANGED_EVENT
988 #if F_FILE_CHANGED_EVENT
989 if ( f_filechangedevent )
991 fc.action = FACTION_ADDED;
992 fc.flags = FFLAGS_DIR_NAME | FFLAGS_ATTRIBUTES | FFLAGS_SIZE | FFLAGS_LAST_WRITE;
1014 _f_initentry( de,
". ",
" " );
1019 _f_initentry( de,
".. ",
" " );
1054 #if F_FILE_CHANGED_EVENT
1055 if ( f_filechangedevent && !ret )
1057 fc.action = FACTION_ADDED;
1058 fc.flags = FFLAGS_DIR_NAME;
1062 f_filechangedevent( &fc );
1094 unsigned long dirsector;
1167 if ( (
unsigned char)ch == 0xe5 )
1194 de->
name[0] = (
unsigned char)0xe5;
1204 #if F_FILE_CHANGED_EVENT
1205 if ( f_filechangedevent && !ret )
1208 fc.action = FACTION_REMOVED;
1209 fc.flags = FFLAGS_DIR_NAME;
1213 f_filechangedevent( &fc );
unsigned char _f_removechain(unsigned long cluster)
unsigned char fn_getcwd(char *buffer, unsigned char maxlen, char root)
unsigned char ext[F_MAXEXT]
unsigned char _f_writefatsector(void)
unsigned long _f_getdecluster(F_DIRENTRY *de)
unsigned char name[F_MAXNAME]
void f_igettimedate(unsigned short *time, unsigned short *date)
#define psp_memcpy(d, s, l)
unsigned char filesize[4]
unsigned char _f_getvolume(void)
unsigned char _f_checknamewc(const char *, const char *)
unsigned char _f_alloccluster(unsigned long *pcluster)
void _f_clustertopos(unsigned long cluster, F_POS *pos)
unsigned long _f_getlong(void *)
unsigned char _f_getcurrsector(void)
unsigned char _f_findpath(F_NAME *fsname, F_POS *pos)
unsigned char fn_mkdir(const char *dirname)
unsigned char _f_writeglsector(unsigned long sector)
unsigned char fn_findnext(F_FIND *find)
unsigned char lastaccessdate[2]
unsigned char _f_findfilewc(char *name, char *ext, F_POS *pos, F_DIRENTRY **pde, unsigned char wc)
void _f_setdecluster(F_DIRENTRY *de, unsigned long cluster)
unsigned short _f_getword(void *)
unsigned char _f_checkname(char *, char *)
void _f_setword(void *, unsigned short)
#define psp_memset(d, c, l)
unsigned char fn_findfirst(const char *filename, F_FIND *find)
unsigned char _f_setfsname(const char *, F_NAME *)
unsigned char clusterhi[2]
int _f_createfullname(char *buffer, int buffersize, char *path, char *filename, char *fileext)
unsigned char _f_readglsector(unsigned long sector)
char gl_sector[F_SECTOR_SIZE]
unsigned char _f_addentry(F_NAME *fsname, F_POS *pos, F_DIRENTRY **pde)
unsigned long rootcluster
#define F_CLUSTER_RESERVED
unsigned char _f_getclustervalue(unsigned long cluster, unsigned long *pvalue)
unsigned char fn_chdir(const char *dirname)
unsigned char _f_setnameext(char *, char *, char *)
unsigned char fn_rmdir(const char *dirname)
unsigned char clusterlo[2]
unsigned char _f_setclustervalue(unsigned long cluster, unsigned long _tdata)