41 #include "../../api/fat_sl.h"
45 #include "../../version/ver_fat_sl.h"
46 #if VER_FAT_SL_MAJOR != 5 || VER_FAT_SL_MINOR != 2
47 #error Incompatible FAT_SL version number!
66 static unsigned char _f_checknameprim (
char * ptr,
unsigned char len )
68 unsigned char inspace = 0;
80 if ( ( ch ==
'|' ) || ( ch ==
'[' ) || ( ch ==
']' ) || ( ch ==
'<' ) || ( ch ==
'>' ) || ( ch ==
'/' ) || ( ch ==
'\\' ) || ( ch ==
':' ) )
114 if ( _f_checknameprim( name,
F_MAXNAME ) )
119 if ( _f_checknameprim( ext,
F_MAXEXT ) )
152 if ( ( ch ==
'?' ) || ( ch ==
'*' ) )
161 if ( ( ch ==
'?' ) || ( ch ==
'*' ) )
193 unsigned char len, extlen = 0;
195 unsigned char setext = 1;
199 unsigned char ch = s[len];
200 if ( ( ch == 0 ) || ( ch ==
'\\' ) || ( ch ==
'/' ) )
208 if ( len && ( s[0] ==
'.' ) )
211 if ( ( len == 1 ) || ( s[1] ==
'.' ) )
217 for ( a = len ; a ; a-- )
219 if ( s[a - 1] ==
'.' )
223 extlen = (
unsigned char)( len - a + 1 );
224 len = (
unsigned char)( a - 1 );
228 if ( b < extlen - 1 )
264 return (
unsigned char)( len + extlen );
289 unsigned char namepos = 0;
291 unsigned char pathpos = 0;
301 if ( name[1] ==
':' )
306 if ( ( name[0] !=
'/' ) && ( name[0] !=
'\\' ) )
313 for ( pathpos = 0 ; fsname->
path[pathpos] ; )
334 if ( ( ch ==
'/' ) || ( ch ==
'\\' ) )
338 if ( fsname->
path[pathpos - 1] ==
'/' )
348 fsname->
path[pathpos++] =
'/';
353 if ( s[namepos - 1] !=
' ' )
361 for ( a = 0 ; a < namepos ; a++ )
368 fsname->
path[pathpos++] = s[a];
375 if ( ( ch ==
' ' ) && ( !namepos ) )
380 if ( namepos >= (
sizeof( s ) - 2 ) )
389 fsname->
path[pathpos] = 0;
393 if ( s[namepos - 1] !=
' ' )
437 int _f_createfullname (
char * buffer,
int buffersize,
char * path,
char * filename,
char * fileext )
439 char * fullname = buffer;
443 if ( buffersize < 1 )
463 if ( buffersize <= 0 )
473 if ( buffersize <= 0 )
484 char ch = *filename++;
486 if ( ( !ch ) || ( ch == 32 ) )
491 if ( buffersize <= 0 )
501 if ( fileext[0] && ( fileext[0] != 32 ) )
513 char ch = *fileext++;
515 if ( ( !ch ) || ( ch == 32 ) )
520 if ( buffersize <= 0 )
531 if ( buffersize <= 0 )
unsigned char fn_getcwd(char *buffer, unsigned char maxlen, char root)
unsigned char _f_setfsname(const char *name, F_NAME *fsname)
unsigned char _f_setnameext(char *s, char *name, char *ext)
unsigned char _f_checknamewc(const char *name, const char *ext)
int _f_createfullname(char *buffer, int buffersize, char *path, char *filename, char *fileext)
unsigned char _f_checkname(char *name, char *ext)