From 53df2f20b875cfe52ebed28af7978a9499adeb4e Mon Sep 17 00:00:00 2001 From: TuxSH Date: Sat, 4 May 2019 18:10:40 +0200 Subject: [PATCH] gdbhio: skip mountpoints everywhere --- libctru/source/gdbhio_dev.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/libctru/source/gdbhio_dev.c b/libctru/source/gdbhio_dev.c index c34bb6c..dca7fd6 100644 --- a/libctru/source/gdbhio_dev.c +++ b/libctru/source/gdbhio_dev.c @@ -27,13 +27,16 @@ static inline int _gdbHioGetFdFromPtr(void *fdptr) return *(int *)fdptr; } +static inline const char *_gdbHioSkipMountpoint(const char *pathname) +{ + return strncmp(pathname, "gdbhio:", 7) == 0 ? pathname + 7 : pathname; +} + static int _gdbHioDevOpen(struct _reent *r, void *fdptr, const char *pathname, int flags, int mode) { (void)r; - if (strncmp(pathname, "gdbhio:", 7) == 0) { - pathname += 7; - } + pathname = _gdbHioSkipMountpoint(pathname); int ret = gdbHioOpen(pathname, flags, mode); if (ret < 0) { return ret; @@ -70,19 +73,19 @@ static off_t _gdbHioDevLseek(struct _reent *r, void *fdptr, off_t offset, int fl static int _gdbHioDevRename(struct _reent *r, const char *oldpath, const char *newpath) { (void)r; - return gdbHioRename(oldpath, newpath); + return gdbHioRename(_gdbHioSkipMountpoint(oldpath), _gdbHioSkipMountpoint(newpath)); } static int _gdbHioDevUnlink(struct _reent *r, const char *pathname) { (void)r; - return gdbHioUnlink(pathname); + return gdbHioUnlink(_gdbHioSkipMountpoint(pathname)); } static int _gdbHioDevStat(struct _reent *r, const char *pathname, struct stat *st) { (void)r; - return gdbHioStat(pathname, st); + return gdbHioStat(_gdbHioSkipMountpoint(pathname), st); } static int _gdbHioDevFstat(struct _reent *r, void *fdptr, struct stat *st)