summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDamien Doligez <damien.doligez-inria.fr>2005-01-31 17:01:02 +0000
committerDamien Doligez <damien.doligez-inria.fr>2005-01-31 17:01:02 +0000
commit2575506299ebae0af0986a5e961393bfe343281a (patch)
treeaae92aa28308c13e51c581cdd9dcf0d7f57d55f8
parentda987178c0e144695fa1721b57a5243bbbf4a050 (diff)
downloadocaml-2575506299ebae0af0986a5e961393bfe343281a.tar.gz
PR#3451 empty basename -> .
git-svn-id: http://caml.inria.fr/svn/ocaml/version/3.08@6762 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
-rw-r--r--stdlib/filename.ml13
-rw-r--r--stdlib/filename.mli5
2 files changed, 12 insertions, 6 deletions
diff --git a/stdlib/filename.ml b/stdlib/filename.ml
index 7d6887eaf4..afe19611ad 100644
--- a/stdlib/filename.ml
+++ b/stdlib/filename.ml
@@ -129,11 +129,14 @@ let concat dirname filename =
else dirname ^ dir_sep ^ filename
let basename name =
- try
- let p = rindex_dir_sep name + 1 in
- String.sub name p (String.length name - p)
- with Not_found ->
- name
+ let raw_name =
+ try
+ let p = rindex_dir_sep name + 1 in
+ String.sub name p (String.length name - p)
+ with Not_found ->
+ name
+ in
+ if raw_name = "" then current_dir_name else raw_name
let dirname name =
try
diff --git a/stdlib/filename.mli b/stdlib/filename.mli
index 086775f5e9..ed63a45fd5 100644
--- a/stdlib/filename.mli
+++ b/stdlib/filename.mli
@@ -60,7 +60,10 @@ val basename : string -> string
which is equivalent to [name]. Moreover, after setting the
current directory to [dirname name] (with {!Sys.chdir}),
references to [basename name] (which is a relative file name)
- designate the same file as [name] before the call to {!Sys.chdir}. *)
+ designate the same file as [name] before the call to {!Sys.chdir}.
+
+ The result is not specified if the argument is not a valid file name
+ (for example, under Unix if there is a NUL character in the string). *)
val dirname : string -> string
(** See {!Filename.basename}. *)