From 3cb6c7eae77c3b18182ed3b5ef32613623197000 Mon Sep 17 00:00:00 2001 From: "H. Peter Anvin" Date: Wed, 24 Feb 2010 21:31:02 -0800 Subject: [PATCH] opendir: use internal protected-mode interfaces No need to do yet another bounce through lowmem for no good reason. Signed-off-by: H. Peter Anvin --- core/fs/readdir.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/core/fs/readdir.c b/core/fs/readdir.c index 7a58eda..33a67c8 100644 --- a/core/fs/readdir.c +++ b/core/fs/readdir.c @@ -9,11 +9,18 @@ */ void opendir(com32sys_t *regs) { - char *src = MK_PTR(regs->es, regs->esi.w[0]); - char *dst = MK_PTR(regs->ds, regs->edi.w[0]); - strcpy(dst, src); - pm_searchdir(regs); - regs->eax.l = (uint32_t)handle_to_file(regs->esi.w[0]); + const char *src = MK_PTR(regs->es, regs->esi.w[0]); + struct file *file; + int rv; + + rv = searchdir(src); + if (rv < 0) { + regs->eax.l = 0; + regs->eflags.l |= EFLAGS_ZF; + } else { + regs->eax.l = (uint32_t)handle_to_file(rv); + regs->eflags.l &= ~EFLAGS_ZF; + } } /* -- 2.7.4