Ejemplo n.º 1
0
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;
}
Ejemplo n.º 2
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;
}
Ejemplo n.º 3
0
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;
}
Ejemplo n.º 4
0
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;
}