Caml1999I037 SV0Stdlib__Filename0current_dir_name(&stringQ@@@@,filename.mliRYYRYv@@@@@/parent_dir_name)@@@@UU@@A@@'dir_sep*@@@@Y>>Y>R@@+B@@&concat+@,@@@@2@@@6@@@@@@@@4^5^@@DC@@+is_relative,@E@@@$boolE@@@@@@Ib##Jb#C@@YD@@+is_implicit-@Z@@@@@@@@@\g]g@@lE@@,check_suffix.@m@@@@s@@@.@@@@@@@@umvm@@F@@+chop_suffix/@@@@@@@@@@@@@@@@v s sv s @@G@@/chop_suffix_opt0&suffix@@@@@@@&optionL@@@@@@@@@@@| C C| C @@H@@)extension1@@@@@@@@@@J ) )J ) I@@I@@0remove_extension2@@@@@@@@@@Y  Y  @@J@@.chop_extension3@@@@@@@@@@ee6@@K@@(basename4@@@@@@@@@@jj@@ L@@'dirname5@ @@@@@@@@@uu@@M@@$null6@@@@zsszs@@,N@@)temp_file7(temp_dir3@@@@@@@:@@@@@@@@D@@@@@@@@@@B55C5t@@RO@@.open_temp_file8$mode&$listK&Stdlib)open_flag@@@@@@@@@%perms=#intA@@@@@@(temp_dirK}@@@@@@@@@@@@@@@@@@ՠ@:+out_channel@@@@@@@@@@@@@@@@AA@@P@@(temp_dir9(temp_dir{@@@@@@%permsJ@@@@@@@@@@@@@@@@@@@@@@@@@@   V@@Q@@1get_temp_dir_name:@$unitF@@@@@@@@@@@R@@1set_temp_dir_name;@@@@@@@@@@@@S@@%quote<@@@@@@@@@@   !@@T@@-quote_command=@@@@%stdin@@@@@@&stdout+@@@@@@&stderr7@@@@@@@B@@@@@@G@@@@@@@@@@@@@@E"("(F""@@UU@@@n;/0Stdlib__Filename0&L dj&Stdlib0Lku]8_٠8CamlinternalFormatBasics0%FU(Q/Tu@@@Caml1999T037x d9'/C0Stdlib__Filename*ocaml.text&_none_@@A; Operations on file names. ,filename.mliP77P7W@@@@@@3@@@@@@#intA;@@@A@@@@@:@A@$charB;@@A@@@@@>@A@&stringQ;@@ A@@@@@B@@@%bytesC;@@ A@@@@@F@@@%floatD;@@A@@@@@J@@@$boolE;@@%falsec@@T@$trued@@Z@@@A@@@@@[@A@$unitF;@@"()e@@e@@@A@@@@@f@A@ #exnG;@@@A@@@@@j@@@#effH;@@O@A@A@@@@@@s@@@,continuationI;@@Q@@P@B@A@nY@@@@@@@@@%arrayJ;@@R@A@A@@@@@@@@@ $listK;@@S@A"[]f@@@"::g@@@T@@@ @@A@Y@@@@@@@@&optionL;@@V@A$Noneh@@@$Somei@@@@@A@Y@@@@@@@@)nativeintM;@@A@@@@@@@@%int32N;@@A@@@@@@@@%int64O;@@A@@@@@@@@&lazy_tP;@@X@AJA@Y@@@@@@@@5extension_constructorR;@@A@@@@@@@@*floatarrayS;@@A@@@@@@@@&iarrayT;@@Y@A[A@Y@@@@@@@@*atomic_locU;@@Z@AdA@@@@@@@@@.Assert_failure`#@@@@@J@@@@@@@@[@@A=ocaml.warn_on_literal_pattern @ @0Division_by_zero]#@@@A  @+End_of_file\#$@@@A@'FailureY#,@'@@A!$$@0Invalid_argumentX#5@0@@A*$-#-@-Match_failureV#>@@=@9@;@@a@@A;5>4>@)Not_foundZ#O@@@AC=F<F@-Out_of_memoryW#W@@@AKENDN@.Stack_overflow^#_@@@ASMVLV@.Sys_blocked_io_#g@@@A[U^T^@)Sys_error[#o@j@@Ad^g]g@:Undefined_recursive_modulea#x@@w@s@u@@h@@Auoxnx@:Continuation_already_takenb#@@@A}wv@&Stdlib@Ax0current_dir_nameRY]RYm@гR&stringRYpRYv@@ @@@@@@RYY@)ocaml.doc E The conventional name for the current directory (e.g. [.] in Unix). SwwSw@@@@@@@@@@@@@@@@@/parent_dir_nameUU@г&stringUU@@ @@@3@K8@A@@@U @9 W The conventional name for the parent of the current directory (e.g. [..] in Unix). VW"<@@@@@@@A@@@Iꐠ@@@@@@!'dir_sepY>BY>I@г&stringY>LY>R@@ @@@3@8K6@A@@@Y>> @p @ The directory separator (e.g. [/] in Unix). @since 3.11.2  ZSS\@@@@@@@&B@@@!@@@@@@!&concat$^%^@б@г&string/^0^@@ @@@310011111@:M8@A@@б@г &string@^A^@@ @@@@@г&stringM^N^@@ @@@@@@@@!@@@'@@$* @@@[^@ː Z [concat dir file] returns a file name that designates file [file] in directory [dir]. h_i`!@@@@@@@C@@@|@@@@@@C+is_relativeb#'b#2@б@гT&stringb#5b#;@@ @@@3@\q8@A@@гW$boolb#?b#C@@ @@@@@@@@@@@b## @ Return [true] if the file name is relative to the current directory, [false] if it is absolute (i.e. in Unix, starts with [/]). cDDe@@@@@@@D@@@$Ő@@@@@@1+is_implicitgg@б@г&stringgg@@ @@@3@J_8@A@@г$boolgg@@ @@@@@@@@@@@g @] 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. hk@@@@@@@E@@@m@@@@@@1,check_suffixmm@б@г栐&stringmm@@ @@@3@J_8@A@@б@г&string-m .m@@ @@@@@г$bool:m;m@@ @@@@@@@@!@@@'@@$* @@@Hm@ Q [check_suffix name suff] returns [true] if the filename [name] ends with the suffix [suff]. Under Windows ports (including Cygwin), comparison is case-insensitive, relying on [String.lowercase_ascii]. Note that this does not match exactly the interpretation of case-insensitive filename equivalence from Windows. UnVt G q@@@@@@@nF@@@i@@@@@@C+chop_suffixlv s wmv s @б@гA&stringwv s xv s @@ @@@3yxxyyyyy@\q8@A@@б@гR&stringv s v s @@ @@@@@г_&stringv s v s @@ @@@@@@@@!@@@'@@$* @@@v s s@ [chop_suffix name suff] removes the suffix [suff] from the filename [name]. @raise Invalid_argument if [name] does not end with the suffix [suff]. w  z ? A@@@@@@@G@@@#Đ@@@@@@C/chop_suffix_opt| C G| C V@б&suffixг&string| C _| C e@@ @@@3@^s:@A@@б@г&string| C i| C o@@ @@@@@гQ&option| C z| C @гƠ&string| C s| C y@@ @@@(@@@@@@- @@@"@@0%@@A6@@3 | C X@@@| C C@  [chop_suffix_opt ~suffix filename] removes the suffix from the [filename] if possible, or returns [None] if the filename does not end with the suffix. Under Windows ports (including Cygwin), comparison is case-insensitive, relying on [String.lowercase_ascii]. Note that this does not match exactly the interpretation of case-insensitive filename equivalence from Windows. @since 4.08 }  G $ &@@@@@@@6H@@.@1@@@@@@S)extension4J ) -5J ) 6@б@г &string?J ) 9@J ) ?@@ @@@3A@@AAAAA@l8@A@@г&stringNJ ) COJ ) I@@ @@@@@@@@@@@YJ ) ) @ɐ u [extension name] is the shortest suffix [ext] of [name0] where: - [name0] is the longest suffix of [name] that does not contain a directory separator; - [ext] starts with a period; - [ext] is preceded by at least one non-period character in [name0]. If such a suffix does not exist, [extension name] is the empty string. @since 4.04 fK J JgW  @@@@@@@I@@@z@@@@@@10remove_extension}Y  ~Y  @б@гR&stringY  Y  @@ @@@3@J_8@A@@гa&stringY  Y  @@ @@@@@@@@@@@Y   @  Return the given file name without its extension, as defined in {!Filename.extension}. If the extension is empty, the function returns the given file name. The following invariant holds for any file name [s]: [remove_extension s ^ extension s = s] @since 4.04 Z  c @@@@@@@J@@@"Ð@@@@@@1.chop_extensionee#@б@г&stringe&e,@@ @@@3@J_8@A@@г&stringe0e6@@ @@@@@@@@@@@e @[ r Same as {!Filename.remove_extension}, but raise [Invalid_argument] if the given name has an empty extension. f77g~@@@@@@@K@@@k @@@@@@1(basenamejj@б@г䠐&stringjj@@ @@@3@J_8@A@@г&string)j*j@@ @@@@@@@@@@@4j @  Split a file name into directory name / base file name. 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}), references to [basename name] (which is a relative file name) designate the same file as [name] before the call to {!Sys.chdir}. This function conforms to the specification of POSIX.1-2008 for the [basename] utility. AkBs@@@@@@@ZL@@@U@@@@@@1'dirnameXuYu@б@г-&stringcudu@@ @@@3eddeeeee@J_8@A@@г<&stringrusu@@ @@@@@@@@@@@}u @퐠 x See {!Filename.basename}. This function conforms to the specification of POSIX.1-2008 for the [dirname] utility. vxYq@@@@@@@M@@@@@@@@@1$null zswzs{@гt&stringzs~zs@@ @@@3@H]6@A@@@zss @$ [null] is ["/dev/null"] on POSIX and ["NUL"] on Windows. It represents a file on the OS that discards all writes and returns end of file on reads. @since 4.10 {~!3@@@@@@@N@@@4Ր@@@@@@!)temp_file!595B@б(temp_dirг&string5P5V@@ @@@3@<O:@A@@б@г&string5Z5`@@ @@@@@б@гϠ&string5d5j@@ @@@ @@гܠ&string5n5t@@ @@@-@@@@@0@@@%@@3( @@D=@@@ @@;&5E@@ @)55@  [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]. The optional argument [temp_dir] indicates the temporary directory to use, defaulting to the current result of {!Filename.get_temp_dir_name}. 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. @raise Sys_error if the file could not be created. @before 3.11.2 no ?temp_dir optional argument 6uu7=?@@@@@@@OO@@'@J@@@@@@[.open_temp_file"MAENAS@б$modeг֠$listZVm[Vq@г)open_flagdVceVl@@ @@@3feefffff@D@A@@@ @@@ @@б%permsгO#int|V}}V@@ @@@@@б(temp_dirгW&stringVV@@ @@@)@@б@гf&stringVV@@ @@@8@@б@гu&string@@ @@@G@@В@г&string@@ @@@X@@@гS+out_channel@@ @@@g@@@@@ @@n @@@- @@q0@@@?@@tB@@\T@@@ @@{V@@uȠm@@@@@Vu"@@Р@@@@@V\*@@ @AA-@h : Same as {!Filename.temp_file}, 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 [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], and [Open_text]. The default is [[Open_text]] (open in text mode). The file is created with permissions [perms] (defaults to readable and writable only by the file owner, [0o600]). @raise Sys_error if the file could not be opened. @before 4.03 no ?perms optional argument @before 3.11.2 no ?temp_dir optional argument @@@@@@@P@@=@x@@@@@@(temp_dir#   @б(temp_dirг&string) #* )@@ @@@3+**+++++@:@A@@б%permsг#int< 4= 7@@ @@@@@б@г&stringK <L B@@ @@@"@@б@г$&stringZ F[ L@@ @@@1@@г1&stringg Ph V@@ @@@>@@@@@A@@@%@@D( @@BU:@@@ @@Kz -@@]]U@@@@@S @@ @  @ f [temp_dir prefix suffix] creates and returns the name of a fresh temporary directory with permissions [perms] (defaults to 0o700) inside [temp_dir]. The base name of the temporary directory is formed by concatenating [prefix], then a suitably chosen integer number, then [suffix]. The optional argument [temp_dir] indicates the temporary directory to use, defaulting to the current result of {!Filename.get_temp_dir_name}. The temporary directory is created empty, with permissions [0o700] (readable, writable, and searchable only by the file owner). The directory is guaranteed to be different from any other directory that existed when [temp_dir] was called. If temp_dir does not exist, this function does not create it. Instead, it raises Sys_error. @raise Sys_error if the directory could not be created. @since 5.1 WW@@@@@@@Q@@.@@@@@@@s1get_temp_dir_name$@б@гa$unit@@ @@@3@8@A@@г&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 returned by [GetTempPath2] (if available) or [GetTempPath]. The temporary directory can be changed with {!Filename.set_temp_dir_name}. Under Windows, before OCaml 5.4, it would return the value of the [TEMP] environment variable, or "." if the variable was not set. @since 4.00 @@@@@@@R@@@N@@@@@@11set_temp_dir_name%@б@гǠ&string@@ @@@3@J_8@A@@г$unit  @@ @@@@@@@@@@@ @ Change the temporary directory returned by {!Filename.get_temp_dir_name} and used by {!Filename.temp_file} and {!Filename.open_temp_file}. The temporary directory is a domain-local value which is inherited by child domains. @since 4.00 $%  @@@@@@@=S@@@8@@@@@@1%quote&;  < !@б@г&stringF !G ! @@ @@@3HGGHHHHH@J_8@A@@г&stringU !V !@@ @@@@@@@@@@@`   @А  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. m!!n"#"&@@@@@@@T@@@@@@@@@1-quote_command'"(","("9@б@гY&string"<"C"<"I@@ @@@3@J_8@A@@б%stdinгl&string"<"T"<"Z@@ @@@@@б&stdoutг}&string"<"f"<"l@@ @@@$@@б&stderrг&string"<"x"<"~@@ @@@5@@б@гO$list""""@г&string""""@@ @@@N@@@@@@S @@г&string""""@@ @@@`@@@@@c@@?ڠ7@@@ @@j"<"p@@XP@@@@@r "<"^@@qi@@@ @@ z "<"M @@@ @@ ~#@@@ "("(&@  [quote_command cmd args] returns a quoted command line, suitable for use as an argument to {!Sys.command}, {!Unix.system}, and the {!Unix.open_process} functions. The string [cmd] is the command to call. The list [args] is the list of arguments to pass to this command. It can be empty. The optional arguments [?stdin] and [?stdout] and [?stderr] are file names used to redirect the standard input, the standard output, or the standard error of the command. If [~stdin:f] is given, a redirection [< f] is performed and the standard input of the command reads from file [f]. If [~stdout:f] is given, a redirection [> f] is performed and the standard output of the command is written to file [f]. If [~stderr:f] is given, a redirection [2> f] is performed and the standard error of the command is written to file [f]. If both [~stdout:f] and [~stderr:f] are given, with the exact same file name [f], a [2>&1] redirection is performed so that the standard output and the standard error of the command are interleaved and redirected to the same file [f]. Under Unix and Cygwin, the command, the arguments, and the redirections if any are quoted using {!Filename.quote}, then concatenated. Under Win32, additional quoting is performed as required by the [cmd.exe] shell that is called by {!Sys.command}. @raise Failure if the command cannot be escaped on the current platform. @since 4.10  """ #(s(u@@@@@@@ ;U@@6@ 6@@@@@@@@n@N9@@@yR@2@@5@@@`@@@@@}*@ ]@=@@kD@$@J@@3 Z Y Y Z Z Z Z Z@L@A@ H************************************************************************ cA@@ dA@L@ H  iBMM jBM@ H OCaml  oC pC@ H  uD vD3@ H Xavier Leroy, projet Cristal, INRIA Rocquencourt  {E44 |E4@ H  F F@ H Copyright 1996 Institut National de Recherche en Informatique et  G G@ H en Automatique.  H Hg@ H  Ihh Ih@ H All rights reserved. This file is distributed under the terms of  J J@ H the GNU Lesser General Public License version 2.1, with the  K KN@ H special exception on linking described in the file LICENSE.  LOO LO@ H  M M@ H************************************************************************ N N5@<* Operations on file names.  F* The conventional name for the current directory (e.g. [.] in Unix).  X* The conventional name for the parent of the current directory (e.g. [..] in Unix). 砠 A* The directory separator (e.g. [/] in Unix). @since 3.11.2  [* [concat dir file] returns a file name that designates file [file] in directory [dir]. [ * Return [true] if the file name is relative to the current directory, [false] if it is absolute (i.e. in Unix, starts with [/]).  * 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. Ϡ R* [check_suffix name suff] returns [true] if the filename [name] ends with the suffix [suff]. Under Windows ports (including Cygwin), comparison is case-insensitive, relying on [String.lowercase_ascii]. Note that this does not match exactly the interpretation of case-insensitive filename equivalence from Windows. w * [chop_suffix name suff] removes the suffix [suff] from the filename [name]. @raise Invalid_argument if [name] does not end with the suffix [suff].  * [chop_suffix_opt ~suffix filename] removes the suffix from the [filename] if possible, or returns [None] if the filename does not end with the suffix. Under Windows ports (including Cygwin), comparison is case-insensitive, relying on [String.lowercase_ascii]. Note that this does not match exactly the interpretation of case-insensitive filename equivalence from Windows. @since 4.08  v* [extension name] is the shortest suffix [ext] of [name0] where: - [name0] is the longest suffix of [name] that does not contain a directory separator; - [ext] starts with a period; - [ext] is preceded by at least one non-period character in [name0]. If such a suffix does not exist, [extension name] is the empty string. @since 4.04 o * Return the given file name without its extension, as defined in {!Filename.extension}. If the extension is empty, the function returns the given file name. The following invariant holds for any file name [s]: [remove_extension s ^ extension s = s] @since 4.04 ) s* Same as {!Filename.remove_extension}, but raise [Invalid_argument] if the given name has an empty extension. 㠠 * Split a file name into directory name / base file name. 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}), references to [basename name] (which is a relative file name) designate the same file as [name] before the call to {!Sys.chdir}. This function conforms to the specification of POSIX.1-2008 for the [basename] utility.  y* See {!Filename.basename}. This function conforms to the specification of POSIX.1-2008 for the [dirname] utility. W * [null] is ["/dev/null"] on POSIX and ["NUL"] on Windows. It represents a file on the OS that discards all writes and returns end of file on reads. @since 4.10 # * [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]. The optional argument [temp_dir] indicates the temporary directory to use, defaulting to the current result of {!Filename.get_temp_dir_name}. 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. @raise Sys_error if the file could not be created. @before 3.11.2 no ?temp_dir optional argument  ;* Same as {!Filename.temp_file}, 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 [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], and [Open_text]. The default is [[Open_text]] (open in text mode). The file is created with permissions [perms] (defaults to readable and writable only by the file owner, [0o600]). @raise Sys_error if the file could not be opened. @before 4.03 no ?perms optional argument @before 3.11.2 no ?temp_dir optional argument 堠 g* [temp_dir prefix suffix] creates and returns the name of a fresh temporary directory with permissions [perms] (defaults to 0o700) inside [temp_dir]. The base name of the temporary directory is formed by concatenating [prefix], then a suitably chosen integer number, then [suffix]. The optional argument [temp_dir] indicates the temporary directory to use, defaulting to the current result of {!Filename.get_temp_dir_name}. The temporary directory is created empty, with permissions [0o700] (readable, writable, and searchable only by the file owner). The directory is guaranteed to be different from any other directory that existed when [temp_dir] was called. If temp_dir does not exist, this function does not create it. Instead, it raises Sys_error. @raise Sys_error if the directory could not be created. @since 5.1 [ * 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 returned by [GetTempPath2] (if available) or [GetTempPath]. The temporary directory can be changed with {!Filename.set_temp_dir_name}. Under Windows, before OCaml 5.4, it would return the value of the [TEMP] environment variable, or "." if the variable was not set. @since 4.00  * Change the temporary directory returned by {!Filename.get_temp_dir_name} and used by {!Filename.temp_file} and {!Filename.open_temp_file}. The temporary directory is a domain-local value which is inherited by child domains. @since 4.00 Ϡ  * 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.  * [quote_command cmd args] returns a quoted command line, suitable for use as an argument to {!Sys.command}, {!Unix.system}, and the {!Unix.open_process} functions. The string [cmd] is the command to call. The list [args] is the list of arguments to pass to this command. It can be empty. The optional arguments [?stdin] and [?stdout] and [?stderr] are file names used to redirect the standard input, the standard output, or the standard error of the command. If [~stdin:f] is given, a redirection [< f] is performed and the standard input of the command reads from file [f]. If [~stdout:f] is given, a redirection [> f] is performed and the standard output of the command is written to file [f]. If [~stderr:f] is given, a redirection [2> f] is performed and the standard error of the command is written to file [f]. If both [~stdout:f] and [~stderr:f] are given, with the exact same file name [f], a [2>&1] redirection is performed so that the standard output and the standard error of the command are interleaved and redirected to the same file [f]. Under Unix and Cygwin, the command, the arguments, and the redirections if any are quoted using {!Filename.quote}, then concatenated. Under Win32, additional quoting is performed as required by the [cmd.exe] shell that is called by {!Sys.command}. @raise Failure if the command cannot be escaped on the current platform. @since 4.10 @?)../ocamlc0-strict-sequence(-absname"-w5+a-4-9-41-42-44-45-48"-g+-warn-error"+A*-bin-annot)-nostdlib*-principal"-o4stdlib__Filename.cmi"-c   D/builds/workspace/precheck/flambda/false/label/ocaml-linux-32/stdlib @@0P A3_Z 3        @ @@8CamlinternalFormatBasics0%FU(Q/Tu&Stdlib0Lku]8_٠ 10&L dj@0&L djAVC_*de@X@@0jĐ@  F@@@+@@@$@͐@@c7@?;c@t@@P@@