diff options
author | Andy Wingo <wingo@pobox.com> | 2019-08-02 14:31:46 +0200 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2019-08-02 14:31:46 +0200 |
commit | 0a78d39b7735aefc265378556960dc2fed993de7 (patch) | |
tree | 3e4df0bdfeae07a49829eac662ef3c88a29b7650 /libguile/filesys.c | |
parent | cbacc7782bbe6db23a1e165e2654e67c80fdbb36 (diff) | |
parent | 36ad1d24b3d2c174a64c445502a36f19605dbd65 (diff) | |
download | guile-0a78d39b7735aefc265378556960dc2fed993de7.tar.gz |
Merge from stable-2.2
Diffstat (limited to 'libguile/filesys.c')
-rw-r--r-- | libguile/filesys.c | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/libguile/filesys.c b/libguile/filesys.c index ccec10b8b..4f7115397 100644 --- a/libguile/filesys.c +++ b/libguile/filesys.c @@ -1608,11 +1608,20 @@ SCM_DEFINE (scm_basename, "basename", 1, 1, 0, c_filename = scm_to_utf8_string (filename); scm_dynwind_free (c_filename); - c_last_component = last_component (c_filename); - if (!c_last_component) - res = filename; + if (strcmp (c_filename, "/") == 0 + || strcmp (c_filename, "//") == 0) + /* As per + <http://pubs.opengroup.org/onlinepubs/9699919799/functions/basename.html>, + "/" and "//" are treated specially. */ + res = scm_from_utf8_string ("/"); else - res = scm_from_utf8_string (c_last_component); + { + c_last_component = last_component (c_filename); + if (!c_last_component) + res = filename; + else + res = scm_from_utf8_string (c_last_component); + } scm_dynwind_end (); if (!SCM_UNBNDP (suffix) && |