| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 124
 125
 126
 127
 128
 129
 130
 131
 132
 133
 134
 135
 136
 137
 138
 139
 140
 141
 142
 143
 144
 145
 146
 147
 148
 149
 150
 151
 152
 153
 154
 155
 156
 157
 158
 159
 160
 161
 162
 163
 164
 165
 166
 167
 168
 169
 170
 171
 172
 173
 174
 175
 176
 177
 178
 179
 180
 181
 182
 183
 184
 185
 186
 187
 188
 189
 190
 191
 192
 193
 194
 195
 196
 197
 198
 199
 200
 201
 202
 203
 204
 205
 206
 207
 208
 209
 210
 211
 212
 213
 214
 215
 216
 217
 218
 219
 220
 221
 222
 223
 224
 225
 226
 227
 228
 229
 230
 231
 232
 233
 234
 235
 236
 237
 238
 239
 240
 241
 242
 243
 244
 245
 246
 247
 248
 249
 250
 251
 252
 253
 254
 255
 256
 257
 258
 259
 260
 261
 262
 263
 264
 265
 266
 267
 268
 269
 270
 271
 272
 273
 274
 275
 276
 277
 278
 279
 280
 281
 282
 283
 284
 285
 286
 287
 288
 289
 290
 291
 292
 293
 294
 295
 296
 297
 298
 299
 300
 301
 302
 303
 304
 305
 306
 307
 308
 309
 310
 311
 312
 313
 314
 315
 316
 317
 318
 319
 320
 321
 322
 323
 324
 325
 326
 327
 328
 329
 330
 331
 332
 333
 334
 335
 336
 337
 338
 339
 340
 341
 342
 343
 344
 345
 346
 347
 348
 349
 350
 351
 352
 353
 354
 355
 356
 357
 358
 359
 360
 361
 362
 363
 364
 365
 366
 367
 368
 369
 370
 371
 372
 373
 374
 375
 376
 377
 
 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<link rel="stylesheet" href="style.css" type="text/css">
