3B&55.5.0+dev0-2025-04-28/(Filename0current_dir_name&string(@@@@9../../stdlib/filename.mliRyyRy@@(Filename@@@/parent_dir_name)@@@@UU@@A@@'dir_sep*@@@@Y^^Y^r@@B@@&concat@/+@@@@6,@@@;-@@@@@@@@:^;^@@9C@@+is_relative@K.@@@$bool/@@@@@@PbCCQbCc@@OD@@+is_implicit@a0@@@1@@@@@@egfg@@dE@@,check_suffix@v2@@@@}3@@@24@@@@@@@@mm:@@F@@+chop_suffix@5@@@@6@@@7@@@@@@@@v  v  @@G@@/chop_suffix_opt&suffix8@@@@9@@@&optionL:@@@@@@@@@@@| c c| c @@H@@)extension@;@@@<@@@@@@J I IJ I i@@I@@0remove_extension@=@@@>@@@@@@Y  Y  @@J@@.chop_extension@?@@@@@@@@@@e11e1V@@K@@(basename@A@@@B@@@@@@jj@@L@@'dirname@'C@@@,D@@@@@@+u,u@@*M@@$null :E@@@@9z:z@@8N@@)temp_file!(temp_dirPF@@@@@@@XG@@@@_H@@@dI@@@@@@@@@@cUUdU@@bO@@.open_temp_file"$mode*$listK&StdlibJ)open_flag@@@@@@@@@%permsA#intL@@@@@@(temp_dirOM@@@@@@@N@@@@O@@@@P@@@ݠ@&StdlibQ+out_channel@@@@@@@@@@@@@@@@aa@@P@@(temp_dir#(temp_dirR@@@@@@%permsRS@@@@@@@T@@@@U@@@V@@@@@@@@@@@@)))v@@Q@@1get_temp_dir_name$@$unitW@@@ X@@@@@@   @@ R@@1set_temp_dir_name%@Y@@@Z@@@@@@ ! @@S@@%quote&@1[@@@6\@@@@@@5!!6!!4@@4T@@-quote_command'@F]@@@%stdinR^@@@@@@ &stdout__@@@@@@&stderrl`@@@@@@@bya@@@@@@c@@@@@@@@@@@ @@ @~"H"H""@@}U@@@39Operations on file names.@@@@@@@@@@@@A9../../stdlib/filename.mli9Filename.current_dir_name3 6The conventional name for the current directory (e.g. !.* in Unix).@@@@@@@@@@@@@@@@8Filename.parent_dir_name3 GThe conventional name for the parent of the current directory (e.g. "..* in Unix).@@@@@@@@@@@@@@@@0Filename.dir_sep3>The directory separator (e.g. !/* in Unix).@@@@&3.11.2@@@@@@@@@@@/Filename.concat3/concat dir file - returns a file name that designates file $file. in directory #dir!.@@@@@@@@@@@@@ @@@@@4Filename.is_relative3'Return $true ; if the file name is relative to the current directory, %false 1 if it is absolute (i.e. in Unix, starts with !/").@@@@@@@@@@@@@%@@@@4Filename.is_implicit3'Return $true i 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.@@@@@@@@@@@@@L@@@@Ǡ5Filename.check_suffix36check_suffix name suff) returns $true1 if the filename $name: ends with the suffix $suff!.@ \ Under Windows ports (including Cygwin), comparison is case-insensitive, relying on 6String.lowercase_ascii z. Note that this does not match exactly the interpretation of case-insensitive filename equivalence from Windows.@@@@@@@@@@@@@z@}@@@@ܠ4Filename.chop_suffix35chop_suffix name suff4 removes the suffix $suff7 from the filename $name!.@@@@@@@@0Invalid_argument#if $name> does not end with the suffix $suff!.@@@@@@@@@@@8Filename.chop_suffix_opt3 chop_suffix_opt ~suffix filename ! removes the suffix from the (filename9 if possible, or returns $None 2 if the filename does not end with the suffix.@ \ Under Windows ports (including Cygwin), comparison is case-insensitive, relying on 6String.lowercase_ascii z. Note that this does not match exactly the interpretation of case-insensitive filename equivalence from Windows.@@@@$4.08@@@@@@@@@ @@@@2Filename.extension3.extension name8 is the shortest suffix #ext$ of %name0' where:@%name0: is the longest suffix of $name 3 that does not contain a directory separator;@#ext6 starts with a period;@#ext ; is preceded by at least one non-period character in %name0!.@@ & If such a suffix does not exist, .extension name9 is the empty string.@@@@$4.04@@@@@@@:@*;@@@@39Filename.remove_extension3 DReturn the given file name without its extension, as defined in VD@ J. If the extension is empty, the function returns the given file name.@ 5 The following invariant holds for any file name !s!:@% $remove_extension s ^ extension s = s@@@@$4.04@@@@@@@M@RN@@@@F7Filename.chop_extension3(Same as 1D@,, but raise 0Invalid_argument . if the given name has an empty extension.@@@@@@@@@@@@S@mT@@@@L1Filename.basename3 >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 6. Moreover, after setting the current directory to ,dirname name' (with )Sys.chdir@@4), references to -basename name ? (which is a relative file name) designate the same file as $name4 before the call to )Sys.chdir@@!.@ K This function conforms to the specification of POSIX.1-2008 for the (basename) utility.@@@@@@@@@@@@@@@@@0Filename.dirname3$See RD@ L. This function conforms to the specification of POSIX.1-2008 for the 'dirname) utility.@@@@@@@@@@@@@@@@@-Filename.null3$null$ is +"/dev/null". on POSIX and %"NUL" j on Windows. It represents a file on the OS that discards all writes and returns end of file on reads.@@@@$4.10@@@@@@@@@@@2Filename.temp_file37temp_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 R indicates the temporary directory to use, defaulting to the current result of :Filename.get_temp_dir_nameD@ ;. 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.@@@@@&3.11.2>no ?temp_dir optional argument@@@@)Sys_error !if the file could not be created.@@@@@@@4@7@@@@7Filename.open_temp_file3(Same as RD@ , 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 g 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_text2. 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").@@@@@$4.03;no ?perms optional argument@&3.11.2>no ?temp_dir optional argument@@@@)Sys_error if the file could not be opened.@@@@@@@@@@@@@@1Filename.temp_dir36temp_dir prefix suffix Q creates and returns the name of a fresh temporary directory with permissions %perms? (defaults to 0o700) inside (temp_dir J. The base name of the temporary directory is formed by concatenating &prefix 1, then a suitably chosen integer number, then &suffix9. The optional argument (temp_dir U indicates the temporary directory to use, defaulting to the current result of D@ A. 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.@ c If temp_dir does not exist, this function does not create it. Instead, it raises Sys_error.@@@@#5.1@@@)Sys_error &if the directory could not be created.@@@@@@@@@@@@@ܠ3 FThe 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 ,GetTempPath27 (if available) or +GetTempPath!.@ 1 The temporary directory can be changed with :Filename.set_temp_dir_nameD@!.@ K Under Windows, before OCaml 5.4, it would return the value of the $TEMP : environment variable, or "." if the variable was not set.@@@@$4.00@@@@@@@ @, @@@@3 +Change the temporary directory returned by (D@1 and used by LD@% and  D@ ^. The temporary directory is a domain-local value which is inherited by child domains.@@@@$4.00@@@@@@@@N@@@@.Filename.quote3  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.@@@@@@@@@@@@@]@@@@6Filename.quote_command36quote_command cmd args G returns a quoted command line, suitable for use as an argument to +Sys.command@@", +Unix.system@@., and the 1Unix.open_process@@+ functions.@0 The string #cmd # is the command to call. The list $args H 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:f9 is given, a redirection #< f H is performed and the standard input of the command reads from file !f). If )~stdout:f9 is given, a redirection #> f L is performed and the standard output of the command is written to file !f). If )~stderr:f9 is given, a redirection $2> f K 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!.@ i Under Unix and Cygwin, the command, the arguments, and the redirections if any are quoted using D@ ], then concatenated. Under Win32, additional quoting is performed as required by the 'cmd.exe9 shell that is called by +Sys.command@@!.@@@@$4.10@@@'Failure 9if the command cannot be escaped on the current platform.@@@@@@@@@@%@@@@@@@@A@@@@@