SVK::Util - Utility functions for SVK classes use SVK::Util qw( func1 func2 func3 ) This is yet another abstraction function set for portable file, buffer and IO handling, tailored to SVK's specific needs. No symbols are exported by default; the user module needs to specify the list of functions to import.

Constant Functions
IS_WIN32 Boolean flag to indicate whether this system is running Microsoft Windows. DEFAULT_EDITOR The default program to invoke for editing buffers: "notepad.exe" on Win32, "vi" otherwise. TEXT_MODE The I/O layer for text files: ":crlf" on Win32, empty otherwise. HAS_SYMLINK Boolean flag to indicate whether this system supports "symlink()". HAS_SVN_MIRROR Boolean flag to indicate whether we can successfully load SVN::Mirror.

Constant Scalars
$SEP Native path separator: platform: "\" on dosish platforms, "/" otherwise. $EOL End of line marker: "\015\012" on Win32, "\012" otherwise.

User Interactivity
get_prompt ($prompt, $pattern) Repeatedly prompt the user for a line of answer, until it matches the regular expression pattern. Returns the chomped answer line. get_buffer_from_editor ($what, $sep, $content, $filename, $anchor, $targets_ref) XXX Undocumented get_encoding Get the current encoding from locale get_encoder ([$encoding]) from_native ($octets, $what, [$encoding]) to_native ($octets, $what, [$encoding])

Mirror Handling
find_local_mirror ($repos, $uuid, $path, $rev) XXX Undocumented find_svm_source ($repos, $path, $rev) XXX Undocumented resolve_svm_source ($repos, $uuid, $path) XXX Undocumented

File Content Manipulation
read_file ($filename) Read from a file and returns its content as a single scalar. write_file ($filename, $content) Write out content to a file, overwriting existing content if present. slurp_fh ($input_fh, $output_fh) Read all data from the input filehandle and write them to the output filehandle. The input may also be a scalar, or reference to a scalar. md5_fh ($input_fh) Calculate MD5 checksum for data in the input filehandle. mimetype ($file) Return the MIME type for the file, or "undef" if the MIME database is missing on the system. mimetype_is_text ($mimetype) Return whether a MIME type string looks like a text file.

Path and Filename Handling
abspath ($path) Return paths with components in symlink resolved, but keep the final path even if it's symlink. Returns "undef" if the base directory does not exist. abs2rel ($pathname, $old_basedir, $new_basedir, $sep) Replace the base directory in the native pathname to another base directory and return the result. If the pathname is not under $old_basedir, it is not unmodified. If $new_basedir is an empty string, removes the old base directory but keeps the trailing slash. If $new_basedir is "undef", also removes the trailing slash. By default, the return value of this function will use $SEP as its path separator. Setting $sep to "/" will turn native path separators into "/" instead. catdir (@directories) Concatenate directory names to form a complete path; also removes the trailing slash from the resulting string, unless it is the root directory. catfile (@directories, $pathname) Concatenate one or more directory names and a filename to form a complete path, ending with a filename. If $pathname contains directories, they will be splitted off to the end of @directories. catpath ($volume, $directory, $filename) XXX Undocumented - See File::Spec devnull () Return a file name suitable for reading, and guaranteed to be empty. get_anchor ($need_target) XXX Undocumented make_path ($path) Create a directory, and intermediate directories as required. splitpath ($path) Splits a path in to volume, directory, and filename portions. On systems with no concept of volume, returns an empty string for volume. splitdir ($path) The opposite of "catdir()"; return a list of path components. tmpdir () Return the name of the first writable directory from a list of possible temporary directories. tmpfile (TEXT => $is_textmode, %args) In scalar context, return the filehandle of a temporary file. In list context, return the filehandle and the filename. If $is_textmode is true, the returned file handle is marked with "TEXT_MODE". See File::Temp for valid keys of %args. is_symlink ($filename) Return whether a file is a symbolic link, as determined by "-l". If $filename is not specified, return "-l _" instead. is_executable ($filename) Return whether a file is likely to be an executable file. Unlike "is_symlink()", the $filename argument is not optional. can_run ($filename) Check if we can run some command. is_uri ($string) Check if a string is a valid URI. move_path ($source, $target) Move a path to another place, creating intermediate directories in the target path if neccessary. If move failed, tell the user to move it manually. find_prev_copy ($fs, $rev) Find the revision of the nearest copy in a repository that is less or equal to $rev. Returns the found revision number, and a hash of arrayref that contains copied paths and its source found in that revision. Chia-liang Kao <clkao@clkao.org> Copyright 2003-2005 by Chia-liang Kao <clkao@clkao.org>. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See <http://www.perl.com/perl/misc/Artistic.html>