From cc51634826ab2fc049b1657854ed5a9e32389cf4 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Fri, 20 Oct 2006 23:17:27 +0000 Subject: [PATCH] make path-element->bytes strip trailing separators, if any svn: r4664 --- src/mzscheme/src/file.c | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/src/mzscheme/src/file.c b/src/mzscheme/src/file.c index 1e51f80da0..5b567528d8 100644 --- a/src/mzscheme/src/file.c +++ b/src/mzscheme/src/file.c @@ -724,32 +724,35 @@ static Scheme_Object *path_to_bytes(int argc, Scheme_Object **argv) 1); } -static int is_path_element(Scheme_Object *p) +static Scheme_Object *is_path_element(Scheme_Object *p) { - Scheme_Object *base; + Scheme_Object *base, *fn; int isdir; - scheme_split_path(SCHEME_PATH_VAL(p), - SCHEME_PATH_LEN(p), - &base, - &isdir); + fn = scheme_split_path(SCHEME_PATH_VAL(p), + SCHEME_PATH_LEN(p), + &base, + &isdir); if (SCHEME_SYMBOLP(base)) - return 1; - return 0; + return fn; + return NULL; } static Scheme_Object *path_element_to_bytes(int argc, Scheme_Object **argv) { - Scheme_Object *p = argv[0]; + Scheme_Object *p = argv[0], *pe; if (!SCHEME_PATHP(p)) scheme_wrong_type("path-element->bytes", "path", 0, argc, argv); - if (!is_path_element(p)) + pe = is_path_element(p); + + if (!pe) scheme_arg_mismatch("path-element->bytes", "path can be split or is not relative: ", p); + p = pe; #ifdef UNIX_FILE_SYSTEM /* Drop ./ of ./~ prefix */