Files
Project_CTR/makerom/dir.h
T
2015-11-15 03:19:53 +08:00

70 lines
1.6 KiB
C

#pragma once
#ifdef _WIN32
#define romfs_char u16
#define fs_char wchar_t
#define fs_dirent _wdirent
#define fs_DIR _WDIR
#define fs_readdir _wreaddir
#define fs_chdir _wchdir
#define fs_opendir _wopendir
#define fs_closedir _wclosedir
#define FS_PATH_SEPARATOR '\\'
#else
#define romfs_char u16
#define fs_char char
#define fs_dirent dirent
#define fs_DIR DIR
#define fs_readdir readdir
#define fs_chdir chdir
#define fs_opendir opendir
#define fs_closedir closedir
#define FS_PATH_SEPARATOR '/'
#endif
struct romfs_file
{
fs_char *path;
romfs_char *name;
u32 namesize;
u64 size;
};
struct romfs_dir
{
fs_char *path;
romfs_char *name;
u32 namesize;
struct romfs_dir *child;
u32 m_child;
u32 u_child;
struct romfs_file *file;
u32 m_file;
u32 u_file;
};
typedef struct romfs_file romfs_file;
typedef struct romfs_dir romfs_dir;
static const romfs_char ROMFS_EMPTY_PATH[2] = { 0 };
static const fs_char FS_EMPTY_PATH[2] = { 0 };
static const fs_char FS_CURRENT_DIR_PATH[2] = { '.' };
static const fs_char FS_PARENT_DIR_PATH[3] = { '.', '.' };
u32 romfs_strlen(const romfs_char *str);
u32 fs_strlen(const fs_char *str);
int fs_strcmp(const fs_char *str1, const fs_char *str2);
FILE* fs_fopen(fs_char *path);
u64 fs_fsize(fs_char *path);
fs_char* fs_AppendToPath(const fs_char *src, const fs_char *add);
fs_char* fs_CopyStr(const fs_char *src);
romfs_char* romfs_CopyStr(const romfs_char *src);
void fs_fputs(const fs_char *str, FILE *out);
void romfs_fputs(const romfs_char *str, FILE *out);
int OpenRootDir(const char *path, romfs_dir *dir);
void PrintDir(romfs_dir *dir, u32 depth);
void FreeDir(romfs_dir *dir);