#!/bin/bash
#
# solaris.sysconf - External binaries required by the script on Solaris
#
# Copyright (C) 2006-2007 Princeton University
# Written by Christian Bienia
#
# All statements must be executable.
#

# Create a directory and all its parent directories, no error if directories
# exist
#
# Usage: ${MKDIR} DIRECTORY
MKDIR="mkdir -p"

# List contents of a directory
#
# Usage: ${LS} DIRECTORY
LS="ls"

# Copy a list of directories and files to a destination directory
# Recursively descend into directories, ignore errors, overwrite existing
# files, preserve symlinks
#
# Usage: ${CP} SOURCE... DESTINATION
CP="cp -pRPf"

# Move a list of directories and files to a destination directory
# Ignore errors and overwrite existing files
#
# Usage: ${MV} SOURCE... DESTINATION
MV="mv -f"

# Remove files or directories recursively, ignore errors
#
# Usage: ${RM} FILE...
RM="rm -rf"

# The current date (and possibly also time) in a format convenient for humans
#
# Usage: ${DATE}
DATE="date"

# The date which will be part of the log file name. Avoid special characters
# such as blanks, slashes or other symbols which are inconvenient to have in
# file names. The date (and time) should be accurate enough so that builds
# started within a relatively short period get different log files.
#
# Usage: eval logfile=[FILEPREFIX]$(${LOGDATE})[FILESUFFIX]; echo TEXT > ${logfile}
LOGDATE="date +%F_%T"

# Read input from stdin, write it to stdout and also append it to a file
#
# Usage: echo TEXT | ${TEE} ${logfile}
TEE="tee -a"

# Output contents of a text file
#
# Usage: ${CAT} textfile
CAT="cat"

# Unpack a tar archive
#
# Usage: ${UNTAR} tarfile
UNTAR="tar -xvf"

# Compare two files. The command has to return 0 if and only if the two files
# are identical.
#
# Usage: ${CMP} file1 file2
CMP="cmp"

# The stream editor
#
# Usage: ${SED} scriptfile inputfile
SED="sed -f"