<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="Start" href="index.html">
<link rel="previous" href="Event.html">
<link rel="next" href="Float.html">
<link rel="Up" href="index.html">
<link title="Index of types" rel=Appendix href="index_types.html">
<link title="Index of extensions" rel=Appendix href="index_extensions.html">
<link title="Index of exceptions" rel=Appendix href="index_exceptions.html">
<link title="Index of values" rel=Appendix href="index_values.html">
<link title="Index of modules" rel=Appendix href="index_modules.html">
<link title="Index of module types" rel=Appendix href="index_module_types.html">
<link title="Arg" rel="Chapter" href="Arg.html">
<link title="Array" rel="Chapter" href="Array.html">
<link title="ArrayLabels" rel="Chapter" href="ArrayLabels.html">
<link title="Bigarray" rel="Chapter" href="Bigarray.html">
<link title="Bool" rel="Chapter" href="Bool.html">
<link title="Buffer" rel="Chapter" href="Buffer.html">
<link title="Bytes" rel="Chapter" href="Bytes.html">
<link title="BytesLabels" rel="Chapter" href="BytesLabels.html">
<link title="Callback" rel="Chapter" href="Callback.html">
<link title="CamlinternalFormat" rel="Chapter" href="CamlinternalFormat.html">
<link title="CamlinternalFormatBasics" rel="Chapter" href="CamlinternalFormatBasics.html">
<link title="CamlinternalLazy" rel="Chapter" href="CamlinternalLazy.html">
<link title="CamlinternalMod" rel="Chapter" href="CamlinternalMod.html">
<link title="CamlinternalOO" rel="Chapter" href="CamlinternalOO.html">
<link title="Char" rel="Chapter" href="Char.html">
<link title="Complex" rel="Chapter" href="Complex.html">
<link title="Condition" rel="Chapter" href="Condition.html">
<link title="Digest" rel="Chapter" href="Digest.html">
<link title="Dynlink" rel="Chapter" href="Dynlink.html">
<link title="Ephemeron" rel="Chapter" href="Ephemeron.html">
<link title="Event" rel="Chapter" href="Event.html">
<link title="Filename" rel="Chapter" href="Filename.html">
<link title="Float" rel="Chapter" href="Float.html">
<link title="Format" rel="Chapter" href="Format.html">
<link title="Fun" rel="Chapter" href="Fun.html">
<link title="Gc" rel="Chapter" href="Gc.html">
<link title="Genlex" rel="Chapter" href="Genlex.html">
<link title="Hashtbl" rel="Chapter" href="Hashtbl.html">
<link title="Int" rel="Chapter" href="Int.html">
<link title="Int32" rel="Chapter" href="Int32.html">
<link title="Int64" rel="Chapter" href="Int64.html">
<link title="Lazy" rel="Chapter" href="Lazy.html">
<link title="Lexing" rel="Chapter" href="Lexing.html">
<link title="List" rel="Chapter" href="List.html">
<link title="ListLabels" rel="Chapter" href="ListLabels.html">
<link title="Map" rel="Chapter" href="Map.html">
<link title="Marshal" rel="Chapter" href="Marshal.html">
<link title="MoreLabels" rel="Chapter" href="MoreLabels.html">
<link title="Mutex" rel="Chapter" href="Mutex.html">
<link title="Nativeint" rel="Chapter" href="Nativeint.html">
<link title="Obj" rel="Chapter" href="Obj.html">
<link title="Ocaml_operators" rel="Chapter" href="Ocaml_operators.html">
<link title="Oo" rel="Chapter" href="Oo.html">
<link title="Option" rel="Chapter" href="Option.html">
<link title="Parsing" rel="Chapter" href="Parsing.html">
<link title="Printexc" rel="Chapter" href="Printexc.html">
<link title="Printf" rel="Chapter" href="Printf.html">
<link title="Queue" rel="Chapter" href="Queue.html">
<link title="Random" rel="Chapter" href="Random.html">
<link title="Result" rel="Chapter" href="Result.html">
<link title="Scanf" rel="Chapter" href="Scanf.html">
<link title="Seq" rel="Chapter" href="Seq.html">
<link title="Set" rel="Chapter" href="Set.html">
<link title="Spacetime" rel="Chapter" href="Spacetime.html">
<link title="Stack" rel="Chapter" href="Stack.html">
<link title="StdLabels" rel="Chapter" href="StdLabels.html">
<link title="Stdlib" rel="Chapter" href="Stdlib.html">
<link title="Str" rel="Chapter" href="Str.html">
<link title="Stream" rel="Chapter" href="Stream.html">
<link title="String" rel="Chapter" href="String.html">
<link title="StringLabels" rel="Chapter" href="StringLabels.html">
<link title="Sys" rel="Chapter" href="Sys.html">
<link title="Thread" rel="Chapter" href="Thread.html">
<link title="ThreadUnix" rel="Chapter" href="ThreadUnix.html">
<link title="Uchar" rel="Chapter" href="Uchar.html">
<link title="Unit" rel="Chapter" href="Unit.html">
<link title="Unix" rel="Chapter" href="Unix.html">
<link title="UnixLabels" rel="Chapter" href="UnixLabels.html">
<link title="Weak" rel="Chapter" href="Weak.html"><title>Filename</title>
</head>
<body>
<div class="navbar"><a class="pre" href="Event.html" title="Event">Previous</a>
 <a class="up" href="index.html" title="Index">Up</a>
 <a class="post" href="Float.html" title="Float">Next</a>
