# Functions
Abs resolves a path to an absolute path.
CopyFile copies file to the provided location making sure the resulting file has permission bits set to the mode prior to umask.
CopyFileAtomic copies file to a temporary file in the same destination directory and the renames to the final name.
EnsureFileWithPermission takes a file path, and 1.
EvalRelative evaluates symlinks in path relative to root path, it returns a path as if it was evaluated from chroot.
FindSize takes a size in bytes and converts it to a human-readable string representation expressing kB, MB, GB or TB (whatever is smaller, but still larger than one).
FirstExistingParent walks up the supplied path and returns the first parent that exists.
ForceRemoveAll removes a directory like os.RemoveAll, except that it will chmod any directory who's permissions are preventing the removal of contents.
IsDir check if name component is a directory.
IsExec check if name component has executable bit permission set.
IsFile check if name component is regular file.
IsGroup checks if named file is owned by group identified with gid.
IsLink check if name component is a symlink.
IsOwner checks if named file is owned by user identified with uid.
IsReadable returns true if the file that is passed in is readable by the user (note: uid is checked, not euid).
IsSuid check if name component has setuid bit permission set.
IsWritable returns true if the file that is passed in is writable by the user (note: uid is checked, not euid).
MakeTmpDir creates a temporary directory with provided mode in os.TempDir if basedir is "".
MakeTmpFile creates a temporary file with provided mode in os.TempDir if basedir is "".
Mkdir creates a directory if it doesn't exist with mode after umask reset.
MkdirAll creates a directory and parents if it doesn't exist with mode after umask reset.
PathExists simply checks if a path exists.
PermWalk is similar to filepath.Walk - but: 1.
PermWalkRaiseError is similar to filepath.Walk - but: 1.
RootDir returns the root directory of path (rootdir of /my/path is /my).
Touch behaves like touch command.