# Copyright 1992, 1994, 1995, 1999, 2002, 2007, 2008
# Free Software Foundation, Inc.

# 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 3 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, see <http://www.gnu.org/licenses/>.  */

# This file was written by Fred Fish. (fnf@cygnus.com)

if $tracelevel {
    strace $tracelevel
}

global message
global timeout

set timeout 200

gdb_exit
gdb_start

gdb_test "set pagination off" ""
gdb_test "show pagination" "State of pagination is off.*" "pagination is off"
send_gdb "help\n"
gdb_expect_list "unpaged help" ".*$gdb_prompt $" {
    "List of classes of commands:"
    ""
    "aliases -- Aliases of other commands"
    "breakpoints -- Making program stop at certain points"
    "data -- Examining data"
    "files -- Specifying and examining files"
    "internals -- Maintenance commands"
    "obscure -- Obscure features"
    "running -- Running the program"
    "stack -- Examining the stack"
    "status -- Status inquiries"
    "support -- Support facilities"
    "tracepoints -- Tracing of program execution without stopping the program"
    "user-defined -- User-defined commands"
    ""
    "Type .help. followed by a class name for a list of commands in that class."
    "Type .help. followed by command name for full documentation."
    "Command name abbreviations are allowed if unambiguous."
}


gdb_test "set pagination on" ""
gdb_test "show pagination" "State of pagination is on.*" "pagination is on"
gdb_test "set height 10" ""
send_gdb "help\n"
gdb_expect_list "paged help" \
	".*---Type <return> to continue, or q <return> to quit---" {
    "List of classes of commands:"
    ""
    "aliases -- Aliases of other commands"
    "breakpoints -- Making program stop at certain points"
    "data -- Examining data"
    "files -- Specifying and examining files"
    "internals -- Maintenance commands"
    "obscure -- Obscure features"
    "running -- Running the program"
}
gdb_test "q"


gdb_exit
return 0

