1995-08-09 08:06:35 -07:00
|
|
|
(***********************************************************************)
|
|
|
|
(* *)
|
2011-07-27 07:17:02 -07:00
|
|
|
(* OCaml *)
|
1995-08-09 08:06:35 -07:00
|
|
|
(* *)
|
|
|
|
(* Xavier Leroy, projet Cristal, INRIA Rocquencourt *)
|
|
|
|
(* *)
|
1996-04-30 07:53:58 -07:00
|
|
|
(* Copyright 1996 Institut National de Recherche en Informatique et *)
|
1999-11-17 10:59:06 -08:00
|
|
|
(* en Automatique. All rights reserved. This file is distributed *)
|
2001-12-07 05:41:02 -08:00
|
|
|
(* under the terms of the GNU Library General Public License, with *)
|
|
|
|
(* the special exception on linking described in file ../LICENSE. *)
|
1995-08-09 08:06:35 -07:00
|
|
|
(* *)
|
|
|
|
(***********************************************************************)
|
|
|
|
|
|
|
|
(* $Id$ *)
|
|
|
|
|
2001-10-26 15:37:14 -07:00
|
|
|
(** Operations on file names. *)
|
1995-05-04 03:15:53 -07:00
|
|
|
|
|
|
|
val current_dir_name : string
|
2001-12-03 14:01:28 -08:00
|
|
|
(** The conventional name for the current directory (e.g. [.] in Unix). *)
|
2001-10-26 15:37:14 -07:00
|
|
|
|
2001-12-03 14:01:28 -08:00
|
|
|
val parent_dir_name : string
|
2001-10-26 15:37:14 -07:00
|
|
|
(** The conventional name for the parent of the current directory
|
|
|
|
(e.g. [..] in Unix). *)
|
|
|
|
|
2010-01-20 08:26:46 -08:00
|
|
|
val dir_sep : string
|
2010-05-21 11:30:12 -07:00
|
|
|
(** The directory separator (e.g. [/] in Unix). @since 3.11.2 *)
|
2010-01-20 08:26:46 -08:00
|
|
|
|
2001-12-03 14:01:28 -08:00
|
|
|
val concat : string -> string -> string
|
2001-10-26 15:37:14 -07:00
|
|
|
(** [concat dir file] returns a file name that designates file
|
|
|
|
[file] in directory [dir]. *)
|
|
|
|
|
2001-12-03 14:01:28 -08:00
|
|
|
val is_relative : string -> bool
|
2001-10-26 15:37:14 -07:00
|
|
|
(** Return [true] if the file name is relative to the current
|
|
|
|
directory, [false] if it is absolute (i.e. in Unix, starts
|
|
|
|
with [/]). *)
|
|
|
|
|
2001-12-03 14:01:28 -08:00
|
|
|
val is_implicit : string -> bool
|
2001-10-26 15:37:14 -07:00
|
|
|
(** Return [true] if the file name is relative and does not start
|
|
|
|
with an explicit reference to the current directory ([./] or
|
|
|
|
[../] in Unix), [false] if it starts with an explicit reference
|
|
|
|
to the root directory or the current directory. *)
|
|
|
|
|
2001-12-03 14:01:28 -08:00
|
|
|
val check_suffix : string -> string -> bool
|
2001-10-26 15:37:14 -07:00
|
|
|
(** [check_suffix name suff] returns [true] if the filename [name]
|
|
|
|
ends with the suffix [suff]. *)
|
|
|
|
|
2001-12-03 14:01:28 -08:00
|
|
|
val chop_suffix : string -> string -> string
|
2001-10-26 15:37:14 -07:00
|
|
|
(** [chop_suffix name suff] removes the suffix [suff] from
|
|
|
|
the filename [name]. The behavior is undefined if [name] does not
|
|
|
|
end with the suffix [suff]. *)
|
|
|
|
|
2001-12-03 14:01:28 -08:00
|
|
|
val chop_extension : string -> string
|
2001-10-26 15:37:14 -07:00
|
|
|
(** Return the given file name without its extension. The extension
|
2004-05-30 02:41:53 -07:00
|
|
|
is the shortest suffix starting with a period and not including
|
|
|
|
a directory separator, [.xyz] for instance.
|
2001-10-26 15:37:14 -07:00
|
|
|
|
|
|
|
Raise [Invalid_argument] if the given name does not contain
|
2004-05-30 02:41:53 -07:00
|
|
|
an extension. *)
|
2001-10-26 15:37:14 -07:00
|
|
|
|
2001-12-03 14:01:28 -08:00
|
|
|
val basename : string -> string
|
2001-10-26 15:37:14 -07:00
|
|
|
(** Split a file name into directory name / base file name.
|
2012-01-06 06:24:58 -08:00
|
|
|
If [name] is a valid file name, then [concat (dirname name) (basename name)]
|
|
|
|
returns a file name which is equivalent to [name]. Moreover,
|
|
|
|
after setting the current directory to [dirname name] (with {!Sys.chdir}),
|
2002-02-14 07:17:11 -08:00
|
|
|
references to [basename name] (which is a relative file name)
|
2005-03-24 09:20:54 -08:00
|
|
|
designate the same file as [name] before the call to {!Sys.chdir}.
|
|
|
|
|
2012-01-06 06:24:58 -08:00
|
|
|
This function conforms to the specification of POSIX.1-2008 for the
|
|
|
|
[basename] utility. *)
|
2001-10-26 15:37:14 -07:00
|
|
|
|
1995-05-04 03:15:53 -07:00
|
|
|
val dirname : string -> string
|
2012-01-06 06:24:58 -08:00
|
|
|
(** See {!Filename.basename}.
|
|
|
|
This function conforms to the specification of POSIX.1-2008 for the
|
|
|
|
[dirname] utility. *)
|
2001-10-26 15:37:14 -07:00
|
|
|
|
2010-01-20 08:26:46 -08:00
|
|
|
val temp_file : ?temp_dir: string -> string -> string -> string
|
2001-10-26 15:37:14 -07:00
|
|
|
(** [temp_file prefix suffix] returns the name of a
|
|
|
|
fresh temporary file in the temporary directory.
|
|
|
|
The base name of the temporary file is formed by concatenating
|
|
|
|
[prefix], then a suitably chosen integer number, then [suffix].
|
2010-01-20 08:26:46 -08:00
|
|
|
The optional argument [temp_dir] indicates the temporary directory
|
|
|
|
to use, defaulting to {!Filename.temp_dir_name}.
|
2002-04-15 04:42:45 -07:00
|
|
|
The temporary file is created empty, with permissions [0o600]
|
|
|
|
(readable and writable only by the file owner). The file is
|
|
|
|
guaranteed to be different from any other file that existed when
|
|
|
|
[temp_file] was called.
|
2011-07-20 02:17:07 -07:00
|
|
|
Raise [Sys_error] if the file could not be created.
|
2010-05-21 11:30:12 -07:00
|
|
|
@before 3.11.2 no ?temp_dir optional argument
|
2006-01-04 08:55:50 -08:00
|
|
|
*)
|
2001-10-26 15:37:14 -07:00
|
|
|
|
2002-04-15 04:42:45 -07:00
|
|
|
val open_temp_file :
|
2010-01-20 08:26:46 -08:00
|
|
|
?mode: open_flag list -> ?temp_dir: string -> string -> string -> string * out_channel
|
2002-04-18 02:11:18 -07:00
|
|
|
(** Same as {!Filename.temp_file}, but returns both the name of a fresh
|
2002-04-15 04:42:45 -07:00
|
|
|
temporary file, and an output channel opened (atomically) on
|
|
|
|
this file. This function is more secure than [temp_file]: there
|
|
|
|
is no risk that the temporary file will be modified (e.g. replaced
|
|
|
|
by a symbolic link) before the program opens it. The optional argument
|
|
|
|
[mode] is a list of additional flags to control the opening of the file.
|
|
|
|
It can contain one or several of [Open_append], [Open_binary],
|
2010-05-21 11:30:12 -07:00
|
|
|
and [Open_text]. The default is [[Open_text]] (open in text mode).
|
2011-07-20 02:17:07 -07:00
|
|
|
Raise [Sys_error] if the file could not be opened.
|
2010-05-21 11:30:12 -07:00
|
|
|
@before 3.11.2 no ?temp_dir optional argument
|
|
|
|
*)
|
2002-04-15 04:42:45 -07:00
|
|
|
|
2006-01-04 08:55:50 -08:00
|
|
|
val temp_dir_name : string
|
|
|
|
(** The name of the temporary directory:
|
|
|
|
Under Unix, the value of the [TMPDIR] environment variable, or "/tmp"
|
|
|
|
if the variable is not set.
|
|
|
|
Under Windows, the value of the [TEMP] environment variable, or "."
|
|
|
|
if the variable is not set.
|
2010-05-21 11:30:12 -07:00
|
|
|
@since 3.09.1
|
2006-01-04 08:55:50 -08:00
|
|
|
*)
|
|
|
|
|
2001-12-03 14:01:28 -08:00
|
|
|
val quote : string -> string
|
2001-10-26 15:37:14 -07:00
|
|
|
(** Return a quoted version of a file name, suitable for use as
|
2007-01-09 05:42:17 -08:00
|
|
|
one argument in a command line, escaping all meta-characters.
|
|
|
|
Warning: under Windows, the output is only suitable for use
|
|
|
|
with programs that follow the standard Windows quoting
|
|
|
|
conventions.
|
|
|
|
*)
|