NAND (SDK): Difference between revisions

From WiiBrew
Jump to navigation Jump to search
Hallowizer (talk | contribs)
Found official names for these functions in system menu 2.0
Hallowizer (talk | contribs)
Public functions: Added the rest of the funcctions present in the nand boot program
Line 6: Line 6:
! Description
! Description
|-
|-
| <code>int NANDCreate(char *path, int permissions, int attributes)</code>
| <code>int NANDPrivateCreate(char *path, int permissions, int attributes)</code>
| Creates a file. <code>path</code> can be a relative path, relative to the data directory of the active [[title]]. <code>permissions</code> is a single number that is put through a function to split it into permissions for owner/group/other. <code>attributes</code> is fed directly to [[:/dev/fs]].
| Creates a file. <code>path</code> can be a relative path, relative to the data directory of the active [[title]]. <code>permissions</code> is a single number that is put through a function to split it into permissions for owner/group/other. <code>attributes</code> is fed directly to [[:/dev/fs]].
|-
| <code>int NANDPrivateCreateAsync(char *path, int permissions, int attributes, void (*callback)(int, void *), void *userData)</code>
| Same as <code>NANDPrivateCreate</code>, but done asynchronously
|-
| <code>int NANDDelete(char *path)</code>
| Deletes a file or directory
|-
|-
| <code>int NANDRead(struct File *file, char *data, int len)</code>
| <code>int NANDRead(struct File *file, char *data, int len)</code>
Line 17: Line 23:
| <code>int NANDWrite(struct File *file, char *data, int len)</code>
| <code>int NANDWrite(struct File *file, char *data, int len)</code>
| Equivalent to IOS_Write, but takes a <code>struct File</code> instead of an <code>fd</code>.
| Equivalent to IOS_Write, but takes a <code>struct File</code> instead of an <code>fd</code>.
|-
| <code>int NANDWriteAsync(struct File *file, char *data, int len, void (*callback)(int, void *), void *userData)</code>
| Asynchronous version of <code>NANDWrite</code>
|-
| <code>int NANDSeekAsync(struct File *file, int offset, SeekMode mode, void (*callback)(int, void *), void *userData)</code>
| Seeks a file asynchronously using IOS_Seek
|-
| <code>int NANDPrivateCreateDirAsync(char *path, int permissions, int attributes, void *userData)</code>
| Same as <code>NANDPrivateCreateAsync</code>, but creates a directory
|-
|-
| <code>int NANDOpen(char *path, struct File *file, int mode)</code>
| <code>int NANDOpen(char *path, struct File *file, int mode)</code>

Revision as of 03:11, 5 January 2022

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
}