</div>
<h1>Module <a href="type_Filename.html">Filename</a></h1>
<pre><span id="MODULEFilename"><span class="keyword">module</span> Filename</span>: <code class="code"><span class="keyword">sig</span></code> <a href="Filename.html">..</a> <code class="code"><span class="keyword">end</span></code></pre><div class="info module top">
<div class="info-desc">
<p>Operations on file names.</p>
</div>
</div>
<hr width="100%">
<pre><span id="VALcurrent_dir_name"><span class="keyword">val</span> current_dir_name</span> : <code class="type">string</code></pre><div class="info ">
<div class="info-desc">
<p>The conventional name for the current directory (e.g. <code class="code">.</code> in Unix).</p>
</div>
</div>
<pre><span id="VALparent_dir_name"><span class="keyword">val</span> parent_dir_name</span> : <code class="type">string</code></pre><div class="info ">
<div class="info-desc">
<p>The conventional name for the parent of the current directory
   (e.g. <code class="code">..</code> in Unix).</p>
</div>
</div>
<pre><span id="VALdir_sep"><span class="keyword">val</span> dir_sep</span> : <code class="type">string</code></pre><div class="info ">
<div class="info-desc">
<p>The directory separator (e.g. <code class="code">/</code> in Unix).</p>
</div>
<ul class="info-attributes">
<li><b>Since</b> 3.11.2</li>
</ul>
</div>
<pre><span id="VALconcat"><span class="keyword">val</span> concat</span> : <code class="type">string -> string -> string</code></pre><div class="info ">
<div class="info-desc">
<p><code class="code">concat dir file</code> returns a file name that designates file
   <code class="code">file</code> in directory <code class="code">dir</code>.</p>
</div>
</div>
<pre><span id="VALis_relative"><span class="keyword">val</span> is_relative</span> : <code class="type">string -> bool</code></pre><div class="info ">
<div class="info-desc">
<p>Return <code class="code"><span class="keyword">true</span></code> if the file name is relative to the current
   directory, <code class="code"><span class="keyword">false</span></code> if it is absolute (i.e. in Unix, starts
   with <code class="code">/</code>).</p>
</div>
</div>
<pre><span id="VALis_implicit"><span class="keyword">val</span> is_implicit</span> : <code class="type">string -> bool</code></pre><div class="info ">
<div class="info-desc">
<p>Return <code class="code"><span class="keyword">true</span></code> if the file name is relative and does not start
   with an explicit reference to the current directory (<code class="code">./</code> or
   <code class="code">../</code> in Unix), <code class="code"><span class="keyword">false</span></code> if it starts with an explicit reference
   to the root directory or the current directory.</p>
</div>
</div>
<pre><span id="VALcheck_suffix"><span class="keyword">val</span> check_suffix</span> : <code class="type">string -> string -> bool</code></pre><div class="info ">
<div class="info-desc">
<p><code class="code">check_suffix name suff</code> returns <code class="code"><span class="keyword">true</span></code> if the filename <code class="code">name</code>
    ends with the suffix <code class="code">suff</code>.</p>
<p>Under Windows ports (including Cygwin), comparison is
    case-insensitive, relying on <code class="code"><span class="constructor">String</span>.lowercase_ascii</code>.  Note that
    this does not match exactly the interpretation of case-insensitive
    filename equivalence from Windows.</p>
</div>
</div>
<pre><span id="VALchop_suffix"><span class="keyword">val</span> chop_suffix</span> : <code class="type">string -> string -> string</code></pre><div class="info ">
<div class="info-desc">
<p><code class="code">chop_suffix name suff</code> removes the suffix <code class="code">suff</code> from
   the filename <code class="code">name</code>. The behavior is undefined if <code class="code">name</code> does not
   end with the suffix <code class="code">suff</code>. <code class="code">chop_suffix_opt</code> is thus recommended
   instead.</p>
</div>
</div>
<pre><span id="VALchop_suffix_opt"><span class="keyword">val</span> chop_suffix_opt</span> : <code class="type">suffix:string -> string -> string option</code></pre><div class="info ">
<div class="info-desc">
<p><code class="code">chop_suffix_opt ~suffix filename</code> removes the suffix from
    the <code class="code">filename</code> if possible, or returns <code class="code"><span class="constructor">None</span></code> if the
    filename does not end with the suffix.</p>
