#!/bin/sh PREFIX=@PREFIX@ PROGRAM=`basename $0` echon () { if [ X"$ECHON" = X ]; then # Determine how to "echo" without newline: "echo -n" # or "echo ...\c" if [ X`echo -n` = X-n ]; then ECHON=echo NNL="\c" # " else ECHON="echo -n" NNL="" fi fi $ECHON "$*$NNL" } # echo if in verbose mode vecho() { [ -n "$VERBOSE" ] && echo "$@" } # echo unless quiet mode qecho() { [ -z "$QUIET" ] && echo "$@" } # echo to stderr eecho() { echo "$@" >&2 } # echo to stderr and exit with error die() { eecho "$@" exit 1 } init_tmpdir() { local omask=`umask` local __tmpd="/tmp/$PROGRAM-${$}-`date +%s`-$RANDOM" umask 077 || die "umask" mkdir -p "$__tmpd" || exit 1 trap "rm -fr \"$__tmpd\"; exit" 0 umask $omask eval "$1=\"$__tmpd\"" } pkg_inst() { [ -z "$NOCOMMIT" ] && apk add -q $* } pkg_deinst() { [ -z "$NOCOMMIT" ] && apk del -q $* } default_read() { local n read n [ -z "$n" ] && n="$2" eval "$1=\"$n\"" } invalid_ip() { [ "$1" ] || return 0 ! ipcalc -s $1 } cfg_add() { [ -z "$NOCOMMIT" ] && lbu_add "$@" } # from OpenBSD installer # Ask for a password, saving the input in $resp. # Display $1 as the prompt. # *Don't* allow the '!' options that ask does. # *Don't* echo input. # *Don't* interpret "\" as escape character. askpass() { echo -n "$1 " set -o noglob stty -echo read -r resp stty echo set +o noglob echo } # Ask for a password twice, saving the input in $_password askpassword() { local _oifs=$IFS IFS= while :; do askpass "Password for $1 account? (will not echo)" _password=$resp askpass "Password for $1 account? (again)" # N.B.: Need quotes around $resp and $_password to preserve leading # or trailing spaces. [ "$resp" = "$_password" ] && break echo "Passwords do not match, try again." done IFS=$_oifs }