diff --git a/data/gsmartcontrol-root.in b/data/gsmartcontrol-root.in index 322680e..5aa7d10 100644 --- a/data/gsmartcontrol-root.in +++ b/data/gsmartcontrol-root.in @@ -1,11 +1,12 @@ #!/bin/bash ############################################################################ # Copyright: -# (C) 2008 Alexander Shaduri +# (C) 2008 - 2010 Alexander Shaduri # License: See LICENSE_zlib.txt file ############################################################################ # Run gsmartcontrol with root, asking for root password first. +# export GSMARTCONTROL_SU to override a su command (e.g. "kdesu -c"). EXEC_BIN="@prefix@/bin/gsmartcontrol"; prog_name="gsmartcontrol" @@ -44,8 +45,8 @@ fi # They're basically the same, only the order is different. # sux requires xterm to ask for the password. # xdg-su is basically like this script, except worse :) -gnome_sus="gnomesu gksu kdesu xdg-su sux"; -kde_sus="kdesu gnomesu gksu xdg-su sux"; +gnome_sus="gnomesu gksu kdesu beesu xdg-su sux"; +kde_sus="kdesu gnomesu gksu beesu xdg-su sux"; other_sus="$gnome_sus"; @@ -60,18 +61,20 @@ elif [ "$DESKTOP" = "other" ]; then candidates="$other_sus"; fi -for subin in $candidates; do - which $subin &>/dev/null - if [ $? -eq 0 ]; then - found_su="$subin"; - break; - fi -done +if [ "$GSMARTCONTROL_SU" = "" ]; then + for subin in $candidates; do + which $subin &>/dev/null + if [ $? -eq 0 ]; then + found_su="$subin"; + break; + fi + done -if [ "$found_su" = "" ]; then - xmessage "Error launching ${prog_name}: No suitable su mechanism found. -Try installing kdesu, gnomesu, gksu or sux first."; - exit 1; + if [ "$found_su" = "" ]; then + xmessage "Error launching ${prog_name}: No suitable su mechanism found. +Try installing kdesu, gnomesu, gksu, beesu or sux first."; + exit 1; + fi fi @@ -82,7 +85,10 @@ fi # Add these directories _before_ existing PATH, so that the user is not # tricked into running it from some other path (we're running as root with # the user's env after all). -export PATH="/usr/sbin:/usr/local/sbin:$PATH" +# Note that beesu won't show a GUI login box if /usr/sbin is before /usr/bin, +# so add it first as well. +EXTRA_PATHS="/usr/bin:/usr/sbin:/usr/local/sbin"; +export PATH="$EXTRA_PATHS:$PATH" # echo $found_su; @@ -90,20 +96,29 @@ export PATH="/usr/sbin:/usr/local/sbin:$PATH" # Examples: # gnomesu -c 'gsmartcontrol --no-scan' # kdesu -c 'gsmartcontrol --no-scan' +# beesu -P 'gsmartcontrol --no-scan' # xterm -e sux -c 'gsmartcontrol --no-scan' # sux asks for password in a terminal -full_cmd="" -if [ "$found_su" = "sux" ]; then - full_cmd="xterm -e sux -c '$EXEC_BIN $@'" +full_cmd=""; + +if [ "$GSMARTCONTROL_SU" != "" ]; then + full_cmd="$GSMARTCONTROL_SU '$EXEC_BIN $@'"; + +elif [ "$found_su" = "sux" ]; then + full_cmd="xterm -e sux -c '$EXEC_BIN $@'"; elif [ "$found_su" = "gksu" ]; then - full_cmd="$found_su '$EXEC_BIN $@'" + full_cmd="$found_su '$EXEC_BIN $@'"; + +elif [ "$found_su" = "beesu" ]; then + full_cmd="$found_su -P '$EXEC_BIN $@'"; else # gnomesu, kdesu, xdg-su - full_cmd="$found_su -c '$EXEC_BIN $@'" + full_cmd="$found_su -c '$EXEC_BIN $@'"; fi +#echo $full_cmd eval $full_cmd diff --git a/src/applib/storage_detector.cpp b/src/applib/storage_detector.cpp index 384a9ff..3cab9c6 100644 --- a/src/applib/storage_detector.cpp +++ b/src/applib/storage_detector.cpp @@ -225,6 +225,7 @@ namespace { blacklist.push_back("/part[0-9]+$/"); // devfs had them blacklist.push_back("/p[0-9]+$/"); // partitions are usually marked this way blacklist.push_back("/md[0-9]*$/"); // linux software raid + blacklist.push_back("/dm-[0-9]*$/"); // linux device mapper for (unsigned int i = 0; i < lines.size(); ++i) {