<p>Under Windows ports (including Cygwin), comparison is
    case-insensitive, relying on <code class="code"><span class="constructor">String</span>.lowercase_ascii</code>.  Note that
    this does not match exactly the interpretation of case-insensitive
    filename equivalence from Windows.</p>
</div>
<ul class="info-attributes">
<li><b>Since</b> 4.08</li>
</ul>
</div>
<pre><span id="VALextension"><span class="keyword">val</span> extension</span> : <code class="type">string -> string</code></pre><div class="info ">
<div class="info-desc">
<p><code class="code">extension name</code> is the shortest suffix <code class="code">ext</code> of <code class="code">name0</code> where:</p>
<ul>
<li><code class="code">name0</code> is the longest suffix of <code class="code">name</code> that does not
      contain a directory separator;</li>
<li><code class="code">ext</code> starts with a period;</li>
<li><code class="code">ext</code> is preceded by at least one non-period character
      in <code class="code">name0</code>.</li>
</ul>
<p>If such a suffix does not exist, <code class="code">extension name</code> is the empty
    string.</p>
</div>
<ul class="info-attributes">
<li><b>Since</b> 4.04</li>
</ul>
</div>
<pre><span id="VALremove_extension"><span class="keyword">val</span> remove_extension</span> : <code class="type">string -> string</code></pre><div class="info ">
<div class="info-desc">
<p>Return the given file name without its extension, as defined
    in <a href="Filename.html#VALextension"><code class="code"><span class="constructor">Filename</span>.extension</code></a>. If the extension is empty, the function
    returns the given file name.</p>
<p>The following invariant holds for any file name <code class="code">s</code>:</p>
<p><code class="code">remove_extension s ^ extension s = s</code></p>
</div>
<ul class="info-attributes">
<li><b>Since</b> 4.04</li>
</ul>
</div>
<pre><span id="VALchop_extension"><span class="keyword">val</span> chop_extension</span> : <code class="type">string -> string</code></pre><div class="info ">
<div class="info-desc">
<p>Same as <a href="Filename.html#VALremove_extension"><code class="code"><span class="constructor">Filename</span>.remove_extension</code></a>, but raise <code class="code"><span class="constructor">Invalid_argument</span></code>
    if the given name has an empty extension.</p>
</div>
</div>
<pre><span id="VALbasename"><span class="keyword">val</span> basename</span> : <code class="type">string -> string</code></pre><div class="info ">
<div class="info-desc">
<p>Split a file name into directory name / base file name.
   If <code class="code">name</code> is a valid file name, then <code class="code">concat (dirname name) (basename name)</code>
   returns a file name which is equivalent to <code class="code">name</code>. Moreover,
   after setting the current directory to <code class="code">dirname name</code> (with <a href="Sys.html#VALchdir"><code class="code"><span class="constructor">Sys</span>.chdir</code></a>),
   references to <code class="code">basename name</code> (which is a relative file name)
   designate the same file as <code class="code">name</code> before the call to <a href="Sys.html#VALchdir"><code class="code"><span class="constructor">Sys</span>.chdir</code></a>.</p>
<p>This function conforms to the specification of POSIX.1-2008 for the
   <code class="code">basename</code> utility.</p>
</div>
</div>
<pre><span id="VALdirname"><span class="keyword">val</span> dirname</span> : <code class="type">string -> string</code></pre><div class="info ">
<div class="info-desc">
<p>See <a href="Filename.html#VALbasename"><code class="code"><span class="constructor">Filename</span>.basename</code></a>.
   This function conforms to the specification of POSIX.1-2008 for the
   <code class="code">dirname</code> utility.</p>
</div>
</div>
<pre><span id="VALnull"><span class="keyword">val</span> null</span> : <code class="type">string</code></pre><div class="info ">
<div class="info-desc">
<p><code class="code">null</code> is <code class="code"><span class="string">"/dev/null"</span></code> on POSIX and <code class="code"><span class="string">"NUL"</span></code> on Windows. It represents a
    file on the OS that discards all writes and returns end of file on reads.</p>
