size_t std_fwrite(const void *ptr, size_t size, size_t numItems, FILE *handle) { //consolePrintf("fwrite size=%d\n", size * numItems); if (DS::isGBAMPAvailable()) { FAT_fwrite(ptr, size, numItems, (FAT_FILE *) handle); return numItems; } return 0; }
int CreateTestFile (tIORes* pRes, tFATFile* pFile, const char* name, unsigned long size, int close) { unsigned long pos; size_t s; uchar c; FAT_fopen (&stdio_FATFS, pRes, pFile, name, "wb"); if (*pRes != ior_OK) return 0; for (pos = 0; pos < size; pos++) { c = (uchar)(pos % 251); s = FAT_fwrite (&stdio_FATFS, pRes, &c, 1, 1, pFile); if (*pRes != ior_OK) return 0; if (s != 1) { *pRes = ior_PROHIBITED; // $$$ return 0; } } if (close) { FAT_fclose (&stdio_FATFS, pRes, pFile); if (*pRes != ior_OK) return 0; } else { FAT_rewind (&stdio_FATFS, pRes, pFile); if (*pRes != ior_OK) return 0; } return 1; }
uint TestFile5(void) { tIORes res; uint result = 1; tFATFile file; tFATFSStatus FSStatus1, FSStatus2; tFATFileStatus FStatus; size_t s; FAT_statvfs (&stdio_FATFS, &res, "\\", &FSStatus1); CHK(res == ior_OK); FAT_utime (&stdio_FATFS, &res, "file1", 2107, 12, 31, 23, 59, 58); CHK(res == ior_NOT_FOUND); FAT_chmod (&stdio_FATFS, &res, "file1", mt_S_IRWXU); CHK(res == ior_NOT_FOUND); FAT_access (&stdio_FATFS, &res, "file1", am_R_OK); CHK(res == ior_NOT_FOUND); FAT_stat (&stdio_FATFS, &res, "file1", &FStatus); CHK(res == ior_NOT_FOUND); FAT_fopen (&stdio_FATFS, &res, &file, "file1", "wb"); CHK(res == ior_OK); s = FAT_fwrite (&stdio_FATFS, &res, "Blah", 1, strlen("Blah"), &file); CHK((res == ior_OK) && (s == strlen("Blah"))); FAT_fclose (&stdio_FATFS, &res, &file); CHK(res == ior_OK); FAT_access (&stdio_FATFS, &res, "file1", am_R_OK); CHK(res == ior_OK); FAT_access (&stdio_FATFS, &res, "file1", am_W_OK); CHK(res == ior_OK); FAT_access (&stdio_FATFS, &res, "file1", am_X_OK); CHK(res == ior_OK); FAT_access (&stdio_FATFS, &res, "file1", am_F_OK); CHK(res == ior_OK); FAT_access (&stdio_FATFS, &res, "file1", am_R_OK | am_X_OK); CHK(res == ior_OK); FAT_access (&stdio_FATFS, &res, "file1", am_R_OK | am_W_OK); CHK(res == ior_OK); FAT_access (&stdio_FATFS, &res, "file1", am_X_OK | am_W_OK); CHK(res == ior_OK); FAT_access (&stdio_FATFS, &res, "file1", am_R_OK | am_W_OK | am_X_OK); CHK(res == ior_OK); FAT_stat (&stdio_FATFS, &res, "file1", &FStatus); CHK(res == ior_OK); CHK(FStatus.Attribute == dea_ARCHIVE); CHK(FStatus.FileSize == strlen("Blah")); FAT_chmod (&stdio_FATFS, &res, "file1", mt_S_IRUSR | mt_S_IXUSR); CHK(res == ior_OK); FAT_stat (&stdio_FATFS, &res, "file1", &FStatus); CHK(res == ior_OK); CHK(FStatus.Attribute == (dea_ARCHIVE | dea_READ_ONLY)); CHK(FStatus.FileSize == strlen("Blah")); FAT_fopen (&stdio_FATFS, &res, &file, "file1", "rb"); CHK(res == ior_OK); s = FAT_fwrite (&stdio_FATFS, &res, "Blah", 1, strlen("Blah"), &file); CHK(res == ior_PROHIBITED); FAT_fclose (&stdio_FATFS, &res, &file); CHK(res == ior_OK); FAT_fopen (&stdio_FATFS, &res, &file, "file1", "wb"); CHK(res == ior_PROHIBITED); FAT_fopen (&stdio_FATFS, &res, &file, "file1", "rb+"); CHK(res == ior_PROHIBITED); FAT_unlink (&stdio_FATFS, &res, "file1"); CHK(res == ior_PROHIBITED); FAT_access (&stdio_FATFS, &res, "file1", am_R_OK); CHK(res == ior_OK); FAT_access (&stdio_FATFS, &res, "file1", am_W_OK); CHK(res == ior_PROHIBITED); FAT_access (&stdio_FATFS, &res, "file1", am_X_OK); CHK(res == ior_OK); FAT_access (&stdio_FATFS, &res, "file1", am_F_OK); CHK(res == ior_OK); FAT_access (&stdio_FATFS, &res, "file1", am_R_OK | am_X_OK); CHK(res == ior_OK); FAT_access (&stdio_FATFS, &res, "file1", am_R_OK | am_W_OK); CHK(res == ior_PROHIBITED); FAT_access (&stdio_FATFS, &res, "file1", am_X_OK | am_W_OK); CHK(res == ior_PROHIBITED); FAT_access (&stdio_FATFS, &res, "file1", am_R_OK | am_W_OK | am_X_OK); CHK(res == ior_PROHIBITED); FAT_utime (&stdio_FATFS, &res, "file1", 2107, 12, 31, 23, 59, 58); CHK(res == ior_PROHIBITED); FAT_chmod (&stdio_FATFS, &res, "file1", mt_S_IRWXU); CHK(res == ior_OK); FAT_utime (&stdio_FATFS, &res, "file1", 2107, 12, 31, 23, 59, 58); CHK(res == ior_OK); FAT_stat (&stdio_FATFS, &res, "file1", &FStatus); CHK(res == ior_OK); CHK(FStatus.Attribute == dea_ARCHIVE); CHK(FStatus.FileSize == strlen("Blah")); CHK(FStatus.Year == 2107); CHK(FStatus.Month == 12); CHK(FStatus.Day == 31); CHK(FStatus.Hour == 23); CHK(FStatus.Minute == 59); CHK(FStatus.Second == 58); FAT_utime (&stdio_FATFS, &res, "file1", 1980, 1, 1, 0, 0, 0); CHK(res == ior_OK); FAT_stat (&stdio_FATFS, &res, "file1", &FStatus); CHK(res == ior_OK); CHK(FStatus.Attribute == dea_ARCHIVE); CHK(FStatus.FileSize == strlen("Blah")); CHK(FStatus.Year == 1980); CHK(FStatus.Month == 1); CHK(FStatus.Day == 1); CHK(FStatus.Hour == 0); CHK(FStatus.Minute == 0); CHK(FStatus.Second == 0); FAT_unlink (&stdio_FATFS, &res, "file1"); CHK(res == ior_OK); FAT_statvfs (&stdio_FATFS, &res, "\\", &FSStatus2); CHK(res == ior_OK); CHK(FSStatus2.TotalFreeClusterCount == FSStatus1.TotalFreeClusterCount); result = 0; lend: return result; }
uint TestFile2(void) { tIORes res; uint result = 1; tFATFile file; tFATFSStatus FSStatus1, FSStatus2; char c; size_t s; uint disk; for (disk = 'a'; disk <= 'z'; disk++) { char DiskPath[]="a:\\"; char FilePath[128]; DiskPath[0] = disk; FAT_statvfs (&stdio_FATFS, &res, DiskPath, &FSStatus1); if (((res == ior_ERR_IO) && (disk < 'c')) || (res == ior_BAD_NAME)) continue; CHK(res == ior_OK); strcpy (FilePath, "a:file1"); FilePath[0] = disk; FAT_fopen (&stdio_FATFS, &res, &file, FilePath, "wb"); CHK(res == ior_OK); s = FAT_fwrite (&stdio_FATFS, &res, "A", 1, 1, &file); CHK((res == ior_OK) && (s == 1)); FAT_rewind (&stdio_FATFS, &res, &file); CHK(res == ior_OK); c = 'z'; s = FAT_fread (&stdio_FATFS, &res, &c, 1, 1, &file); CHK((res == ior_OK) && (s == 1) && (c == 'A')); FAT_fclose (&stdio_FATFS, &res, &file); CHK(res == ior_OK); strcpy (FilePath, "a:\\.\\file1"); FilePath[0] = disk; FAT_fopen (&stdio_FATFS, &res, &file, FilePath, "rb"); CHK(res == ior_OK); c = 'z'; s = FAT_fread (&stdio_FATFS, &res, &c, 1, 1, &file); CHK((res == ior_OK) && (s == 1) && (c == 'A')); FAT_fclose (&stdio_FATFS, &res, &file); CHK(res == ior_OK); strcpy (FilePath, "a:file1"); FilePath[0] = disk; FAT_fopen (&stdio_FATFS, &res, &file, FilePath, "wb"); CHK(res == ior_OK); c = 'z'; s = FAT_fread (&stdio_FATFS, &res, &c, 1, 1, &file); CHK((res == ior_OK) && (s == 0) && (c == 'z')); FAT_fclose (&stdio_FATFS, &res, &file); CHK(res == ior_OK); strcpy (FilePath, "a:file1"); FilePath[0] = disk; FAT_unlink (&stdio_FATFS, &res, FilePath); CHK(res == ior_OK); FAT_statvfs (&stdio_FATFS, &res, DiskPath, &FSStatus2); CHK(res == ior_OK); CHK(FSStatus2.TotalFreeClusterCount == FSStatus1.TotalFreeClusterCount); } result = 0; lend: return result; }