runlttv: Add options to specify LTTV options
authorBenjamin Poirier <benjamin.poirier@polymtl.ca>
Fri, 25 Sep 2009 19:44:07 +0000 (15:44 -0400)
committerPierre-Marc Fournier <pierre-marc.fournier@polymtl.ca>
Wed, 14 Oct 2009 19:31:22 +0000 (15:31 -0400)
It is possible, from .runlttvrc:
* to modify the list of modules loaded in text mode or in graphical mode while
  still honoring the mode specified in the runlttv command line
* to change the default mode while still honoring the mode specified in the
  runlttv command line

from the command line or .runlttvrc:
* force the mode
* specify traces
* specify options that go before (eg. -v) or after (eg. -h) the list of
  modules

Signed-off-by: Benjamin Poirier <benjamin.poirier@polymtl.ca>
runlttv

diff --git a/runlttv b/runlttv
index 73b7d8ee53741f25eda30e7a131a4fda7d6151e8..e26fc6ff05b7ab5d9f644fc7f1ba5c0a509da9c9 100755 (executable)
--- a/runlttv
+++ b/runlttv
 #   $ ln -s ./lttv/modules/gui/lttvwindow/pixmaps
 # while in the same directory as this script.
 
+PROGNAME=$0
 RCFILE="$(dirname $0)/.runlttvrc"
+TEXTLIBS="-L lttv/modules/text/.libs -m textDump"
+GRAPHLIBS="-L lttv/modules/gui/lttvwindow/lttvwindow/.libs -m lttvwindow "\
+"-L lttv/modules/gui/controlflow/.libs -m guicontrolflow "\
+"-L lttv/modules/gui/detailedevents/.libs -m guievents "\
+"-L lttv/modules/gui/tracecontrol/.libs -m guitracecontrol "\
+"-L lttv/modules/gui/statistics/.libs -m guistatistics "\
+"-L lttv/modules/gui/resourceview/.libs -m resourceview "\
+"-L lttv/modules/gui/filter/.libs -m guifilter "\
+"-L lttv/modules/gui/interrupts/.libs -m interrupts "\
+"-L lttv/modules/gui/histogram/.libs -m guihistogram"
+DEFAULTMODE="gui"
 
 function usage {
-       echo "Usage: $0 OPTIONS TRACES..." >/dev/stderr
+       echo "Usage: $0 [OPTION]... [TRACE]..." >/dev/stderr
        echo "" >/dev/stderr
        echo "Options:" >/dev/stderr
-       echo -e "\t-m mode (modes: text)" >/dev/stderr
-       echo -e "\t-H helper (helpers: gdb, valgrind, massif, strace)" >/dev/stderr
+       echo -e "\t-m MODE      Output mode (modes: text, gui)" >/dev/stderr
+       echo -e "\t-H HELPER    Invoke LTTV through a helper program" >/dev/stderr
+       echo -e "\t             (helpers: gdb, valgrind, massif, strace)" >/dev/stderr
+       echo -e "\t-b OPTIONS   LTTV options to specify before the module list" >/dev/stderr
+       echo -e "\t-a OPTIONS   LTTV options to specify after the module list" >/dev/stderr
        echo "" >/dev/stderr
 }
 
@@ -30,55 +45,51 @@ else
        exit 1
 fi
 
-if [ -e "$RCFILE" ]; then
-       source "$RCFILE";
-fi
-
-while getopts ":hH:m:" options; do
-        case $options in
-                H) HELPER=$OPTARG;;
+while getopts "H:m:b:a:h" options; do
+       case $options in
+               H) HELPER=$OPTARG;;
                m) MODE=$OPTARG;;
-                h) usage;
-                   exit 0;;
-                \?) usage
-                        exit 1;;
-                *) usage
-                        exit 1;;
-        esac
+               b) BOPTIONS="$BOPTIONS $OPTARG";;
+               a) AOPTIONS="$AOPTIONS $OPTARG";;
+               h) usage;
+                       exit 0;;
+               \?) usage;
+                       exit 1;;
+       esac
 done
 shift $(($OPTIND - 1))
 
-for trace in $@;
+for trace in $@
 do
-       TRACEFILE="$TRACEFILE -t $trace "
+       TRACEFILES="$TRACEFILES -t $trace "
 done
 
+if [ -e "$RCFILE" ]; then
+       source "$RCFILE";
+fi
+
+if [ -z "$MODE" ]; then
+       MODE=$DEFAULTMODE
+fi
+
 if [ "$MODE" = "text" ]; then
-       ARGS="-L lttv/modules/text/.libs -m textDump"
+       LIBS="$TEXTLIBS"
+elif [ "$MODE" = "gui" ]; then
+       LIBS="$GRAPHLIBS"
 else
-       ARGS="-L lttv/modules/gui/lttvwindow/lttvwindow/.libs -m lttvwindow "\
-"-L lttv/modules/gui/controlflow/.libs -m guicontrolflow "\
-"-L lttv/modules/gui/detailedevents/.libs -m guievents "\
-"-L lttv/modules/gui/tracecontrol/.libs -m guitracecontrol "\
-"-L lttv/modules/gui/statistics/.libs -m guistatistics "\
-"-L lttv/modules/gui/resourceview/.libs -m resourceview "\
-"-L lttv/modules/gui/filter/.libs -m guifilter "\
-"-L lttv/modules/gui/interrupts/.libs -m interrupts "\
-"-L lttv/modules/gui/histogram/.libs -m guihistogram"
+       echo "$PROGNAME: unknown mode -- $MODE" >/dev/stderr
+       exit 1
 fi
 
+LTTV_ARGS="$BOPTIONS $LIBS $TRACEFILES $AOPTIONS"
 if [ "$HELPER" = "gdb" ]; then
-       shift
-       LD_LIBRARY_PATH=ltt/.libs gdb --args $LTTV_EXEC $ARGS $TRACEFILE $@
+       LD_LIBRARY_PATH=ltt/.libs gdb --args $LTTV_EXEC $LTTV_ARGS
 elif [ "$HELPER" = "valgrind" ]; then
-       shift
-       LD_LIBRARY_PATH=ltt/.libs valgrind --track-origins=yes --show-reachable=yes --leak-check=full --error-limit=no $LTTV_EXEC $ARGS $TRACEFILE $@
+       LD_LIBRARY_PATH=ltt/.libs valgrind --track-origins=yes --show-reachable=yes --leak-check=full --error-limit=no $LTTV_EXEC $LTTV_ARGS
 elif [ "$HELPER" = "massif" ]; then
-       shift
-       LD_LIBRARY_PATH=ltt/.libs valgrind --tool=massif $LTTV_EXEC $ARGS $TRACEFILE $@
+       LD_LIBRARY_PATH=ltt/.libs valgrind --tool=massif $LTTV_EXEC $LTTV_ARGS
 elif [ "$HELPER" = "strace" ]; then
-       shift
-       LD_LIBRARY_PATH=ltt/.libs strace $LTTV_EXEC $ARGS $TRACEFILE $@
+       LD_LIBRARY_PATH=ltt/.libs strace $LTTV_EXEC $LTTV_ARGS
 else
-       LD_LIBRARY_PATH=ltt/.libs $LTTV_EXEC $ARGS $TRACEFILE $@
+       LD_LIBRARY_PATH=ltt/.libs $LTTV_EXEC $LTTV_ARGS
 fi
This page took 0.026918 seconds and 4 git commands to generate.