</div>
<ul class="info-attributes">
<li><b>Since</b> 4.10.0</li>
</ul>
</div>
<pre><span id="VALtemp_file"><span class="keyword">val</span> temp_file</span> : <code class="type">?temp_dir:string -> string -> string -> string</code></pre><div class="info ">
<div class="info-desc">
<p><code class="code">temp_file prefix suffix</code> returns the name of a
   fresh temporary file in the temporary directory.
   The base name of the temporary file is formed by concatenating
   <code class="code">prefix</code>, then a suitably chosen integer number, then <code class="code">suffix</code>.
   The optional argument <code class="code">temp_dir</code> indicates the temporary directory
   to use, defaulting to the current result of <a href="Filename.html#VALget_temp_dir_name"><code class="code"><span class="constructor">Filename</span>.get_temp_dir_name</code></a>.
   The temporary file is created empty, with permissions <code class="code">0o600</code>
   (readable and writable only by the file owner).  The file is
   guaranteed to be different from any other file that existed when
   <code class="code">temp_file</code> was called.</p>
</div>
<ul class="info-attributes">
<li><b>Before 3.11.2 </b> no ?temp_dir optional argument</li>
<li><b>Raises</b> <code>Sys_error</code> if the file could not be created.</li>
</ul>
</div>
<pre><span id="VALopen_temp_file"><span class="keyword">val</span> open_temp_file</span> : <code class="type">?mode:<a href="Stdlib.html#TYPEopen_flag">open_flag</a> list -><br>       ?perms:int -><br>       ?temp_dir:string -> string -> string -> string * <a href="Stdlib.html#TYPEout_channel">out_channel</a></code></pre><div class="info ">
<div class="info-desc">
<p>Same as <a href="Filename.html#VALtemp_file"><code class="code"><span class="constructor">Filename</span>.temp_file</code></a>, but returns both the name of a fresh
   temporary file, and an output channel opened (atomically) on
   this file.  This function is more secure than <code class="code">temp_file</code>: 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
   <code class="code">mode</code> is a list of additional flags to control the opening of the file.
   It can contain one or several of <code class="code"><span class="constructor">Open_append</span></code>, <code class="code"><span class="constructor">Open_binary</span></code>,
   and <code class="code"><span class="constructor">Open_text</span></code>.  The default is <code class="code">[<span class="constructor">Open_text</span>]</code> (open in text mode). The
   file is created with permissions <code class="code">perms</code> (defaults to readable and
   writable only by the file owner, <code class="code">0o600</code>).</p>
</div>
<ul class="info-attributes">
<li><b>Before 4.03.0 </b> no ?perms optional argument</li>
<li><b>Before 3.11.2 </b> no ?temp_dir optional argument</li>
<li><b>Raises</b> <code>Sys_error</code> if the file could not be opened.</li>
</ul>
</div>
<pre><span id="VALget_temp_dir_name"><span class="keyword">val</span> get_temp_dir_name</span> : <code class="type">unit -> string</code></pre><div class="info ">
<div class="info-desc">
<p>The name of the temporary directory:
    Under Unix, the value of the <code class="code"><span class="constructor">TMPDIR</span></code> environment variable, or "/tmp"
    if the variable is not set.
    Under Windows, the value of the <code class="code"><span class="constructor">TEMP</span></code> environment variable, or "."
    if the variable is not set.
    The temporary directory can be changed with <a href="Filename.html#VALset_temp_dir_name"><code class="code"><span class="constructor">Filename</span>.set_temp_dir_name</code></a>.</p>
</div>
<ul class="info-attributes">
<li><b>Since</b> 4.00.0</li>
</ul>
</div>
<pre><span id="VALset_temp_dir_name"><span class="keyword">val</span> set_temp_dir_name</span> : <code class="type">string -> unit</code></pre><div class="info ">
<div class="info-desc">
<p>Change the temporary directory returned by <a href="Filename.html#VALget_temp_dir_name"><code class="code"><span class="constructor">Filename</span>.get_temp_dir_name</code></a>
    and used by <a href="Filename.html#VALtemp_file"><code class="code"><span class="constructor">Filename</span>.temp_file</code></a> and <a href="Filename.html#VALopen_temp_file"><code class="code"><span class="constructor">Filename</span>.open_temp_file</code></a>.</p>
