diff --git a/libctru/include/3ds/services/fs.h b/libctru/include/3ds/services/fs.h index a20fb9b..1e44f49 100644 --- a/libctru/include/3ds/services/fs.h +++ b/libctru/include/3ds/services/fs.h @@ -103,28 +103,28 @@ typedef struct /*! Directory entry */ typedef struct { - // 0x00 - u16 name[0x106]; //!< UTF-16 encoded name - // 0x20C - u8 shortName[0x09]; //!< 8.3 file name - // 0x215 - u8 unknown1; //!< ??? - // 0x216 - u8 shortExt[0x04]; //!< 8.3 file extension (set to spaces for directories) - // 0x21A - u8 unknown2; //!< ??? - // 0x21B - u8 unknown3; //!< ??? - // 0x21C - u8 isDirectory; //!< directory bit - // 0x21D - u8 isHidden; //!< hidden bit - // 0x21E - u8 isArchive; //!< archive bit - // 0x21F - u8 isReadOnly; //!< read-only bit - // 0x220 - u64 fileSize; //!< file size + // 0x00 + u16 name[0x106]; //!< UTF-16 encoded name + // 0x20C + u8 shortName[0x09]; //!< 8.3 file name + // 0x215 + u8 unknown1; //!< ??? + // 0x216 + u8 shortExt[0x04]; //!< 8.3 file extension (set to spaces for directories) + // 0x21A + u8 unknown2; //!< ??? + // 0x21B + u8 unknown3; //!< ??? + // 0x21C + u8 isDirectory; //!< directory bit + // 0x21D + u8 isHidden; //!< hidden bit + // 0x21E + u8 isArchive; //!< archive bit + // 0x21F + u8 isReadOnly; //!< read-only bit + // 0x220 + u64 fileSize; //!< file size } FS_dirent; Result fsInit(void); diff --git a/libctru/include/3ds/services/hid.h b/libctru/include/3ds/services/hid.h index 87a99cf..5b0cef8 100644 --- a/libctru/include/3ds/services/hid.h +++ b/libctru/include/3ds/services/hid.h @@ -6,29 +6,29 @@ typedef enum { - KEY_A = BIT(0), - KEY_B = BIT(1), - KEY_SELECT = BIT(2), - KEY_START = BIT(3), - KEY_DRIGHT = BIT(4), - KEY_DLEFT = BIT(5), - KEY_DUP = BIT(6), - KEY_DDOWN = BIT(7), - KEY_R = BIT(8), - KEY_L = BIT(9), - KEY_X = BIT(10), - KEY_Y = BIT(11), - KEY_ZL = BIT(14), // (new 3DS only) - KEY_ZR = BIT(15), // (new 3DS only) - KEY_TOUCH = BIT(20), // Not actually provided by HID + KEY_A = BIT(0), + KEY_B = BIT(1), + KEY_SELECT = BIT(2), + KEY_START = BIT(3), + KEY_DRIGHT = BIT(4), + KEY_DLEFT = BIT(5), + KEY_DUP = BIT(6), + KEY_DDOWN = BIT(7), + KEY_R = BIT(8), + KEY_L = BIT(9), + KEY_X = BIT(10), + KEY_Y = BIT(11), + KEY_ZL = BIT(14), // (new 3DS only) + KEY_ZR = BIT(15), // (new 3DS only) + KEY_TOUCH = BIT(20), // Not actually provided by HID KEY_CSTICK_RIGHT = BIT(24), // c-stick (new 3DS only) KEY_CSTICK_LEFT = BIT(25), // c-stick (new 3DS only) KEY_CSTICK_UP = BIT(26), // c-stick (new 3DS only) KEY_CSTICK_DOWN = BIT(27), // c-stick (new 3DS only) - KEY_CPAD_RIGHT = BIT(28), // circle pad - KEY_CPAD_LEFT = BIT(29), // circle pad - KEY_CPAD_UP = BIT(30), // circle pad - KEY_CPAD_DOWN = BIT(31), // circle pad + KEY_CPAD_RIGHT = BIT(28), // circle pad + KEY_CPAD_LEFT = BIT(29), // circle pad + KEY_CPAD_UP = BIT(30), // circle pad + KEY_CPAD_DOWN = BIT(31), // circle pad // Generic catch-all directions KEY_UP = KEY_DUP | KEY_CPAD_UP, diff --git a/libctru/include/3ds/svc.h b/libctru/include/3ds/svc.h index 271408f..7caba79 100644 --- a/libctru/include/3ds/svc.h +++ b/libctru/include/3ds/svc.h @@ -24,14 +24,14 @@ typedef enum { } MemPerm; typedef struct { - u32 base_addr; - u32 size; - u32 perm; - u32 state; + u32 base_addr; + u32 size; + u32 perm; + u32 state; } MemInfo; typedef struct { - u32 flags; + u32 flags; } PageInfo; typedef enum { diff --git a/libctru/include/3ds/util/rbtree.h b/libctru/include/3ds/util/rbtree.h index 73110f0..4acbac3 100644 --- a/libctru/include/3ds/util/rbtree.h +++ b/libctru/include/3ds/util/rbtree.h @@ -14,15 +14,15 @@ typedef int (*rbtree_node_comparator_t)(const rbtree_node_t *lhs, const rbtree_node_t *rhs); struct rbtree_node { - uintptr_t parent_color; - rbtree_node_t *child[2]; + uintptr_t parent_color; + rbtree_node_t *child[2]; }; struct rbtree { - rbtree_node_t *root; - rbtree_node_comparator_t comparator; - size_t size; + rbtree_node_t *root; + rbtree_node_comparator_t comparator; + size_t size; }; #ifdef __cplusplus diff --git a/libctru/source/gfx.c b/libctru/source/gfx.c index 0688804..ed29380 100644 --- a/libctru/source/gfx.c +++ b/libctru/source/gfx.c @@ -31,17 +31,17 @@ void gfxSet3D(bool enable) } void gfxSetScreenFormat(gfxScreen_t screen, GSP_FramebufferFormats format) { - if(screen==GFX_TOP) - topFormat = format; - else - botFormat = format; + if(screen==GFX_TOP) + topFormat = format; + else + botFormat = format; } GSP_FramebufferFormats gfxGetScreenFormat(gfxScreen_t screen) { - if(screen==GFX_TOP) - return topFormat; - else - return botFormat; + if(screen==GFX_TOP) + return topFormat; + else + return botFormat; } void gfxSetDoubleBuffering( gfxScreen_t screen, bool doubleBuffering) { @@ -49,18 +49,18 @@ void gfxSetDoubleBuffering( gfxScreen_t screen, bool doubleBuffering) { } static u32 __get_bytes_per_pixel(GSP_FramebufferFormats format) { - switch(format) { - case GSP_RGBA8_OES: - return 4; - case GSP_BGR8_OES: - return 3; - case GSP_RGB565_OES: - case GSP_RGB5_A1_OES: - case GSP_RGBA4_OES: - return 2; - } + switch(format) { + case GSP_RGBA8_OES: + return 4; + case GSP_BGR8_OES: + return 3; + case GSP_RGB565_OES: + case GSP_RGB5_A1_OES: + case GSP_RGBA4_OES: + return 2; + } - return 3; + return 3; } void gfxSetFramebufferInfo(gfxScreen_t screen, u8 id) diff --git a/libctru/source/sdmc_dev.c b/libctru/source/sdmc_dev.c index d02c962..4560151 100644 --- a/libctru/source/sdmc_dev.c +++ b/libctru/source/sdmc_dev.c @@ -46,59 +46,59 @@ static int sdmc_fchmod(struct _reent *r, int fd, mode_t mode); /*! Open file struct */ typedef struct { - Handle fd; /*! CTRU handle */ - int flags; /*! Flags used in open(2) */ - u64 offset; /*! Current file offset */ + Handle fd; /*! CTRU handle */ + int flags; /*! Flags used in open(2) */ + u64 offset; /*! Current file offset */ } sdmc_file_t; /*! Open directory struct */ typedef struct { - Handle fd; /*! CTRU handle */ - FS_dirent entry_data; /*! Temporary storage for reading entries */ + Handle fd; /*! CTRU handle */ + FS_dirent entry_data; /*! Temporary storage for reading entries */ } sdmc_dir_t; /*! SDMC devoptab */ static devoptab_t sdmc_devoptab = { - .name = "sdmc", - .structSize = sizeof(sdmc_file_t), - .open_r = sdmc_open, - .close_r = sdmc_close, - .write_r = sdmc_write, - .read_r = sdmc_read, - .seek_r = sdmc_seek, - .fstat_r = sdmc_fstat, - .stat_r = sdmc_stat, - .link_r = sdmc_link, - .unlink_r = sdmc_unlink, - .chdir_r = sdmc_chdir, - .rename_r = sdmc_rename, - .mkdir_r = sdmc_mkdir, - .dirStateSize = sizeof(sdmc_dir_t), - .diropen_r = sdmc_diropen, - .dirreset_r = sdmc_dirreset, - .dirnext_r = sdmc_dirnext, - .dirclose_r = sdmc_dirclose, - .statvfs_r = sdmc_statvfs, - .ftruncate_r = sdmc_ftruncate, - .fsync_r = sdmc_fsync, - .deviceData = NULL, - .chmod_r = sdmc_chmod, - .fchmod_r = sdmc_fchmod, + .name = "sdmc", + .structSize = sizeof(sdmc_file_t), + .open_r = sdmc_open, + .close_r = sdmc_close, + .write_r = sdmc_write, + .read_r = sdmc_read, + .seek_r = sdmc_seek, + .fstat_r = sdmc_fstat, + .stat_r = sdmc_stat, + .link_r = sdmc_link, + .unlink_r = sdmc_unlink, + .chdir_r = sdmc_chdir, + .rename_r = sdmc_rename, + .mkdir_r = sdmc_mkdir, + .dirStateSize = sizeof(sdmc_dir_t), + .diropen_r = sdmc_diropen, + .dirreset_r = sdmc_dirreset, + .dirnext_r = sdmc_dirnext, + .dirclose_r = sdmc_dirclose, + .statvfs_r = sdmc_statvfs, + .ftruncate_r = sdmc_ftruncate, + .fsync_r = sdmc_fsync, + .deviceData = NULL, + .chmod_r = sdmc_chmod, + .fchmod_r = sdmc_fchmod, }; /*! SDMC archive handle */ static FS_archive sdmcArchive = { - .id = ARCH_SDMC, - .lowPath = - { - .type = PATH_EMPTY, - .size = 1, - .data = (u8*)"", - }, + .id = ARCH_SDMC, + .lowPath = + { + .type = PATH_EMPTY, + .size = 1, + .data = (u8*)"", + }, }; /*! @endcond */ @@ -108,22 +108,22 @@ static char __fixedpath[PATH_MAX+1]; static const char *sdmc_fixpath(const char *path) { - // Move the path pointer to the start of the actual path - if (strchr (path, ':') != NULL) - { - path = strchr (path, ':') + 1; - } + // Move the path pointer to the start of the actual path + if (strchr (path, ':') != NULL) + { + path = strchr (path, ':') + 1; + } - if (strchr (path, ':') != NULL) return NULL; + if (strchr (path, ':') != NULL) return NULL; - if (path[0]=='/') return path; + if (path[0]=='/') return path; - strncpy(__fixedpath,__cwd,PATH_MAX); - strncat(__fixedpath,path,PATH_MAX); - __fixedpath[PATH_MAX] = 0; + strncpy(__fixedpath,__cwd,PATH_MAX); + strncat(__fixedpath,path,PATH_MAX); + __fixedpath[PATH_MAX] = 0; - return __fixedpath; + return __fixedpath; } @@ -135,54 +135,54 @@ static bool sdmcInitialised = false; /*! Initialize SDMC device */ Result sdmcInit(void) { - Result rc = 0; + Result rc = 0; - if (sdmcInitialised) return rc; + if (sdmcInitialised) return rc; - rc = FSUSER_OpenArchive(NULL, &sdmcArchive); + rc = FSUSER_OpenArchive(NULL, &sdmcArchive); - if(rc == 0) - { + if(rc == 0) + { - int dev = AddDevice(&sdmc_devoptab); + int dev = AddDevice(&sdmc_devoptab); - if (dev != -1) { - setDefaultDevice(dev); - if (__system_argc != 0 && __system_argv[0] != NULL) - { - if (FindDevice(__system_argv[0]) == dev) - { - strncpy(__fixedpath,__system_argv[0],PATH_MAX); - char *last_slash = strrchr(__fixedpath,'/'); - if (last_slash != NULL) { - last_slash[0] = 0; - chdir(__fixedpath); - } - } - } - } - } + if (dev != -1) { + setDefaultDevice(dev); + if (__system_argc != 0 && __system_argv[0] != NULL) + { + if (FindDevice(__system_argv[0]) == dev) + { + strncpy(__fixedpath,__system_argv[0],PATH_MAX); + char *last_slash = strrchr(__fixedpath,'/'); + if (last_slash != NULL) { + last_slash[0] = 0; + chdir(__fixedpath); + } + } + } + } + } - sdmcInitialised = true; + sdmcInitialised = true; - return rc; + return rc; } /*! Clean up SDMC device */ Result sdmcExit(void) { - Result rc = 0; + Result rc = 0; - if (!sdmcInitialised) return rc; + if (!sdmcInitialised) return rc; - rc = FSUSER_CloseArchive(NULL, &sdmcArchive); - if(rc == 0) - RemoveDevice("sdmc"); + rc = FSUSER_CloseArchive(NULL, &sdmcArchive); + if(rc == 0) + RemoveDevice("sdmc"); - sdmcInitialised = false; + sdmcInitialised = false; - return rc; + return rc; } /*! Open a file @@ -203,98 +203,98 @@ sdmc_open(struct _reent *r, int flags, int mode) { - Handle fd; - Result rc; - u32 sdmc_flags = 0; - u32 attributes = FS_ATTRIBUTE_NONE; - const char *pathptr = NULL; + Handle fd; + Result rc; + u32 sdmc_flags = 0; + u32 attributes = FS_ATTRIBUTE_NONE; + const char *pathptr = NULL; - pathptr = sdmc_fixpath(path); + pathptr = sdmc_fixpath(path); - if(pathptr==NULL) - { - r->_errno=EINVAL; - return -1; - } + if(pathptr==NULL) + { + r->_errno=EINVAL; + return -1; + } - /* get pointer to our data */ - sdmc_file_t *file = (sdmc_file_t*)fileStruct; + /* get pointer to our data */ + sdmc_file_t *file = (sdmc_file_t*)fileStruct; - /* check access mode */ - switch(flags & O_ACCMODE) - { - /* read-only: do not allow O_APPEND */ - case O_RDONLY: - sdmc_flags |= FS_OPEN_READ; - if(flags & O_APPEND) - { - r->_errno = EINVAL; - return -1; - } - break; + /* check access mode */ + switch(flags & O_ACCMODE) + { + /* read-only: do not allow O_APPEND */ + case O_RDONLY: + sdmc_flags |= FS_OPEN_READ; + if(flags & O_APPEND) + { + r->_errno = EINVAL; + return -1; + } + break; - /* write-only */ - case O_WRONLY: - sdmc_flags |= FS_OPEN_WRITE; - break; + /* write-only */ + case O_WRONLY: + sdmc_flags |= FS_OPEN_WRITE; + break; - /* read and write */ - case O_RDWR: - sdmc_flags |= (FS_OPEN_READ | FS_OPEN_WRITE); - break; + /* read and write */ + case O_RDWR: + sdmc_flags |= (FS_OPEN_READ | FS_OPEN_WRITE); + break; - /* an invalid option was supplied */ - default: - r->_errno = EINVAL; - return -1; - } + /* an invalid option was supplied */ + default: + r->_errno = EINVAL; + return -1; + } - /* create file */ - if(flags & O_CREAT) - sdmc_flags |= FS_OPEN_CREATE; + /* create file */ + if(flags & O_CREAT) + sdmc_flags |= FS_OPEN_CREATE; - /* Test O_EXCL. */ - if((flags & O_CREAT) && (flags & O_EXCL)) - { - rc = FSUSER_CreateFile(NULL, sdmcArchive, FS_makePath(PATH_CHAR, pathptr), 0); - if(rc != 0) - { - r->_errno = rc; - if(rc == 0x82044BE) - r->_errno = EEXIST; - if(rc == 0x86044D2) - r->_errno = ENOSPC; - return -1; - } - } + /* Test O_EXCL. */ + if((flags & O_CREAT) && (flags & O_EXCL)) + { + rc = FSUSER_CreateFile(NULL, sdmcArchive, FS_makePath(PATH_CHAR, pathptr), 0); + if(rc != 0) + { + r->_errno = rc; + if(rc == 0x82044BE) + r->_errno = EEXIST; + if(rc == 0x86044D2) + r->_errno = ENOSPC; + return -1; + } + } - /* set attributes */ - /*if(!(mode & S_IWUSR)) - attributes |= FS_ATTRIBUTE_READONLY;*/ + /* set attributes */ + /*if(!(mode & S_IWUSR)) + attributes |= FS_ATTRIBUTE_READONLY;*/ - /* open the file */ - rc = FSUSER_OpenFile(NULL, &fd, sdmcArchive, FS_makePath(PATH_CHAR, pathptr), + /* open the file */ + rc = FSUSER_OpenFile(NULL, &fd, sdmcArchive, FS_makePath(PATH_CHAR, pathptr), sdmc_flags, attributes); - if(rc == 0) - { - if((flags & O_ACCMODE) != O_RDONLY && (flags & O_TRUNC)) - { - rc = FSFILE_SetSize(fd, 0); - if(rc != 0) - { - FSFILE_Close(fd); - r->_errno = rc; - return -1; - } - } - file->fd = fd; - file->flags = (flags & (O_ACCMODE|O_APPEND|O_SYNC)); - file->offset = 0; - return 0; - } + if(rc == 0) + { + if((flags & O_ACCMODE) != O_RDONLY && (flags & O_TRUNC)) + { + rc = FSFILE_SetSize(fd, 0); + if(rc != 0) + { + FSFILE_Close(fd); + r->_errno = rc; + return -1; + } + } + file->fd = fd; + file->flags = (flags & (O_ACCMODE|O_APPEND|O_SYNC)); + file->offset = 0; + return 0; + } - r->_errno = rc; - return -1; + r->_errno = rc; + return -1; } /*! Close an open file @@ -309,17 +309,17 @@ static int sdmc_close(struct _reent *r, int fd) { - Result rc; + Result rc; - /* get pointer to our data */ - sdmc_file_t *file = (sdmc_file_t*)fd; + /* get pointer to our data */ + sdmc_file_t *file = (sdmc_file_t*)fd; - rc = FSFILE_Close(file->fd); - if(rc == 0) - return 0; + rc = FSFILE_Close(file->fd); + if(rc == 0) + return 0; - r->_errno = rc; - return -1; + r->_errno = rc; + return -1; } /*! Write to an open file @@ -338,55 +338,55 @@ sdmc_write(struct _reent *r, const char *ptr, size_t len) { - Result rc; - u32 bytes; - u32 sync = 0; - u64 offset; + Result rc; + u32 bytes; + u32 sync = 0; + u64 offset; - /* get pointer to our data */ - sdmc_file_t *file = (sdmc_file_t*)fd; + /* get pointer to our data */ + sdmc_file_t *file = (sdmc_file_t*)fd; - /* check that the file was opened with write access */ - if((file->flags & O_ACCMODE) == O_RDONLY) - { - r->_errno = EBADF; - return -1; - } + /* check that the file was opened with write access */ + if((file->flags & O_ACCMODE) == O_RDONLY) + { + r->_errno = EBADF; + return -1; + } - /* check if this is synchronous or not */ - if(file->flags & O_SYNC) - sync = 0x10001; + /* check if this is synchronous or not */ + if(file->flags & O_SYNC) + sync = 0x10001; - /* initialize offset */ - offset = file->offset; - if(file->flags & O_APPEND) - { - /* append means write from the end of the file */ - rc = FSFILE_GetSize(file->fd, &offset); - if(rc != 0) - { - r->_errno = rc; - return -1; - } - } + /* initialize offset */ + offset = file->offset; + if(file->flags & O_APPEND) + { + /* append means write from the end of the file */ + rc = FSFILE_GetSize(file->fd, &offset); + if(rc != 0) + { + r->_errno = rc; + return -1; + } + } - /* TODO: Copy to internal buffer and write in chunks. - * You cannot write from read-only memory. - */ + /* TODO: Copy to internal buffer and write in chunks. + * You cannot write from read-only memory. + */ - /* write the data */ - rc = FSFILE_Write(file->fd, &bytes, offset, (u32*)ptr, (u32)len, sync); - if(rc == 0) - { - /* update current file offset; if O_APPEND, this moves it to the - * new end-of-file - */ - file->offset = offset + bytes; - return (ssize_t)bytes; - } + /* write the data */ + rc = FSFILE_Write(file->fd, &bytes, offset, (u32*)ptr, (u32)len, sync); + if(rc == 0) + { + /* update current file offset; if O_APPEND, this moves it to the + * new end-of-file + */ + file->offset = offset + bytes; + return (ssize_t)bytes; + } - r->_errno = rc; - return -1; + r->_errno = rc; + return -1; } /*! Read from an open file @@ -405,30 +405,30 @@ sdmc_read(struct _reent *r, char *ptr, size_t len) { - Result rc; - u32 bytes; + Result rc; + u32 bytes; - /* get pointer to our data */ - sdmc_file_t *file = (sdmc_file_t*)fd; + /* get pointer to our data */ + sdmc_file_t *file = (sdmc_file_t*)fd; - /* check that the file was opened with read access */ - if((file->flags & O_ACCMODE) == O_WRONLY) - { - r->_errno = EBADF; - return -1; - } + /* check that the file was opened with read access */ + if((file->flags & O_ACCMODE) == O_WRONLY) + { + r->_errno = EBADF; + return -1; + } - /* read the data */ - rc = FSFILE_Read(file->fd, &bytes, file->offset, (u32*)ptr, (u32)len); - if(rc == 0) - { - /* update current file offset */ - file->offset += bytes; - return (ssize_t)bytes; - } + /* read the data */ + rc = FSFILE_Read(file->fd, &bytes, file->offset, (u32*)ptr, (u32)len); + if(rc == 0) + { + /* update current file offset */ + file->offset += bytes; + return (ssize_t)bytes; + } - r->_errno = rc; - return -1; + r->_errno = rc; + return -1; } /*! Update an open file's current offset @@ -447,52 +447,52 @@ sdmc_seek(struct _reent *r, off_t pos, int whence) { - Result rc; - u64 offset; + Result rc; + u64 offset; - /* get pointer to our data */ - sdmc_file_t *file = (sdmc_file_t*)fd; + /* get pointer to our data */ + sdmc_file_t *file = (sdmc_file_t*)fd; - /* find the offset to see from */ - switch(whence) - { - /* set absolute position; start offset is 0 */ - case SEEK_SET: - offset = 0; - break; + /* find the offset to see from */ + switch(whence) + { + /* set absolute position; start offset is 0 */ + case SEEK_SET: + offset = 0; + break; - /* set position relative to the current position */ - case SEEK_CUR: - offset = file->offset; - break; + /* set position relative to the current position */ + case SEEK_CUR: + offset = file->offset; + break; - /* set position relative to the end of the file */ - case SEEK_END: - rc = FSFILE_GetSize(file->fd, &offset); - if(rc != 0) - { - r->_errno = rc; - return -1; - } - break; + /* set position relative to the end of the file */ + case SEEK_END: + rc = FSFILE_GetSize(file->fd, &offset); + if(rc != 0) + { + r->_errno = rc; + return -1; + } + break; - /* an invalid option was provided */ - default: - r->_errno = EINVAL; - return -1; - } + /* an invalid option was provided */ + default: + r->_errno = EINVAL; + return -1; + } - /* TODO: A better check that prevents overflow. */ - if(pos < 0 && offset < -pos) - { - /* don't allow seek to before the beginning of the file */ - r->_errno = EINVAL; - return -1; - } + /* TODO: A better check that prevents overflow. */ + if(pos < 0 && offset < -pos) + { + /* don't allow seek to before the beginning of the file */ + r->_errno = EINVAL; + return -1; + } - /* update the current offset */ - file->offset = offset + pos; - return file->offset; + /* update the current offset */ + file->offset = offset + pos; + return file->offset; } /*! Get file stats from an open file @@ -509,8 +509,8 @@ sdmc_fstat(struct _reent *r, int fd, struct stat *st) { - r->_errno = ENOSYS; - return -1; + r->_errno = ENOSYS; + return -1; } /*! Get file stats @@ -527,49 +527,49 @@ sdmc_stat(struct _reent *r, const char *file, struct stat *st) { - Handle fd; - Result rc; - const char *pathptr = NULL; + Handle fd; + Result rc; + const char *pathptr = NULL; - pathptr = sdmc_fixpath(file); + pathptr = sdmc_fixpath(file); - if(pathptr==NULL) - { - r->_errno=EINVAL; - return -1; - } + if(pathptr==NULL) + { + r->_errno=EINVAL; + return -1; + } - if( (rc = FSUSER_OpenFile(NULL, &fd, sdmcArchive, FS_makePath(PATH_CHAR, pathptr), + if( (rc = FSUSER_OpenFile(NULL, &fd, sdmcArchive, FS_makePath(PATH_CHAR, pathptr), FS_OPEN_READ, FS_ATTRIBUTE_NONE))==0) - { - u64 tmpsize = 0; - rc = FSFILE_GetSize(fd, &tmpsize); + { + u64 tmpsize = 0; + rc = FSFILE_GetSize(fd, &tmpsize); - FSFILE_Close(fd); + FSFILE_Close(fd); - if(rc==0) - { - memset(st, 0, sizeof(struct stat)); - st->st_size = (off_t)tmpsize; - st->st_nlink = 1; - st->st_uid = 1; - st->st_gid = 2; - st->st_mode = S_IFREG | S_IWUSR | S_IWGRP | S_IWOTH | S_IRUSR | S_IRGRP | S_IROTH; - return 0; - } - } - if( (rc = FSUSER_OpenDirectory(NULL, &fd, sdmcArchive, FS_makePath(PATH_CHAR, pathptr))) == 0 ) - { - memset(st, 0, sizeof(struct stat)); - st->st_nlink = 1; - st->st_uid = 1; - st->st_gid = 2; - st->st_mode = S_IFDIR | S_IWUSR | S_IWGRP | S_IWOTH | S_IRUSR | S_IRGRP | S_IROTH; - return 0; - } + if(rc==0) + { + memset(st, 0, sizeof(struct stat)); + st->st_size = (off_t)tmpsize; + st->st_nlink = 1; + st->st_uid = 1; + st->st_gid = 2; + st->st_mode = S_IFREG | S_IWUSR | S_IWGRP | S_IWOTH | S_IRUSR | S_IRGRP | S_IROTH; + return 0; + } + } + if( (rc = FSUSER_OpenDirectory(NULL, &fd, sdmcArchive, FS_makePath(PATH_CHAR, pathptr))) == 0 ) + { + memset(st, 0, sizeof(struct stat)); + st->st_nlink = 1; + st->st_uid = 1; + st->st_gid = 2; + st->st_mode = S_IFDIR | S_IWUSR | S_IWGRP | S_IWOTH | S_IRUSR | S_IRGRP | S_IROTH; + return 0; + } - r->_errno = EBADF; - return -1; + r->_errno = EBADF; + return -1; } /*! Hard link a file @@ -586,8 +586,8 @@ sdmc_link(struct _reent *r, const char *existing, const char *newLink) { - r->_errno = ENOSYS; - return -1; + r->_errno = ENOSYS; + return -1; } /*! Unlink a file @@ -602,8 +602,8 @@ static int sdmc_unlink(struct _reent *r, const char *name) { - r->_errno = ENOSYS; - return -1; + r->_errno = ENOSYS; + return -1; } /*! Change current working directory @@ -618,31 +618,31 @@ static int sdmc_chdir(struct _reent *r, const char *name) { - Handle fd; - Result rc; - const char *pathptr = NULL; + Handle fd; + Result rc; + const char *pathptr = NULL; - pathptr = sdmc_fixpath(name); + pathptr = sdmc_fixpath(name); - if(pathptr==NULL) - { - r->_errno=EINVAL; - return -1; - } + if(pathptr==NULL) + { + r->_errno=EINVAL; + return -1; + } - rc = FSUSER_OpenDirectory(NULL, &fd, sdmcArchive, FS_makePath(PATH_CHAR, pathptr)); - if(rc == 0) - { - FSDIR_Close(fd); - strncpy(__cwd,pathptr,PATH_MAX); - } - else - { - r->_errno=EINVAL; - return -1; - } + rc = FSUSER_OpenDirectory(NULL, &fd, sdmcArchive, FS_makePath(PATH_CHAR, pathptr)); + if(rc == 0) + { + FSDIR_Close(fd); + strncpy(__cwd,pathptr,PATH_MAX); + } + else + { + r->_errno=EINVAL; + return -1; + } - return 0; + return 0; } @@ -660,8 +660,8 @@ sdmc_rename(struct _reent *r, const char *oldName, const char *newName) { - r->_errno = ENOSYS; - return -1; + r->_errno = ENOSYS; + return -1; } /*! Create a directory @@ -678,25 +678,25 @@ sdmc_mkdir(struct _reent *r, const char *path, int mode) { - Result rc; - const char *pathptr = NULL; + Result rc; + const char *pathptr = NULL; - pathptr = sdmc_fixpath(path); + pathptr = sdmc_fixpath(path); - if(pathptr==NULL) - { - r->_errno=EINVAL; - return -1; - } + if(pathptr==NULL) + { + r->_errno=EINVAL; + return -1; + } - /* TODO: Use mode to set directory attributes. */ + /* TODO: Use mode to set directory attributes. */ - rc = FSUSER_CreateDirectory(NULL, sdmcArchive, FS_makePath(PATH_CHAR, pathptr)); - if(rc == 0) - return 0; + rc = FSUSER_CreateDirectory(NULL, sdmcArchive, FS_makePath(PATH_CHAR, pathptr)); + if(rc == 0) + return 0; - r->_errno = ENOSYS; - return -1; + r->_errno = ENOSYS; + return -1; } /*! Open a directory @@ -713,32 +713,32 @@ sdmc_diropen(struct _reent *r, DIR_ITER *dirState, const char *path) { - Handle fd; - Result rc; - const char *pathptr = NULL; + Handle fd; + Result rc; + const char *pathptr = NULL; - pathptr = sdmc_fixpath(path); + pathptr = sdmc_fixpath(path); - if(pathptr==NULL) - { - r->_errno=EINVAL; - return NULL; - } + if(pathptr==NULL) + { + r->_errno=EINVAL; + return NULL; + } - /* get pointer to our data */ - sdmc_dir_t *dir = (sdmc_dir_t*)(dirState->dirStruct); + /* get pointer to our data */ + sdmc_dir_t *dir = (sdmc_dir_t*)(dirState->dirStruct); - /* open the directory */ - rc = FSUSER_OpenDirectory(NULL, &fd, sdmcArchive, FS_makePath(PATH_CHAR, pathptr)); - if(rc == 0) - { - dir->fd = fd; - memset(&dir->entry_data, 0, sizeof(dir->entry_data)); - return dirState; - } + /* open the directory */ + rc = FSUSER_OpenDirectory(NULL, &fd, sdmcArchive, FS_makePath(PATH_CHAR, pathptr)); + if(rc == 0) + { + dir->fd = fd; + memset(&dir->entry_data, 0, sizeof(dir->entry_data)); + return dirState; + } - r->_errno = rc; - return NULL; + r->_errno = rc; + return NULL; } /*! Reset an open directory to its intial state @@ -753,8 +753,8 @@ static int sdmc_dirreset(struct _reent *r, DIR_ITER *dirState) { - r->_errno = ENOSYS; - return -1; + r->_errno = ENOSYS; + return -1; } /*! Fetch the next entry of an open directory @@ -773,42 +773,42 @@ sdmc_dirnext(struct _reent *r, char *filename, struct stat *filestat) { - Result rc; - u32 entries; - u16 *name; + Result rc; + u32 entries; + u16 *name; - /* get pointer to our data */ - sdmc_dir_t *dir = (sdmc_dir_t*)(dirState->dirStruct); + /* get pointer to our data */ + sdmc_dir_t *dir = (sdmc_dir_t*)(dirState->dirStruct); - /* fetch the next entry */ - rc = FSDIR_Read(dir->fd, &entries, 1, &dir->entry_data); - if(rc == 0) - { - if(entries == 0) - { - /* there are no more entries; ENOENT signals end-of-directory */ - r->_errno = ENOENT; - return -1; - } + /* fetch the next entry */ + rc = FSDIR_Read(dir->fd, &entries, 1, &dir->entry_data); + if(rc == 0) + { + if(entries == 0) + { + /* there are no more entries; ENOENT signals end-of-directory */ + r->_errno = ENOENT; + return -1; + } - /* fill in the stat info */ - filestat->st_ino = 0; - if(dir->entry_data.isDirectory) - filestat->st_mode = S_IFDIR; - else - filestat->st_mode = S_IFREG; + /* fill in the stat info */ + filestat->st_ino = 0; + if(dir->entry_data.isDirectory) + filestat->st_mode = S_IFDIR; + else + filestat->st_mode = S_IFREG; - /* copy the name */ - name = dir->entry_data.name; - while(*name) - *filename++ = *name++; - *filename = 0; + /* copy the name */ + name = dir->entry_data.name; + while(*name) + *filename++ = *name++; + *filename = 0; - return 0; - } + return 0; + } - r->_errno = rc; - return -1; + r->_errno = rc; + return -1; } /*! Close an open directory @@ -823,18 +823,18 @@ static int sdmc_dirclose(struct _reent *r, DIR_ITER *dirState) { - Result rc; + Result rc; - /* get pointer to our data */ - sdmc_dir_t *dir = (sdmc_dir_t*)(dirState->dirStruct); + /* get pointer to our data */ + sdmc_dir_t *dir = (sdmc_dir_t*)(dirState->dirStruct); - /* close the directory */ - rc = FSDIR_Close(dir->fd); - if(rc == 0) - return 0; + /* close the directory */ + rc = FSDIR_Close(dir->fd); + if(rc == 0) + return 0; - r->_errno = rc; - return -1; + r->_errno = rc; + return -1; } /*! Get filesystem statistics @@ -851,39 +851,39 @@ sdmc_statvfs(struct _reent *r, const char *path, struct statvfs *buf) { - Result rc; - u32 clusterSize, numClusters, freeClusters; - u8 writable = 0; + Result rc; + u32 clusterSize, numClusters, freeClusters; + u8 writable = 0; - rc = FSUSER_GetSdmcArchiveResource(NULL, + rc = FSUSER_GetSdmcArchiveResource(NULL, NULL, &clusterSize, &numClusters, &freeClusters); - if(rc == 0) - { - buf->f_bsize = clusterSize; - buf->f_frsize = clusterSize; - buf->f_blocks = numClusters; - buf->f_bfree = freeClusters; - buf->f_bavail = freeClusters; - buf->f_files = 0; //??? how to get - buf->f_ffree = freeClusters; - buf->f_favail = freeClusters; - buf->f_fsid = 0; //??? how to get - buf->f_flag = ST_NOSUID; - buf->f_namemax = 0; //??? how to get + if(rc == 0) + { + buf->f_bsize = clusterSize; + buf->f_frsize = clusterSize; + buf->f_blocks = numClusters; + buf->f_bfree = freeClusters; + buf->f_bavail = freeClusters; + buf->f_files = 0; //??? how to get + buf->f_ffree = freeClusters; + buf->f_favail = freeClusters; + buf->f_fsid = 0; //??? how to get + buf->f_flag = ST_NOSUID; + buf->f_namemax = 0; //??? how to get - rc = FSUSER_IsSdmcWritable(NULL, &writable); - if(rc != 0 || !writable) - buf->f_flag |= ST_RDONLY; + rc = FSUSER_IsSdmcWritable(NULL, &writable); + if(rc != 0 || !writable) + buf->f_flag |= ST_RDONLY; - return 0; - } + return 0; + } - r->_errno = rc; - return -1; + r->_errno = rc; + return -1; } /*! Truncate an open file @@ -900,25 +900,25 @@ sdmc_ftruncate(struct _reent *r, int fd, off_t len) { - Result rc; + Result rc; - /* get pointer to our data */ - sdmc_file_t *file = (sdmc_file_t*)fd; + /* get pointer to our data */ + sdmc_file_t *file = (sdmc_file_t*)fd; - /* make sure length is non-negative */ - if(len < 0) - { - r->_errno = EINVAL; - return -1; - } + /* make sure length is non-negative */ + if(len < 0) + { + r->_errno = EINVAL; + return -1; + } - /* set the new file size */ - rc = FSFILE_SetSize(file->fd, len); - if(rc == 0) - return 0; + /* set the new file size */ + rc = FSFILE_SetSize(file->fd, len); + if(rc == 0) + return 0; - r->_errno = rc; - return -1; + r->_errno = rc; + return -1; } /*! Synchronize a file to media @@ -933,17 +933,17 @@ static int sdmc_fsync(struct _reent *r, int fd) { - Result rc; + Result rc; - /* get pointer to our data */ - sdmc_file_t *file = (sdmc_file_t*)fd; + /* get pointer to our data */ + sdmc_file_t *file = (sdmc_file_t*)fd; - rc = FSFILE_Flush(file->fd); - if(rc == 0) - return 0; + rc = FSFILE_Flush(file->fd); + if(rc == 0) + return 0; - r->_errno = rc; - return -1; + r->_errno = rc; + return -1; } /*! Change a file's mode @@ -960,8 +960,8 @@ sdmc_chmod(struct _reent *r, const char *path, mode_t mode) { - r->_errno = ENOSYS; - return -1; + r->_errno = ENOSYS; + return -1; } /*! Change an open file's mode @@ -978,6 +978,6 @@ sdmc_fchmod(struct _reent *r, int fd, mode_t mode) { - r->_errno = ENOSYS; - return -1; + r->_errno = ENOSYS; + return -1; } diff --git a/libctru/source/services/httpc.c b/libctru/source/services/httpc.c index a9f1eb9..e9d2bed 100644 --- a/libctru/source/services/httpc.c +++ b/libctru/source/services/httpc.c @@ -39,14 +39,14 @@ Result httpcOpenContext(httpcContext *context, char* url, u32 use_defaultproxy) if(ret!=0) { HTTPC_CloseContext(__httpc_servhandle, context->httphandle); return ret; - } + } ret = HTTPC_InitializeConnectionSession(context->servhandle, context->httphandle); if(ret!=0) { HTTPC_CloseContext(__httpc_servhandle, context->httphandle); svcCloseHandle(context->servhandle); return ret; - } + } if(use_defaultproxy==0)return 0; @@ -55,7 +55,7 @@ Result httpcOpenContext(httpcContext *context, char* url, u32 use_defaultproxy) HTTPC_CloseContext(__httpc_servhandle, context->httphandle); svcCloseHandle(context->servhandle); return ret; - } + } return 0; } diff --git a/libctru/source/srv.c b/libctru/source/srv.c index 366eca6..0707a00 100644 --- a/libctru/source/srv.c +++ b/libctru/source/srv.c @@ -1,5 +1,5 @@ /* - srv.c _ Service manager. + srv.c _ Service manager. */ #include @@ -9,14 +9,14 @@ /* - The homebrew loader can choose to supply a list of service handles that have - been "stolen" from other processes that have been compromised. This allows us - to access services that are normally restricted from the current process. + The homebrew loader can choose to supply a list of service handles that have + been "stolen" from other processes that have been compromised. This allows us + to access services that are normally restricted from the current process. - For every service requested by the application, we shall first check if the - list given to us contains the requested service and if so use it. If we don't - find the service in that list, we ask the service manager and hope for the - best. + For every service requested by the application, we shall first check if the + list given to us contains the requested service and if so use it. If we don't + find the service in that list, we ask the service manager and hope for the + best. */ typedef struct { @@ -116,7 +116,7 @@ Result srvGetServiceHandle(Handle* out, const char* name) Result rc = 0; /* Look in service-list given to us by loader. If we find find a match, - we return it. */ + we return it. */ Handle h = __get_handle_from_list(name); if(h != 0) { diff --git a/libctru/source/util/rbtree_clear.c b/libctru/source/util/rbtree_clear.c index fd945f1..735224e 100644 --- a/libctru/source/util/rbtree_clear.c +++ b/libctru/source/util/rbtree_clear.c @@ -5,30 +5,30 @@ void rbtree_clear(rbtree_t *tree, rbtree_node_destructor_t destructor) { - rbtree_node_t *node = tree->root; + rbtree_node_t *node = tree->root; - while(tree->root != NULL) - { - while(node->child[LEFT] != NULL) - node = node->child[LEFT]; + while(tree->root != NULL) + { + while(node->child[LEFT] != NULL) + node = node->child[LEFT]; - if(node->child[RIGHT] != NULL) - node = node->child[RIGHT]; - else - { - rbtree_node_t *parent = get_parent(node); + if(node->child[RIGHT] != NULL) + node = node->child[RIGHT]; + else + { + rbtree_node_t *parent = get_parent(node); - if(parent == NULL) - tree->root = NULL; - else - parent->child[node != parent->child[LEFT]] = NULL; + if(parent == NULL) + tree->root = NULL; + else + parent->child[node != parent->child[LEFT]] = NULL; - if(destructor != NULL) - (*destructor)(node); + if(destructor != NULL) + (*destructor)(node); - node = parent; - } - } + node = parent; + } + } - tree->size = 0; + tree->size = 0; } diff --git a/libctru/source/util/rbtree_find.c b/libctru/source/util/rbtree_find.c index 2bcf06b..931943a 100644 --- a/libctru/source/util/rbtree_find.c +++ b/libctru/source/util/rbtree_find.c @@ -5,26 +5,26 @@ rbtree_node_t* rbtree_find(const rbtree_t *tree, const rbtree_node_t *node) { - rbtree_node_t *tmp = tree->root; - rbtree_node_t *save = NULL; + rbtree_node_t *tmp = tree->root; + rbtree_node_t *save = NULL; - while(tmp != NULL) - { - int rc = (*tree->comparator)(node, tmp); - if(rc < 0) - { - tmp = tmp->child[LEFT]; - } - else if(rc > 0) - { - tmp = tmp->child[RIGHT]; - } - else - { - save = tmp; - tmp = tmp->child[LEFT]; - } - } + while(tmp != NULL) + { + int rc = (*tree->comparator)(node, tmp); + if(rc < 0) + { + tmp = tmp->child[LEFT]; + } + else if(rc > 0) + { + tmp = tmp->child[RIGHT]; + } + else + { + save = tmp; + tmp = tmp->child[LEFT]; + } + } - return save; + return save; } diff --git a/libctru/source/util/rbtree_init.c b/libctru/source/util/rbtree_init.c index a8c30d5..19c5598 100644 --- a/libctru/source/util/rbtree_init.c +++ b/libctru/source/util/rbtree_init.c @@ -4,7 +4,7 @@ void rbtree_init(rbtree_t *tree, rbtree_node_comparator_t comparator) { - tree->root = NULL; - tree->comparator = comparator; - tree->size = 0; + tree->root = NULL; + tree->comparator = comparator; + tree->size = 0; } diff --git a/libctru/source/util/rbtree_insert.c b/libctru/source/util/rbtree_insert.c index 29950ec..64a1b96 100644 --- a/libctru/source/util/rbtree_insert.c +++ b/libctru/source/util/rbtree_insert.c @@ -6,91 +6,91 @@ do_insert(rbtree_t *tree, rbtree_node_t *node, int multi) { - rbtree_node_t *original = node; - rbtree_node_t **tmp = &tree->root; - rbtree_node_t *parent = NULL; - rbtree_node_t *save = NULL; + rbtree_node_t *original = node; + rbtree_node_t **tmp = &tree->root; + rbtree_node_t *parent = NULL; + rbtree_node_t *save = NULL; - while(*tmp != NULL) - { - int cmp = (*(tree->comparator))(node, *tmp); - parent = *tmp; + while(*tmp != NULL) + { + int cmp = (*(tree->comparator))(node, *tmp); + parent = *tmp; - if(cmp < 0) - tmp = &((*tmp)->child[LEFT]); - else if(cmp > 0) - tmp = &((*tmp)->child[RIGHT]); - else - { - if(!multi) - save = *tmp; + if(cmp < 0) + tmp = &((*tmp)->child[LEFT]); + else if(cmp > 0) + tmp = &((*tmp)->child[RIGHT]); + else + { + if(!multi) + save = *tmp; - tmp = &((*tmp)->child[LEFT]); - } - } + tmp = &((*tmp)->child[LEFT]); + } + } - if(save != NULL) - { - return save; - } + if(save != NULL) + { + return save; + } - *tmp = node; + *tmp = node; - node->child[LEFT] = node->child[RIGHT] = NULL; - set_parent(node, parent); + node->child[LEFT] = node->child[RIGHT] = NULL; + set_parent(node, parent); - set_red(node); + set_red(node); - while(is_red((parent = get_parent(node)))) - { - rbtree_node_t *grandparent = get_parent(parent); - int left = (parent == grandparent->child[LEFT]); - rbtree_node_t *uncle = grandparent->child[left]; + while(is_red((parent = get_parent(node)))) + { + rbtree_node_t *grandparent = get_parent(parent); + int left = (parent == grandparent->child[LEFT]); + rbtree_node_t *uncle = grandparent->child[left]; - if(is_red(uncle)) - { - set_black(uncle); - set_black(parent); - set_red(grandparent); + if(is_red(uncle)) + { + set_black(uncle); + set_black(parent); + set_red(grandparent); - node = grandparent; - } - else - { - if(parent->child[left] == node) - { - rbtree_node_t *tmp; + node = grandparent; + } + else + { + if(parent->child[left] == node) + { + rbtree_node_t *tmp; - rbtree_rotate(tree, parent, left); + rbtree_rotate(tree, parent, left); - tmp = parent; - parent = node; - node = tmp; - } + tmp = parent; + parent = node; + node = tmp; + } - set_black(parent); - set_red(grandparent); - rbtree_rotate(tree, grandparent, !left); - } - } + set_black(parent); + set_red(grandparent); + rbtree_rotate(tree, grandparent, !left); + } + } - set_black(tree->root); + set_black(tree->root); - tree->size += 1; + tree->size += 1; - return original; + return original; } rbtree_node_t* rbtree_insert(rbtree_t *tree, rbtree_node_t *node) { - return do_insert(tree, node, 0); + return do_insert(tree, node, 0); } void rbtree_insert_multi(rbtree_t *tree, rbtree_node_t *node) { - do_insert(tree, node, 1); + do_insert(tree, node, 1); } diff --git a/libctru/source/util/rbtree_internal.h b/libctru/source/util/rbtree_internal.h index 6d0d0a9..8c309d7 100644 --- a/libctru/source/util/rbtree_internal.h +++ b/libctru/source/util/rbtree_internal.h @@ -5,8 +5,8 @@ typedef enum rbtree_color { - RED = 0, - BLACK = 1, + RED = 0, + BLACK = 1, } rbtree_color_t; #define COLOR_MASK (RED|BLACK) @@ -14,48 +14,48 @@ typedef enum rbtree_color static inline void set_black(rbtree_node_t *node) { - node->parent_color &= ~COLOR_MASK; - node->parent_color |= BLACK; + node->parent_color &= ~COLOR_MASK; + node->parent_color |= BLACK; } static inline void set_red(rbtree_node_t *node) { - node->parent_color &= ~COLOR_MASK; - node->parent_color |= RED; + node->parent_color &= ~COLOR_MASK; + node->parent_color |= RED; } static inline rbtree_color_t get_color(const rbtree_node_t *node) { - if(node == NULL) - return BLACK; - return (rbtree_color_t)(node->parent_color & COLOR_MASK); + if(node == NULL) + return BLACK; + return (rbtree_color_t)(node->parent_color & COLOR_MASK); } static inline int is_black(const rbtree_node_t *node) { - return get_color(node) == BLACK; + return get_color(node) == BLACK; } static inline int is_red(const rbtree_node_t *node) { - return get_color(node) == RED; + return get_color(node) == RED; } static inline rbtree_node_t* get_parent(const rbtree_node_t *node) { - return (rbtree_node_t*)(node->parent_color & ~COLOR_MASK); + return (rbtree_node_t*)(node->parent_color & ~COLOR_MASK); } static inline void set_parent(rbtree_node_t *node, const rbtree_node_t *parent) { - node->parent_color = (get_color(node)) | ((uintptr_t)parent); + node->parent_color = (get_color(node)) | ((uintptr_t)parent); } void diff --git a/libctru/source/util/rbtree_iterator.c b/libctru/source/util/rbtree_iterator.c index 424658d..985b3e7 100644 --- a/libctru/source/util/rbtree_iterator.c +++ b/libctru/source/util/rbtree_iterator.c @@ -5,37 +5,37 @@ static inline rbtree_node_t* do_iterate(const rbtree_node_t *node, int next) { - rbtree_node_t *it = (rbtree_node_t*)node; + rbtree_node_t *it = (rbtree_node_t*)node; - if(it->child[next] != NULL) - { - it = it->child[next]; - while(it->child[!next] != NULL) - it = it->child[!next]; - } - else - { - rbtree_node_t *parent = get_parent(node); - while(parent != NULL && it == parent->child[next]) - { - it = parent; - parent = get_parent(it); - } + if(it->child[next] != NULL) + { + it = it->child[next]; + while(it->child[!next] != NULL) + it = it->child[!next]; + } + else + { + rbtree_node_t *parent = get_parent(node); + while(parent != NULL && it == parent->child[next]) + { + it = parent; + parent = get_parent(it); + } - it = parent; - } + it = parent; + } - return it; + return it; } rbtree_node_t* rbtree_node_next(const rbtree_node_t *node) { - return do_iterate(node, RIGHT); + return do_iterate(node, RIGHT); } rbtree_node_t* rbtree_node_prev(const rbtree_node_t *node) { - return do_iterate(node, LEFT); + return do_iterate(node, LEFT); } diff --git a/libctru/source/util/rbtree_minmax.c b/libctru/source/util/rbtree_minmax.c index f74293c..736cd8b 100644 --- a/libctru/source/util/rbtree_minmax.c +++ b/libctru/source/util/rbtree_minmax.c @@ -5,33 +5,33 @@ static inline rbtree_node_t* do_minmax(const rbtree_t *tree, int max) { - rbtree_node_t *node = tree->root; + rbtree_node_t *node = tree->root; - if(node == NULL) - return NULL; + if(node == NULL) + return NULL; - while(node->child[max] != NULL) - node = node->child[max]; + while(node->child[max] != NULL) + node = node->child[max]; - return node; + return node; } rbtree_node_t* rbtree_min(const rbtree_t *tree) { - rbtree_node_t *node; + rbtree_node_t *node; - node = do_minmax(tree, LEFT); + node = do_minmax(tree, LEFT); - return node; + return node; } rbtree_node_t* rbtree_max(const rbtree_t *tree) { - rbtree_node_t *node; + rbtree_node_t *node; - node = do_minmax(tree, RIGHT); + node = do_minmax(tree, RIGHT); - return node; + return node; } diff --git a/libctru/source/util/rbtree_remove.c b/libctru/source/util/rbtree_remove.c index 8a0359a..d6b9859 100644 --- a/libctru/source/util/rbtree_remove.c +++ b/libctru/source/util/rbtree_remove.c @@ -6,53 +6,53 @@ recolor(rbtree_t *tree, rbtree_node_t *parent, rbtree_node_t *node) { - rbtree_node_t *sibling; + rbtree_node_t *sibling; - while(is_black(node) && node != tree->root) - { - int left = (node == parent->child[LEFT]); + while(is_black(node) && node != tree->root) + { + int left = (node == parent->child[LEFT]); - sibling = parent->child[left]; + sibling = parent->child[left]; - if(is_red(sibling)) - { - set_black(sibling); - set_red(parent); - rbtree_rotate(tree, parent, left); - sibling = parent->child[left]; - } + if(is_red(sibling)) + { + set_black(sibling); + set_red(parent); + rbtree_rotate(tree, parent, left); + sibling = parent->child[left]; + } - if(is_black(sibling->child[LEFT]) && is_black(sibling->child[RIGHT])) - { - set_red(sibling); - node = parent; - parent = get_parent(node); - } - else - { - if(is_black(sibling->child[left])) - { - set_black(sibling->child[!left]); - set_red(sibling); - rbtree_rotate(tree, sibling, !left); - sibling = parent->child[left]; - } + if(is_black(sibling->child[LEFT]) && is_black(sibling->child[RIGHT])) + { + set_red(sibling); + node = parent; + parent = get_parent(node); + } + else + { + if(is_black(sibling->child[left])) + { + set_black(sibling->child[!left]); + set_red(sibling); + rbtree_rotate(tree, sibling, !left); + sibling = parent->child[left]; + } - if(is_black(parent)) - set_black(sibling); - else - set_red(sibling); - set_black(parent); - set_black(sibling->child[left]); + if(is_black(parent)) + set_black(sibling); + else + set_red(sibling); + set_black(parent); + set_black(sibling->child[left]); - rbtree_rotate(tree, parent, left); + rbtree_rotate(tree, parent, left); - node = tree->root; - } - } + node = tree->root; + } + } - if(node != NULL) - set_black(node); + if(node != NULL) + set_black(node); } rbtree_node_t* @@ -60,81 +60,81 @@ rbtree_remove(rbtree_t *tree, rbtree_node_t *node, rbtree_node_destructor_t destructor) { - rbtree_color_t color; - rbtree_node_t *child, *parent, *original = node; - rbtree_node_t *next; + rbtree_color_t color; + rbtree_node_t *child, *parent, *original = node; + rbtree_node_t *next; - next = rbtree_node_next(node); + next = rbtree_node_next(node); - if(node->child[LEFT] != NULL && node->child[RIGHT] != NULL) - { - rbtree_node_t *old = node; + if(node->child[LEFT] != NULL && node->child[RIGHT] != NULL) + { + rbtree_node_t *old = node; - node = node->child[RIGHT]; - while(node->child[LEFT] != NULL) - node = node->child[LEFT]; + node = node->child[RIGHT]; + while(node->child[LEFT] != NULL) + node = node->child[LEFT]; - parent = get_parent(old); - if(parent != NULL) - { - if(parent->child[LEFT] == old) - parent->child[LEFT] = node; - else - parent->child[RIGHT] = node; - } - else - tree->root = node; + parent = get_parent(old); + if(parent != NULL) + { + if(parent->child[LEFT] == old) + parent->child[LEFT] = node; + else + parent->child[RIGHT] = node; + } + else + tree->root = node; - child = node->child[RIGHT]; - parent = get_parent(node); - color = get_color(node); + child = node->child[RIGHT]; + parent = get_parent(node); + color = get_color(node); - if(parent == old) - parent = node; - else - { - if(child != NULL) - set_parent(child, parent); - parent->child[LEFT] = child; + if(parent == old) + parent = node; + else + { + if(child != NULL) + set_parent(child, parent); + parent->child[LEFT] = child; - node->child[RIGHT] = old->child[RIGHT]; - set_parent(old->child[RIGHT], node); - } + node->child[RIGHT] = old->child[RIGHT]; + set_parent(old->child[RIGHT], node); + } - node->parent_color = old->parent_color; - node->child[LEFT] = old->child[LEFT]; - set_parent(old->child[LEFT], node); - } - else - { - if(node->child[LEFT] == NULL) - child = node->child[RIGHT]; - else - child = node->child[LEFT]; + node->parent_color = old->parent_color; + node->child[LEFT] = old->child[LEFT]; + set_parent(old->child[LEFT], node); + } + else + { + if(node->child[LEFT] == NULL) + child = node->child[RIGHT]; + else + child = node->child[LEFT]; - parent = get_parent(node); - color = get_color(node); + parent = get_parent(node); + color = get_color(node); - if(child != NULL) - set_parent(child, parent); - if(parent != NULL) - { - if(parent->child[LEFT] == node) - parent->child[LEFT] = child; - else - parent->child[RIGHT] = child; - } - else - tree->root = child; - } + if(child != NULL) + set_parent(child, parent); + if(parent != NULL) + { + if(parent->child[LEFT] == node) + parent->child[LEFT] = child; + else + parent->child[RIGHT] = child; + } + else + tree->root = child; + } - if(color == BLACK) - recolor(tree, parent, child); + if(color == BLACK) + recolor(tree, parent, child); - if(destructor != NULL) - (*destructor)(original); + if(destructor != NULL) + (*destructor)(original); - tree->size -= 1; + tree->size -= 1; - return next; + return next; } diff --git a/libctru/source/util/rbtree_rotate.c b/libctru/source/util/rbtree_rotate.c index c47d290..2f993b8 100644 --- a/libctru/source/util/rbtree_rotate.c +++ b/libctru/source/util/rbtree_rotate.c @@ -6,23 +6,23 @@ rbtree_rotate(rbtree_t *tree, rbtree_node_t *node, int left) { - rbtree_node_t *tmp = node->child[left]; - rbtree_node_t *parent = get_parent(node); + rbtree_node_t *tmp = node->child[left]; + rbtree_node_t *parent = get_parent(node); - node->child[left] = tmp->child[!left]; - if(tmp->child[!left] != NULL) - set_parent(tmp->child[!left], node); + node->child[left] = tmp->child[!left]; + if(tmp->child[!left] != NULL) + set_parent(tmp->child[!left], node); - tmp->child[!left] = node; - set_parent(tmp, parent); - if(parent != NULL) - { - if(node == parent->child[!left]) - parent->child[!left] = tmp; - else - parent->child[left] = tmp; - } - else - tree->root = tmp; - set_parent(node, tmp); + tmp->child[!left] = node; + set_parent(tmp, parent); + if(parent != NULL) + { + if(node == parent->child[!left]) + parent->child[!left] = tmp; + else + parent->child[left] = tmp; + } + else + tree->root = tmp; + set_parent(node, tmp); }