Added the ncurses-style GUI.
diff --git a/ltpmenu b/ltpmenu
new file mode 100755
index 0000000..fa73401
--- /dev/null
+++ b/ltpmenu
@@ -0,0 +1,413 @@
+################################################################################
+## ##
+## Copyright (c) International Business Machines Corp., 2001 ##
+## ##
+## This program is free software; you can redistribute it and#or modify ##
+## it under the terms of the GNU General Public License as published by ##
+## the Free Software Foundation; either version 2 of the License, or ##
+## (at your option) any later version. ##
+## ##
+## This program is distributed in the hope that it will be useful, but ##
+## WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ##
+## or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ##
+## for more details. ##
+## ##
+## You should have received a copy of the GNU General Public License ##
+## along with this program; if not, write to the Free Software ##
+## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ##
+## ##
+################################################################################
+#
+# File: runltp
+#
+# Description: This program is a Graphical User Interface (GUI)
+# Control Centre for LTP. The Control Centre provides
+# functionality to Compile, Execute and View Results of
+# LTP test cases.
+#
+# Author: Manoj Iyer - manjo@mail.utexas.edu
+#
+# Thanks: Jim Choate - For suggesting the use of dialog command.
+#
+# History: March 26 2003 - Created.
+#
+# March 28 2003 - Removed gauges and put make commands in foreground.
+# Robbie Williamson - robbiew@us.ibm.com
+#
+# March 31 2003 - Made scenario menu creation dynamic and code
+# to pull the test descriptions from the scenario files.
+# Robbie Williamson - robbiew@us.ibm.com
+#
+#! /bin/bash
+
+# Function: cleanup
+#
+# Description: Remove all temporary files created by this program. Cleanup
+# always called on program exit.
+#
+# Input: NONE
+#
+# Output: NONE
+cleanup()
+{
+ rm -f /tmp/runltp.*
+}
+
+
+# Function: display_info_msg
+#
+# Description: Displays informational messages window. This window may
+# may be used to display information like errors, instructions
+# etc to the user. The window is dismissed when the user hits
+# the [ENTER] key.
+#
+# Input: $1 - Title the needs to be displayed on the window.
+# eg: ERROR: Compiling LTP
+# $2 - Message text.
+#
+# Output: Information message window.
+display_info_msg()
+{
+ dialog --backtitle "Linux Test Project Control Centre" \
+ --title " $1 " \
+ --msgbox " $2 " 10 70
+ return $?
+}
+
+
+# Function: compile_ltp
+#
+# Description: Checks for commands that are pre-reqs for compiling and
+# installing LTP. It displays a confirmation window inorder to
+# confirm the choice made by the user.
+#
+# Calls: do_make_clean()
+# do_make()
+# do_make_install()
+#
+# Input: NONE
+#
+# Output: Confirmation window.
+compile_ltp()
+{
+ dialog --backtitle "Linux Test Project Control Centre" \
+ --title "Compiling LTP testsuite"\
+ --yesno "This will compile all the test cases in\
+ LTP test suite and place the executables\
+ in testcases/bin directory. Do\
+ you wish to continue ??" 7 70 || RC=$?
+ case $RC in
+ 0) \
+ for cmd in cc make lex ;
+ do \
+ which $cmd &>/tmp/runltp.err.$$ ;
+ if [ $? -ne 0 ] ;
+ then \
+ display_info_msg "Compiling LTP testsuite" \
+ "ERROR: command $cmd not found, $cmd is\
+ required to compile LTP test cases. Please\
+ install $cmd or export PATH correctly before\
+ running this program" ;
+ return ;
+ fi ;
+ done ;
+ make clean;
+ if [ $? -ne 0 ];then
+ echo "ERROR in \'make clean\' - exiting."
+ exit
+ fi
+ make ;
+ if [ $? -ne 0 ];then
+ echo "ERROR in \'make all\' - exiting."
+ exit
+ fi
+ make install ;
+ if [ $? -ne 0 ];then
+ echo "ERROR in \'make install\' - exiting."
+ exit
+ fi
+ return ;;
+
+ 1) return ;;
+
+ 255) return ;;
+ esac
+}
+
+
+# Function: disp_ltpres
+#
+# Description: The results generated after the ltp execution located under
+# ltp-mmddyy/results/ directory in a text (ASCII) file called
+# results.todaysdate. This function displays this file in a
+# window. If the results file does not exit it displays an
+# info message window notifing the user that LTP test cases
+# need to be executed inorder to view results.
+#
+# Input: ltp-mmddyy/results/results.todaysdate
+#
+# Output: Window displaying results of testcases that were executed.
+disp_ltpres()
+{
+ RC=0
+ if ! [ -f ./results/results.$(date -I) ]
+ then
+ display_info_msg "LTP Test Results" \
+ "Sorry cannot display test results, you have to run \
+ the test cases first. Please choose the Execute LTP \
+ option in the Main Menu."
+ return
+ fi
+
+ dialog --backtitle "Linux Test Project Control Centre" \
+ --title "LTP Test Results. Scroll [UP] [DOWN]/[PGUP] [PGDN]" \
+ --textbox ./results/results.$(date -I) 17 70
+
+ dialog --backtitle "Linux Test Project Control Centre" \
+ --title "LTP Test Results." \
+ --yesno "Would you like to share these results with the LTP \
+ community by posting it to the LTP results mailing list?" \
+ 7 70 || RC=$?
+ case $RC in
+ 0) \
+ mail ltp-results@lists.sourceforge.net < \
+ ./results/results.$(date -I) ;
+ return ;;
+
+ 1) return ;;
+
+ 255) return ;;
+ esac
+ return
+}
+
+
+# Function: exectest_screenout
+#
+# Description: Execute tests by calling runalltests.sh, display test status
+# in a window.
+#
+# Input: $1 - Flag to be passed to runalltests.sh inorder to run
+# networking tests.
+#
+# Output: messages printed by testcases.
+exectest_screenout()
+{
+ RC=0 # setting return code to 0, to loop in while
+
+ # remove old results file
+ rm ./results/results.$(date -I) &>/dev/null
+
+ # execute runalltests.sh with user defined command file.
+ ./runalltests.sh -q -p $1 -l results.$(date -I) \
+ -f /tmp/runltp.test.list.$$
+ sleep 2
+ return
+}
+
+
+# Function: execute_ltp
+#
+# Description: This function provides a menu of testcases that can be
+# selected for execution. If networking tests are selected,
+# they require a remote machine and remote machines root
+# users password. The user will be prompted to enter this
+# information in a text box.
+# The function checks to see if the ltp-mmddyy/testcases/bin
+# directory was created, this directory is created when the
+# testcases are compiled and installed, if it is not found
+# an info message window will notify the user that LTP needs to
+# be compiled before tests can be executed.
+# This function creates the senatrio file based on the users
+# choice of testcases and uses the runalltests.sh script to
+# execute these tests.
+# The messages printed by the testcases are displayed on this
+# terminal.
+#
+# Input: Users selection of testcases; scenario file.
+#
+# Output: Test selection window, Message window,
+# information message window
+execute_ltp()
+{
+ RC=0
+ host_name=" "
+ rhost_passwd=" "
+ run_net_test=" "
+
+ if ! [ -d ./testcases/bin ]
+ then
+ display_info_msg "Executing LTP testcases" \
+ "The testcases must to be compiled inorder\
+ to execute them. Returning to main menu. \
+ Please select the Compile option."
+ return
+ fi
+
+ LIST=$(for i in `ls -1 -A -I "CVS" runtest`; do echo -n "$i "; j=$(head -n1 runtest/$i | cut -d: -f2|sed s/" "/_/g); echo -n "$j off "; done)
+ dialog --backtitle "Linux Test Project Control Centre"\
+ --title "Execute LTP" --clear\
+ --checklist "Select [SPACEBAR] tests to run" 20 80 5 \
+ $LIST \
+ 2>/tmp/runltp.choice.$$ || RC=$?
+ size=`wc -m /tmp/runltp.choice.$$|awk '{print $1}'`
+ if [ $size -eq 0 ];then
+ tst_choice=$(echo "NULL")
+ else
+ tst_choice=$(cat /tmp/runltp.choice.$$)
+ fi
+ if [[ $tst_choice == NULL ]];then
+ RC=1
+ fi
+ case $RC in
+ 0) \
+ for i in $tst_choice ;
+ do \
+ cat ./runtest/$(echo $i | sed -e 's/"//g') \
+ >> /tmp/runltp.test.list.$$ ;
+ if [[ $(echo $i | sed -e 's/"//g') == "tcp_cmds" || \
+ $(echo $i | sed -e 's/"//g') == "tcp_cmds_noexpect" || \
+ $(echo $i | sed -e 's/"//g') == "multicast" || \
+ $(echo $i | sed -e 's/"//g') == "ipv6" || \
+ $(echo $i | sed -e 's/"//g') == "ipv6_noexpect" || \
+ $(echo $i | sed -e 's/"//g') == "nfs" || \
+ $(echo $i | sed -e 's/"//g') == "multicast" ]] ;
+ then \
+ run_net_test=" -N " ;
+ fi ;
+
+ done ;
+ if ! [ -z $run_net_test ] ;
+ then \
+ dialog --backtitle "Linux Test Project Control Centre"\
+ --title "Execute LTP test cases" \
+ --clear \
+ --inputbox "You have chosen to execute testcases \
+ that require a Remote Machine. \
+ Please enter the fully qualified host \
+ name" 17 80 $(hostname --long) \
+ 2>/tmp/runltp.out.$$ ;
+ host_name=$(cat /tmp/runltp.out.$$ | awk '{print $1}') ;
+ unset $RHOST ;
+ RHOST=$host_name ;
+ export RHOST;
+
+ dialog --backtitle "Linux Test Project Control Centre"\
+ --title "Execute LTP test cases" \
+ --clear \
+ --inputbox " Please enter the root password \
+ of this remote machine" 17 80 \
+ 2>/tmp/runltp.out.$$ ;
+ rhost_passwd=$(cat /tmp/runltp.out.$$ | awk '{print $1}') ;
+
+ PASSWD=$rhost_passwd ;
+ export PASSWD;
+ fi ;
+
+ if ! [ -d ./testcases/bin ] ;
+ then \
+ display_info_msg "Executing LTP testcases" \
+ "The testcases must to be compiled inorder\
+ to execute them. Returning to main menu. \
+ Please select the Compile option." ;
+ return ;
+ fi ;
+
+ dialog --clear ;
+
+ exectest_screenout $run_net_test ;
+
+ return ;;
+ 1) \
+ # echo "Cancel pressed" ;
+ return ;;
+ 255) \
+ # echo "ESC pressed" ;
+ return ;;
+ esac
+}
+
+
+# Function: about_ltpcc
+#
+# Description: This function displays a window containing a brief message
+# describing this programs functionality, and credits the author.
+#
+# Input: NONE
+#
+# Output: Message window, description of LTP Control Center.
+about_ltpcc()
+{
+ display_info_msg "About LTP Control Centre" \
+ "The LTP Control Centre can be used to\
+ to compile, install and execute\
+ The Linux Test Project test suite. Written by\
+ Manoj Iyer <manjo@mail.utexas.edu>"
+ return
+}
+
+# Function: main
+#
+# Description: Displays the main menu to the LTP Control Centre. The menu
+# provides options to Compile, Execute, and View test execution
+# results.
+#
+# Calls: about_ltpcc()
+# compile_ltp()
+# execute_ltp()
+# disp_ltpres()
+#
+# Input: NONE
+#
+# Output: Menu selection of actions to perform.
+
+# Global variables.
+RC=0 # return code from commands and local functions
+mmenu_item=" "
+RHOST=" "
+PASSWD=" "
+
+# call cleanup function on program exit.
+trap "cleanup" 0
+
+
+# wait in a loop until user hits [Cancel] button on the main menu.
+while :
+do
+ RC=0
+ dialog --clear
+ dialog --backtitle "Linux Test Project Control Centre" \
+ --title "Main Menu" \
+ --menu "Move using[UP] [DOWN], Select using [ENTER]" 15 70 4 \
+ About "About LTP Control Centre" \
+ Compile "Compile LTP testsuite" \
+ Execute "Execute LTP testsuite" \
+ Results "Display a summary of test results" \
+ 2>/tmp/runltp.mainmenu.$$ || RC=$?
+
+ case $RC in
+ 0) mmenu_item=`cat /tmp/runltp.mainmenu.$$` ;
+ # echo "return code = $RC" ;
+ # echo "MENU ITEM = $mmenu_item" ;
+ case $mmenu_item in
+ About) about_ltpcc ;;
+ Compile) compile_ltp ;;
+ Execute) execute_ltp ;;
+ Results) disp_ltpres ;;
+ esac ;;
+
+ 1) display_info_msg "Good Bye!" \
+ "Thank you for using Linux Test Project test suite.\
+ Please visit our project website \
+ http://ltp.sourceforge.net \
+ for latest news on The Linux Test Project. "
+ exit ;;
+
+ 255) display_info_msg "Good Bye!" \
+ "Thank you for using Linux Test Project test suite.\
+ Please visit our project website\
+ http://ltp.sourceforge.net for latest news\
+ on The Linux Test Project. "
+ exit;;
+ esac
+done