# Nice mappings to restart/... the services Start Stop Reload Restart () { local SUDO [[ $UID != 0 ]] && SUDO="sudo" $SUDO /etc/init.d/$1 ${0:l} } # Quick find f() { echo "find . -iname \"*$1*\"" find . -iname "*$1*" } # Change to the directory of a specific package _cdu () { cd ${1:h} } # unpacks a specific package _unpack () { ebuild $1 clean unpack } # Open the ebuild with a specified command open_ebuild () { local ebuild sel local -a elist if [[ $# -lt 2 ]]; then echo "No package name given." return 4 fi ebuild="$(equery w $2 2>&1 )" if [[ $? -ne 0 ]]; then if [[ $ebuild == *"Ambiguous"* ]]; then elist=(${(f)ebuild}) # remove the first line shift elist echo "Ambiguous package name '$2' -- choose from: " cat -n <<< ${(F)elist} read "sel?Selection: " if [[ -z $elist[$sel] ]]; then echo "Invalid choice." return 1 else # the "=" is needed to strip the leading spaces and the quotes open_ebuild $1 ${=elist[$sel]} return $? fi elif [[ $ebuild == *"No packages matching"* ]]; then echo "Trying masked packages too..." ebuild=$(equery w -m $2 2>&1) fi fi if [[ $? -eq 0 ]]; then $1 $ebuild else echo "No ebuild found" fi } # Commit a new config change # Works only for simple cases cci () { trap 'unfunction ask' EXIT ask () { echo -n "Is this ok? [y/n] " if ! read -q; then echo echo "I would have done the wrong thing ... aborting!" return 2 else echo fi } if [[ $# == 0 ]]; then echo "No message given. Aborting." return 1 fi local message=$1 local tok=__cci__ pushd -q ~ local indexed="$(config status --porcelain | grep -v '^ ')" if [[ -n $indexed ]]; then echo ">> Stuff in index -- only commiting this" echo "$indexed" ask || return 2 else echo ">> Nothing in index -- commiting everything which has changed" echo "$(config status)" ask || return 2 config add -u fi cstg diff -O --cached ask || return 2 echo ">> Creating new patch" cstg new $tok -m "$message" echo ">> Refreshing" cstg refresh -i if [[ -z $(cstg files) ]]; then echo echo "Ehm - this patch is empty. Narf. Aborting!" echo "Deleting useless patch" cstg del $tok return 3 fi echo ">> Committing" cstg commit $tok if [[ -n $(cstg series --applied) ]]; then echo echo "Urgs! Something went wrong. There are still patches applied." echo "Clean up for yourself. Aborting here!" return 4 fi echo ">> Pushing to remote" config push echo ">> Re-apply patches" cstg push -a -k echo ">> Done" popd -q } check_libs() { for i in $(ps -A -o pid | tail -n +2); do pmap $i | grep deleted && echo $(ps $i) done } menc() { local p read -rs "p?Password: " echo echo "Loading ~/schreiben/" echo $p | encfs --stdinpass ~/.enc/schreiben/ ~/schreiben/ unset p } # list the current enabled gcc flags # based on a script by mv list_cc_flags() { trap 'unfunction Usage' EXIT Usage () { printf '%s\n' "Usage: ${0##*/} c|o [gcc-Flags e.g. -march=native -O2] Show which compile|optimization flags are selected when you chose gcc-Flags" return ${1:-1} } case "${1}" in c) shift gcc -v -c -Q "${@}" -o /dev/null -x c - 2>&1 <&1;; *) Usage;; esac } # set job count to 1 if there is only one package to install emerge() { if [[ $# < 3 ]]; then command emerge --jobs=1 $@ else command emerge $@ fi }