1Stdlib.Filename(3) OCaml library Stdlib.Filename(3)
2
3
4
6 Stdlib.Filename - no description
7
9 Module Stdlib.Filename
10
12 Module Filename
13 : (module Stdlib__filename)
14
15
16
17
18
19
20
21
22 val current_dir_name : string
23
24 The conventional name for the current directory (e.g. . in Unix).
25
26
27
28 val parent_dir_name : string
29
30 The conventional name for the parent of the current directory (e.g. ..
31 in Unix).
32
33
34
35 val dir_sep : string
36
37 The directory separator (e.g. / in Unix).
38
39
40 Since 3.11.2
41
42
43
44 val concat : string -> string -> string
45
46
47 concat dir file returns a file name that designates file file in direc‐
48 tory dir .
49
50
51
52 val is_relative : string -> bool
53
54 Return true if the file name is relative to the current directory,
55 false if it is absolute (i.e. in Unix, starts with / ).
56
57
58
59 val is_implicit : string -> bool
60
61 Return true if the file name is relative and does not start with an ex‐
62 plicit reference to the current directory ( ./ or ../ in Unix), false
63 if it starts with an explicit reference to the root directory or the
64 current directory.
65
66
67
68 val check_suffix : string -> string -> bool
69
70
71 check_suffix name suff returns true if the filename name ends with the
72 suffix suff .
73
74 Under Windows ports (including Cygwin), comparison is case-insensitive,
75 relying on String.lowercase_ascii . Note that this does not match ex‐
76 actly the interpretation of case-insensitive filename equivalence from
77 Windows.
78
79
80
81 val chop_suffix : string -> string -> string
82
83
84 chop_suffix name suff removes the suffix suff from the filename name .
85 The behavior is undefined if name does not end with the suffix suff .
86 chop_suffix_opt is thus recommended instead.
87
88
89
90 val chop_suffix_opt : suffix:string -> string -> string option
91
92
93 chop_suffix_opt ~suffix filename removes the suffix from the filename
94 if possible, or returns None if the filename does not end with the suf‐
95 fix.
96
97 Under Windows ports (including Cygwin), comparison is case-insensitive,
98 relying on String.lowercase_ascii . Note that this does not match ex‐
99 actly the interpretation of case-insensitive filename equivalence from
100 Windows.
101
102
103 Since 4.08
104
105
106
107 val extension : string -> string
108
109
110 extension name is the shortest suffix ext of name0 where:
111
112
113 - name0 is the longest suffix of name that does not contain a directory
114 separator;
115
116 - ext starts with a period;
117
118 - ext is preceded by at least one non-period character in name0 .
119
120 If such a suffix does not exist, extension name is the empty string.
121
122
123 Since 4.04
124
125
126
127 val remove_extension : string -> string
128
129 Return the given file name without its extension, as defined in File‐
130 name.extension . If the extension is empty, the function returns the
131 given file name.
132
133 The following invariant holds for any file name s :
134
135
136 remove_extension s ^ extension s = s
137
138
139
140 Since 4.04
141
142
143
144 val chop_extension : string -> string
145
146 Same as Filename.remove_extension , but raise Invalid_argument if the
147 given name has an empty extension.
148
149
150
151 val basename : string -> string
152
153 Split a file name into directory name / base file name. If name is a
154 valid file name, then concat (dirname name) (basename name) returns a
155 file name which is equivalent to name . Moreover, after setting the
156 current directory to dirname name (with Sys.chdir ), references to
157 basename name (which is a relative file name) designate the same file
158 as name before the call to Sys.chdir .
159
160 This function conforms to the specification of POSIX.1-2008 for the
161 basename utility.
162
163
164
165 val dirname : string -> string
166
167 See Filename.basename . This function conforms to the specification of
168 POSIX.1-2008 for the dirname utility.
169
170
171
172 val null : string
173
174
175 null is "/dev/null" on POSIX and "NUL" on Windows. It represents a file
176 on the OS that discards all writes and returns end of file on reads.
177
178
179 Since 4.10.0
180
181
182
183 val temp_file : ?temp_dir:string -> string -> string -> string
184
185
186 temp_file prefix suffix returns the name of a fresh temporary file in
187 the temporary directory. The base name of the temporary file is formed
188 by concatenating prefix , then a suitably chosen integer number, then
189 suffix . The optional argument temp_dir indicates the temporary direc‐
190 tory to use, defaulting to the current result of File‐
191 name.get_temp_dir_name . The temporary file is created empty, with
192 permissions 0o600 (readable and writable only by the file owner). The
193 file is guaranteed to be different from any other file that existed
194 when temp_file was called.
195
196
197 Before3.11.2 no ?temp_dir optional argument
198
199
200
201 Raises Sys_error if the file could not be created.
202
203
204
205 val open_temp_file : ?mode:open_flag list -> ?perms:int ->
206 ?temp_dir:string -> string -> string -> string * out_channel
207
208 Same as Filename.temp_file , but returns both the name of a fresh tem‐
209 porary file, and an output channel opened (atomically) on this file.
210 This function is more secure than temp_file : there is no risk that the
211 temporary file will be modified (e.g. replaced by a symbolic link) be‐
212 fore the program opens it. The optional argument mode is a list of ad‐
213 ditional flags to control the opening of the file. It can contain one
214 or several of Open_append , Open_binary , and Open_text . The default
215 is [Open_text] (open in text mode). The file is created with permis‐
216 sions perms (defaults to readable and writable only by the file owner,
217 0o600 ).
218
219
220 Before4.03.0 no ?perms optional argument
221
222
223
224 Before3.11.2 no ?temp_dir optional argument
225
226
227
228 Raises Sys_error if the file could not be opened.
229
230
231
232 val get_temp_dir_name : unit -> string
233
234 The name of the temporary directory: Under Unix, the value of the TM‐
235 PDIR environment variable, or "/tmp" if the variable is not set. Under
236 Windows, the value of the TEMP environment variable, or "." if the
237 variable is not set. The temporary directory can be changed with File‐
238 name.set_temp_dir_name .
239
240
241 Since 4.00.0
242
243
244
245 val set_temp_dir_name : string -> unit
246
247 Change the temporary directory returned by Filename.get_temp_dir_name
248 and used by Filename.temp_file and Filename.open_temp_file .
249
250
251 Since 4.00.0
252
253
254
255 val temp_dir_name : string
256
257 Deprecated. You should use Filename.get_temp_dir_name instead.
258
259
260 The name of the initial temporary directory: Under Unix, the value of
261 the TMPDIR environment variable, or "/tmp" if the variable is not set.
262 Under Windows, the value of the TEMP environment variable, or "." if
263 the variable is not set.
264
265
266 Since 3.09.1
267
268
269
270 val quote : string -> string
271
272 Return a quoted version of a file name, suitable for use as one argu‐
273 ment in a command line, escaping all meta-characters. Warning: under
274 Windows, the output is only suitable for use with programs that follow
275 the standard Windows quoting conventions.
276
277
278
279 val quote_command : string -> ?stdin:string -> ?stdout:string ->
280 ?stderr:string -> string list -> string
281
282
283 quote_command cmd args returns a quoted command line, suitable for use
284 as an argument to Sys.command , Unix.system , and the Unix.open_process
285 functions.
286
287 The string cmd is the command to call. The list args is the list of
288 arguments to pass to this command. It can be empty.
289
290 The optional arguments ?stdin and ?stdout and ?stderr are file names
291 used to redirect the standard input, the standard output, or the stan‐
292 dard error of the command. If ~stdin:f is given, a redirection < f is
293 performed and the standard input of the command reads from file f . If
294 ~stdout:f is given, a redirection > f is performed and the standard
295 output of the command is written to file f . If ~stderr:f is given, a
296 redirection 2> f is performed and the standard error of the command is
297 written to file f . If both ~stdout:f and ~stderr:f are given, with
298 the exact same file name f , a 2>&1 redirection is performed so that
299 the standard output and the standard error of the command are inter‐
300 leaved and redirected to the same file f .
301
302 Under Unix and Cygwin, the command, the arguments, and the redirections
303 if any are quoted using Filename.quote , then concatenated. Under
304 Win32, additional quoting is performed as required by the cmd.exe shell
305 that is called by Sys.command .
306
307
308 Since 4.10.0
309
310
311 Raises Failure if the command cannot be escaped on the current plat‐
312 form.
313
314
315
316
317
318OCamldoc 2021-07-22 Stdlib.Filename(3)