예제 #1
0
파일: OsEmulation.cpp 프로젝트: Kreyl/nute
//opens/create file
bool __SYSCALL OpenFile(FILE* file, const char* filename, bool bCreate)
{
    COMPILE_TIME_CHECK(sizeof(FILE)==sizeof(HANDLE));
    HANDLE hFile = CreateFile(filename, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ,
                              NULL, bCreate ? OPEN_ALWAYS : OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
    if (hFile == INVALID_HANDLE_VALUE)
        return false;
    memcpy(file, &hFile, 4);
    return true;
}
예제 #2
0
파일: OsEmulation.cpp 프로젝트: Kreyl/nute
//__SYSCALL return length written
int __SYSCALL AppendFile(FILE* file, char* buf, int len)
{
    COMPILE_TIME_CHECK(sizeof(FILE)==sizeof(HANDLE));
    HANDLE hFile;
    memcpy(&hFile, file, sizeof(FILE));

    if (!SetEndOfFile(hFile))
        return 0;

    return WriteFile(file, buf, len);
}
예제 #3
0
파일: OsEmulation.cpp 프로젝트: Kreyl/nute
//__SYSCALL returns length written
int __SYSCALL WriteFile(FILE* file, char* buf, int len)
{
    DWORD retlen;
    COMPILE_TIME_CHECK(sizeof(FILE)==sizeof(HANDLE));
    HANDLE hFile;
    memcpy(&hFile, file, sizeof(FILE));
    if (len < 0) return 0;

    BOOL res = ::WriteFile( hFile, buf, len, &retlen, NULL);
    if (res) return retlen;
    return 0;
}
예제 #4
0
int
cfs_opendir (struct cfs_dir *dirp, const char *name)
{
  DirList *dirs;
  COMPILE_TIME_CHECK(sizeof(DirList*) <= sizeof(struct cfs_dir));
  if (sdcard_efs.myCard.sectorCount == 0) return -1;
  dirs = find_free_dir_list();
  if (!dirs) return -1;
  if (ls_openDir(dirs, &sdcard_efs.myFs, (eint8*)name) != 0) {
    dirs->fs = NULL;
    return -1;
  }
  *(DirList**)dirp = dirs;
  return 0;
}