In memory of Ben “bushing” Byer, who passed away on Monday, February 8th, 2016.

NAND (SDK)

From WiiBrew
Jump to navigation Jump to search

NAND is an SDK library that provides filesystem functions.

Public functions

Signature Description
int NANDPrivateCreate(char *path, int permissions, int attributes) Creates a file. path can be a relative path, relative to the data directory of the active title. permissions is a single number that is put through a function to split it into permissions for owner/group/other. attributes is fed directly to /dev/fs.
int NANDPrivateCreateAsync(char *path, int permissions, int attributes, void (*callback)(int, void *), void *userData) Same as NANDPrivateCreate, but done asynchronously
int NANDDelete(char *path) Deletes a file or directory
int NANDRead(struct File *file, char *data, int len) Equivalent to IOS_Read, but takes a struct File instead of an fd.
int NANDReadAsync(struct File *file, char *data, int len, void (*callback)(int, void *), void *userData) Asynchronous version of NANDRead
int NANDWrite(struct File *file, char *data, int len) Equivalent to IOS_Write, but takes a struct File instead of an fd.
int NANDWriteAsync(struct File *file, char *data, int len, void (*callback)(int, void *), void *userData) Asynchronous version of NANDWrite
int NANDSeekAsync(struct File *file, int offset, SeekMode mode, void (*callback)(int, void *), void *userData) Seeks a file asynchronously using IOS_Seek
int NANDPrivateCreateDirAsync(char *path, int permissions, int attributes, void *userData) Same as NANDPrivateCreateAsync, but creates a directory
int NANDOpen(char *path, struct File *file, int mode) Opens the file with IOS_Open and initializes file. path can be a relative path, relative to the current title's data directory. Returns error -102 when trying to open any path starting with /shared2.
int NANDPrivateOpen(char *path, struct File *file, int mode) Same as NANDOpen, except files in /shared2 are allowed.
int NANDPrivateOpenAsync(char *path, struct File *file, int mode, void (*callback)(int, void *), void *userData) Same as NANDOpenAsync, without the /shared2 check.
int NANDClose(struct File *file) Calls IOS_Close and marks file as closed.
int NANDCloseAsync(struct File *file, void (*callback)(int, void *), void *userData) Calls IOS_CloseAsync and marks file as closed. Also sets unknownAsync to 7, although it is not known what this field actually does.

File struct

struct File {
	s32 fd;
	u8 unknown[0x85];
	u8 unknownAsync; // Set to 2 if the file is opened asynchronously, unset otherwise. Set to 7 if closed asynchronously.
	u8 status; // 1 = open, 2 = closed
}