From: H. Peter Anvin Date: Thu, 25 Feb 2010 05:31:02 +0000 (-0800) Subject: opendir: use internal protected-mode interfaces X-Git-Tag: syslinux-4.00-pre27~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=3cb6c7eae77c3b18182ed3b5ef32613623197000;p=platform%2Fupstream%2Fsyslinux.git 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 --- 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; + } } /*