|
@@ -808,7 +808,7 @@ __u8 do_fat_read_at_block[MAX_CLUSTSIZE]
|
|
|
|
|
|
long
|
|
|
do_fat_read_at(const char *filename, unsigned long pos, void *buffer,
|
|
|
- unsigned long maxsize, int dols)
|
|
|
+ unsigned long maxsize, int dols, int dogetsize)
|
|
|
{
|
|
|
char fnamecopy[2048];
|
|
|
boot_sector bs;
|
|
@@ -1152,7 +1152,10 @@ rootdir_done:
|
|
|
subname = nextname;
|
|
|
}
|
|
|
|
|
|
- ret = get_contents(mydata, dentptr, pos, buffer, maxsize);
|
|
|
+ if (dogetsize)
|
|
|
+ ret = FAT2CPU32(dentptr->size);
|
|
|
+ else
|
|
|
+ ret = get_contents(mydata, dentptr, pos, buffer, maxsize);
|
|
|
debug("Size: %d, got: %ld\n", FAT2CPU32(dentptr->size), ret);
|
|
|
|
|
|
exit:
|
|
@@ -1163,7 +1166,7 @@ exit:
|
|
|
long
|
|
|
do_fat_read(const char *filename, void *buffer, unsigned long maxsize, int dols)
|
|
|
{
|
|
|
- return do_fat_read_at(filename, 0, buffer, maxsize, dols);
|
|
|
+ return do_fat_read_at(filename, 0, buffer, maxsize, dols, 0);
|
|
|
}
|
|
|
|
|
|
int file_fat_detectfs(void)
|
|
@@ -1233,11 +1236,18 @@ int file_fat_ls(const char *dir)
|
|
|
return do_fat_read(dir, NULL, 0, LS_YES);
|
|
|
}
|
|
|
|
|
|
+int fat_exists(const char *filename)
|
|
|
+{
|
|
|
+ int sz;
|
|
|
+ sz = do_fat_read_at(filename, 0, NULL, 0, LS_NO, 1);
|
|
|
+ return sz >= 0;
|
|
|
+}
|
|
|
+
|
|
|
long file_fat_read_at(const char *filename, unsigned long pos, void *buffer,
|
|
|
unsigned long maxsize)
|
|
|
{
|
|
|
printf("reading %s\n", filename);
|
|
|
- return do_fat_read_at(filename, pos, buffer, maxsize, LS_NO);
|
|
|
+ return do_fat_read_at(filename, pos, buffer, maxsize, LS_NO, 0);
|
|
|
}
|
|
|
|
|
|
long file_fat_read(const char *filename, void *buffer, unsigned long maxsize)
|