gdbhio: skip mountpoints everywhere

This commit is contained in:
TuxSH 2019-05-04 18:10:40 +02:00
parent d6f173251c
commit 53df2f20b8

View File

@ -27,13 +27,16 @@ static inline int _gdbHioGetFdFromPtr(void *fdptr)
return *(int *)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) static int _gdbHioDevOpen(struct _reent *r, void *fdptr, const char *pathname, int flags, int mode)
{ {
(void)r; (void)r;
if (strncmp(pathname, "gdbhio:", 7) == 0) {
pathname += 7;
}
pathname = _gdbHioSkipMountpoint(pathname);
int ret = gdbHioOpen(pathname, flags, mode); int ret = gdbHioOpen(pathname, flags, mode);
if (ret < 0) { if (ret < 0) {
return ret; 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) static int _gdbHioDevRename(struct _reent *r, const char *oldpath, const char *newpath)
{ {
(void)r; (void)r;
return gdbHioRename(oldpath, newpath); return gdbHioRename(_gdbHioSkipMountpoint(oldpath), _gdbHioSkipMountpoint(newpath));
} }
static int _gdbHioDevUnlink(struct _reent *r, const char *pathname) static int _gdbHioDevUnlink(struct _reent *r, const char *pathname)
{ {
(void)r; (void)r;
return gdbHioUnlink(pathname); return gdbHioUnlink(_gdbHioSkipMountpoint(pathname));
} }
static int _gdbHioDevStat(struct _reent *r, const char *pathname, struct stat *st) static int _gdbHioDevStat(struct _reent *r, const char *pathname, struct stat *st)
{ {
(void)r; (void)r;
return gdbHioStat(pathname, st); return gdbHioStat(_gdbHioSkipMountpoint(pathname), st);
} }
static int _gdbHioDevFstat(struct _reent *r, void *fdptr, struct stat *st) static int _gdbHioDevFstat(struct _reent *r, void *fdptr, struct stat *st)