X-Git-Url: https://feistymeow.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=scripts%2Fcore%2Ffunctions.sh;h=aa9c512a918cfa91703226c4f77a1efe413b85d4;hb=c041a073fe44baafa4ebcb516c7d377d52fff054;hp=44a1bc0b2630cd7442d7fd25b11e3dd669fab0b9;hpb=54ca2128ef76a507221d366283c87958174bab9a;p=feisty_meow.git diff --git a/scripts/core/functions.sh b/scripts/core/functions.sh index 44a1bc0b..aa9c512a 100644 --- a/scripts/core/functions.sh +++ b/scripts/core/functions.sh @@ -99,36 +99,42 @@ if [ -z "$skip_all" ]; then # finds all processes matching the pattern specified and shows their full # process listing (whereas psfind just lists process ids). function psa() { + if [ -z "$1" ]; then + echo "psa finds processes by pattern, but there was no pattern on the command line." + return 1 + fi p=$(psfind "$1") - if [ ! -z "$p" ]; then - echo "" - echo "Processes containing \"$1\"..." - echo "" - if [ -n "$IS_DARWIN" ]; then - unset fuzil_sentinel - for i in $p; do - # only print the header the first time. - if [ -z "$fuzil_sentinel" ]; then - ps $i -w -u - else - ps $i -w -u | sed -e '1d' - fi - fuzil_sentinel=true - done - else - # cases besides mac os x's darwin. - extra_flags= - if [ "$OS" = "Windows_NT" ]; then - # special case for windows. - extra_flags=-W - ps | head -1 - for curr in $p; do - ps $extra_flags | grep "$curr" - done + if [ -z "$p" ]; then + # no matches. + return 0 + fi + echo "" + echo "Processes containing \"$1\"..." + echo "" + if [ -n "$IS_DARWIN" ]; then + unset fuzil_sentinel + for i in $p; do + # only print the header the first time. + if [ -z "$fuzil_sentinel" ]; then + ps $i -w -u else - # normal OSes can handle a nice simple query. - ps wu $p + ps $i -w -u | sed -e '1d' fi + fuzil_sentinel=true + done + else + # cases besides mac os x's darwin. + extra_flags= + if [ "$OS" = "Windows_NT" ]; then + # special case for windows. + extra_flags=-W + ps | head -1 + for curr in $p; do + ps $extra_flags | grep "$curr" + done + else + # normal OSes can handle a nice simple query. + ps wu $p fi fi } @@ -150,26 +156,41 @@ if [ -z "$skip_all" ]; then sudo /etc/init.d/alsasound restart } - # switches from a /X/path form to an X:/ form. - function msys_to_dos_path() { - # we always remove dos slashes in favor of forward slashes. - echo "$1" | sed -e 's/\\/\//g' | sed -e 's/\/\([a-zA-Z]\)\/\(.*\)/\1:\/\2/' + # switches from a /X/path form to an X:/ form. this also processes cygwin paths. + function unix_to_dos_path() { + # we usually remove dos slashes in favor of forward slashes. + if [ ! -z "$SERIOUS_SLASH_TREATMENT" ]; then + # unless this flag is set, in which case we force dos slashes. + echo "$1" | sed -e 's/\\/\//g' | sed -e 's/\/cygdrive//' | sed -e 's/\/\([a-zA-Z]\)\/\(.*\)/\1:\/\2/' | sed -e 's/\//\\/g' + else + echo "$1" | sed -e 's/\\/\//g' | sed -e 's/\/cygdrive//' | sed -e 's/\/\([a-zA-Z]\)\/\(.*\)/\1:\/\2/' + fi } # switches from an X:/ form to an /X/path form. - function dos_to_msys_path() { + function dos_to_unix_path() { # we always remove dos slashes in favor of forward slashes. echo "$1" | sed -e 's/\\/\//g' | sed -e 's/\([a-zA-Z]\):\/\(.*\)/\/\1\/\2/' } - - # su function: makes su perform a login. - # for some OSes, this transfers the X authority information to the new login. - function su() { + + # returns a successful value (0) if this system is debian or ubuntu. + function debian_like() { # decide if we think this is debian or ubuntu or a variant. DEBIAN_LIKE=$(if [ ! -z "$(grep -i debian /etc/issue)" \ -o ! -z "$(grep -i ubuntu /etc/issue)" ]; then echo 1; else echo 0; fi) - if [ $DEBIAN_LIKE -eq 1 ]; then + # success; this is debianish. + return 0 + else + # this seems like some other OS. + return 1 + fi + } + + # su function: makes su perform a login. + # for some OSes, this transfers the X authority information to the new login. + function su() { + if debian_like; then # debian currently requires the full version which imports X authority # information for su. @@ -205,26 +226,6 @@ if [ -z "$skip_all" ]; then fi } - # buntar is a long needed uncompressing macro that feeds into tar -x. - # it takes a list of bz2 file names and extracts their contents into - # sequentially numbered directories. - function buntar() { - index=1 - for i in $*; do - mkdir buntar_$index - pushd buntar_$index &>/dev/null - file=$i - # if the filename has no directory component, we will assume it used to - # be above our unzipping directory here. - if [ "$(basename $file)" = $file ]; then - file=../$file - fi - bunzip2 -d -c $file | tar -xf - - popd &>/dev/null - index=$(expr $index + 1) - done - } - # trashes the .#blah files that cvs and svn leave behind when finding conflicts. # this kind of assumes you've already checked them for any salient facts. function clean_cvs_junk() { @@ -232,20 +233,36 @@ if [ -z "$skip_all" ]; then find $i -follow -type f -iname ".#*" -exec perl $FEISTY_MEOW_SCRIPTS/files/safedel.pl {} ";" done } - - # recreates all the generated files that the feisty meow scripts use. - function regenerate() { - bash $FEISTY_MEOW_SCRIPTS/core/bootstrap_shells.sh - echo + + # overlay for nechung binary so that we can complain less grossly about it when it's missing. + function nechung() { local wheres_nechung=$(which nechung 2>/dev/null) if [ -z "$wheres_nechung" ]; then echo "The nechung oracle program cannot be found. You may want to consider" echo "rebuilding the feisty meow applications with this command:" - echo " bash $FEISTY_MEOW_DIR/scripts/generator/bootstrap_build.sh" + echo " bash $FEISTY_MEOW_SCRIPTS/generator/bootstrap_build.sh" else - nechung + $wheres_nechung fi } + + # recreates all the generated files that the feisty meow scripts use. + function regenerate() { + bash $FEISTY_MEOW_SCRIPTS/core/bootstrap_shells.sh + echo + nechung + } + + # generates a random password where the first parameter is the number of characters + # in the password (default 20) and the second parameter specifies whether to use + # special characters (1) or not (0). + # found function at http://legroom.net/2010/05/06/bash-random-password-generator + function random_password() + { + [ "$2" == "0" ] && CHAR="[:alnum:]" || CHAR="[:graph:]" + cat /dev/urandom | tr -cd "$CHAR" | head -c ${1:-32} + echo + } function function_sentinel() { return 0; }