</div>
<ul class="info-attributes">
<li><b>Since</b> 4.00.0</li>
</ul>
</div>
<pre><span id="VALtemp_dir_name"><span class="keyword">val</span> temp_dir_name</span> : <code class="type">string</code></pre><div class="info ">
<div class="info-deprecated">
<span class="warning">Deprecated.</span>You should use <a href="Filename.html#VALget_temp_dir_name"><code class="code"><span class="constructor">Filename</span>.get_temp_dir_name</code></a> instead.</div>
<div class="info-desc">
<p>The name of the initial temporary directory:
    Under Unix, the value of the <code class="code"><span class="constructor">TMPDIR</span></code> environment variable, or "/tmp"
    if the variable is not set.
    Under Windows, the value of the <code class="code"><span class="constructor">TEMP</span></code> environment variable, or "."
    if the variable is not set.</p>
</div>
<ul class="info-attributes">
<li><b>Since</b> 3.09.1</li>
</ul>
</div>
<pre><span id="VALquote"><span class="keyword">val</span> quote</span> : <code class="type">string -> string</code></pre><div class="info ">
<div class="info-desc">
<p>Return a quoted version of a file name, suitable for use as
    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.</p>
</div>
</div>
<pre><span id="VALquote_command"><span class="keyword">val</span> quote_command</span> : <code class="type">string -><br>       ?stdin:string -> ?stdout:string -> ?stderr:string -> string list -> string</code></pre><div class="info ">
<div class="info-desc">
<p><code class="code">quote_command cmd args</code> returns a quoted command line, suitable
    for use as an argument to <a href="Sys.html#VALcommand"><code class="code"><span class="constructor">Sys</span>.command</code></a>, <a href="Unix.html#VALsystem"><code class="code"><span class="constructor">Unix</span>.system</code></a>, and the
    <a href="Unix.html#VALopen_process"><code class="code"><span class="constructor">Unix</span>.open_process</code></a> functions.</p>
<p>The string <code class="code">cmd</code> is the command to call.  The list <code class="code">args</code> is
    the list of arguments to pass to this command.  It can be empty.</p>
<p>The optional arguments <code class="code">?stdin</code> and <code class="code">?stdout</code> and <code class="code">?stderr</code> are
    file names used to redirect the standard input, the standard
    output, or the standard error of the command.
    If <code class="code">~stdin:f</code> is given, a redirection <code class="code">< f</code> is performed and the
    standard input of the command reads from file <code class="code">f</code>.
    If <code class="code">~stdout:f</code> is given, a redirection <code class="code">> f</code> is performed and the
    standard output of the command is written to file <code class="code">f</code>.
    If <code class="code">~stderr:f</code> is given, a redirection <code class="code">2> f</code> is performed and the
    standard error of the command is written to file <code class="code">f</code>.
    If both <code class="code">~stdout:f</code> and <code class="code">~stderr:f</code> are given, with the exact
    same file name <code class="code">f</code>, a <code class="code">2>&1</code> redirection is performed so that the
    standard output and the standard error of the command are interleaved
    and redirected to the same file <code class="code">f</code>.</p>
<p>Under Unix and Cygwin, the command, the arguments, and the redirections
    if any are quoted using <a href="Filename.html#VALquote"><code class="code"><span class="constructor">Filename</span>.quote</code></a>, then concatenated.
    Under Win32, additional quoting is performed as required by the
    <code class="code">cmd.exe</code> shell that is called by <a href="Sys.html#VALcommand"><code class="code"><span class="constructor">Sys</span>.command</code></a>.</p>
</div>
<ul class="info-attributes">
<li><b>Raises</b> <code>Failure</code> if the command cannot be escaped on the current platform.</li>
</ul>
</div>
</body></html>
 |