that's no longer used.
SUBDIRS = comedi
-EXTRA_DIST = Documentation include scripts autogen.sh \
+EXTRA_DIST = autogen.sh \
m4/as-linux.m4 \
m4/as-modtool.m4 \
m4/rtai.m4 \
- m4/rtlinux.m4
+ m4/rtlinux.m4 \
+ Documentation/comedi/command \
+ Documentation/comedi/FAQ \
+ Documentation/comedi/notes/atmio_notes \
+ Documentation/comedi/notes/README \
+ Documentation/comedi/notes/boards \
+ Documentation/comedi/notes/regmaps \
+ Documentation/comedi/notes/testing \
+ Documentation/comedi/Hardware_Driver.HOWTO \
+ Documentation/comedi/counter-spec \
+ Documentation/comedi/hacks \
+ Documentation/comedi/insn_config \
+ Documentation/comedi/pci.ids \
+ Documentation/comedi/redhat-notes \
+ Documentation/comedi/drivers.txt \
+ Documentation/comedi/devices.txt \
+ Documentation/Configure.help \
+ Documentation/Configure.help.append \
+ include/asm/pgtable.h \
+ include/asm/div64.h \
+ include/asm/dma.h \
+ include/asm/page.h \
+ include/asm/uaccess.h \
+ include/asm/types.h \
+ include/asm/semaphore.h \
+ include/linux/comedi.h \
+ include/linux/comedi_rt.h \
+ include/linux/comedidev.h \
+ include/linux/comedilib.h \
+ include/linux/config.h \
+ include/linux/devfs_fs_kernel.h \
+ include/linux/fs.h \
+ include/linux/highmem.h \
+ include/linux/init.h \
+ include/linux/interrupt.h \
+ include/linux/ioport.h \
+ include/linux/irq.h \
+ include/linux/isapnp.h \
+ include/linux/kdev_t.h \
+ include/linux/kern_compat.h \
+ include/linux/kmod.h \
+ include/linux/mm.h \
+ include/linux/module.h \
+ include/linux/pci.h \
+ include/linux/poll.h \
+ include/linux/sched.h \
+ include/linux/slab.h \
+ include/linux/spinlock.h \
+ include/linux/timer.h \
+ include/linux/usb.h \
+ include/linux/version.h \
+ include/linux/vmalloc.h \
+ include/linux/wait.h \
+ include/linux/wrapper.h \
+ include/linux/compiler.h \
+ include/linux/device.h \
+ include/pcmcia/ds.h \
+ scripts/check_driver \
+ scripts/check_cmdtest \
+ scripts/check_kernel \
+ scripts/call_trace \
+ scripts/doc_devlist \
+ scripts/dump_doc
ACLOCAL_AMFLAGS = -I m4
+++ /dev/null
-#! /bin/bash
-#
-# This script was hacked from Linux-2.2.17
-#
-#
-# This script is used to configure the Linux kernel.
-#
-# It was inspired by the challenge in the original Configure script
-# to ``do something better'', combined with the actual need to ``do
-# something better'' because the old configure script wasn't flexible
-# enough.
-#
-# Raymond Chen was the original author of Configure.
-# Michael Elizabeth Chastain (mec@shout.net) is the current maintainer.
-#
-# 050793 - use IFS='@' to get around a bug in a pre-version of bash-1.13
-# with an empty IFS.
-#
-# 030995 (storner@osiris.ping.dk) - added support for tri-state answers,
-# for selecting modules to compile.
-#
-# 180995 Bernhard Kaindl (bkaindl@ping.at) - added dummy functions for
-# use with a config.in modified for make menuconfig.
-#
-# 301195 (boldt@math.ucsb.edu) - added help text support
-#
-# 281295 Paul Gortmaker - make tri_state functions collapse to boolean
-# if module support is not enabled.
-#
-# 010296 Aaron Ucko (ucko@vax1.rockhurst.edu) - fix int and hex to accept
-# arbitrary ranges
-#
-# 150296 Dick Streefland (dicks@tasking.nl) - report new configuration
-# items and ask for a value even when doing a "make oldconfig"
-#
-# 200396 Tom Dyas (tdyas@eden.rutgers.edu) - when the module option is
-# chosen for an item, define the macro <option_name>_MODULE
-#
-# 090397 Axel Boldt (boldt@math.ucsb.edu) - avoid ? and + in regular
-# expressions for GNU expr since version 1.15 and up use \? and \+.
-#
-# 300397 Phil Blundell (pjb27@cam.ac.uk) - added support for min/max
-# arguments to "int", allow dep_tristate to take a list of dependencies
-# rather than just one.
-#
-# 090398 Axel Boldt (boldt@math.ucsb.edu) - allow for empty lines in help
-# texts.
-#
-# 102598 Michael Chastain (mec@shout.net) - put temporary files in
-# current directory, not in /tmp.
-#
-# 24 January 1999, Michael Elizabeth Chastain, <mec@shout.net>
-# - Improve the exit message (Jeff Ronne).
-
-. ${LINUXDIR}/.config
-
-#
-# Make sure we're really running bash.
-#
-# I would really have preferred to write this script in a language with
-# better string handling, but alas, bash is the only scripting language
-# that I can be reasonable sure everybody has on their linux machine.
-#
-[ -z "$BASH" ] && { echo "Configure requires bash" 1>&2; exit 1; }
-
-# Disable filename globbing once and for all.
-# Enable function cacheing.
-set -f -h
-
-#
-# Dummy functions for use with a config.in modified for menuconf
-#
-function mainmenu_option () {
- :
-}
-function mainmenu_name () {
- :
-}
-function endmenu () {
- :
-}
-
-#
-# help prints the corresponding help text from Configure.help to stdout
-#
-# help variable
-#
-function help () {
- if [ -f Documentation/Configure.help ]
- then
- #first escape regexp special characters in the argument:
- var=$(echo "$1"|sed 's/[][\/.^$*]/\\&/g')
- #now pick out the right help text:
- text=$(sed -n "/^$var[ ]*\$/,\${
- /^$var[ ]*\$/c\\
-${var}:\\
-
- /^#/b
- /^[^ ]/q
- p
- }" Documentation/Configure.help)
- if [ -z "$text" ]
- then
- echo; echo " Sorry, no help available for this option yet.";echo
- else
- (echo; echo "$text") | ${PAGER:-more}
- fi
- else
- echo;
- echo " Can't access the file Documentation/Configure.help which"
- echo " should contain the help texts."
- echo
- fi
-}
-
-
-#
-# readln reads a line into $ans.
-#
-# readln prompt default oldval
-#
-function readln () {
- if [ "$DEFAULT" = "-d" -a -n "$3" ]; then
- echo "$1"
- ans=$2
- else
- echo -n "$1"
- [ -z "$3" ] && echo -n "(NEW) "
- IFS='@' read ans || exit 1
- [ -z "$ans" ] && ans=$2
- fi
-}
-
-#
-# comment does some pretty-printing
-#
-# comment 'xxx'
-#
-function comment () {
- echo "*"; echo "* $1" ; echo "*"
- (echo "" ; echo "#"; echo "# $1" ; echo "#") >>$CONFIG
- (echo "" ; echo "/*"; echo " * $1" ; echo " */") >>$CONFIG_H
-}
-
-#
-# define_bool sets the value of a boolean argument
-#
-# define_bool define value
-#
-function define_bool () {
- define_tristate $1 $2
-}
-
-function define_tristate () {
- case "$2" in
- "y")
- echo "$1=y" >>$CONFIG
- echo "#define $1 1" >>$CONFIG_H
- ;;
-
- "m")
- echo "$1=m" >>$CONFIG
- echo "#undef $1" >>$CONFIG_H
- echo "#define $1_MODULE 1" >>$CONFIG_H
- ;;
-
- "n")
- echo "# $1 is not set" >>$CONFIG
- echo "#undef $1" >>$CONFIG_H
- ;;
- esac
- eval "$1=$2"
-}
-
-#
-# bool processes a boolean argument
-#
-# bool question define
-#
-function bool () {
- old=$(eval echo "\${$2}")
- def=${old:-'n'}
- case "$def" in
- "y" | "m") defprompt="Y/n/?"
- def="y"
- ;;
- "n") defprompt="N/y/?"
- ;;
- esac
- while :; do
- readln "$1 ($2) [$defprompt] " "$def" "$old"
- case "$ans" in
- [yY] | [yY]es ) define_bool "$2" "y"
- break;;
- [nN] | [nN]o ) define_bool "$2" "n"
- break;;
- * ) help "$2"
- ;;
- esac
- done
-}
-
-#
-# tristate processes a tristate argument
-#
-# tristate question define
-#
-function tristate () {
- if [ "$CONFIG_MODULES" != "y" ]; then
- bool "$1" "$2"
- else
- old=$(eval echo "\${$2}")
- def=${old:-'n'}
- case "$def" in
- "y") defprompt="Y/m/n/?"
- ;;
- "m") defprompt="M/n/y/?"
- ;;
- "n") defprompt="N/y/m/?"
- ;;
- esac
- while :; do
- readln "$1 ($2) [$defprompt] " "$def" "$old"
- case "$ans" in
- [yY] | [yY]es ) define_tristate "$2" "y"
- break ;;
- [nN] | [nN]o ) define_tristate "$2" "n"
- break ;;
- [mM] ) define_tristate "$2" "m"
- break ;;
- * ) help "$2"
- ;;
- esac
- done
- fi
-}
-
-#
-# dep_tristate processes a tristate argument that depends upon
-# another option or options. If any of the options we depend upon is a
-# module, then the only allowable options are M or N. If all are Y, then
-# this is a normal tristate. This is used in cases where modules
-# are nested, and one module requires the presence of something
-# else in the kernel.
-#
-# dep_tristate question define default ...
-#
-function dep_tristate () {
- old=$(eval echo "\${$2}")
- def=${old:-'n'}
- ques=$1
- var=$2
- need_module=0
- shift 2
- while [ $# -gt 0 ]; do
- case "$1" in
- n)
- define_tristate "$var" "n"
- return
- ;;
- m)
- need_module=1
- ;;
- esac
- shift
- done
-
- if [ $need_module = 1 ]; then
- if [ "$CONFIG_MODULES" = "y" ]; then
- case "$def" in
- "y" | "m") defprompt="M/n/?"
- def="m"
- ;;
- "n") defprompt="N/m/?"
- ;;
- esac
- while :; do
- readln "$ques ($var) [$defprompt] " "$def" "$old"
- case "$ans" in
- [nN] | [nN]o ) define_tristate "$var" "n"
- break ;;
- [mM] ) define_tristate "$var" "m"
- break ;;
- [yY] | [yY]es ) echo
- echo " This answer is not allowed, because it is not consistent with"
- echo " your other choices."
- echo " This driver depends on another one which you chose to compile"
- echo " as a module. This means that you can either compile this one"
- echo " as a module as well (with M) or leave it out altogether (N)."
- echo
- ;;
- * ) help "$var"
- ;;
- esac
- done
- fi
- else
- tristate "$ques" "$var"
- fi
-}
-
-function dep_bool () {
- ques=$1
- var=$2
- shift 2
- while [ $# -gt 0 ]; do
- case "$1" in
- m | n)
- define_bool "$var" "n"
- return
- ;;
- esac
- shift
- done
-
- bool "$ques" "$var"
-}
-
-function dep_mbool () {
- ques=$1
- var=$2
- shift 2
- while [ $# -gt 0 ]; do
- case "$1" in
- n)
- define_bool "$var" "n"
- return
- ;;
- m)
- eval "$var=y"
- ;;
- esac
- shift
- done
-
- bool "$ques" "$var"
-}
-
-#
-# define_int sets the value of a integer argument
-#
-# define_int define value
-#
-function define_int () {
- echo "$1=$2" >>$CONFIG
- echo "#define $1 ($2)" >>$CONFIG_H
- eval "$1=$2"
-}
-
-#
-# int processes an integer argument with optional limits
-#
-# int question define default [min max]
-#
-function int () {
- old=$(eval echo "\${$2}")
- def=${old:-$3}
- if [ $# -gt 3 ]; then
- min=$4
- else
- min=-10000000 # !!
- fi
- if [ $# -gt 4 ]; then
- max=$5
- else
- max=10000000 # !!
- fi
- while :; do
- readln "$1 ($2) [$def] " "$def" "$old"
- if expr \( \( $ans + 0 \) \>= $min \) \& \( $ans \<= $max \) >/dev/null 2>&1 ; then
- define_int "$2" "$ans"
- break
- else
- help "$2"
- fi
- done
-}
-
-#
-# define_hex sets the value of a hexadecimal argument
-#
-# define_hex define value
-#
-function define_hex () {
- echo "$1=$2" >>$CONFIG
- echo "#define $1 0x${2#*[x,X]}" >>$CONFIG_H
- eval "$1=$2"
-}
-
-#
-# hex processes an hexadecimal argument
-#
-# hex question define default
-#
-function hex () {
- old=$(eval echo "\${$2}")
- def=${old:-$3}
- def=${def#*[x,X]}
- while :; do
- readln "$1 ($2) [$def] " "$def" "$old"
- ans=${ans#*[x,X]}
- if expr "$ans" : '[0-9a-fA-F][0-9a-fA-F]*$' > /dev/null; then
- define_hex "$2" "$ans"
- break
- else
- help "$2"
- fi
- done
-}
-
-#
-# define_string sets the value of a string argument
-#
-# define_string define value
-#
-function define_string () {
- echo "$1=\"$2\"" >>$CONFIG
- echo "#define $1 \"$2\"" >>$CONFIG_H
- eval "$1=\"$2\""
-}
-
-#
-# string processes a string argument
-#
-# string question define default
-#
-function string () {
- old=$(eval echo "\${$2}")
- def=${old:-$3}
- readln "$1 ($2) [$def] " "$def" "$old"
- define_string "$2" "$ans"
-}
-#
-# choice processes a choice list (1-out-of-n)
-#
-# choice question choice-list default
-#
-# The choice list has a syntax of:
-# NAME WHITESPACE VALUE { WHITESPACE NAME WHITESPACE VALUE }
-# The user may enter any unique prefix of one of the NAMEs and
-# choice will define VALUE as if it were a boolean option.
-# VALUE must be in all uppercase. Normally, VALUE is of the
-# form CONFIG_<something>. Thus, if the user selects <something>,
-# the CPP symbol CONFIG_<something> will be defined and the
-# shell variable CONFIG_<something> will be set to "y".
-#
-function choice () {
- question="$1"
- choices="$2"
- old=
- def=$3
-
- # determine default answer:
- names=""
- set -- $choices
- firstvar=$2
- while [ -n "$2" ]; do
- if [ -n "$names" ]; then
- names="$names, $1"
- else
- names="$1"
- fi
- if [ "$(eval echo \"\${$2}\")" = "y" ]; then
- old=$1
- def=$1
- fi
- shift; shift
- done
-
- val=""
- while [ -z "$val" ]; do
- ambg=n
- readln "$question ($names) [$def] " "$def" "$old"
- ans=$(echo $ans | tr a-z A-Z)
- set -- $choices
- while [ -n "$1" ]; do
- name=$(echo $1 | tr a-z A-Z)
- case "$name" in
- "$ans"* )
- if [ "$name" = "$ans" ]; then
- val="$2"
- break # stop on exact match
- fi
- if [ -n "$val" ]; then
- echo;echo \
- " Sorry, \"$ans\" is ambiguous; please enter a longer string."
- echo
- val=""
- ambg=y
- break
- else
- val="$2"
- fi;;
- esac
- shift; shift
- done
- if [ "$val" = "" -a "$ambg" = "n" ]; then
- help "$firstvar"
- fi
- done
- set -- $choices
- while [ -n "$2" ]; do
- if [ "$2" = "$val" ]; then
- echo " defined $val"
- define_bool "$2" "y"
- else
- define_bool "$2" "n"
- fi
- shift; shift
- done
-}
-
-CONFIG=.tmpconfig
-CONFIG_H=.tmpconfig.h
-trap "rm -f $CONFIG $CONFIG_H ; exit 1" 1 2
-
-#
-# Make sure we start out with a clean slate.
-#
-echo "#" > $CONFIG
-echo "# Automatically generated make config: don't edit" >> $CONFIG
-echo "#" >> $CONFIG
-
-echo "/*" > $CONFIG_H
-echo " * Automatically generated C config: don't edit" >> $CONFIG_H
-echo " */" >> $CONFIG_H
-echo "#define AUTOCONF_INCLUDED" >> $CONFIG_H
-
-DEFAULT=""
-if [ "$1" = "-d" ] ; then
- DEFAULT="-d"
- shift
-fi
-
-CONFIG_IN=./scripts/config.in
-if [ "$1" != "" ] ; then
- CONFIG_IN=$1
-fi
-
-#DEFAULTS=arch/$ARCH/defconfig
-DEFAULTS=scripts/config.dist
-if [ -f .config ]; then
- DEFAULTS=.config
-fi
-
-if [ -f $DEFAULTS ]; then
- echo "#"
- echo "# Using defaults found in" $DEFAULTS
- echo "#"
- . $DEFAULTS
- sed -e 's/# \(CONFIG_[^ ]*\) is not.*/\1=n/' <$DEFAULTS >.config-is-not.$$
- . .config-is-not.$$
- rm .config-is-not.$$
-else
- echo "#"
- echo "# No defaults found"
- echo "#"
-fi
-
-. $CONFIG_IN
-
-rm -f .config.old
-if [ -f .config ]; then
- mv .config .config.old
-fi
-mv .tmpconfig .config
-#mv .tmpconfig.h include/linux/autoconf.h
-mv .tmpconfig.h include/config.h
-
-exit 0
+++ /dev/null
-#! /bin/sh
-#
-# This script is used to configure the linux kernel.
-#
-# It was inspired by a desire to not have to hit <enter> 9 million times
-# or startup the X server just to change a single kernel parameter.
-#
-# This script attempts to parse the configuration files, which are
-# scattered throughout the kernel source tree, and creates a temporary
-# set of mini scripts which are in turn used to create nested menus and
-# radiolists.
-#
-# It uses a very modified/mutilated version of the "dialog" utility
-# written by Savio Lam (lam836@cs.cuhk.hk). Savio is not responsible
-# for this script or the version of dialog used by this script.
-# Please do not contact him with questions. The official version of
-# dialog is available at sunsite.unc.edu or a sunsite mirror.
-#
-# Portions of this script were borrowed from the original Configure
-# script.
-#
-# William Roadcap was the original author of Menuconfig.
-# Michael Elizabeth Chastain (mec@shout.net) is the current maintainer.
-#
-# 070497 Bernhard Kaindl (bkaindl@netway.at) - get default values for
-# new bool, tristate and dep_tristate parameters from the defconfig file.
-# new configuration parameters are marked with '(NEW)' as in make config.
-#
-# 180697 Bernhard Kaindl (bkaindl@netway.at) - added the needed support
-# for string options. They are handled like the int and hex options.
-#
-# 081297 Pavel Machek (pavel@atrey.karlin.mff.cuni.cz) - better error
-# handling
-#
-# 131197 Michael Chastain (mec@shout.net) - output all lines for a
-# choice list, not just the selected one. This makes the output
-# the same as Configure output, which is important for smart config
-# dependencies.
-#
-# 101297 Michael Chastain (mec@shout.net) - remove sound driver cruft.
-#
-# 221297 Michael Chastain (mec@shout.net) - make define_bool actually
-# define its arguments so that later tests on them work right.
-#
-# 160198 Michael Chastain (mec@shout.net) - fix bug with 'c' command
-# (complement existing value) when used on virgin uninitialized variables.
-#
-# 090398 Axel Boldt (boldt@math.ucsb.edu) - allow for empty lines in help
-# texts.
-#
-# 12 Dec 1998, Michael Elizabeth Chastain (mec@shout.net)
-# Remove a /tmp security hole in get_def (also makes it faster).
-# Give uninitialized variables canonical values rather than null value.
-# Change a lot of places to call set_x_info uniformly.
-# Take out message about preparing version (old sound driver cruft).
-#
-# 13 Dec 1998, Riley H Williams <rhw@memalpha.cx>
-# When an error occurs, actually display the error message as well as
-# our comments thereon.
-#
-# 31 Dec 1998, Michael Elizabeth Chastain (mec@shout.net)
-# Fix mod_bool to honor $CONFIG_MODULES.
-# Fix dep_tristate to call define_bool when dependency is "n".
-#
-# 02 January 1999, Michael Elizabeth Chastain (mec@shout.net)
-# Blow away lxdialog.scrltmp on entry to activate_menu. This protects
-# against people who use commands like ' ' to select menus.
-#
-# 24 January 1999, Michael Elizabeth Chastain, <mec@shout.net>
-# - Improve the exit message (Jeff Ronne).
-#
-# 06 July 1999, Andrzej M. Krzysztofowicz, <ankry@mif.pg.gda.pl>
-# - Support for multiple conditions in dep_tristate().
-# - Implemented new functions: define_tristate(), define_int(), define_hex(),
-# define_string(), dep_bool().
-#
-
-. ${LINUXDIR}/.config
-
-#
-# Change this to TRUE if you prefer all kernel options listed
-# in a single menu rather than the standard menu hierarchy.
-#
-single_menu_mode=
-
-#
-# Make sure we're really running bash.
-#
-[ -z "$BASH" ] && { echo "Menuconfig requires bash" 1>&2; exit 1; }
-
-#
-# Cache function definitions, turn off posix compliance
-#
-set -h +o posix
-
-
-
-# Given a configuration variable, set the global variable $x to its value,
-# and the global variable $info to the string " (NEW)" if this is a new
-# variable.
-#
-# This function looks for: (1) the current value, or (2) the default value
-# from the arch-dependent defconfig file, or (3) a default passed by the caller.
-
-function set_x_info () {
- eval x=\$$1
- if [ -z "$x" ]; then
- eval `sed -n -e 's/# \(.*\) is not set.*/\1=n/' -e "/^$1=/p" arch/$ARCH/defconfig`
- eval x=\${$1:-"$2"}
- eval $1=$x
- eval INFO_$1="' (NEW)'"
- fi
- eval info="\$INFO_$1"
-}
-
-#
-# Load the functions used by the config.in files.
-#
-# I do this because these functions must be redefined depending
-# on whether they are being called for interactive use or for
-# saving a configuration to a file.
-#
-# Thank the heavens bash supports nesting function definitions.
-#
-load_functions () {
-
-#
-# Additional comments
-#
-function comment () {
- comment_ctr=$[ comment_ctr + 1 ]
- echo -ne "': $comment_ctr' '--- $1' " >>MCmenu
-}
-
-#
-# Define a boolean to a specific value.
-#
-function define_bool () {
- eval $1=$2
-}
-
-function define_tristate () {
- eval $1=$2
-}
-
-function define_hex () {
- eval $1=$2
-}
-
-function define_int () {
- eval $1=$2
-}
-
-function define_string () {
- eval $1="$2"
-}
-
-#
-# Create a boolean (Yes/No) function for our current menu
-# which calls our local bool function.
-#
-function bool () {
- set_x_info "$2" "n"
-
- case $x in
- y|m) flag="*" ;;
- n) flag=" " ;;
- esac
-
- echo -ne "'$2' '[$flag] $1$info' " >>MCmenu
-
- echo -e "function $2 () { l_bool '$2' \"\$1\" ;}\n" >>MCradiolists
-}
-
-#
-# Create a tristate (Yes/No/Module) radiolist function
-# which calls our local tristate function.
-#
-# Collapses to a boolean (Yes/No) if module support is disabled.
-#
-function tristate () {
- if [ "$CONFIG_MODULES" != "y" ]
- then
- bool "$1" "$2"
- else
- set_x_info "$2" "n"
-
- case $x in
- y) flag="*" ;;
- m) flag="M" ;;
- *) flag=" " ;;
- esac
-
- echo -ne "'$2' '<$flag> $1$info' " >>MCmenu
-
- echo -e "
- function $2 () { l_tristate '$2' \"\$1\" ;}" >>MCradiolists
- fi
-}
-
-#
-# Create a tristate radiolist function which is dependent on
-# another kernel configuration option.
-#
-# Quote from the original configure script:
-#
-# If the option we depend upon is a module,
-# then the only allowable options are M or N. If Y, then
-# this is a normal tristate. This is used in cases where modules
-# are nested, and one module requires the presence of something
-# else in the kernel.
-#
-function dep_tristate () {
- ques="$1"
- var="$2"
- dep=y
- shift 2
- while [ $# -gt 0 ]; do
- if [ "$1" = y ]; then
- shift
- elif [ "$1" = m ]; then
- dep=m
- shift
- else
- dep=n
- shift $#
- fi
- done
- if [ "$dep" = y ]; then
- tristate "$ques" "$var"
- elif [ "$dep" = m ]; then
- mod_bool "$ques" "$var"
- else
- define_tristate "$var" n
- fi
-}
-
-#
-# Same as above, but now only Y and N are allowed as dependency
-# (i.e. third and next arguments).
-#
-function dep_bool () {
- ques="$1"
- var="$2"
- dep=y
- shift 2
- while [ $# -gt 0 ]; do
- if [ "$1" = y ]; then
- shift
- else
- dep=n
- shift $#
- fi
- done
- if [ "$dep" = y ]; then
- bool "$ques" "$var"
- else
- define_bool "$var" n
- fi
-}
-
-function dep_mbool () {
- ques="$1"
- var="$2"
- dep=y
- shift 2
- while [ $# -gt 0 ]; do
- if [ "$1" = y -o "$1" = m ]; then
- shift
- else
- dep=n
- shift $#
- fi
- done
- if [ "$dep" = y ]; then
- bool "$ques" "$var"
- else
- define_bool "$var" n
- fi
-}
-
-#
-# Add a menu item which will call our local int function.
-#
-function int () {
- set_x_info "$2" "$3"
-
- echo -ne "'$2' '($x) $1$info' " >>MCmenu
-
- echo -e "function $2 () { l_int '$1' '$2' '$3' '$x' ;}" >>MCradiolists
-}
-
-#
-# Add a menu item which will call our local hex function.
-#
-function hex () {
- set_x_info "$2" "$3"
- x=${x##*[x,X]}
-
- echo -ne "'$2' '($x) $1$info' " >>MCmenu
-
- echo -e "function $2 () { l_hex '$1' '$2' '$3' '$x' ;}" >>MCradiolists
-}
-
-#
-# Add a menu item which will call our local string function.
-#
-function string () {
- set_x_info "$2" "$3"
-
- echo -ne "'$2' ' $1: \"$x\"$info' " >>MCmenu
-
- echo -e "function $2 () { l_string '$1' '$2' '$3' '$x' ;}" >>MCradiolists
-}
-
-#
-# Add a menu item which will call our local One-of-Many choice list.
-#
-function choice () {
- #
- # Need to remember params cause they're gonna get reset.
- #
- title=$1
- choices=$2
- default=$3
- current=
-
- #
- # Find out if one of the choices is already set.
- # If it's not then make it the default.
- #
- set -- $choices
- firstchoice=$2
-
- while [ -n "$2" ]
- do
- if eval [ "_\$$2" = "_y" ]
- then
- current=$1
- break
- fi
- shift ; shift
- done
-
- : ${current:=$default}
-
- echo -ne "'$firstchoice' '($current) $title' " >>MCmenu
-
- echo -e "
- function $firstchoice () \
- { l_choice '$title' \"$choices\" \"$current\" ;}" >>MCradiolists
-}
-
-} # END load_functions()
-
-
-
-
-
-#
-# Extract available help for an option from Configure.help
-# and send it to standard output.
-#
-# Most of this function was borrowed from the original kernel
-# Configure script.
-#
-function extract_help () {
- if [ -f Documentation/Configure.help ]
- then
- #first escape regexp special characters in the argument:
- var=$(echo "$1"|sed 's/[][\/.^$*]/\\&/g')
- #now pick out the right help text:
- text=$(sed -n "/^$var[ ]*\$/,\${
- /^$var[ ]*\$/c\\
-${var}:\\
-
- /^#/b
- /^[^ ]/q
- s/^ //
- /<file:\\([^>]*\\)>/s//\\1/g
- p
- }" Documentation/Configure.help)
-
- if [ -z "$text" ]
- then
- echo "There is no help available for this kernel option."
- return 1
- else
- echo "$text"
- fi
- else
- echo "There is no help available for this kernel option."
- return 1
- fi
-}
-
-#
-# Activate a help dialog.
-#
-function help () {
- if extract_help $1 >help.out
- then
- $DIALOG --backtitle "$backtitle" --title "$2"\
- --textbox help.out $ROWS $COLS
- else
- $DIALOG --backtitle "$backtitle" \
- --textbox help.out $ROWS $COLS
- fi
- rm -f help.out
-}
-
-#
-# Show the README file.
-#
-function show_readme () {
- $DIALOG --backtitle "$backtitle" \
- --textbox scripts/README.Menuconfig $ROWS $COLS
-}
-
-#
-# Begin building the dialog menu command and Initialize the
-# Radiolist function file.
-#
-function menu_name () {
- echo -ne "$DIALOG --title '$1'\
- --backtitle '$backtitle' \
- --menu '$menu_instructions' \
- $ROWS $COLS $((ROWS-10)) \
- '$default' " >MCmenu
- >MCradiolists
-}
-
-#
-# Add a submenu option to the menu currently under construction.
-#
-function submenu () {
- echo -ne "'activate_menu $2' '$1 --->' " >>MCmenu
-}
-
-#
-# Handle a boolean (Yes/No) option.
-#
-function l_bool () {
- if [ -n "$2" ]
- then
- case "$2" in
- y|m) eval $1=y ;;
- c) eval x=\$$1
- case $x in
- y) eval $1=n ;;
- n) eval $1=y ;;
- *) eval $1=y ;;
- esac ;;
- *) eval $1=n ;;
- esac
- else
- echo -ne "\007"
- fi
-}
-
-#
-# Same as bool() except options are (Module/No)
-#
-function mod_bool () {
- if [ "$CONFIG_MODULES" != "y" ]; then
- define_bool "$2" "n"
- else
- set_x_info "$2" "n"
-
- case $x in
- y|m) flag='M' ;;
- *) flag=' ' ;;
- esac
-
- echo -ne "'$2' '<$flag> $1$info' " >>MCmenu
-
- echo -e "function $2 () { l_mod_bool '$2' \"\$1\" ;}" >>MCradiolists
- fi
-}
-
-#
-# Same as l_bool() except options are (Module/No)
-#
-function l_mod_bool() {
- if [ -n "$2" ]
- then
- case "$2" in
- y) echo -en "\007"
- ${DIALOG} --backtitle "$backtitle" \
- --infobox "\
-This feature depends on another which has been configured as a module. \
-As a result, this feature will be built as a module." 4 70
- sleep 5
- eval $1=m ;;
- m) eval $1=m ;;
- c) eval x=\$$1
- case $x in
- m) eval $1=n ;;
- n) eval $1=m ;;
- *) eval $1=m ;;
- esac ;;
- *) eval $1=n ;;
- esac
- else
- echo -ne "\007"
- fi
-}
-
-#
-# Handle a tristate (Yes/No/Module) option.
-#
-function l_tristate () {
- if [ -n "$2" ]
- then
- eval x=\$$1
-
- case "$2" in
- y) eval $1=y ;;
- m) eval $1=m ;;
- c) eval x=\$$1
- case $x in
- y) eval $1=n ;;
- n) eval $1=m ;;
- m) eval $1=y ;;
- *) eval $1=y ;;
- esac ;;
- *) eval $1=n ;;
- esac
- else
- echo -ne "\007"
- fi
-}
-
-#
-# Create a dialog for entering an integer into a kernel option.
-#
-function l_int () {
- while true
- do
- if $DIALOG --title "$1" \
- --backtitle "$backtitle" \
- --inputbox "$inputbox_instructions_int" \
- 10 75 "$4" 2>MCdialog.out
- then
- answer="`cat MCdialog.out`"
- answer="${answer:-$3}"
-
- # Semantics of + and ? in GNU expr changed, so
- # we avoid them:
- if expr "$answer" : '0$' '|' "$answer" : '[1-9][0-9]*$' '|' "$answer" : '-[1-9][0-9]*$' >/dev/null
- then
- eval $2="$answer"
- else
- eval $2="$3"
- echo -en "\007"
- ${DIALOG} --backtitle "$backtitle" \
- --infobox "You have made an invalid entry." 3 43
- sleep 2
- fi
-
- break
- fi
-
- help "$2" "$1"
- done
-}
-
-#
-# Create a dialog for entering a hexadecimal into a kernel option.
-#
-function l_hex () {
- while true
- do
- if $DIALOG --title "$1" \
- --backtitle "$backtitle" \
- --inputbox "$inputbox_instructions_hex" \
- 10 75 "$4" 2>MCdialog.out
- then
- answer="`cat MCdialog.out`"
- answer="${answer:-$3}"
- answer="${answer##*[x,X]}"
-
- if expr "$answer" : '[0-9a-fA-F][0-9a-fA-F]*$' >/dev/null
- then
- eval $2="$answer"
- else
- eval $2="$3"
- echo -en "\007"
- ${DIALOG} --backtitle "$backtitle" \
- --infobox "You have made an invalid entry." 3 43
- sleep 2
- fi
-
- break
- fi
-
- help "$2" "$1"
- done
-}
-
-#
-# Create a dialog for entering a string into a kernel option.
-#
-function l_string () {
- while true
- do
- if $DIALOG --title "$1" \
- --backtitle "$backtitle" \
- --inputbox "$inputbox_instructions_string" \
- 10 75 "$4" 2>MCdialog.out
- then
- answer="`cat MCdialog.out`"
- answer="${answer:-$3}"
-
- #
- # Someone may add a nice check for the entered
- # string here...
- #
- eval $2=\"$answer\"
-
- break
- fi
-
- help "$2" "$1"
- done
-}
-
-
-#
-# Handle a one-of-many choice list.
-#
-function l_choice () {
- #
- # Need to remember params cause they're gonna get reset.
- #
- title="$1"
- choices="$2"
- current="$3"
- chosen=
-
- #
- # Scan current value of choices and set radiolist switches.
- #
- list=
- set -- $choices
- firstchoice=$2
- while [ -n "$2" ]
- do
- case "$1" in
- "$current"*) if [ -z "$chosen" ]; then
- list="$list $2 $1 ON "
- chosen=1
- else
- list="$list $2 $1 OFF "
- fi ;;
- *) list="$list $2 $1 OFF " ;;
- esac
-
- shift ; shift
- done
-
- while true
- do
- if $DIALOG --title "$title" \
- --backtitle "$backtitle" \
- --radiolist "$radiolist_instructions" \
- 15 70 6 $list 2>MCdialog.out
- then
- choice=`cat MCdialog.out`
- break
- fi
-
- help "$firstchoice" "$title"
- done
-
- #
- # Now set the boolean value of each option based on
- # the selection made from the radiolist.
- #
- set -- $choices
- while [ -n "$2" ]
- do
- if [ "$2" = "$choice" ]
- then
- eval $2="y"
- else
- eval $2="n"
- fi
-
- shift ; shift
- done
-}
-
-#
-# Call awk, and watch for error codes, etc.
-#
-function callawk () {
-awk "$1" || echo "Awk died with error code $?. Giving up." || exit 1
-}
-
-#
-# A faster awk based recursive parser. (I hope)
-#
-function parser1 () {
-callawk '
-BEGIN {
- menu_no = 0
- comment_is_option = 0
- parser("'$CONFIG_IN'","MCmenu0")
-}
-
-function parser(ifile,menu) {
-
- while (getline <ifile) {
- if ($1 == "mainmenu_option") {
- comment_is_option = "1"
- }
- else if ($1 == "comment" && comment_is_option == "1") {
- comment_is_option= "0"
- sub($1,"",$0)
- ++menu_no
-
- printf("submenu %s MCmenu%s\n", $0, menu_no) >>menu
-
- newmenu = sprintf("MCmenu%d", menu_no);
- printf( "function MCmenu%s () {\n"\
- "default=$1\n"\
- "menu_name %s\n",\
- menu_no, $0) >newmenu
-
- parser(ifile, newmenu)
- }
- else if ($0 ~ /^#|\$MAKE|mainmenu_name/) {
- printf("") >>menu
- }
- else if ($1 ~ "endmenu") {
- printf("}\n") >>menu
- return
- }
- else if ($1 == "source") {
- parser($2,menu)
- }
- else {
- print >>menu
- }
- }
-}'
-}
-
-#
-# Secondary parser for single menu mode.
-#
-function parser2 () {
-callawk '
-BEGIN {
- parser("'$CONFIG_IN'","MCmenu0")
-}
-
-function parser(ifile,menu) {
-
- while (getline <ifile) {
- if ($0 ~ /^#|$MAKE|mainmenu_name/) {
- printf("") >>menu
- }
- else if ($1 ~ /mainmenu_option|endmenu/) {
- printf("") >>menu
- }
- else if ($1 == "source") {
- parser($2,menu)
- }
- else {
- print >>menu
- }
- }
-}'
-}
-
-#
-# Parse all the config.in files into mini scripts.
-#
-function parse_config_files () {
- rm -f MCmenu*
-
- echo "function MCmenu0 () {" >MCmenu0
- echo 'default=$1' >>MCmenu0
- echo "menu_name 'Main Menu'" >>MCmenu0
-
- if [ "_$single_menu_mode" = "_TRUE" ]
- then
- parser2
- else
- parser1
- fi
-
- echo "comment ''" >>MCmenu0
- echo "g_alt_config" >>MCmenu0
- echo "s_alt_config" >>MCmenu0
-
- echo "}" >>MCmenu0
-
- #
- # These mini scripts must be sourced into the current
- # environment in order for all of this to work. Leaving
- # them on the disk as executables screws up the recursion
- # in activate_menu(), among other things. Once they are
- # sourced we can discard them.
- #
- for i in MCmenu*
- do
- echo -n "."
- source ./$i
- done
- rm -f MCmenu*
-}
-
-#
-# This is the menu tree's bootstrap.
-#
-# Executes the parsed menus on demand and creates a set of functions,
-# one per configuration option. These functions will in turn execute
-# dialog commands or recursively call other menus.
-#
-function activate_menu () {
- rm -f lxdialog.scrltmp
- while true
- do
- comment_ctr=0 #So comment lines get unique tags
-
- $1 "$default" 2> MCerror #Create the lxdialog menu & functions
-
- if [ "$?" != "0" ]
- then
- clear
- cat <<EOM
-
-Menuconfig has encountered a possible error in one of the kernel's
-configuration files and is unable to continue. Here is the error
-report:
-
-EOM
- sed 's/^/ Q> /' MCerror
- cat <<EOM
-
-Please report this to the maintainer <mec@shout.net>. You may also
-send a problem report to <linux-kernel@vger.kernel.org>.
-
-Please indicate the kernel version you are trying to configure and
-which menu you were trying to enter when this error occurred.
-
-EOM
- cleanup
- exit 1
- fi
- rm -f MCerror
-
- . ./MCradiolists #Source the menu's functions
-
- . ./MCmenu 2>MCdialog.out #Activate the lxdialog menu
- ret=$?
-
- read selection <MCdialog.out
-
- case "$ret" in
- 0|3|4|5|6)
- defaults="$selection\12$defaults" #pseudo stack
- case "$ret" in
- 0) eval $selection ;;
- 3) eval $selection y ;;
- 4) eval $selection n ;;
- 5) eval $selection m ;;
- 6) eval $selection c ;;
- esac
- default="${defaults%%\12*}" defaults="${defaults#*\12}"
- ;;
- 2)
- default="${selection%%\ *}"
-
- case "$selection" in
- *"-->"*|*"alt_config"*)
- show_readme ;;
- *)
- eval help $selection ;;
- esac
- ;;
- 255|1)
- break
- ;;
- 139)
- stty sane
- clear
- cat <<EOM
-
-There seems to be a problem with the lxdialog companion utility which is
-built prior to running Menuconfig. Usually this is an indicator that you
-have upgraded/downgraded your ncurses libraries and did not remove the
-old ncurses header file(s) in /usr/include or /usr/include/ncurses.
-
-It is VERY important that you have only one set of ncurses header files
-and that those files are properly version matched to the ncurses libraries
-installed on your machine.
-
-You may also need to rebuild lxdialog. This can be done by moving to
-the /usr/src/linux/scripts/lxdialog directory and issuing the
-"make clean all" command.
-
-If you have verified that your ncurses install is correct, you may email
-the maintainer <mec@shout.net> or post a message to
-<linux-kernel@vger.kernel.org> for additional assistance.
-
-EOM
- cleanup
- exit 139
- ;;
- esac
- done
-}
-
-#
-# Create a menu item to load an alternate configuration file.
-#
-g_alt_config () {
- echo -n "get_alt_config 'Load an Alternate Configuration File' "\
- >>MCmenu
-}
-
-#
-# Get alternate config file name and load the
-# configuration from it.
-#
-get_alt_config () {
- set -f ## Switch file expansion OFF
-
- while true
- do
- ALT_CONFIG="${ALT_CONFIG:-$DEFAULTS}"
-
- $DIALOG --backtitle "$backtitle" \
- --inputbox "\
-Enter the name of the configuration file you wish to load. \
-Accept the name shown to restore the configuration you \
-last retrieved. Leave blank to abort."\
- 11 55 "$ALT_CONFIG" 2>MCdialog.out
-
- if [ "$?" = "0" ]
- then
- ALT_CONFIG=`cat MCdialog.out`
-
- [ "_" = "_$ALT_CONFIG" ] && break
-
- if eval [ -r "$ALT_CONFIG" ]
- then
- eval load_config_file "$ALT_CONFIG"
- break
- else
- echo -ne "\007"
- $DIALOG --backtitle "$backtitle" \
- --infobox "File does not exist!" 3 38
- sleep 2
- fi
- else
- cat <<EOM >help.out
-
-For various reasons, one may wish to keep several different kernel
-configurations available on a single machine.
-
-If you have saved a previous configuration in a file other than the
-kernel's default, entering the name of the file here will allow you
-to modify that configuration.
-
-If you are uncertain, then you have probably never used alternate
-configuration files. You should therefor leave this blank to abort.
-
-EOM
- $DIALOG --backtitle "$backtitle"\
- --title "Load Alternate Configuration"\
- --textbox help.out $ROWS $COLS
- fi
- done
-
- set +f ## Switch file expansion ON
- rm -f help.out MCdialog.out
-}
-
-#
-# Create a menu item to store an alternate config file.
-#
-s_alt_config () {
- echo -n "save_alt_config 'Save Configuration to an Alternate File' "\
- >>MCmenu
-}
-
-#
-# Get an alternate config file name and save the current
-# configuration to it.
-#
-save_alt_config () {
- set -f ## Switch file expansion OFF
-
- while true
- do
- $DIALOG --backtitle "$backtitle" \
- --inputbox "\
-Enter a filename to which this configuration should be saved \
-as an alternate. Leave blank to abort."\
- 10 55 "$ALT_CONFIG" 2>MCdialog.out
-
- if [ "$?" = "0" ]
- then
- ALT_CONFIG=`cat MCdialog.out`
-
- [ "_" = "_$ALT_CONFIG" ] && break
-
- if eval touch $ALT_CONFIG 2>/dev/null
- then
- eval save_configuration $ALT_CONFIG
- load_functions ## RELOAD
- break
- else
- echo -ne "\007"
- $DIALOG --backtitle "$backtitle" \
- --infobox "Can't create file! Probably a nonexistent directory." 3 60
- sleep 2
- fi
- else
- cat <<EOM >help.out
-
-For various reasons, one may wish to keep different kernel
-configurations available on a single machine.
-
-Entering a file name here will allow you to later retrieve, modify
-and use the current configuration as an alternate to whatever
-configuration options you have selected at that time.
-
-If you are uncertain what all this means then you should probably
-leave this blank.
-EOM
- $DIALOG --backtitle "$backtitle"\
- --title "Save Alternate Configuration"\
- --textbox help.out $ROWS $COLS
- fi
- done
-
- set +f ## Switch file expansion ON
- rm -f help.out MCdialog.out
-}
-
-#
-# Load config options from a file.
-# Converts all "# OPTION is not set" lines to "OPTION=n" lines
-#
-function load_config_file () {
- awk '
- /# .* is not set.*/ { printf("%s=n\n", $2) }
- ! /# .* is not set.*/ { print }
- ' $1 >.tmpconfig
-
- source ./.tmpconfig
- rm -f .tmpconfig
-}
-
-#
-# Just what it says.
-#
-save_configuration () {
- echo
- echo -n "Saving your kernel configuration."
-
- #
- # Now, let's redefine the configuration functions for final
- # output to the config files.
- #
- # Nested function definitions, YIPEE!
- #
- function bool () {
- set_x_info "$2" "n"
- eval define_bool "$2" "$x"
- }
-
- function tristate () {
- set_x_info "$2" "n"
- eval define_tristate "$2" "$x"
- }
-
- function dep_tristate () {
- set_x_info "$2" "n"
- var="$2"
- shift 2
- while [ $# -gt 0 ]; do
- if [ "$1" = y ]; then
- shift
- elif [ "$1" = m -a "$x" != n ]; then
- x=m; shift
- else
- x=n; shift $#
- fi
- done
- define_tristate "$var" "$x"
- }
-
- function dep_bool () {
- set_x_info "$2" "n"
- var="$2"
- shift 2
- while [ $# -gt 0 ]; do
- if [ "$1" = y ]; then
- shift
- else
- x=n; shift $#
- fi
- done
- define_bool "$var" "$x"
- }
-
- function dep_mbool () {
- set_x_info "$2" "n"
- var="$2"
- shift 2
- while [ $# -gt 0 ]; do
- if [ "$1" = y -o "$1" = m ]; then
- shift
- else
- x=n; shift $#
- fi
- done
- define_bool "$var" "$x"
- }
-
- function int () {
- set_x_info "$2" "$3"
- echo "$2=$x" >>$CONFIG
- echo "#define $2 ($x)" >>$CONFIG_H
- }
-
- function hex () {
- set_x_info "$2" "$3"
- echo "$2=$x" >>$CONFIG
- echo "#define $2 0x${x##*[x,X]}" >>$CONFIG_H
- }
-
- function string () {
- set_x_info "$2" "$3"
- echo "$2=\"$x\"" >>$CONFIG
- echo "#define $2 \"$x\"" >>$CONFIG_H
- }
-
- function define_hex () {
- eval $1="$2"
- echo "$1=$2" >>$CONFIG
- echo "#define $1 0x${2##*[x,X]}" >>$CONFIG_H
- }
-
- function define_int () {
- eval $1="$2"
- echo "$1=$2" >>$CONFIG
- echo "#define $1 ($2)" >>$CONFIG_H
- }
-
- function define_string () {
- eval $1="$2"
- echo "$1=\"$2\"" >>$CONFIG
- echo "#define $1 \"$2\"" >>$CONFIG_H
- }
-
- function define_bool () {
- define_tristate "$1" "$2"
- }
-
- function define_tristate () {
- eval $1="$2"
-
- case "$2" in
- y)
- echo "$1=y" >>$CONFIG
- echo "#define $1 1" >>$CONFIG_H
- ;;
-
- m)
- if [ "$CONFIG_MODULES" = "y" ]
- then
- echo "$1=m" >>$CONFIG
- echo "#undef $1" >>$CONFIG_H
- echo "#define $1_MODULE 1" >>$CONFIG_H
- else
- echo "$1=y" >>$CONFIG
- echo "#define $1 1" >>$CONFIG_H
- fi
- ;;
-
- n)
- echo "# $1 is not set" >>$CONFIG
- echo "#undef $1" >>$CONFIG_H
- ;;
- esac
- }
-
- function choice () {
- #
- # Find the first choice that's already set to 'y'
- #
- choices="$2"
- default="$3"
- current=
- chosen=
-
- set -- $choices
- while [ -n "$2" ]
- do
- if eval [ "_\$$2" = "_y" ]
- then
- current=$1
- break
- fi
- shift ; shift
- done
-
- #
- # Use the default if none were set.
- #
- : ${current:=$default}
-
- #
- # Output all choices (to be compatible with other configs).
- #
- set -- $choices
- while [ -n "$2" ]
- do
- case "$1" in
- "$current"*) if [ -z "$chosen" ]; then
- define_bool "$2" "y"
- chosen=1
- else
- define_bool "$2" "n"
- fi ;;
- *) define_bool "$2" "n" ;;
- esac
- shift ; shift
- done
- }
-
- function mainmenu_name () {
- :
- }
-
- function mainmenu_option () {
- comment_is_option=TRUE
- }
-
- function endmenu () {
- :
- }
-
- function comment () {
- if [ "$comment_is_option" ]
- then
- comment_is_option=
- echo >>$CONFIG
- echo "#" >>$CONFIG
- echo "# $1" >>$CONFIG
- echo "#" >>$CONFIG
-
- echo >>$CONFIG_H
- echo "/*" >>$CONFIG_H
- echo " * $1" >>$CONFIG_H
- echo " */" >>$CONFIG_H
- fi
- }
-
- echo -n "."
-
- DEF_CONFIG="${1:-.config}"
- #DEF_CONFIG_H="include/linux/autoconf.h"
- DEF_CONFIG_H="include/config.h"
-
- CONFIG=.tmpconfig
- CONFIG_H=.tmpconfig.h
-
- echo "#" >$CONFIG
- echo "# Automatically generated by make menuconfig: don't edit" >>$CONFIG
- echo "#" >>$CONFIG
-
- echo "/*" >$CONFIG_H
- echo " * Automatically generated by make menuconfig: don't edit" >>$CONFIG_H
- echo " */" >>$CONFIG_H
- echo "#define AUTOCONF_INCLUDED" >> $CONFIG_H
-
- echo -n "."
- if . $CONFIG_IN >>.menuconfig.log 2>&1
- then
- if [ "$DEF_CONFIG" = ".config" ]
- then
- mv $CONFIG_H $DEF_CONFIG_H
- fi
-
- if [ -f "$DEF_CONFIG" ]
- then
- rm -f ${DEF_CONFIG}.old
- mv $DEF_CONFIG ${DEF_CONFIG}.old
- fi
-
- mv $CONFIG $DEF_CONFIG
-
- return 0
- else
- return 1
- fi
-}
-
-#
-# Remove temporary files
-#
-cleanup () {
- cleanup1
- cleanup2
-}
-
-cleanup1 () {
- rm -f MCmenu* MCradiolists MCdialog.out help.out
-}
-
-cleanup2 () {
- rm -f .tmpconfig .tmpconfig.h
-}
-
-set_geometry () {
- # Some distributions export these with incorrect values
- # which can really screw up some ncurses programs.
- LINES= COLUMNS=
-
- ROWS=${1:-24} COLS=${2:-80}
-
- # Just in case the nasty rlogin bug returns.
- #
- [ $ROWS = 0 ] && ROWS=24
- [ $COLS = 0 ] && COLS=80
-
- if [ $ROWS -lt 19 -o $COLS -lt 80 ]
- then
- echo -e "\n\007Your display is too small to run Menuconfig!"
- echo "It must be at least 19 lines by 80 columns."
- exit 1
- fi
-
- ROWS=$((ROWS-4)) COLS=$((COLS-5))
-}
-
-
-set_geometry `stty size 2>/dev/null`
-
-menu_instructions="\
-Arrow keys navigate the menu. \
-<Enter> selects submenus --->. \
-Highlighted letters are hotkeys. \
-Pressing <Y> includes, <N> excludes, <M> modularizes features. \
-Press <Esc><Esc> to exit, <?> for Help. \
-Legend: [*] built-in [ ] excluded <M> module < > module capable"
-
-radiolist_instructions="\
-Use the arrow keys to navigate this window or \
-press the hotkey of the item you wish to select \
-followed by the <SPACE BAR>.
-Press <?> for additional information about this option."
-
-inputbox_instructions_int="\
-Please enter a decimal value. \
-Fractions will not be accepted. \
-Use the <TAB> key to move from the input field to the buttons below it."
-
-inputbox_instructions_hex="\
-Please enter a hexadecimal value. \
-Use the <TAB> key to move from the input field to the buttons below it."
-
-inputbox_instructions_string="\
-Please enter a string value. \
-Use the <TAB> key to move from the input field to the buttons below it."
-
-DIALOG="./scripts/lxdialog/lxdialog"
-
-kernel_version="${VERSION}.${PATCHLEVEL}.${SUBLEVEL}${EXTRAVERSION}"
-
-backtitle="Linux Kernel v$kernel_version Configuration"
-
-trap "cleanup ; exit 1" 1 2 15
-
-
-#
-# Locate default files.
-#
-CONFIG_IN=./config.in
-if [ "$1" != "" ] ; then
- CONFIG_IN=$1
-fi
-
-DEFAULTS=arch/$ARCH/defconfig
-if [ -f .config ]; then
- DEFAULTS=.config
-fi
-
-if [ -f $DEFAULTS ]
-then
- echo "Using defaults found in" $DEFAULTS
- load_config_file $DEFAULTS
-else
- echo "No defaults found"
-fi
-
-
-# Fresh new log.
->.menuconfig.log
-
-# Load the functions used by the config.in files.
-echo -n "Preparing scripts: functions"
-load_functions
-
-if [ ! -e $CONFIG_IN ]
-then
- echo "Your main config.in file ($CONFIG_IN) does not exist"
- exit 1
-fi
-
-if [ ! -x $DIALOG ]
-then
- echo "Your lxdialog utility does not exist"
- exit 1
-fi
-
-#
-# Read config.in files and parse them into one shell function per menu.
-#
-echo -n ", parsing"
-parse_config_files $CONFIG_IN
-
-echo "done."
-#
-# Start the ball rolling from the top.
-#
-activate_menu MCmenu0
-
-#
-# All done!
-#
-cleanup1
-
-#
-# Confirm and Save
-#
-if $DIALOG --backtitle "$backtitle" \
- --yesno "Do you wish to save your new kernel configuration?" 5 60
-then
- save_configuration
- echo
- echo
- echo "*** End of Linux kernel configuration."
- echo "*** Check the top-level Makefile for additional configuration."
- if [ ! -f .hdepend -o "$CONFIG_MODVERSIONS" = "y" ] ; then
- echo "*** Next, you must run 'make dep'."
- else
- echo "*** Next, you may run 'make bzImage', 'make bzdisk', or 'make install'."
- fi
- echo
-else
- echo
- echo
- echo Your kernel configuration changes were NOT saved.
- echo
-fi
-
-# Remove log if empty.
-if [ ! -s .menuconfig.log ] ; then
- rm -f .menuconfig.log
-fi
-
-exit 0
+++ /dev/null
-#
-# Automatically generated make config: don't edit
-#
-CONFIG_COMEDI=m
-
-#
-# Comedi Features
-#
-# CONFIG_COMEDI_RT is not set
-CONFIG_COMEDI_DEBUG=y
-CONFIG_COMEDI_KLIB=m
-
-#
-# Hardware device drivers
-#
-CONFIG_COMEDI_DT=y
-CONFIG_COMEDI_DT2801=m
-CONFIG_COMEDI_DT2811=m
-CONFIG_COMEDI_DT2814=m
-CONFIG_COMEDI_DT2815=m
-CONFIG_COMEDI_DT2817=m
-CONFIG_COMEDI_DT282X=m
-CONFIG_COMEDI_DT3000=m
-CONFIG_COMEDI_NI=y
-CONFIG_COMEDI_NI_ATMIO=m
-CONFIG_COMEDI_NI_MIO_CS=m
-CONFIG_COMEDI_NI_DAQ_DIO24=m
-CONFIG_COMEDI_NI_PCIMIO=m
-CONFIG_COMEDI_NI_PCIDIO=m
-CONFIG_COMEDI_NI_6527=m
-CONFIG_COMEDI_NI_660X=m
-CONFIG_COMEDI_NI_670X=m
-CONFIG_COMEDI_MITE=y
-CONFIG_COMEDI_NI_ATMIO16D=m
-CONFIG_COMEDI_NI_AT_A2150=m
-CONFIG_COMEDI_NI_LABPC=m
-CONFIG_COMEDI_NI_AT_AO=m
-CONFIG_COMEDI_DAS08=m
-CONFIG_COMEDI_DAS16=m
-CONFIG_COMEDI_DAS16M1=m
-CONFIG_COMEDI_DAS6402=m
-CONFIG_COMEDI_DAS800=m
-CONFIG_COMEDI_DAS1800=m
-CONFIG_COMEDI_CB_PCIDAS=m
-CONFIG_COMEDI_CB_PCIDAS64=m
-CONFIG_COMEDI_CB_PCIDDA=m
-CONFIG_COMEDI_CB_PCIMDDA=m
-CONFIG_COMEDI_CB_PCIMDAS=m
-CONFIG_COMEDI_CB_DAS16_CS=m
-CONFIG_COMEDI_8255=m
-CONFIG_COMEDI_MULTIQ3=m
-CONFIG_COMEDI_PARPORT=m
-CONFIG_COMEDI_ADL_PCI9111=m
-CONFIG_COMEDI_ADL_PCI9118=m
-CONFIG_COMEDI_ADV_PCI1710=m
-CONFIG_COMEDI_ADV_PCI_DIO=m
-CONFIG_COMEDI_PCL711=m
-CONFIG_COMEDI_PCL724=m
-CONFIG_COMEDI_PCL725=m
-CONFIG_COMEDI_PCL726=m
-CONFIG_COMEDI_PCL812=m
-CONFIG_COMEDI_PCL816=m
-CONFIG_COMEDI_PCL818=m
-CONFIG_COMEDI_RTD520=m
-CONFIG_COMEDI_RTI800=m
-CONFIG_COMEDI_RTI802=m
-CONFIG_COMEDI_II_PCI20KC=m
-CONFIG_COMEDI_CONTEC_PCI_DIO=m
-CONFIG_COMEDI_QUATECH_DAQP=m
-CONFIG_COMEDI_DAQBOARD2000=m
-CONFIG_COMEDI_FL512=m
-CONFIG_COMEDI_POC=m
-CONFIG_COMEDI_PCM3730=m
-CONFIG_COMEDI_PCMAD=m
-CONFIG_COMEDI_AMPLC_PCI230=m
-CONFIG_COMEDI_AMPLC_PC236=m
-CONFIG_COMEDI_AMPLC_PC263=m
-CONFIG_COMEDI_SSV_DNP=m
-CONFIG_COMEDI_ICP_MULTI=m
-CONFIG_COMEDI_KE_COUNTER=m
-CONFIG_COMEDI_ME_DAQ=m
-CONFIG_COMEDI_GSC_HPDI=m
-CONFIG_COMEDI_TEST=m
-CONFIG_COMEDI_SKEL=m
-CONFIG_COMEDI_FC=m
+++ /dev/null
-#
-# Automatically generated make config: don't edit
-#
-CONFIG_COMEDI=m
-
-#
-# Comedi Features
-#
-# CONFIG_COMEDI_RT is not set
-CONFIG_COMEDI_DEBUG=y
-CONFIG_COMEDI_KLIB=m
-
-#
-# Hardware device drivers
-#
-CONFIG_COMEDI_DT=y
-CONFIG_COMEDI_DT2801=m
-CONFIG_COMEDI_DT2811=m
-CONFIG_COMEDI_DT2814=m
-CONFIG_COMEDI_DT2815=m
-CONFIG_COMEDI_DT2817=m
-CONFIG_COMEDI_DT282X=m
-# CONFIG_COMEDI_DT3000 is not set
-CONFIG_COMEDI_NI=y
-# CONFIG_COMEDI_NI_ATMIO is not set
-# CONFIG_COMEDI_NI_PCIMIO is not set
-# CONFIG_COMEDI_NI_PCIDIO is not set
-# CONFIG_COMEDI_NI_670X is not set
-CONFIG_COMEDI_NI_ATMIO16D=m
-CONFIG_COMEDI_NI_AT_A2150=m
-# CONFIG_COMEDI_NI_LABPC is not set
-CONFIG_COMEDI_NI_AT_AO=m
-# CONFIG_COMEDI_DAS08 is not set
-# CONFIG_COMEDI_DAS16 is not set
-CONFIG_COMEDI_DAS16M1=m
-CONFIG_COMEDI_DAS6402=m
-CONFIG_COMEDI_DAS800=m
-# CONFIG_COMEDI_DAS1800 is not set
-# CONFIG_COMEDI_CB_PCIDAS is not set
-# CONFIG_COMEDI_CB_PCIDAS64 is not set
-# CONFIG_COMEDI_CB_PCIDDA is not set
-# CONFIG_COMEDI_CB_PCIMDDA is not set
-# CONFIG_COMEDI_CB_PCIMDAS is not set
-# CONFIG_COMEDI_CB_DAS16_CS is not set
-CONFIG_COMEDI_8255=m
-CONFIG_COMEDI_MULTIQ3=m
-CONFIG_COMEDI_PARPORT=m
-# CONFIG_COMEDI_ADL_PCI9111 is not set
-# CONFIG_COMEDI_ADL_PCI9118 is not set
-# CONFIG_COMEDI_ADV_PCI1710 is not set
-CONFIG_COMEDI_PCL711=m
-CONFIG_COMEDI_PCL724=m
-CONFIG_COMEDI_PCL725=m
-CONFIG_COMEDI_PCL726=m
-CONFIG_COMEDI_PCL812=m
-CONFIG_COMEDI_PCL816=m
-CONFIG_COMEDI_PCL818=m
-# CONFIG_COMEDI_RTD520 is not set
-CONFIG_COMEDI_RTI800=m
-CONFIG_COMEDI_RTI802=m
-# CONFIG_COMEDI_II_PCI20KC is not set
-# CONFIG_COMEDI_CONTEC_PCI_DIO is not set
-# CONFIG_COMEDI_DAQBOARD2000 is not set
-# CONFIG_COMEDI_DAQBOARD2000_FPGA is not set
-CONFIG_COMEDI_FL512=m
-CONFIG_COMEDI_POC=m
-CONFIG_COMEDI_PCM3730=m
-CONFIG_COMEDI_PCMAD=m
-# CONFIG_COMEDI_AMPLC_PCI230 is not set
-# CONFIG_COMEDI_AMPLC_PC236 is not set
-# CONFIG_COMEDI_AMPLC_PC263 is not set
-CONFIG_COMEDI_SSV_DNP=m
-# CONFIG_COMEDI_ICP_MULTI is not set
-# CONFIG_COMEDI_KE_COUNTER is not set
-# CONFIG_COMEDI_ME_DAQ is not set
-CONFIG_COMEDI_TEST=m
-# CONFIG_COMEDI_SKEL is not set
-CONFIG_COMEDI_FC=m
+++ /dev/null
-
-define_bool CONFIG_COMEDI m
-
-source comedi/Config.in
-
+++ /dev/null
-#!/bin/sh
-
-if [ -f /lib/modules/$(uname -r)/build/Makefile ];then
- default="/lib/modules/$(uname -r)/build"
-else
- default="/usr/src/linux"
-fi
-default=${LINUXDIR:=$default}
-if [ "${interactive}" = "y" ];then
- echo -n "Enter location of Linux source tree [$default]: "
- read LINUXDIR
-fi
-: ${LINUXDIR:=$default}
-
-if [ ! -f "$LINUXDIR/.config" ];then
- echo
- echo Kernel source tree at $LINUXDIR is not configured
- echo Fix before continuing
- echo
- exit 1
-fi
-
-UTS_VERSION=$(grep UTS_RELEASE ${LINUXDIR}/include/linux/version.h| \
- sed 's/[^"]*"\(.*\)\{1\}"/\1/')
-LINUX_VERSION_CODE=$(grep LINUX_VERSION_CODE ${LINUXDIR}/include/linux/version.h| \
- sed 's/.*LINUX_VERSION_CODE\([0-9xXa-fA-F]*\)/\1/')
-
-echo using LINUXDIR=$LINUXDIR
-
-export LINUXDIR
-
-if (( $LINUX_VERSION_CODE < 0x20500 )); then
- if [ ! -f "$LINUXDIR/.hdepend" ];then
- echo
- echo You need to run \'make dep\' on the kernel source before
- echo continuing.
- echo
- exit 1
- fi
-fi
-
-. $LINUXDIR/.config
-
-#
-# check for a bad situation
-#
-if [ "$CONFIG_MODULES" = "n" ]
-then
- cat <<EOF
- *****
- ***** WARNING!!!
- *****
- ***** Your kernel is configured to not allow loadable modules.
- ***** You are attempting to compile a loadable module for this
- ***** kernel. This is a problem. Please correct it.
- *****
-EOF
-exit
-fi
-
-#
-# check running kernel vs. /usr/src/linux and warn if necessary
-#
-echo "Kernel source version is ${UTS_VERSION}"
-
-UNAME=$(uname -r)
-
-if [ "${UNAME}" != "${UTS_VERSION}" ]
-then
- cat <<EOF
- ***
- *** WARNING!!!
- ***
- *** The kernel that is currently running ($UNAME)
- *** appears to be a different version than the source in
- *** $LINUXDIR ($UTS_VERSION).
- *** If so, the current compile will create a module that is
- *** INCOMPATIBLE with the running kernel. (This could be
- *** what you want, however.)
- ***
-EOF
-fi
-
-topdir=$(pwd)
-if (( $LINUX_VERSION_CODE >= 0x20500 )); then
- FLAGDIR=${topdir}/scripts/linux_flags-2.6
- make -C ${LINUXDIR} V=1 SUBDIRS=${FLAGDIR} LINUXDIR=${LINUXDIR} MODVERDIR=${FLAGDIR} modules
-else
- FLAGDIR=${topdir}/scripts/linux_flags
- make -C ${FLAGDIR} LINUXDIR=${LINUXDIR}
-fi
-if [ $? != 0 ]; then
- echo "make in linux source directory failed, do you have write permission?"
- exit $?
-fi
-mv ${FLAGDIR}/flags .buildvars
-
-
-if (( $LINUX_VERSION_CODE >= 0x00020300 ));then
- echo "FLAT_MODULES := no" >>.buildvars
-else
- echo "FLAT_MODULES := yes" >>.buildvars
-fi
-
-
+++ /dev/null
-#!/bin/sh
-
-default=""
-for i in $PCMCIADIR `echo $LINUXDIR/pcmcia*`; do
- if [ -r $i ]; then
- default=$i
- fi
-done
-
-echo -n "Enter location of PCMCIA source tree [$default]: "
-read PCMCIADIR
-: ${PCMCIADIR:=$default}
-
-if [ -r $PCMCIADIR ]; then
- echo using PCMCIADIR=$PCMCIADIR
-else
- echo not configuring PCMCIA support
-fi
+++ /dev/null
-#!/bin/sh
-
-if [ "$CONFIG_RTHAL" != "" ];then
- echo You appear to be running an RTAI-patched kernel
-
- default=${RTAIDIR:=/usr/src/rtai}
- if [ "${interactive}" = "y" ]
- then
- echo -n "Enter location of RTAI source tree [${default}]: "
- read RTAIDIR
- fi
- : ${RTAIDIR:=${default}}
- if [ -d ${RTAIDIR}/include ];then
- echo RTAIDIR=$RTAIDIR >>.buildvars
- echo CFLAGS += -I $RTAIDIR/include >>.buildvars
- else
- if [ -d ${RTAIDIR}/rtai-core/include ];then
- echo RTAIDIR=$RTAIDIR >>.buildvars
- echo CFLAGS += -I $RTAIDIR >>.buildvars
- echo CFLAGS += -I $RTAIDIR/rtai-core/include >>.buildvars
- fi
- fi
- export RTAIDIR
-fi
-
+++ /dev/null
-#!/bin/sh
-
-if [ -f "$LINUXDIR/include/asm/rt_irq.h" ]; then
- CONFIG_RTL_V1="y"
-fi
-if [ "$CONFIG_RTLINUX" = "y" ]; then
- CONFIG_RTL=y
-fi
-if [ "$CONFIG_RTL" != "" -o "$CONFIG_RTL_V1" = "y" ]; then
- echo You appear to be running an RTL-patched kernel
-
- default=${RTLDIR:=/usr/src/rtl}
-STOPASKING=""
-while [ -z "$STOPASKING" ]; do
- if [ "${interactive}" = "y" ];then
- echo -n "Enter location of RTL source tree [$default]: "
- read RTLDIR
- fi
- : ${RTLDIR:=$default}
- if [ -d ${RTLDIR}/include ];then
- echo RTLDIR=$RTLDIR >>.buildvars
- echo CFLAGS += -I $RTLDIR/include -I $RTLDIR/include/compat -I $RTLDIR/include/posix -D__RT__ >>.buildvars
- STOPASKING="1"
- else
- echo "$RTLDIR does not contain an include/ subdirectory. Try again!"
- fi
-done
- export RTLDIR
-fi
+++ /dev/null
-#!/usr/bin/perl -w
-
-
-open(IN, "$ARGV[0]");
-
-print "# This Makefile is autogenerated. Edit Makefile.in instead.\n";
-while($_=<IN>){
- if(m/select\(([\w_]+) ([\w_. ]+)\)/){
- print "obj-\$($1) += $2\n";
- }elsif(m/expsyms\(([\w_. ]+)\)/){
- print "export-objs += $1\n";
- }elsif(m/objlink\(([\w_.]+) ([\w_. ]+)\)/){
- print "$1-objs += $2\n";
- push @later,"$1";
- }elsif(m/link_subdirs\(([\w_.]+)\)/){
- print "subdir-m += $1\n";
- }elsif(m/ifsel\(([\w_]+)\)/){
- print "ifneq (\$($1),)\n";
- }elsif(m/endif/){
- print "endif\n";
- }elsif(m/^$/){
- }elsif(m/^#/){
- }else{
- print "ack! $_";
- }
-}
-
-#print "\n";
-#print "M_OBJS := \$(sort \$(filter-out \$(export-objs), \$(obj-m)))\n";
-#print "MX_OBJS := \$(sort \$(filter \$(export-objs), \$(obj-m)))\n";
-#print "SUB_DIRS := \$(subdirs-m)\n";
-#print "ALL_SUB_DIRS := \$(SUB_DIRS)\n";
-#print "MOD_SUB_DIRS := \$(SUB_DIRS)\n";
-print "\n";
-print "include \$(TOPDIR)/Rules.make\n";
-print "\n";
-
-@later = sort @later;
-
-$last="";
-foreach $s (@later){
- if($s ne $last){
- print "$s: \$($s-objs)\n";
- print "\t\$(LD) -r -o \$@ \$($s-objs)\n";
- }
- $last=$s;
-}
-
+++ /dev/null
-
-obj-m += fake.o
-
-$(obj)/fake.c: flags
- touch $(obj)/fake.c
-
-.PHONY: flags
-flags:
- echo LINUXDIR=$(LINUXDIR) >$(obj)/flags
- echo ARCH=$(ARCH) >>$(obj)/flags
- echo AFLAGS="$(AFLAGS)" | sed 's_Iinclude_I"$(LINUXDIR)/include"_g'>>$(obj)/flags
- echo LDFLAGS="$(LDFLAGS)" >>$(obj)/flags
- echo ARFLAGS="$(ARFLAGS)" >>$(obj)/flags
- echo CROSS_COMPILE="$(CROSS_COMPILE)" >>$(obj)/flags
- echo KERNELRELEASE="$(KERNELRELEASE)" >>$(obj)/flags
- echo CFLAGS="$(CFLAGS)" | sed 's_Iinclude_I"$(LINUXDIR)/include"_g'>>$(obj)/flags
- echo CC="$(CC)" >>$(obj)/flags
- echo LD="$(LD)" >>$(obj)/flags
- echo AS="$(AS)" >>$(obj)/flags
-
-
+++ /dev/null
-
-#LINUXDIR=/home/ds/linux/linux-2.4.16-rthal5
-
-all:
- $(MAKE) -C $(LINUXDIR) SUBDIRS=$(shell if [ "$$PWD" != "" ]; then echo $$PWD; else pwd; fi) modules
-
-modules:
- echo LINUXDIR=$(LINUXDIR) >flags
- echo ARCH=$(ARCH) >>flags
- echo AFLAGS="$(AFLAGS)" >>flags
- echo LDFLAGS="$(LDFLAGS)" >>flags
- echo ARFLAGS="$(ARFLAGS)" >>flags
- echo CROSS_COMPILE="$(CROSS_COMPILE)" >>flags
- echo KERNELRELEASE="$(KERNELRELEASE)" >>flags
-# This is evil Makefile hackery. Please look the other way.
-ifneq (,$(findstring __KERNEL__,$(CC)))
- echo CFLAGS="$(wordlist 2,100,$(CC)) $(CFLAGS)" >>flags
- echo CC=$(word 1,$(CC)) >>flags
-else
- echo CFLAGS="$(CFLAGS)" >>flags
- echo CC="$(CC)" >>flags
-endif
- echo LD="$(LD)" >>flags
- echo AS="$(AS)" >>flags
-
-
+++ /dev/null
-This is NOT the official version of dialog. This version has been
-significantly modified from the original. It is for use by the Linux
-kernel configuration script. Please do not bother Savio Lam with
-questions about this program.
+++ /dev/null
-HOSTCC = gcc
-HOSTCFLAGS = -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer
-
-HOSTCFLAGS += -DLOCALE
-LIBS = -lncurses
-
-ifeq (/usr/include/ncurses/ncurses.h, $(wildcard /usr/include/ncurses/ncurses.h))
- HOSTCFLAGS += -I/usr/include/ncurses -DCURSES_LOC="<ncurses.h>"
-else
-ifeq (/usr/include/ncurses/curses.h, $(wildcard /usr/include/ncurses/curses.h))
- HOSTCFLAGS += -I/usr/include/ncurses -DCURSES_LOC="<ncurses/curses.h>"
-else
-ifeq (/usr/include/ncurses.h, $(wildcard /usr/include/ncurses.h))
- HOSTCFLAGS += -DCURSES_LOC="<ncurses.h>"
-else
- HOSTCFLAGS += -DCURSES_LOC="<curses.h>"
-endif
-endif
-endif
-
-
-OBJS = checklist.o menubox.o textbox.o yesno.o inputbox.o \
- util.o lxdialog.o msgbox.o
-
-%.o: %.c
- $(HOSTCC) $(HOSTCFLAGS) -c -o $@ $<
-
-all: ncurses lxdialog
-
-lxdialog: $(OBJS)
- $(HOSTCC) -o lxdialog $(OBJS) $(LIBS)
-
-ncurses:
- @echo "main() {}" > lxtemp.c
- @if $(HOSTCC) -lncurses lxtemp.c ; then \
- rm -f lxtemp.c a.out; \
- else \
- rm -f lxtemp.c; \
- echo -e "\007" ;\
- echo ">> Unable to find the Ncurses libraries." ;\
- echo ">>" ;\
- echo ">> You must have Ncurses installed in order" ;\
- echo ">> to use 'make menuconfig'" ;\
- echo ;\
- exit 1 ;\
- fi
-
-clean:
- rm -f core *.o *~ lxdialog
+++ /dev/null
-/*
- * checklist.c -- implements the checklist box
- *
- * ORIGINAL AUTHOR: Savio Lam (lam836@cs.cuhk.hk)
- * Stuart Herbert - S.Herbert@sheffield.ac.uk: radiolist extension
- * Alessandro Rubini - rubini@ipvvis.unipv.it: merged the two
- * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcap@cfw.com)
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#include "dialog.h"
-
-static int list_width, check_x, item_x, checkflag;
-
-/*
- * Print list item
- */
-static void
-print_item (WINDOW * win, const char *item, int status,
- int choice, int selected)
-{
- int i;
-
- /* Clear 'residue' of last item */
- wattrset (win, menubox_attr);
- wmove (win, choice, 0);
- for (i = 0; i < list_width; i++)
- waddch (win, ' ');
-
- wmove (win, choice, check_x);
- wattrset (win, selected ? check_selected_attr : check_attr);
- if (checkflag == FLAG_CHECK)
- wprintw (win, "[%c]", status ? 'X' : ' ');
- else
- wprintw (win, "(%c)", status ? 'X' : ' ');
-
- wattrset (win, selected ? tag_selected_attr : tag_attr);
- mvwaddch(win, choice, item_x, item[0]);
- wattrset (win, selected ? item_selected_attr : item_attr);
- waddstr (win, (char *)item+1);
- if (selected) {
- wmove (win, choice, check_x+1);
- wrefresh (win);
- }
-}
-
-/*
- * Print the scroll indicators.
- */
-static void
-print_arrows (WINDOW * win, int choice, int item_no, int scroll,
- int y, int x, int height)
-{
- wmove(win, y, x);
-
- if (scroll > 0) {
- wattrset (win, uarrow_attr);
- waddch (win, ACS_UARROW);
- waddstr (win, "(-)");
- }
- else {
- wattrset (win, menubox_attr);
- waddch (win, ACS_HLINE);
- waddch (win, ACS_HLINE);
- waddch (win, ACS_HLINE);
- waddch (win, ACS_HLINE);
- }
-
- y = y + height + 1;
- wmove(win, y, x);
-
- if ((height < item_no) && (scroll + choice < item_no - 1)) {
- wattrset (win, darrow_attr);
- waddch (win, ACS_DARROW);
- waddstr (win, "(+)");
- }
- else {
- wattrset (win, menubox_border_attr);
- waddch (win, ACS_HLINE);
- waddch (win, ACS_HLINE);
- waddch (win, ACS_HLINE);
- waddch (win, ACS_HLINE);
- }
-}
-
-/*
- * Display the termination buttons
- */
-static void
-print_buttons( WINDOW *dialog, int height, int width, int selected)
-{
- int x = width / 2 - 11;
- int y = height - 2;
-
- print_button (dialog, "Select", y, x, selected == 0);
- print_button (dialog, " Help ", y, x + 14, selected == 1);
-
- wmove(dialog, y, x+1 + 14*selected);
- wrefresh (dialog);
-}
-
-/*
- * Display a dialog box with a list of options that can be turned on or off
- * The `flag' parameter is used to select between radiolist and checklist.
- */
-int
-dialog_checklist (const char *title, const char *prompt, int height, int width,
- int list_height, int item_no, const char * const * items, int flag)
-
-{
- int i, x, y, box_x, box_y;
- int key = 0, button = 0, choice = 0, scroll = 0, max_choice, *status;
- WINDOW *dialog, *list;
-
- checkflag = flag;
-
- /* Allocate space for storing item on/off status */
- if ((status = malloc (sizeof (int) * item_no)) == NULL) {
- endwin ();
- fprintf (stderr,
- "\nCan't allocate memory in dialog_checklist().\n");
- exit (-1);
- }
-
- /* Initializes status */
- for (i = 0; i < item_no; i++) {
- status[i] = !strcasecmp (items[i * 3 + 2], "on");
- if (!choice && status[i])
- choice = i;
- }
-
- max_choice = MIN (list_height, item_no);
-
- /* center dialog box on screen */
- x = (COLS - width) / 2;
- y = (LINES - height) / 2;
-
- draw_shadow (stdscr, y, x, height, width);
-
- dialog = newwin (height, width, y, x);
- keypad (dialog, TRUE);
-
- draw_box (dialog, 0, 0, height, width, dialog_attr, border_attr);
- wattrset (dialog, border_attr);
- mvwaddch (dialog, height-3, 0, ACS_LTEE);
- for (i = 0; i < width - 2; i++)
- waddch (dialog, ACS_HLINE);
- wattrset (dialog, dialog_attr);
- waddch (dialog, ACS_RTEE);
-
- if (title != NULL && strlen(title) >= width-2 ) {
- /* truncate long title -- mec */
- char * title2 = malloc(width-2+1);
- memcpy( title2, title, width-2 );
- title2[width-2] = '\0';
- title = title2;
- }
-
- if (title != NULL) {
- wattrset (dialog, title_attr);
- mvwaddch (dialog, 0, (width - strlen(title))/2 - 1, ' ');
- waddstr (dialog, (char *)title);
- waddch (dialog, ' ');
- }
-
- wattrset (dialog, dialog_attr);
- print_autowrap (dialog, prompt, width - 2, 1, 3);
-
- list_width = width - 6;
- box_y = height - list_height - 5;
- box_x = (width - list_width) / 2 - 1;
-
- /* create new window for the list */
- list = subwin (dialog, list_height, list_width, y+box_y+1, x+box_x+1);
-
- keypad (list, TRUE);
-
- /* draw a box around the list items */
- draw_box (dialog, box_y, box_x, list_height + 2, list_width + 2,
- menubox_border_attr, menubox_attr);
-
- /* Find length of longest item in order to center checklist */
- check_x = 0;
- for (i = 0; i < item_no; i++)
- check_x = MAX (check_x, + strlen (items[i * 3 + 1]) + 4);
-
- check_x = (list_width - check_x) / 2;
- item_x = check_x + 4;
-
- if (choice >= list_height) {
- scroll = choice - list_height + 1;
- choice -= scroll;
- }
-
- /* Print the list */
- for (i = 0; i < max_choice; i++) {
- print_item (list, items[(scroll+i) * 3 + 1],
- status[i+scroll], i, i == choice);
- }
-
- print_arrows(dialog, choice, item_no, scroll,
- box_y, box_x + check_x + 5, list_height);
-
- print_buttons(dialog, height, width, 0);
-
- wnoutrefresh (list);
- wnoutrefresh (dialog);
- doupdate ();
-
- while (key != ESC) {
- key = wgetch (dialog);
-
- for (i = 0; i < max_choice; i++)
- if (toupper(key) == toupper(items[(scroll+i)*3+1][0]))
- break;
-
-
- if ( i < max_choice || key == KEY_UP || key == KEY_DOWN ||
- key == '+' || key == '-' ) {
- if (key == KEY_UP || key == '-') {
- if (!choice) {
- if (!scroll)
- continue;
- /* Scroll list down */
- if (list_height > 1) {
- /* De-highlight current first item */
- print_item (list, items[scroll * 3 + 1],
- status[scroll], 0, FALSE);
- scrollok (list, TRUE);
- wscrl (list, -1);
- scrollok (list, FALSE);
- }
- scroll--;
- print_item (list, items[scroll * 3 + 1],
- status[scroll], 0, TRUE);
- wnoutrefresh (list);
-
- print_arrows(dialog, choice, item_no, scroll,
- box_y, box_x + check_x + 5, list_height);
-
- wrefresh (dialog);
-
- continue; /* wait for another key press */
- } else
- i = choice - 1;
- } else if (key == KEY_DOWN || key == '+') {
- if (choice == max_choice - 1) {
- if (scroll + choice >= item_no - 1)
- continue;
- /* Scroll list up */
- if (list_height > 1) {
- /* De-highlight current last item before scrolling up */
- print_item (list, items[(scroll + max_choice - 1) * 3 + 1],
- status[scroll + max_choice - 1],
- max_choice - 1, FALSE);
- scrollok (list, TRUE);
- scroll (list);
- scrollok (list, FALSE);
- }
- scroll++;
- print_item (list, items[(scroll + max_choice - 1) * 3 + 1],
- status[scroll + max_choice - 1],
- max_choice - 1, TRUE);
- wnoutrefresh (list);
-
- print_arrows(dialog, choice, item_no, scroll,
- box_y, box_x + check_x + 5, list_height);
-
- wrefresh (dialog);
-
- continue; /* wait for another key press */
- } else
- i = choice + 1;
- }
- if (i != choice) {
- /* De-highlight current item */
- print_item (list, items[(scroll + choice) * 3 + 1],
- status[scroll + choice], choice, FALSE);
- /* Highlight new item */
- choice = i;
- print_item (list, items[(scroll + choice) * 3 + 1],
- status[scroll + choice], choice, TRUE);
- wnoutrefresh (list);
- wrefresh (dialog);
- }
- continue; /* wait for another key press */
- }
- switch (key) {
- case 'H':
- case 'h':
- case '?':
- delwin (dialog);
- free (status);
- return 1;
- case TAB:
- case KEY_LEFT:
- case KEY_RIGHT:
- button = ((key == KEY_LEFT ? --button : ++button) < 0)
- ? 1 : (button > 1 ? 0 : button);
-
- print_buttons(dialog, height, width, button);
- wrefresh (dialog);
- break;
- case 'S':
- case 's':
- case ' ':
- case '\n':
- if (!button) {
- if (flag == FLAG_CHECK) {
- status[scroll + choice] = !status[scroll + choice];
- wmove (list, choice, check_x);
- wattrset (list, check_selected_attr);
- wprintw (list, "[%c]", status[scroll + choice] ? 'X' : ' ');
- } else {
- if (!status[scroll + choice]) {
- for (i = 0; i < item_no; i++)
- status[i] = 0;
- status[scroll + choice] = 1;
- for (i = 0; i < max_choice; i++)
- print_item (list, items[(scroll + i) * 3 + 1],
- status[scroll + i], i, i == choice);
- }
- }
- wnoutrefresh (list);
- wrefresh (dialog);
-
- for (i = 0; i < item_no; i++) {
- if (status[i]) {
- if (flag == FLAG_CHECK) {
- fprintf (stderr, "\"%s\" ", items[i * 3]);
- } else {
- fprintf (stderr, "%s", items[i * 3]);
- }
-
- }
- }
- }
- delwin (dialog);
- free (status);
- return button;
- case 'X':
- case 'x':
- key = ESC;
- case ESC:
- break;
- }
-
- /* Now, update everything... */
- doupdate ();
- }
-
-
- delwin (dialog);
- free (status);
- return -1; /* ESC pressed */
-}
+++ /dev/null
-/*
- * colors.h -- color attribute definitions
- *
- * AUTHOR: Savio Lam (lam836@cs.cuhk.hk)
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-
-/*
- * Default color definitions
- *
- * *_FG = foreground
- * *_BG = background
- * *_HL = highlight?
- */
-#define SCREEN_FG COLOR_CYAN
-#define SCREEN_BG COLOR_BLUE
-#define SCREEN_HL TRUE
-
-#define SHADOW_FG COLOR_BLACK
-#define SHADOW_BG COLOR_BLACK
-#define SHADOW_HL TRUE
-
-#define DIALOG_FG COLOR_BLACK
-#define DIALOG_BG COLOR_WHITE
-#define DIALOG_HL FALSE
-
-#define TITLE_FG COLOR_YELLOW
-#define TITLE_BG COLOR_WHITE
-#define TITLE_HL TRUE
-
-#define BORDER_FG COLOR_WHITE
-#define BORDER_BG COLOR_WHITE
-#define BORDER_HL TRUE
-
-#define BUTTON_ACTIVE_FG COLOR_WHITE
-#define BUTTON_ACTIVE_BG COLOR_BLUE
-#define BUTTON_ACTIVE_HL TRUE
-
-#define BUTTON_INACTIVE_FG COLOR_BLACK
-#define BUTTON_INACTIVE_BG COLOR_WHITE
-#define BUTTON_INACTIVE_HL FALSE
-
-#define BUTTON_KEY_ACTIVE_FG COLOR_WHITE
-#define BUTTON_KEY_ACTIVE_BG COLOR_BLUE
-#define BUTTON_KEY_ACTIVE_HL TRUE
-
-#define BUTTON_KEY_INACTIVE_FG COLOR_RED
-#define BUTTON_KEY_INACTIVE_BG COLOR_WHITE
-#define BUTTON_KEY_INACTIVE_HL FALSE
-
-#define BUTTON_LABEL_ACTIVE_FG COLOR_YELLOW
-#define BUTTON_LABEL_ACTIVE_BG COLOR_BLUE
-#define BUTTON_LABEL_ACTIVE_HL TRUE
-
-#define BUTTON_LABEL_INACTIVE_FG COLOR_BLACK
-#define BUTTON_LABEL_INACTIVE_BG COLOR_WHITE
-#define BUTTON_LABEL_INACTIVE_HL TRUE
-
-#define INPUTBOX_FG COLOR_BLACK
-#define INPUTBOX_BG COLOR_WHITE
-#define INPUTBOX_HL FALSE
-
-#define INPUTBOX_BORDER_FG COLOR_BLACK
-#define INPUTBOX_BORDER_BG COLOR_WHITE
-#define INPUTBOX_BORDER_HL FALSE
-
-#define SEARCHBOX_FG COLOR_BLACK
-#define SEARCHBOX_BG COLOR_WHITE
-#define SEARCHBOX_HL FALSE
-
-#define SEARCHBOX_TITLE_FG COLOR_YELLOW
-#define SEARCHBOX_TITLE_BG COLOR_WHITE
-#define SEARCHBOX_TITLE_HL TRUE
-
-#define SEARCHBOX_BORDER_FG COLOR_WHITE
-#define SEARCHBOX_BORDER_BG COLOR_WHITE
-#define SEARCHBOX_BORDER_HL TRUE
-
-#define POSITION_INDICATOR_FG COLOR_YELLOW
-#define POSITION_INDICATOR_BG COLOR_WHITE
-#define POSITION_INDICATOR_HL TRUE
-
-#define MENUBOX_FG COLOR_BLACK
-#define MENUBOX_BG COLOR_WHITE
-#define MENUBOX_HL FALSE
-
-#define MENUBOX_BORDER_FG COLOR_WHITE
-#define MENUBOX_BORDER_BG COLOR_WHITE
-#define MENUBOX_BORDER_HL TRUE
-
-#define ITEM_FG COLOR_BLACK
-#define ITEM_BG COLOR_WHITE
-#define ITEM_HL FALSE
-
-#define ITEM_SELECTED_FG COLOR_WHITE
-#define ITEM_SELECTED_BG COLOR_BLUE
-#define ITEM_SELECTED_HL TRUE
-
-#define TAG_FG COLOR_YELLOW
-#define TAG_BG COLOR_WHITE
-#define TAG_HL TRUE
-
-#define TAG_SELECTED_FG COLOR_YELLOW
-#define TAG_SELECTED_BG COLOR_BLUE
-#define TAG_SELECTED_HL TRUE
-
-#define TAG_KEY_FG COLOR_YELLOW
-#define TAG_KEY_BG COLOR_WHITE
-#define TAG_KEY_HL TRUE
-
-#define TAG_KEY_SELECTED_FG COLOR_YELLOW
-#define TAG_KEY_SELECTED_BG COLOR_BLUE
-#define TAG_KEY_SELECTED_HL TRUE
-
-#define CHECK_FG COLOR_BLACK
-#define CHECK_BG COLOR_WHITE
-#define CHECK_HL FALSE
-
-#define CHECK_SELECTED_FG COLOR_WHITE
-#define CHECK_SELECTED_BG COLOR_BLUE
-#define CHECK_SELECTED_HL TRUE
-
-#define UARROW_FG COLOR_GREEN
-#define UARROW_BG COLOR_WHITE
-#define UARROW_HL TRUE
-
-#define DARROW_FG COLOR_GREEN
-#define DARROW_BG COLOR_WHITE
-#define DARROW_HL TRUE
-
-/* End of default color definitions */
-
-#define C_ATTR(x,y) ((x ? A_BOLD : 0) | COLOR_PAIR((y)))
-#define COLOR_NAME_LEN 10
-#define COLOR_COUNT 8
-
-/*
- * Global variables
- */
-
-typedef struct {
- char name[COLOR_NAME_LEN];
- int value;
-} color_names_st;
-
-extern color_names_st color_names[];
-extern int color_table[][3];
+++ /dev/null
-
-/*
- * dialog.h -- common declarations for all dialog modules
- *
- * AUTHOR: Savio Lam (lam836@cs.cuhk.hk)
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#include <sys/types.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <ctype.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include CURSES_LOC
-
-/*
- * Colors in ncurses 1.9.9e do not work properly since foreground and
- * background colors are OR'd rather than separately masked. This version
- * of dialog was hacked to work with ncurses 1.9.9e, making it incompatible
- * with standard curses. The simplest fix (to make this work with standard
- * curses) uses the wbkgdset() function, not used in the original hack.
- * Turn it off if we're building with 1.9.9e, since it just confuses things.
- */
-#if defined(NCURSES_VERSION) && defined(_NEED_WRAP) && !defined(GCC_PRINTFLIKE)
-#define OLD_NCURSES 1
-#undef wbkgdset
-#define wbkgdset(w,p) /*nothing*/
-#else
-#define OLD_NCURSES 0
-#endif
-
-#define TR(params) _tracef params
-
-#define ESC 27
-#define TAB 9
-#define MAX_LEN 2048
-#define BUF_SIZE (10*1024)
-#define MIN(x,y) (x < y ? x : y)
-#define MAX(x,y) (x > y ? x : y)
-
-
-#ifndef ACS_ULCORNER
-#define ACS_ULCORNER '+'
-#endif
-#ifndef ACS_LLCORNER
-#define ACS_LLCORNER '+'
-#endif
-#ifndef ACS_URCORNER
-#define ACS_URCORNER '+'
-#endif
-#ifndef ACS_LRCORNER
-#define ACS_LRCORNER '+'
-#endif
-#ifndef ACS_HLINE
-#define ACS_HLINE '-'
-#endif
-#ifndef ACS_VLINE
-#define ACS_VLINE '|'
-#endif
-#ifndef ACS_LTEE
-#define ACS_LTEE '+'
-#endif
-#ifndef ACS_RTEE
-#define ACS_RTEE '+'
-#endif
-#ifndef ACS_UARROW
-#define ACS_UARROW '^'
-#endif
-#ifndef ACS_DARROW
-#define ACS_DARROW 'v'
-#endif
-
-/*
- * Attribute names
- */
-#define screen_attr attributes[0]
-#define shadow_attr attributes[1]
-#define dialog_attr attributes[2]
-#define title_attr attributes[3]
-#define border_attr attributes[4]
-#define button_active_attr attributes[5]
-#define button_inactive_attr attributes[6]
-#define button_key_active_attr attributes[7]
-#define button_key_inactive_attr attributes[8]
-#define button_label_active_attr attributes[9]
-#define button_label_inactive_attr attributes[10]
-#define inputbox_attr attributes[11]
-#define inputbox_border_attr attributes[12]
-#define searchbox_attr attributes[13]
-#define searchbox_title_attr attributes[14]
-#define searchbox_border_attr attributes[15]
-#define position_indicator_attr attributes[16]
-#define menubox_attr attributes[17]
-#define menubox_border_attr attributes[18]
-#define item_attr attributes[19]
-#define item_selected_attr attributes[20]
-#define tag_attr attributes[21]
-#define tag_selected_attr attributes[22]
-#define tag_key_attr attributes[23]
-#define tag_key_selected_attr attributes[24]
-#define check_attr attributes[25]
-#define check_selected_attr attributes[26]
-#define uarrow_attr attributes[27]
-#define darrow_attr attributes[28]
-
-/* number of attributes */
-#define ATTRIBUTE_COUNT 29
-
-/*
- * Global variables
- */
-extern bool use_colors;
-extern bool use_shadow;
-
-extern chtype attributes[];
-
-extern const char *backtitle;
-
-/*
- * Function prototypes
- */
-extern void create_rc (const char *filename);
-extern int parse_rc (void);
-
-
-void init_dialog (void);
-void end_dialog (void);
-void attr_clear (WINDOW * win, int height, int width, chtype attr);
-void dialog_clear (void);
-void color_setup (void);
-void print_autowrap (WINDOW * win, const char *prompt, int width, int y, int x);
-void print_button (WINDOW * win, const char *label, int y, int x, int selected);
-void draw_box (WINDOW * win, int y, int x, int height, int width, chtype box,
- chtype border);
-void draw_shadow (WINDOW * win, int y, int x, int height, int width);
-
-int first_alpha (const char *string, const char *exempt);
-int dialog_yesno (const char *title, const char *prompt, int height, int width);
-int dialog_msgbox (const char *title, const char *prompt, int height,
- int width, int pause);
-int dialog_textbox (const char *title, const char *file, int height, int width);
-int dialog_menu (const char *title, const char *prompt, int height, int width,
- int menu_height, const char *choice, int item_no,
- const char * const * items);
-int dialog_checklist (const char *title, const char *prompt, int height,
- int width, int list_height, int item_no,
- const char * const * items, int flag);
-extern unsigned char dialog_input_result[];
-int dialog_inputbox (const char *title, const char *prompt, int height,
- int width, const char *init);
-
-/*
- * This is the base for fictitious keys, which activate
- * the buttons.
- *
- * Mouse-generated keys are the following:
- * -- the first 32 are used as numbers, in addition to '0'-'9'
- * -- the lowercase are used to signal mouse-enter events (M_EVENT + 'o')
- * -- uppercase chars are used to invoke the button (M_EVENT + 'O')
- */
-#define M_EVENT (KEY_MAX+1)
-
-
-/*
- * The `flag' parameter in checklist is used to select between
- * radiolist and checklist
- */
-#define FLAG_CHECK 1
-#define FLAG_RADIO 0
+++ /dev/null
-/*
- * inputbox.c -- implements the input box
- *
- * ORIGINAL AUTHOR: Savio Lam (lam836@cs.cuhk.hk)
- * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcap@cfw.com)
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#include "dialog.h"
-
-unsigned char dialog_input_result[MAX_LEN + 1];
-
-/*
- * Print the termination buttons
- */
-static void
-print_buttons(WINDOW *dialog, int height, int width, int selected)
-{
- int x = width / 2 - 11;
- int y = height - 2;
-
- print_button (dialog, " Ok ", y, x, selected==0);
- print_button (dialog, " Help ", y, x + 14, selected==1);
-
- wmove(dialog, y, x+1+14*selected);
- wrefresh(dialog);
-}
-
-/*
- * Display a dialog box for inputing a string
- */
-int
-dialog_inputbox (const char *title, const char *prompt, int height, int width,
- const char *init)
-{
- int i, x, y, box_y, box_x, box_width;
- int input_x = 0, scroll = 0, key = 0, button = -1;
- unsigned char *instr = dialog_input_result;
- WINDOW *dialog;
-
- /* center dialog box on screen */
- x = (COLS - width) / 2;
- y = (LINES - height) / 2;
-
-
- draw_shadow (stdscr, y, x, height, width);
-
- dialog = newwin (height, width, y, x);
- keypad (dialog, TRUE);
-
- draw_box (dialog, 0, 0, height, width, dialog_attr, border_attr);
- wattrset (dialog, border_attr);
- mvwaddch (dialog, height-3, 0, ACS_LTEE);
- for (i = 0; i < width - 2; i++)
- waddch (dialog, ACS_HLINE);
- wattrset (dialog, dialog_attr);
- waddch (dialog, ACS_RTEE);
-
- if (title != NULL && strlen(title) >= width-2 ) {
- /* truncate long title -- mec */
- char * title2 = malloc(width-2+1);
- memcpy( title2, title, width-2 );
- title2[width-2] = '\0';
- title = title2;
- }
-
- if (title != NULL) {
- wattrset (dialog, title_attr);
- mvwaddch (dialog, 0, (width - strlen(title))/2 - 1, ' ');
- waddstr (dialog, (char *)title);
- waddch (dialog, ' ');
- }
-
- wattrset (dialog, dialog_attr);
- print_autowrap (dialog, prompt, width - 2, 1, 3);
-
- /* Draw the input field box */
- box_width = width - 6;
- getyx (dialog, y, x);
- box_y = y + 2;
- box_x = (width - box_width) / 2;
- draw_box (dialog, y + 1, box_x - 1, 3, box_width + 2,
- border_attr, dialog_attr);
-
- print_buttons(dialog, height, width, 0);
-
- /* Set up the initial value */
- wmove (dialog, box_y, box_x);
- wattrset (dialog, inputbox_attr);
-
- if (!init)
- instr[0] = '\0';
- else
- strcpy (instr, init);
-
- input_x = strlen (instr);
-
- if (input_x >= box_width) {
- scroll = input_x - box_width + 1;
- input_x = box_width - 1;
- for (i = 0; i < box_width - 1; i++)
- waddch (dialog, instr[scroll + i]);
- } else
- waddstr (dialog, instr);
-
- wmove (dialog, box_y, box_x + input_x);
-
- wrefresh (dialog);
-
- while (key != ESC) {
- key = wgetch (dialog);
-
- if (button == -1) { /* Input box selected */
- switch (key) {
- case TAB:
- case KEY_UP:
- case KEY_DOWN:
- break;
- case KEY_LEFT:
- continue;
- case KEY_RIGHT:
- continue;
- case KEY_BACKSPACE:
- case 127:
- if (input_x || scroll) {
- wattrset (dialog, inputbox_attr);
- if (!input_x) {
- scroll = scroll < box_width - 1 ?
- 0 : scroll - (box_width - 1);
- wmove (dialog, box_y, box_x);
- for (i = 0; i < box_width; i++)
- waddch (dialog, instr[scroll + input_x + i] ?
- instr[scroll + input_x + i] : ' ');
- input_x = strlen (instr) - scroll;
- } else
- input_x--;
- instr[scroll + input_x] = '\0';
- mvwaddch (dialog, box_y, input_x + box_x, ' ');
- wmove (dialog, box_y, input_x + box_x);
- wrefresh (dialog);
- }
- continue;
- default:
- if (key < 0x100 && isprint (key)) {
- if (scroll + input_x < MAX_LEN) {
- wattrset (dialog, inputbox_attr);
- instr[scroll + input_x] = key;
- instr[scroll + input_x + 1] = '\0';
- if (input_x == box_width - 1) {
- scroll++;
- wmove (dialog, box_y, box_x);
- for (i = 0; i < box_width - 1; i++)
- waddch (dialog, instr[scroll + i]);
- } else {
- wmove (dialog, box_y, input_x++ + box_x);
- waddch (dialog, key);
- }
- wrefresh (dialog);
- } else
- flash (); /* Alarm user about overflow */
- continue;
- }
- }
- }
- switch (key) {
- case 'O':
- case 'o':
- delwin (dialog);
- return 0;
- case 'H':
- case 'h':
- delwin (dialog);
- return 1;
- case KEY_UP:
- case KEY_LEFT:
- switch (button) {
- case -1:
- button = 1; /* Indicates "Cancel" button is selected */
- print_buttons(dialog, height, width, 1);
- break;
- case 0:
- button = -1; /* Indicates input box is selected */
- print_buttons(dialog, height, width, 0);
- wmove (dialog, box_y, box_x + input_x);
- wrefresh (dialog);
- break;
- case 1:
- button = 0; /* Indicates "OK" button is selected */
- print_buttons(dialog, height, width, 0);
- break;
- }
- break;
- case TAB:
- case KEY_DOWN:
- case KEY_RIGHT:
- switch (button) {
- case -1:
- button = 0; /* Indicates "OK" button is selected */
- print_buttons(dialog, height, width, 0);
- break;
- case 0:
- button = 1; /* Indicates "Cancel" button is selected */
- print_buttons(dialog, height, width, 1);
- break;
- case 1:
- button = -1; /* Indicates input box is selected */
- print_buttons(dialog, height, width, 0);
- wmove (dialog, box_y, box_x + input_x);
- wrefresh (dialog);
- break;
- }
- break;
- case ' ':
- case '\n':
- delwin (dialog);
- return (button == -1 ? 0 : button);
- case 'X':
- case 'x':
- key = ESC;
- case ESC:
- break;
- }
- }
-
- delwin (dialog);
- return -1; /* ESC pressed */
-}
+++ /dev/null
-/*
- * dialog - Display simple dialog boxes from shell scripts
- *
- * ORIGINAL AUTHOR: Savio Lam (lam836@cs.cuhk.hk)
- * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcap@cfw.com)
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#include "dialog.h"
-
-static void Usage (const char *name);
-
-typedef int (jumperFn) (const char *title, int argc, const char * const * argv);
-
-struct Mode {
- char *name;
- int argmin, argmax, argmod;
- jumperFn *jumper;
-};
-
-jumperFn j_menu, j_checklist, j_radiolist, j_yesno, j_textbox, j_inputbox;
-jumperFn j_msgbox, j_infobox;
-
-static struct Mode modes[] =
-{
- {"--menu", 9, 0, 3, j_menu},
- {"--checklist", 9, 0, 3, j_checklist},
- {"--radiolist", 9, 0, 3, j_radiolist},
- {"--yesno", 5,5,1, j_yesno},
- {"--textbox", 5,5,1, j_textbox},
- {"--inputbox", 5, 6, 1, j_inputbox},
- {"--msgbox", 5, 5, 1, j_msgbox},
- {"--infobox", 5, 5, 1, j_infobox},
- {NULL, 0, 0, 0, NULL}
-};
-
-static struct Mode *modePtr;
-
-#ifdef LOCALE
-#include <locale.h>
-#endif
-
-int
-main (int argc, const char * const * argv)
-{
- int offset = 0, clear_screen = 0, end_common_opts = 0, retval;
- const char *title = NULL;
-
-#ifdef LOCALE
- (void) setlocale (LC_ALL, "");
-#endif
-
-#ifdef TRACE
- trace(TRACE_CALLS|TRACE_UPDATE);
-#endif
- if (argc < 2) {
- Usage (argv[0]);
- exit (-1);
- }
-
- while (offset < argc - 1 && !end_common_opts) { /* Common options */
- if (!strcmp (argv[offset + 1], "--title")) {
- if (argc - offset < 3 || title != NULL) {
- Usage (argv[0]);
- exit (-1);
- } else {
- title = argv[offset + 2];
- offset += 2;
- }
- } else if (!strcmp (argv[offset + 1], "--backtitle")) {
- if (backtitle != NULL) {
- Usage (argv[0]);
- exit (-1);
- } else {
- backtitle = argv[offset + 2];
- offset += 2;
- }
- } else if (!strcmp (argv[offset + 1], "--clear")) {
- if (clear_screen) { /* Hey, "--clear" can't appear twice! */
- Usage (argv[0]);
- exit (-1);
- } else if (argc == 2) { /* we only want to clear the screen */
- init_dialog ();
- refresh (); /* init_dialog() will clear the screen for us */
- end_dialog ();
- return 0;
- } else {
- clear_screen = 1;
- offset++;
- }
- } else /* no more common options */
- end_common_opts = 1;
- }
-
- if (argc - 1 == offset) { /* no more options */
- Usage (argv[0]);
- exit (-1);
- }
- /* use a table to look for the requested mode, to avoid code duplication */
-
- for (modePtr = modes; modePtr->name; modePtr++) /* look for the mode */
- if (!strcmp (argv[offset + 1], modePtr->name))
- break;
-
- if (!modePtr->name)
- Usage (argv[0]);
- if (argc - offset < modePtr->argmin)
- Usage (argv[0]);
- if (modePtr->argmax && argc - offset > modePtr->argmax)
- Usage (argv[0]);
-
-
-
- init_dialog ();
- retval = (*(modePtr->jumper)) (title, argc - offset, argv + offset);
-
- if (clear_screen) { /* clear screen before exit */
- attr_clear (stdscr, LINES, COLS, screen_attr);
- refresh ();
- }
- end_dialog();
-
- exit (retval);
-}
-
-/*
- * Print program usage
- */
-static void
-Usage (const char *name)
-{
- fprintf (stderr, "\
-\ndialog, by Savio Lam (lam836@cs.cuhk.hk).\
-\n patched by Stuart Herbert (S.Herbert@shef.ac.uk)\
-\n modified/gutted for use as a Linux kernel config tool by \
-\n William Roadcap (roadcapw@cfw.com)\
-\n\
-\n* Display dialog boxes from shell scripts *\
-\n\
-\nUsage: %s --clear\
-\n %s [--title <title>] [--backtitle <backtitle>] --clear <Box options>\
-\n\
-\nBox options:\
-\n\
-\n --menu <text> <height> <width> <menu height> <tag1> <item1>...\
-\n --checklist <text> <height> <width> <list height> <tag1> <item1> <status1>...\
-\n --radiolist <text> <height> <width> <list height> <tag1> <item1> <status1>...\
-\n --textbox <file> <height> <width>\
-\n --inputbox <text> <height> <width> [<init>]\
-\n --yesno <text> <height> <width>\
-\n", name, name);
- exit (-1);
-}
-
-/*
- * These are the program jumpers
- */
-
-int
-j_menu (const char *t, int ac, const char * const * av)
-{
- return dialog_menu (t, av[2], atoi (av[3]), atoi (av[4]),
- atoi (av[5]), av[6], (ac - 6) / 2, av + 7);
-}
-
-int
-j_checklist (const char *t, int ac, const char * const * av)
-{
- return dialog_checklist (t, av[2], atoi (av[3]), atoi (av[4]),
- atoi (av[5]), (ac - 6) / 3, av + 6, FLAG_CHECK);
-}
-
-int
-j_radiolist (const char *t, int ac, const char * const * av)
-{
- return dialog_checklist (t, av[2], atoi (av[3]), atoi (av[4]),
- atoi (av[5]), (ac - 6) / 3, av + 6, FLAG_RADIO);
-}
-
-int
-j_textbox (const char *t, int ac, const char * const * av)
-{
- return dialog_textbox (t, av[2], atoi (av[3]), atoi (av[4]));
-}
-
-int
-j_yesno (const char *t, int ac, const char * const * av)
-{
- return dialog_yesno (t, av[2], atoi (av[3]), atoi (av[4]));
-}
-
-int
-j_inputbox (const char *t, int ac, const char * const * av)
-{
- int ret = dialog_inputbox (t, av[2], atoi (av[3]), atoi (av[4]),
- ac == 6 ? av[5] : (char *) NULL);
- if (ret == 0)
- fprintf(stderr, dialog_input_result);
- return ret;
-}
-
-int
-j_msgbox (const char *t, int ac, const char * const * av)
-{
- return dialog_msgbox (t, av[2], atoi (av[3]), atoi (av[4]), 1);
-}
-
-int
-j_infobox (const char *t, int ac, const char * const * av)
-{
- return dialog_msgbox (t, av[2], atoi (av[3]), atoi (av[4]), 0);
-}
-
+++ /dev/null
-/*
- * menubox.c -- implements the menu box
- *
- * ORIGINAL AUTHOR: Savio Lam (lam836@cs.cuhk.hk)
- * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcapw@cfw.com)
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/*
- * Changes by Clifford Wolf (god@clifford.at)
- *
- * [ 1998-06-13 ]
- *
- * *) A bugfix for the Page-Down problem
- *
- * *) Formerly when I used Page Down and Page Up, the cursor would be set
- * to the first position in the menu box. Now lxdialog is a bit
- * smarter and works more like other menu systems (just have a look at
- * it).
- *
- * *) Formerly if I selected something my scrolling would be broken because
- * lxdialog is re-invoked by the Menuconfig shell script, can't
- * remember the last scrolling position, and just sets it so that the
- * cursor is at the bottom of the box. Now it writes the temporary file
- * lxdialog.scrltmp which contains this information. The file is
- * deleted by lxdialog if the user leaves a submenu or enters a new
- * one, but it would be nice if Menuconfig could make another "rm -f"
- * just to be sure. Just try it out - you will recognise a difference!
- *
- * [ 1998-06-14 ]
- *
- * *) Now lxdialog is crash-safe against broken "lxdialog.scrltmp" files
- * and menus change their size on the fly.
- *
- * *) If for some reason the last scrolling position is not saved by
- * lxdialog, it sets the scrolling so that the selected item is in the
- * middle of the menu box, not at the bottom.
- *
- * 02 January 1999, Michael Elizabeth Chastain (mec@shout.net)
- * Reset 'scroll' to 0 if the value from lxdialog.scrltmp is bogus.
- * This fixes a bug in Menuconfig where using ' ' to descend into menus
- * would leave mis-synchronized lxdialog.scrltmp files lying around,
- * fscanf would read in 'scroll', and eventually that value would get used.
- */
-
-#include "dialog.h"
-
-static int menu_width, item_x;
-
-/*
- * Print menu item
- */
-static void
-print_item (WINDOW * win, const char *item, int choice, int selected, int hotkey)
-{
- int j;
- char menu_item[menu_width+1];
-
- strncpy(menu_item, item, menu_width);
- menu_item[menu_width] = 0;
- j = first_alpha(menu_item, "YyNnMm");
-
- /* Clear 'residue' of last item */
- wattrset (win, menubox_attr);
- wmove (win, choice, 0);
-#if OLD_NCURSES
- {
- int i;
- for (i = 0; i < menu_width; i++)
- waddch (win, ' ');
- }
-#else
- wclrtoeol(win);
-#endif
- wattrset (win, selected ? item_selected_attr : item_attr);
- mvwaddstr (win, choice, item_x, menu_item);
- if (hotkey) {
- wattrset (win, selected ? tag_key_selected_attr : tag_key_attr);
- mvwaddch(win, choice, item_x+j, menu_item[j]);
- }
- if (selected) {
- wmove (win, choice, item_x+1);
- wrefresh (win);
- }
-}
-
-/*
- * Print the scroll indicators.
- */
-static void
-print_arrows (WINDOW * win, int item_no, int scroll,
- int y, int x, int height)
-{
- int cur_y, cur_x;
-
- getyx(win, cur_y, cur_x);
-
- wmove(win, y, x);
-
- if (scroll > 0) {
- wattrset (win, uarrow_attr);
- waddch (win, ACS_UARROW);
- waddstr (win, "(-)");
- }
- else {
- wattrset (win, menubox_attr);
- waddch (win, ACS_HLINE);
- waddch (win, ACS_HLINE);
- waddch (win, ACS_HLINE);
- waddch (win, ACS_HLINE);
- }
-
- y = y + height + 1;
- wmove(win, y, x);
-
- if ((height < item_no) && (scroll + height < item_no)) {
- wattrset (win, darrow_attr);
- waddch (win, ACS_DARROW);
- waddstr (win, "(+)");
- }
- else {
- wattrset (win, menubox_border_attr);
- waddch (win, ACS_HLINE);
- waddch (win, ACS_HLINE);
- waddch (win, ACS_HLINE);
- waddch (win, ACS_HLINE);
- }
-
- wmove(win, cur_y, cur_x);
-}
-
-/*
- * Display the termination buttons.
- */
-static void
-print_buttons (WINDOW *win, int height, int width, int selected)
-{
- int x = width / 2 - 16;
- int y = height - 2;
-
- print_button (win, "Select", y, x, selected == 0);
- print_button (win, " Exit ", y, x + 12, selected == 1);
- print_button (win, " Help ", y, x + 24, selected == 2);
-
- wmove(win, y, x+1+12*selected);
- wrefresh (win);
-}
-
-/*
- * Display a menu for choosing among a number of options
- */
-int
-dialog_menu (const char *title, const char *prompt, int height, int width,
- int menu_height, const char *current, int item_no,
- const char * const * items)
-
-{
- int i, j, x, y, box_x, box_y;
- int key = 0, button = 0, scroll = 0, choice = 0, first_item = 0, max_choice;
- WINDOW *dialog, *menu;
- FILE *f;
-
- max_choice = MIN (menu_height, item_no);
-
- /* center dialog box on screen */
- x = (COLS - width) / 2;
- y = (LINES - height) / 2;
-
- draw_shadow (stdscr, y, x, height, width);
-
- dialog = newwin (height, width, y, x);
- keypad (dialog, TRUE);
-
- draw_box (dialog, 0, 0, height, width, dialog_attr, border_attr);
- wattrset (dialog, border_attr);
- mvwaddch (dialog, height - 3, 0, ACS_LTEE);
- for (i = 0; i < width - 2; i++)
- waddch (dialog, ACS_HLINE);
- wattrset (dialog, dialog_attr);
- wbkgdset (dialog, dialog_attr & A_COLOR);
- waddch (dialog, ACS_RTEE);
-
- if (title != NULL && strlen(title) >= width-2 ) {
- /* truncate long title -- mec */
- char * title2 = malloc(width-2+1);
- memcpy( title2, title, width-2 );
- title2[width-2] = '\0';
- title = title2;
- }
-
- if (title != NULL) {
- wattrset (dialog, title_attr);
- mvwaddch (dialog, 0, (width - strlen(title))/2 - 1, ' ');
- waddstr (dialog, (char *)title);
- waddch (dialog, ' ');
- }
-
- wattrset (dialog, dialog_attr);
- print_autowrap (dialog, prompt, width - 2, 1, 3);
-
- menu_width = width - 6;
- box_y = height - menu_height - 5;
- box_x = (width - menu_width) / 2 - 1;
-
- /* create new window for the menu */
- menu = subwin (dialog, menu_height, menu_width,
- y + box_y + 1, x + box_x + 1);
- keypad (menu, TRUE);
-
- /* draw a box around the menu items */
- draw_box (dialog, box_y, box_x, menu_height + 2, menu_width + 2,
- menubox_border_attr, menubox_attr);
-
- /*
- * Find length of longest item in order to center menu.
- * Set 'choice' to default item.
- */
- item_x = 0;
- for (i = 0; i < item_no; i++) {
- item_x = MAX (item_x, MIN(menu_width, strlen (items[i * 2 + 1]) + 2));
- if (strcmp(current, items[i*2]) == 0) choice = i;
- }
-
- item_x = (menu_width - item_x) / 2;
-
- /* get the scroll info from the temp file */
- if ( (f=fopen("lxdialog.scrltmp","r")) != NULL ) {
- if ( (fscanf(f,"%d\n",&scroll) == 1) && (scroll <= choice) &&
- (scroll+max_choice > choice) && (scroll >= 0) &&
- (scroll+max_choice <= item_no) ) {
- first_item = scroll;
- choice = choice - scroll;
- fclose(f);
- } else {
- scroll=0;
- remove("lxdialog.scrltmp");
- fclose(f);
- f=NULL;
- }
- }
- if ( (choice >= max_choice) || (f==NULL && choice >= max_choice/2) ) {
- if (choice >= item_no-max_choice/2)
- scroll = first_item = item_no-max_choice;
- else
- scroll = first_item = choice - max_choice/2;
- choice = choice - scroll;
- }
-
- /* Print the menu */
- for (i=0; i < max_choice; i++) {
- print_item (menu, items[(first_item + i) * 2 + 1], i, i == choice,
- (items[(first_item + i)*2][0] != ':'));
- }
-
- wnoutrefresh (menu);
-
- print_arrows(dialog, item_no, scroll,
- box_y, box_x+item_x+1, menu_height);
-
- print_buttons (dialog, height, width, 0);
- wmove (menu, choice, item_x+1);
- wrefresh (menu);
-
- while (key != ESC) {
- key = wgetch(menu);
-
- if (key < 256 && isalpha(key)) key = tolower(key);
-
- if (strchr("ynm", key))
- i = max_choice;
- else {
- for (i = choice+1; i < max_choice; i++) {
- j = first_alpha(items[(scroll+i)*2+1], "YyNnMm");
- if (key == tolower(items[(scroll+i)*2+1][j]))
- break;
- }
- if (i == max_choice)
- for (i = 0; i < max_choice; i++) {
- j = first_alpha(items[(scroll+i)*2+1], "YyNnMm");
- if (key == tolower(items[(scroll+i)*2+1][j]))
- break;
- }
- }
-
- if (i < max_choice ||
- key == KEY_UP || key == KEY_DOWN ||
- key == '-' || key == '+' ||
- key == KEY_PPAGE || key == KEY_NPAGE) {
-
- print_item (menu, items[(scroll+choice)*2+1], choice, FALSE,
- (items[(scroll+choice)*2][0] != ':'));
-
- if (key == KEY_UP || key == '-') {
- if (choice < 2 && scroll) {
- /* Scroll menu down */
- scrollok (menu, TRUE);
- wscrl (menu, -1);
- scrollok (menu, FALSE);
-
- scroll--;
-
- print_item (menu, items[scroll * 2 + 1], 0, FALSE,
- (items[scroll*2][0] != ':'));
- } else
- choice = MAX(choice - 1, 0);
-
- } else if (key == KEY_DOWN || key == '+') {
-
- print_item (menu, items[(scroll+choice)*2+1], choice, FALSE,
- (items[(scroll+choice)*2][0] != ':'));
-
- if ((choice > max_choice-3) &&
- (scroll + max_choice < item_no)
- ) {
- /* Scroll menu up */
- scrollok (menu, TRUE);
- scroll (menu);
- scrollok (menu, FALSE);
-
- scroll++;
-
- print_item (menu, items[(scroll+max_choice-1)*2+1],
- max_choice-1, FALSE,
- (items[(scroll+max_choice-1)*2][0] != ':'));
- } else
- choice = MIN(choice+1, max_choice-1);
-
- } else if (key == KEY_PPAGE) {
- scrollok (menu, TRUE);
- for (i=0; (i < max_choice); i++) {
- if (scroll > 0) {
- wscrl (menu, -1);
- scroll--;
- print_item (menu, items[scroll * 2 + 1], 0, FALSE,
- (items[scroll*2][0] != ':'));
- } else {
- if (choice > 0)
- choice--;
- }
- }
- scrollok (menu, FALSE);
-
- } else if (key == KEY_NPAGE) {
- for (i=0; (i < max_choice); i++) {
- if (scroll+max_choice < item_no) {
- scrollok (menu, TRUE);
- scroll(menu);
- scrollok (menu, FALSE);
- scroll++;
- print_item (menu, items[(scroll+max_choice-1)*2+1],
- max_choice-1, FALSE,
- (items[(scroll+max_choice-1)*2][0] != ':'));
- } else {
- if (choice+1 < max_choice)
- choice++;
- }
- }
-
- } else
- choice = i;
-
- print_item (menu, items[(scroll+choice)*2+1], choice, TRUE,
- (items[(scroll+choice)*2][0] != ':'));
-
- print_arrows(dialog, item_no, scroll,
- box_y, box_x+item_x+1, menu_height);
-
- wnoutrefresh (dialog);
- wrefresh (menu);
-
- continue; /* wait for another key press */
- }
-
- switch (key) {
- case KEY_LEFT:
- case TAB:
- case KEY_RIGHT:
- button = ((key == KEY_LEFT ? --button : ++button) < 0)
- ? 2 : (button > 2 ? 0 : button);
-
- print_buttons(dialog, height, width, button);
- wrefresh (menu);
- break;
- case ' ':
- case 's':
- case 'y':
- case 'n':
- case 'm':
- /* save scroll info */
- if ( (f=fopen("lxdialog.scrltmp","w")) != NULL ) {
- fprintf(f,"%d\n",scroll);
- fclose(f);
- }
- delwin (dialog);
- fprintf(stderr, "%s\n", items[(scroll + choice) * 2]);
- switch (key) {
- case 's': return 3;
- case 'y': return 3;
- case 'n': return 4;
- case 'm': return 5;
- case ' ': return 6;
- }
- return 0;
- case 'h':
- case '?':
- button = 2;
- case '\n':
- delwin (dialog);
- if (button == 2)
- fprintf(stderr, "%s \"%s\"\n",
- items[(scroll + choice) * 2],
- items[(scroll + choice) * 2 + 1] +
- first_alpha(items[(scroll + choice) * 2 + 1],""));
- else
- fprintf(stderr, "%s\n", items[(scroll + choice) * 2]);
-
- remove("lxdialog.scrltmp");
- return button;
- case 'e':
- case 'x':
- key = ESC;
- case ESC:
- break;
- }
- }
-
- delwin (dialog);
- remove("lxdialog.scrltmp");
- return -1; /* ESC pressed */
-}
+++ /dev/null
-/*
- * msgbox.c -- implements the message box and info box
- *
- * ORIGINAL AUTHOR: Savio Lam (lam836@cs.cuhk.hk)
- * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcapw@cfw.com)
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#include "dialog.h"
-
-/*
- * Display a message box. Program will pause and display an "OK" button
- * if the parameter 'pause' is non-zero.
- */
-int
-dialog_msgbox (const char *title, const char *prompt, int height, int width,
- int pause)
-{
- int i, x, y, key = 0;
- WINDOW *dialog;
-
- /* center dialog box on screen */
- x = (COLS - width) / 2;
- y = (LINES - height) / 2;
-
- draw_shadow (stdscr, y, x, height, width);
-
- dialog = newwin (height, width, y, x);
- keypad (dialog, TRUE);
-
- draw_box (dialog, 0, 0, height, width, dialog_attr, border_attr);
-
- if (title != NULL && strlen(title) >= width-2 ) {
- /* truncate long title -- mec */
- char * title2 = malloc(width-2+1);
- memcpy( title2, title, width-2 );
- title2[width-2] = '\0';
- title = title2;
- }
-
- if (title != NULL) {
- wattrset (dialog, title_attr);
- mvwaddch (dialog, 0, (width - strlen(title))/2 - 1, ' ');
- waddstr (dialog, (char *)title);
- waddch (dialog, ' ');
- }
- wattrset (dialog, dialog_attr);
- print_autowrap (dialog, prompt, width - 2, 1, 2);
-
- if (pause) {
- wattrset (dialog, border_attr);
- mvwaddch (dialog, height - 3, 0, ACS_LTEE);
- for (i = 0; i < width - 2; i++)
- waddch (dialog, ACS_HLINE);
- wattrset (dialog, dialog_attr);
- waddch (dialog, ACS_RTEE);
-
- print_button (dialog, " Ok ",
- height - 2, width / 2 - 4, TRUE);
-
- wrefresh (dialog);
- while (key != ESC && key != '\n' && key != ' ' &&
- key != 'O' && key != 'o' && key != 'X' && key != 'x')
- key = wgetch (dialog);
- } else {
- key = '\n';
- wrefresh (dialog);
- }
-
- delwin (dialog);
- return key == ESC ? -1 : 0;
-}
+++ /dev/null
-/*
- * textbox.c -- implements the text box
- *
- * ORIGINAL AUTHOR: Savio Lam (lam836@cs.cuhk.hk)
- * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcap@cfw.com)
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#include "dialog.h"
-
-static void back_lines (int n);
-static void print_page (WINDOW * win, int height, int width);
-static void print_line (WINDOW * win, int row, int width);
-static char *get_line (void);
-static void print_position (WINDOW * win, int height, int width);
-
-static int hscroll = 0, fd, file_size, bytes_read;
-static int begin_reached = 1, end_reached = 0, page_length;
-static char *buf, *page;
-
-/*
- * Display text from a file in a dialog box.
- */
-int
-dialog_textbox (const char *title, const char *file, int height, int width)
-{
- int i, x, y, cur_x, cur_y, fpos, key = 0;
- int passed_end;
- char search_term[MAX_LEN + 1];
- WINDOW *dialog, *text;
-
- search_term[0] = '\0'; /* no search term entered yet */
-
- /* Open input file for reading */
- if ((fd = open (file, O_RDONLY)) == -1) {
- endwin ();
- fprintf (stderr,
- "\nCan't open input file in dialog_textbox().\n");
- exit (-1);
- }
- /* Get file size. Actually, 'file_size' is the real file size - 1,
- since it's only the last byte offset from the beginning */
- if ((file_size = lseek (fd, 0, SEEK_END)) == -1) {
- endwin ();
- fprintf (stderr, "\nError getting file size in dialog_textbox().\n");
- exit (-1);
- }
- /* Restore file pointer to beginning of file after getting file size */
- if (lseek (fd, 0, SEEK_SET) == -1) {
- endwin ();
- fprintf (stderr, "\nError moving file pointer in dialog_textbox().\n");
- exit (-1);
- }
- /* Allocate space for read buffer */
- if ((buf = malloc (BUF_SIZE + 1)) == NULL) {
- endwin ();
- fprintf (stderr, "\nCan't allocate memory in dialog_textbox().\n");
- exit (-1);
- }
- if ((bytes_read = read (fd, buf, BUF_SIZE)) == -1) {
- endwin ();
- fprintf (stderr, "\nError reading file in dialog_textbox().\n");
- exit (-1);
- }
- buf[bytes_read] = '\0'; /* mark end of valid data */
- page = buf; /* page is pointer to start of page to be displayed */
-
- /* center dialog box on screen */
- x = (COLS - width) / 2;
- y = (LINES - height) / 2;
-
-
- draw_shadow (stdscr, y, x, height, width);
-
- dialog = newwin (height, width, y, x);
- keypad (dialog, TRUE);
-
- /* Create window for text region, used for scrolling text */
- text = subwin (dialog, height - 4, width - 2, y + 1, x + 1);
- wattrset (text, dialog_attr);
- wbkgdset (text, dialog_attr & A_COLOR);
-
- keypad (text, TRUE);
-
- /* register the new window, along with its borders */
- draw_box (dialog, 0, 0, height, width, dialog_attr, border_attr);
-
- wattrset (dialog, border_attr);
- mvwaddch (dialog, height-3, 0, ACS_LTEE);
- for (i = 0; i < width - 2; i++)
- waddch (dialog, ACS_HLINE);
- wattrset (dialog, dialog_attr);
- wbkgdset (dialog, dialog_attr & A_COLOR);
- waddch (dialog, ACS_RTEE);
-
- if (title != NULL && strlen(title) >= width-2 ) {
- /* truncate long title -- mec */
- char * title2 = malloc(width-2+1);
- memcpy( title2, title, width-2 );
- title2[width-2] = '\0';
- title = title2;
- }
-
- if (title != NULL) {
- wattrset (dialog, title_attr);
- mvwaddch (dialog, 0, (width - strlen(title))/2 - 1, ' ');
- waddstr (dialog, (char *)title);
- waddch (dialog, ' ');
- }
- print_button (dialog, " Exit ", height - 2, width / 2 - 4, TRUE);
- wnoutrefresh (dialog);
- getyx (dialog, cur_y, cur_x); /* Save cursor position */
-
- /* Print first page of text */
- attr_clear (text, height - 4, width - 2, dialog_attr);
- print_page (text, height - 4, width - 2);
- print_position (dialog, height, width);
- wmove (dialog, cur_y, cur_x); /* Restore cursor position */
- wrefresh (dialog);
-
- while ((key != ESC) && (key != '\n')) {
- key = wgetch (dialog);
- switch (key) {
- case 'E': /* Exit */
- case 'e':
- case 'X':
- case 'x':
- delwin (dialog);
- free (buf);
- close (fd);
- return 0;
- case 'g': /* First page */
- case KEY_HOME:
- if (!begin_reached) {
- begin_reached = 1;
- /* First page not in buffer? */
- if ((fpos = lseek (fd, 0, SEEK_CUR)) == -1) {
- endwin ();
- fprintf (stderr,
- "\nError moving file pointer in dialog_textbox().\n");
- exit (-1);
- }
- if (fpos > bytes_read) { /* Yes, we have to read it in */
- if (lseek (fd, 0, SEEK_SET) == -1) {
- endwin ();
- fprintf (stderr, "\nError moving file pointer in "
- "dialog_textbox().\n");
- exit (-1);
- }
- if ((bytes_read = read (fd, buf, BUF_SIZE)) == -1) {
- endwin ();
- fprintf (stderr,
- "\nError reading file in dialog_textbox().\n");
- exit (-1);
- }
- buf[bytes_read] = '\0';
- }
- page = buf;
- print_page (text, height - 4, width - 2);
- print_position (dialog, height, width);
- wmove (dialog, cur_y, cur_x); /* Restore cursor position */
- wrefresh (dialog);
- }
- break;
- case 'G': /* Last page */
- case KEY_END:
-
- end_reached = 1;
- /* Last page not in buffer? */
- if ((fpos = lseek (fd, 0, SEEK_CUR)) == -1) {
- endwin ();
- fprintf (stderr,
- "\nError moving file pointer in dialog_textbox().\n");
- exit (-1);
- }
- if (fpos < file_size) { /* Yes, we have to read it in */
- if (lseek (fd, -BUF_SIZE, SEEK_END) == -1) {
- endwin ();
- fprintf (stderr,
- "\nError moving file pointer in dialog_textbox().\n");
- exit (-1);
- }
- if ((bytes_read = read (fd, buf, BUF_SIZE)) == -1) {
- endwin ();
- fprintf (stderr,
- "\nError reading file in dialog_textbox().\n");
- exit (-1);
- }
- buf[bytes_read] = '\0';
- }
- page = buf + bytes_read;
- back_lines (height - 4);
- print_page (text, height - 4, width - 2);
- print_position (dialog, height, width);
- wmove (dialog, cur_y, cur_x); /* Restore cursor position */
- wrefresh (dialog);
- break;
- case 'K': /* Previous line */
- case 'k':
- case KEY_UP:
- if (!begin_reached) {
- back_lines (page_length + 1);
-
- /* We don't call print_page() here but use scrolling to ensure
- faster screen update. However, 'end_reached' and
- 'page_length' should still be updated, and 'page' should
- point to start of next page. This is done by calling
- get_line() in the following 'for' loop. */
- scrollok (text, TRUE);
- wscrl (text, -1); /* Scroll text region down one line */
- scrollok (text, FALSE);
- page_length = 0;
- passed_end = 0;
- for (i = 0; i < height - 4; i++) {
- if (!i) {
- /* print first line of page */
- print_line (text, 0, width - 2);
- wnoutrefresh (text);
- } else
- /* Called to update 'end_reached' and 'page' */
- get_line ();
- if (!passed_end)
- page_length++;
- if (end_reached && !passed_end)
- passed_end = 1;
- }
-
- print_position (dialog, height, width);
- wmove (dialog, cur_y, cur_x); /* Restore cursor position */
- wrefresh (dialog);
- }
- break;
- case 'B': /* Previous page */
- case 'b':
- case KEY_PPAGE:
- if (begin_reached)
- break;
- back_lines (page_length + height - 4);
- print_page (text, height - 4, width - 2);
- print_position (dialog, height, width);
- wmove (dialog, cur_y, cur_x);
- wrefresh (dialog);
- break;
- case 'J': /* Next line */
- case 'j':
- case KEY_DOWN:
- if (!end_reached) {
- begin_reached = 0;
- scrollok (text, TRUE);
- scroll (text); /* Scroll text region up one line */
- scrollok (text, FALSE);
- print_line (text, height - 5, width - 2);
- wnoutrefresh (text);
- print_position (dialog, height, width);
- wmove (dialog, cur_y, cur_x); /* Restore cursor position */
- wrefresh (dialog);
- }
- break;
- case KEY_NPAGE: /* Next page */
- case ' ':
- if (end_reached)
- break;
-
- begin_reached = 0;
- print_page (text, height - 4, width - 2);
- print_position (dialog, height, width);
- wmove (dialog, cur_y, cur_x);
- wrefresh (dialog);
- break;
- case '0': /* Beginning of line */
- case 'H': /* Scroll left */
- case 'h':
- case KEY_LEFT:
- if (hscroll <= 0)
- break;
-
- if (key == '0')
- hscroll = 0;
- else
- hscroll--;
- /* Reprint current page to scroll horizontally */
- back_lines (page_length);
- print_page (text, height - 4, width - 2);
- wmove (dialog, cur_y, cur_x);
- wrefresh (dialog);
- break;
- case 'L': /* Scroll right */
- case 'l':
- case KEY_RIGHT:
- if (hscroll >= MAX_LEN)
- break;
- hscroll++;
- /* Reprint current page to scroll horizontally */
- back_lines (page_length);
- print_page (text, height - 4, width - 2);
- wmove (dialog, cur_y, cur_x);
- wrefresh (dialog);
- break;
- case ESC:
- break;
- }
- }
-
- delwin (dialog);
- free (buf);
- close (fd);
- return -1; /* ESC pressed */
-}
-
-/*
- * Go back 'n' lines in text file. Called by dialog_textbox().
- * 'page' will be updated to point to the desired line in 'buf'.
- */
-static void
-back_lines (int n)
-{
- int i, fpos;
-
- begin_reached = 0;
- /* We have to distinguish between end_reached and !end_reached
- since at end of file, the line is not ended by a '\n'.
- The code inside 'if' basically does a '--page' to move one
- character backward so as to skip '\n' of the previous line */
- if (!end_reached) {
- /* Either beginning of buffer or beginning of file reached? */
- if (page == buf) {
- if ((fpos = lseek (fd, 0, SEEK_CUR)) == -1) {
- endwin ();
- fprintf (stderr, "\nError moving file pointer in "
- "back_lines().\n");
- exit (-1);
- }
- if (fpos > bytes_read) { /* Not beginning of file yet */
- /* We've reached beginning of buffer, but not beginning of
- file yet, so read previous part of file into buffer.
- Note that we only move backward for BUF_SIZE/2 bytes,
- but not BUF_SIZE bytes to avoid re-reading again in
- print_page() later */
- /* Really possible to move backward BUF_SIZE/2 bytes? */
- if (fpos < BUF_SIZE / 2 + bytes_read) {
- /* No, move less then */
- if (lseek (fd, 0, SEEK_SET) == -1) {
- endwin ();
- fprintf (stderr, "\nError moving file pointer in "
- "back_lines().\n");
- exit (-1);
- }
- page = buf + fpos - bytes_read;
- } else { /* Move backward BUF_SIZE/2 bytes */
- if (lseek (fd, -(BUF_SIZE / 2 + bytes_read), SEEK_CUR)
- == -1) {
- endwin ();
- fprintf (stderr, "\nError moving file pointer "
- "in back_lines().\n");
- exit (-1);
- }
- page = buf + BUF_SIZE / 2;
- }
- if ((bytes_read = read (fd, buf, BUF_SIZE)) == -1) {
- endwin ();
- fprintf (stderr, "\nError reading file in back_lines().\n");
- exit (-1);
- }
- buf[bytes_read] = '\0';
- } else { /* Beginning of file reached */
- begin_reached = 1;
- return;
- }
- }
- if (*(--page) != '\n') { /* '--page' here */
- /* Something's wrong... */
- endwin ();
- fprintf (stderr, "\nInternal error in back_lines().\n");
- exit (-1);
- }
- }
- /* Go back 'n' lines */
- for (i = 0; i < n; i++)
- do {
- if (page == buf) {
- if ((fpos = lseek (fd, 0, SEEK_CUR)) == -1) {
- endwin ();
- fprintf (stderr,
- "\nError moving file pointer in back_lines().\n");
- exit (-1);
- }
- if (fpos > bytes_read) {
- /* Really possible to move backward BUF_SIZE/2 bytes? */
- if (fpos < BUF_SIZE / 2 + bytes_read) {
- /* No, move less then */
- if (lseek (fd, 0, SEEK_SET) == -1) {
- endwin ();
- fprintf (stderr, "\nError moving file pointer "
- "in back_lines().\n");
- exit (-1);
- }
- page = buf + fpos - bytes_read;
- } else { /* Move backward BUF_SIZE/2 bytes */
- if (lseek (fd, -(BUF_SIZE / 2 + bytes_read),
- SEEK_CUR) == -1) {
- endwin ();
- fprintf (stderr, "\nError moving file pointer"
- " in back_lines().\n");
- exit (-1);
- }
- page = buf + BUF_SIZE / 2;
- }
- if ((bytes_read = read (fd, buf, BUF_SIZE)) == -1) {
- endwin ();
- fprintf (stderr, "\nError reading file in "
- "back_lines().\n");
- exit (-1);
- }
- buf[bytes_read] = '\0';
- } else { /* Beginning of file reached */
- begin_reached = 1;
- return;
- }
- }
- } while (*(--page) != '\n');
- page++;
-}
-
-/*
- * Print a new page of text. Called by dialog_textbox().
- */
-static void
-print_page (WINDOW * win, int height, int width)
-{
- int i, passed_end = 0;
-
- page_length = 0;
- for (i = 0; i < height; i++) {
- print_line (win, i, width);
- if (!passed_end)
- page_length++;
- if (end_reached && !passed_end)
- passed_end = 1;
- }
- wnoutrefresh (win);
-}
-
-/*
- * Print a new line of text. Called by dialog_textbox() and print_page().
- */
-static void
-print_line (WINDOW * win, int row, int width)
-{
- int y, x;
- char *line;
-
- line = get_line ();
- line += MIN (strlen (line), hscroll); /* Scroll horizontally */
- wmove (win, row, 0); /* move cursor to correct line */
- waddch (win, ' ');
- waddnstr (win, line, MIN (strlen (line), width - 2));
-
- getyx (win, y, x);
- /* Clear 'residue' of previous line */
-#if OLD_NCURSES
- {
- int i;
- for (i = 0; i < width - x; i++)
- waddch (win, ' ');
- }
-#else
- wclrtoeol(win);
-#endif
-}
-
-/*
- * Return current line of text. Called by dialog_textbox() and print_line().
- * 'page' should point to start of current line before calling, and will be
- * updated to point to start of next line.
- */
-static char *
-get_line (void)
-{
- int i = 0, fpos;
- static char line[MAX_LEN + 1];
-
- end_reached = 0;
- while (*page != '\n') {
- if (*page == '\0') {
- /* Either end of file or end of buffer reached */
- if ((fpos = lseek (fd, 0, SEEK_CUR)) == -1) {
- endwin ();
- fprintf (stderr, "\nError moving file pointer in "
- "get_line().\n");
- exit (-1);
- }
- if (fpos < file_size) { /* Not end of file yet */
- /* We've reached end of buffer, but not end of file yet,
- so read next part of file into buffer */
- if ((bytes_read = read (fd, buf, BUF_SIZE)) == -1) {
- endwin ();
- fprintf (stderr, "\nError reading file in get_line().\n");
- exit (-1);
- }
- buf[bytes_read] = '\0';
- page = buf;
- } else {
- if (!end_reached)
- end_reached = 1;
- break;
- }
- } else if (i < MAX_LEN)
- line[i++] = *(page++);
- else {
- /* Truncate lines longer than MAX_LEN characters */
- if (i == MAX_LEN)
- line[i++] = '\0';
- page++;
- }
- }
- if (i <= MAX_LEN)
- line[i] = '\0';
- if (!end_reached)
- page++; /* move pass '\n' */
-
- return line;
-}
-
-/*
- * Print current position
- */
-static void
-print_position (WINDOW * win, int height, int width)
-{
- int fpos, percent;
-
- if ((fpos = lseek (fd, 0, SEEK_CUR)) == -1) {
- endwin ();
- fprintf (stderr, "\nError moving file pointer in print_position().\n");
- exit (-1);
- }
- wattrset (win, position_indicator_attr);
- wbkgdset (win, position_indicator_attr & A_COLOR);
- percent = !file_size ?
- 100 : ((fpos - bytes_read + page - buf) * 100) / file_size;
- wmove (win, height - 3, width - 9);
- wprintw (win, "(%3d%%)", percent);
-}
+++ /dev/null
-/*
- * util.c
- *
- * ORIGINAL AUTHOR: Savio Lam (lam836@cs.cuhk.hk)
- * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcap@cfw.com)
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#include "dialog.h"
-
-
-/* use colors by default? */
-bool use_colors = 1;
-
-const char *backtitle = NULL;
-
-const char *dialog_result;
-
-/*
- * Attribute values, default is for mono display
- */
-chtype attributes[] =
-{
- A_NORMAL, /* screen_attr */
- A_NORMAL, /* shadow_attr */
- A_NORMAL, /* dialog_attr */
- A_BOLD, /* title_attr */
- A_NORMAL, /* border_attr */
- A_REVERSE, /* button_active_attr */
- A_DIM, /* button_inactive_attr */
- A_REVERSE, /* button_key_active_attr */
- A_BOLD, /* button_key_inactive_attr */
- A_REVERSE, /* button_label_active_attr */
- A_NORMAL, /* button_label_inactive_attr */
- A_NORMAL, /* inputbox_attr */
- A_NORMAL, /* inputbox_border_attr */
- A_NORMAL, /* searchbox_attr */
- A_BOLD, /* searchbox_title_attr */
- A_NORMAL, /* searchbox_border_attr */
- A_BOLD, /* position_indicator_attr */
- A_NORMAL, /* menubox_attr */
- A_NORMAL, /* menubox_border_attr */
- A_NORMAL, /* item_attr */
- A_REVERSE, /* item_selected_attr */
- A_BOLD, /* tag_attr */
- A_REVERSE, /* tag_selected_attr */
- A_BOLD, /* tag_key_attr */
- A_REVERSE, /* tag_key_selected_attr */
- A_BOLD, /* check_attr */
- A_REVERSE, /* check_selected_attr */
- A_BOLD, /* uarrow_attr */
- A_BOLD /* darrow_attr */
-};
-
-
-#include "colors.h"
-
-/*
- * Table of color values
- */
-int color_table[][3] =
-{
- {SCREEN_FG, SCREEN_BG, SCREEN_HL},
- {SHADOW_FG, SHADOW_BG, SHADOW_HL},
- {DIALOG_FG, DIALOG_BG, DIALOG_HL},
- {TITLE_FG, TITLE_BG, TITLE_HL},
- {BORDER_FG, BORDER_BG, BORDER_HL},
- {BUTTON_ACTIVE_FG, BUTTON_ACTIVE_BG, BUTTON_ACTIVE_HL},
- {BUTTON_INACTIVE_FG, BUTTON_INACTIVE_BG, BUTTON_INACTIVE_HL},
- {BUTTON_KEY_ACTIVE_FG, BUTTON_KEY_ACTIVE_BG, BUTTON_KEY_ACTIVE_HL},
- {BUTTON_KEY_INACTIVE_FG, BUTTON_KEY_INACTIVE_BG, BUTTON_KEY_INACTIVE_HL},
- {BUTTON_LABEL_ACTIVE_FG, BUTTON_LABEL_ACTIVE_BG, BUTTON_LABEL_ACTIVE_HL},
- {BUTTON_LABEL_INACTIVE_FG, BUTTON_LABEL_INACTIVE_BG,
- BUTTON_LABEL_INACTIVE_HL},
- {INPUTBOX_FG, INPUTBOX_BG, INPUTBOX_HL},
- {INPUTBOX_BORDER_FG, INPUTBOX_BORDER_BG, INPUTBOX_BORDER_HL},
- {SEARCHBOX_FG, SEARCHBOX_BG, SEARCHBOX_HL},
- {SEARCHBOX_TITLE_FG, SEARCHBOX_TITLE_BG, SEARCHBOX_TITLE_HL},
- {SEARCHBOX_BORDER_FG, SEARCHBOX_BORDER_BG, SEARCHBOX_BORDER_HL},
- {POSITION_INDICATOR_FG, POSITION_INDICATOR_BG, POSITION_INDICATOR_HL},
- {MENUBOX_FG, MENUBOX_BG, MENUBOX_HL},
- {MENUBOX_BORDER_FG, MENUBOX_BORDER_BG, MENUBOX_BORDER_HL},
- {ITEM_FG, ITEM_BG, ITEM_HL},
- {ITEM_SELECTED_FG, ITEM_SELECTED_BG, ITEM_SELECTED_HL},
- {TAG_FG, TAG_BG, TAG_HL},
- {TAG_SELECTED_FG, TAG_SELECTED_BG, TAG_SELECTED_HL},
- {TAG_KEY_FG, TAG_KEY_BG, TAG_KEY_HL},
- {TAG_KEY_SELECTED_FG, TAG_KEY_SELECTED_BG, TAG_KEY_SELECTED_HL},
- {CHECK_FG, CHECK_BG, CHECK_HL},
- {CHECK_SELECTED_FG, CHECK_SELECTED_BG, CHECK_SELECTED_HL},
- {UARROW_FG, UARROW_BG, UARROW_HL},
- {DARROW_FG, DARROW_BG, DARROW_HL},
-}; /* color_table */
-
-/*
- * Set window to attribute 'attr'
- */
-void
-attr_clear (WINDOW * win, int height, int width, chtype attr)
-{
- int i, j;
-
- wattrset (win, attr);
- for (i = 0; i < height; i++) {
- wmove (win, i, 0);
- for (j = 0; j < width; j++)
- waddch (win, ' ');
- }
- touchwin (win);
-}
-
-void dialog_clear (void)
-{
- attr_clear (stdscr, LINES, COLS, screen_attr);
- /* Display background title if it exists ... - SLH */
- if (backtitle != NULL) {
- int i;
-
- wattrset (stdscr, screen_attr);
- mvwaddstr (stdscr, 0, 1, (char *)backtitle);
- wmove (stdscr, 1, 1);
- for (i = 1; i < COLS - 1; i++)
- waddch (stdscr, ACS_HLINE);
- }
- wnoutrefresh (stdscr);
-}
-
-/*
- * Do some initialization for dialog
- */
-void
-init_dialog (void)
-{
- initscr (); /* Init curses */
- keypad (stdscr, TRUE);
- cbreak ();
- noecho ();
-
-
- if (use_colors) /* Set up colors */
- color_setup ();
-
-
- dialog_clear ();
-}
-
-/*
- * Setup for color display
- */
-void
-color_setup (void)
-{
- int i;
-
- if (has_colors ()) { /* Terminal supports color? */
- start_color ();
-
- /* Initialize color pairs */
- for (i = 0; i < ATTRIBUTE_COUNT; i++)
- init_pair (i + 1, color_table[i][0], color_table[i][1]);
-
- /* Setup color attributes */
- for (i = 0; i < ATTRIBUTE_COUNT; i++)
- attributes[i] = C_ATTR (color_table[i][2], i + 1);
- }
-}
-
-/*
- * End using dialog functions.
- */
-void
-end_dialog (void)
-{
- endwin ();
-}
-
-
-/*
- * Print a string of text in a window, automatically wrap around to the
- * next line if the string is too long to fit on one line. Newline
- * characters '\n' are replaced by spaces. We start on a new line
- * if there is no room for at least 4 nonblanks following a double-space.
- */
-void
-print_autowrap (WINDOW * win, const char *prompt, int width, int y, int x)
-{
- int newl, cur_x, cur_y;
- int i, prompt_len, room, wlen;
- char tempstr[MAX_LEN + 1], *word, *sp, *sp2;
-
- strcpy (tempstr, prompt);
-
- prompt_len = strlen(tempstr);
-
- /*
- * Remove newlines
- */
- for(i=0; i<prompt_len; i++) {
- if(tempstr[i] == '\n') tempstr[i] = ' ';
- }
-
- if (prompt_len <= width - x * 2) { /* If prompt is short */
- wmove (win, y, (width - prompt_len) / 2);
- waddstr (win, tempstr);
- } else {
- cur_x = x;
- cur_y = y;
- newl = 1;
- word = tempstr;
- while (word && *word) {
- sp = index(word, ' ');
- if (sp)
- *sp++ = 0;
-
- /* Wrap to next line if either the word does not fit,
- or it is the first word of a new sentence, and it is
- short, and the next word does not fit. */
- room = width - cur_x;
- wlen = strlen(word);
- if (wlen > room ||
- (newl && wlen < 4 && sp && wlen+1+strlen(sp) > room
- && (!(sp2 = index(sp, ' ')) || wlen+1+(sp2-sp) > room))) {
- cur_y++;
- cur_x = x;
- }
- wmove (win, cur_y, cur_x);
- waddstr (win, word);
- getyx (win, cur_y, cur_x);
- cur_x++;
- if (sp && *sp == ' ') {
- cur_x++; /* double space */
- while (*++sp == ' ');
- newl = 1;
- } else
- newl = 0;
- word = sp;
- }
- }
-}
-
-/*
- * Print a button
- */
-void
-print_button (WINDOW * win, const char *label, int y, int x, int selected)
-{
- int i, temp;
-
- wmove (win, y, x);
- wattrset (win, selected ? button_active_attr : button_inactive_attr);
- waddstr (win, "<");
- temp = strspn (label, " ");
- label += temp;
- wattrset (win, selected ? button_label_active_attr
- : button_label_inactive_attr);
- for (i = 0; i < temp; i++)
- waddch (win, ' ');
- wattrset (win, selected ? button_key_active_attr
- : button_key_inactive_attr);
- waddch (win, label[0]);
- wattrset (win, selected ? button_label_active_attr
- : button_label_inactive_attr);
- waddstr (win, (char *)label + 1);
- wattrset (win, selected ? button_active_attr : button_inactive_attr);
- waddstr (win, ">");
- wmove (win, y, x + temp + 1);
-}
-
-/*
- * Draw a rectangular box with line drawing characters
- */
-void
-draw_box (WINDOW * win, int y, int x, int height, int width,
- chtype box, chtype border)
-{
- int i, j;
-
- wattrset (win, 0);
- for (i = 0; i < height; i++) {
- wmove (win, y + i, x);
- for (j = 0; j < width; j++)
- if (!i && !j)
- waddch (win, border | ACS_ULCORNER);
- else if (i == height - 1 && !j)
- waddch (win, border | ACS_LLCORNER);
- else if (!i && j == width - 1)
- waddch (win, box | ACS_URCORNER);
- else if (i == height - 1 && j == width - 1)
- waddch (win, box | ACS_LRCORNER);
- else if (!i)
- waddch (win, border | ACS_HLINE);
- else if (i == height - 1)
- waddch (win, box | ACS_HLINE);
- else if (!j)
- waddch (win, border | ACS_VLINE);
- else if (j == width - 1)
- waddch (win, box | ACS_VLINE);
- else
- waddch (win, box | ' ');
- }
-}
-
-/*
- * Draw shadows along the right and bottom edge to give a more 3D look
- * to the boxes
- */
-void
-draw_shadow (WINDOW * win, int y, int x, int height, int width)
-{
- int i;
-
- if (has_colors ()) { /* Whether terminal supports color? */
- wattrset (win, shadow_attr);
- wmove (win, y + height, x + 2);
- for (i = 0; i < width; i++)
- waddch (win, winch (win) & A_CHARTEXT);
- for (i = y + 1; i < y + height + 1; i++) {
- wmove (win, i, x + width);
- waddch (win, winch (win) & A_CHARTEXT);
- waddch (win, winch (win) & A_CHARTEXT);
- }
- wnoutrefresh (win);
- }
-}
-
-/*
- * Return the position of the first alphabetic character in a string.
- */
-int
-first_alpha(const char *string, const char *exempt)
-{
- int i, in_paren=0, c;
-
- for (i = 0; i < strlen(string); i++) {
- c = tolower(string[i]);
-
- if (strchr("<[(", c)) ++in_paren;
- if (strchr(">])", c)) --in_paren;
-
- if ((! in_paren) && isalpha(c) &&
- strchr(exempt, c) == 0)
- return i;
- }
-
- return 0;
-}
+++ /dev/null
-/*
- * yesno.c -- implements the yes/no box
- *
- * ORIGINAL AUTHOR: Savio Lam (lam836@cs.cuhk.hk)
- * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcap@cfw.com)
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#include "dialog.h"
-
-/*
- * Display termination buttons
- */
-static void
-print_buttons(WINDOW *dialog, int height, int width, int selected)
-{
- int x = width / 2 - 10;
- int y = height - 2;
-
- print_button (dialog, " Yes ", y, x, selected == 0);
- print_button (dialog, " No ", y, x + 13, selected == 1);
-
- wmove(dialog, y, x+1 + 13*selected );
- wrefresh (dialog);
-}
-
-/*
- * Display a dialog box with two buttons - Yes and No
- */
-int
-dialog_yesno (const char *title, const char *prompt, int height, int width)
-{
- int i, x, y, key = 0, button = 0;
- WINDOW *dialog;
-
- /* center dialog box on screen */
- x = (COLS - width) / 2;
- y = (LINES - height) / 2;
-
- draw_shadow (stdscr, y, x, height, width);
-
- dialog = newwin (height, width, y, x);
- keypad (dialog, TRUE);
-
- draw_box (dialog, 0, 0, height, width, dialog_attr, border_attr);
- wattrset (dialog, border_attr);
- mvwaddch (dialog, height-3, 0, ACS_LTEE);
- for (i = 0; i < width - 2; i++)
- waddch (dialog, ACS_HLINE);
- wattrset (dialog, dialog_attr);
- waddch (dialog, ACS_RTEE);
-
- if (title != NULL && strlen(title) >= width-2 ) {
- /* truncate long title -- mec */
- char * title2 = malloc(width-2+1);
- memcpy( title2, title, width-2 );
- title2[width-2] = '\0';
- title = title2;
- }
-
- if (title != NULL) {
- wattrset (dialog, title_attr);
- mvwaddch (dialog, 0, (width - strlen(title))/2 - 1, ' ');
- waddstr (dialog, (char *)title);
- waddch (dialog, ' ');
- }
-
- wattrset (dialog, dialog_attr);
- print_autowrap (dialog, prompt, width - 2, 1, 3);
-
- print_buttons(dialog, height, width, 0);
-
- while (key != ESC) {
- key = wgetch (dialog);
- switch (key) {
- case 'Y':
- case 'y':
- delwin (dialog);
- return 0;
- case 'N':
- case 'n':
- delwin (dialog);
- return 1;
-
- case TAB:
- case KEY_LEFT:
- case KEY_RIGHT:
- button = ((key == KEY_LEFT ? --button : ++button) < 0)
- ? 1 : (button > 1 ? 0 : button);
-
- print_buttons(dialog, height, width, button);
- wrefresh (dialog);
- break;
- case ' ':
- case '\n':
- delwin (dialog);
- return button;
- case ESC:
- break;
- }
- }
-
- delwin (dialog);
- return -1; /* ESC pressed */
-}
+++ /dev/null
-/*
- * Originally by Linus Torvalds.
- * Smart CONFIG_* processing by Werner Almesberger, Michael Chastain.
- *
- * Usage: mkdep cflags -- file ...
- *
- * Read source files and output makefile dependency lines for them.
- * I make simple dependency lines for #include <*.h> and #include "*.h".
- * I also find instances of CONFIG_FOO and generate dependencies
- * like include/config/foo.h.
- *
- * 1 August 1999, Michael Elizabeth Chastain, <mec@shout.net>
- * - Keith Owens reported a bug in smart config processing. There used
- * to be an optimization for "#define CONFIG_FOO ... #ifdef CONFIG_FOO",
- * so that the file would not depend on CONFIG_FOO because the file defines
- * this symbol itself. But this optimization is bogus! Consider this code:
- * "#if 0 \n #define CONFIG_FOO \n #endif ... #ifdef CONFIG_FOO". Here
- * the definition is inactivated, but I still used it. It turns out this
- * actually happens a few times in the kernel source. The simple way to
- * fix this problem is to remove this particular optimization.
- *
- * 2.3.99-pre1, Andrew Morton <andrewm@uow.edu.au>
- * - Changed so that 'filename.o' depends upon 'filename.[cS]'. This is so that
- * missing source files are noticed, rather than silently ignored.
- *
- * 2.4.2-pre3, Keith Owens <kaos@ocs.com.au>
- * - Accept cflags followed by '--' followed by filenames. mkdep extracts -I
- * options from cflags and looks in the specified directories as well as the
- * defaults. Only -I is supported, no attempt is made to handle -idirafter,
- * -isystem, -I- etc.
- */
-
-#include <ctype.h>
-#include <fcntl.h>
-#include <limits.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-
-#include <sys/fcntl.h>
-#include <sys/mman.h>
-#include <sys/stat.h>
-#include <sys/types.h>
-
-
-
-char __depname[512] = "\n\t@touch ";
-#define depname (__depname+9)
-int hasdep;
-
-struct path_struct {
- int len;
- char *buffer;
-};
-struct path_struct *path_array;
-int paths;
-
-
-/* Current input file */
-static const char *g_filename;
-
-/*
- * This records all the configuration options seen.
- * In perl this would be a hash, but here it's a long string
- * of values separated by newlines. This is simple and
- * extremely fast.
- */
-char * str_config = NULL;
-int size_config = 0;
-int len_config = 0;
-
-static void
-do_depname(void)
-{
- if (!hasdep) {
- hasdep = 1;
- printf("%s:", depname);
- if (g_filename)
- printf(" %s", g_filename);
- }
-}
-
-/*
- * Grow the configuration string to a desired length.
- * Usually the first growth is plenty.
- */
-void grow_config(int len)
-{
- while (len_config + len > size_config) {
- if (size_config == 0)
- size_config = 2048;
- str_config = realloc(str_config, size_config *= 2);
- if (str_config == NULL)
- { perror("malloc config"); exit(1); }
- }
-}
-
-
-
-/*
- * Lookup a value in the configuration string.
- */
-int is_defined_config(const char * name, int len)
-{
- const char * pconfig;
- const char * plast = str_config + len_config - len;
- for ( pconfig = str_config + 1; pconfig < plast; pconfig++ ) {
- if (pconfig[ -1] == '\n'
- && pconfig[len] == '\n'
- && !memcmp(pconfig, name, len))
- return 1;
- }
- return 0;
-}
-
-
-
-/*
- * Add a new value to the configuration string.
- */
-void define_config(const char * name, int len)
-{
- grow_config(len + 1);
-
- memcpy(str_config+len_config, name, len);
- len_config += len;
- str_config[len_config++] = '\n';
-}
-
-
-
-/*
- * Clear the set of configuration strings.
- */
-void clear_config(void)
-{
- len_config = 0;
- define_config("", 0);
-}
-
-
-
-/*
- * This records all the precious .h filenames. No need for a hash,
- * it's a long string of values enclosed in tab and newline.
- */
-char * str_precious = NULL;
-int size_precious = 0;
-int len_precious = 0;
-
-
-
-/*
- * Grow the precious string to a desired length.
- * Usually the first growth is plenty.
- */
-void grow_precious(int len)
-{
- while (len_precious + len > size_precious) {
- if (size_precious == 0)
- size_precious = 2048;
- str_precious = realloc(str_precious, size_precious *= 2);
- if (str_precious == NULL)
- { perror("malloc"); exit(1); }
- }
-}
-
-
-
-/*
- * Add a new value to the precious string.
- */
-void define_precious(const char * filename)
-{
- int len = strlen(filename);
- grow_precious(len + 4);
- *(str_precious+len_precious++) = '\t';
- memcpy(str_precious+len_precious, filename, len);
- len_precious += len;
- memcpy(str_precious+len_precious, " \\\n", 3);
- len_precious += 3;
-}
-
-
-
-/*
- * Handle an #include line.
- */
-void handle_include(int start, const char * name, int len)
-{
- struct path_struct *path;
- int i;
-
- if (len == 14 && !memcmp(name, "linux/config.h", len))
- return;
-
- if (len >= 7 && !memcmp(name, "config/", 7))
- define_config(name+7, len-7-2);
-
- for (i = start, path = path_array+start; i < paths; ++i, ++path) {
- memcpy(path->buffer+path->len, name, len);
- path->buffer[path->len+len] = '\0';
- if (access(path->buffer, F_OK) == 0) {
- do_depname();
- printf(" \\\n %s", path->buffer);
- return;
- }
- }
-
-}
-
-
-
-/*
- * Add a path to the list of include paths.
- */
-void add_path(const char * name)
-{
- struct path_struct *path;
- char resolved_path[PATH_MAX+1];
- const char *name2;
-
- if (strcmp(name, ".")) {
- name2 = realpath(name, resolved_path);
- if (!name2) {
- fprintf(stderr, "realpath(%s) failed, %m\n", name);
- exit(1);
- }
- }
- else {
- name2 = "";
- }
-
- path_array = realloc(path_array, (++paths)*sizeof(*path_array));
- if (!path_array) {
- fprintf(stderr, "cannot expand path_arry\n");
- exit(1);
- }
-
- path = path_array+paths-1;
- path->len = strlen(name2);
- path->buffer = malloc(path->len+1+256+1);
- if (!path->buffer) {
- fprintf(stderr, "cannot allocate path buffer\n");
- exit(1);
- }
- strcpy(path->buffer, name2);
- if (path->len && *(path->buffer+path->len-1) != '/') {
- *(path->buffer+path->len) = '/';
- *(path->buffer+(++(path->len))) = '\0';
- }
-}
-
-
-
-/*
- * Record the use of a CONFIG_* word.
- */
-void use_config(const char * name, int len)
-{
- char *pc;
- int i;
-
- pc = path_array[paths-1].buffer + path_array[paths-1].len;
- memcpy(pc, "config/", 7);
- pc += 7;
-
- for (i = 0; i < len; i++) {
- char c = name[i];
- if (isupper(c)) c = tolower(c);
- if (c == '_') c = '/';
- pc[i] = c;
- }
- pc[len] = '\0';
-
- if (is_defined_config(pc, len))
- return;
-
- define_config(pc, len);
-
- do_depname();
- printf(" \\\n $(wildcard %s.h)", path_array[paths-1].buffer);
-}
-
-
-
-/*
- * Macros for stunningly fast map-based character access.
- * __buf is a register which holds the current word of the input.
- * Thus, there is one memory access per sizeof(unsigned long) characters.
- */
-
-#if defined(__alpha__) || defined(__i386__) || defined(__ia64__) || defined(__x86_64__) || defined(__MIPSEL__) \
- || defined(__arm__)
-#define LE_MACHINE
-#endif
-
-#ifdef LE_MACHINE
-#define next_byte(x) (x >>= 8)
-#define current ((unsigned char) __buf)
-#else
-#define next_byte(x) (x <<= 8)
-#define current (__buf >> 8*(sizeof(unsigned long)-1))
-#endif
-
-#define GETNEXT { \
- next_byte(__buf); \
- if ((unsigned long) next % sizeof(unsigned long) == 0) { \
- if (next >= end) \
- break; \
- __buf = * (unsigned long *) next; \
- } \
- next++; \
-}
-
-/*
- * State machine macros.
- */
-#define CASE(c,label) if (current == c) goto label
-#define NOTCASE(c,label) if (current != c) goto label
-
-/*
- * Yet another state machine speedup.
- */
-#define MAX2(a,b) ((a)>(b)?(a):(b))
-#define MIN2(a,b) ((a)<(b)?(a):(b))
-#define MAX5(a,b,c,d,e) (MAX2(a,MAX2(b,MAX2(c,MAX2(d,e)))))
-#define MIN5(a,b,c,d,e) (MIN2(a,MIN2(b,MIN2(c,MIN2(d,e)))))
-
-
-
-/*
- * The state machine looks for (approximately) these Perl regular expressions:
- *
- * m|\/\*.*?\*\/|
- * m|\/\/.*|
- * m|'.*?'|
- * m|".*?"|
- * m|#\s*include\s*"(.*?)"|
- * m|#\s*include\s*<(.*?>"|
- * m|#\s*(?define|undef)\s*CONFIG_(\w*)|
- * m|(?!\w)CONFIG_|
- *
- * About 98% of the CPU time is spent here, and most of that is in
- * the 'start' paragraph. Because the current characters are
- * in a register, the start loop usually eats 4 or 8 characters
- * per memory read. The MAX5 and MIN5 tests dispose of most
- * input characters with 1 or 2 comparisons.
- */
-void state_machine(const char * map, const char * end)
-{
- const char * next = map;
- const char * map_dot;
- unsigned long __buf = 0;
-
- for (;;) {
-start:
- GETNEXT
-__start:
- if (current > MAX5('/','\'','"','#','C')) goto start;
- if (current < MIN5('/','\'','"','#','C')) goto start;
- CASE('/', slash);
- CASE('\'', squote);
- CASE('"', dquote);
- CASE('#', pound);
- CASE('C', cee);
- goto start;
-
-/* // */
-slash_slash:
- GETNEXT
- CASE('\n', start);
- NOTCASE('\\', slash_slash);
- GETNEXT
- goto slash_slash;
-
-/* / */
-slash:
- GETNEXT
- CASE('/', slash_slash);
- NOTCASE('*', __start);
-slash_star_dot_star:
- GETNEXT
-__slash_star_dot_star:
- NOTCASE('*', slash_star_dot_star);
- GETNEXT
- NOTCASE('/', __slash_star_dot_star);
- goto start;
-
-/* '.*?' */
-squote:
- GETNEXT
- CASE('\'', start);
- NOTCASE('\\', squote);
- GETNEXT
- goto squote;
-
-/* ".*?" */
-dquote:
- GETNEXT
- CASE('"', start);
- NOTCASE('\\', dquote);
- GETNEXT
- goto dquote;
-
-/* #\s* */
-pound:
- GETNEXT
- CASE(' ', pound);
- CASE('\t', pound);
- CASE('i', pound_i);
- CASE('d', pound_d);
- CASE('u', pound_u);
- goto __start;
-
-/* #\s*i */
-pound_i:
- GETNEXT NOTCASE('n', __start);
- GETNEXT NOTCASE('c', __start);
- GETNEXT NOTCASE('l', __start);
- GETNEXT NOTCASE('u', __start);
- GETNEXT NOTCASE('d', __start);
- GETNEXT NOTCASE('e', __start);
- goto pound_include;
-
-/* #\s*include\s* */
-pound_include:
- GETNEXT
- CASE(' ', pound_include);
- CASE('\t', pound_include);
- map_dot = next;
- CASE('"', pound_include_dquote);
- CASE('<', pound_include_langle);
- goto __start;
-
-/* #\s*include\s*"(.*)" */
-pound_include_dquote:
- GETNEXT
- CASE('\n', start);
- NOTCASE('"', pound_include_dquote);
- handle_include(0, map_dot, next - map_dot - 1);
- goto start;
-
-/* #\s*include\s*<(.*)> */
-pound_include_langle:
- GETNEXT
- CASE('\n', start);
- NOTCASE('>', pound_include_langle);
- handle_include(1, map_dot, next - map_dot - 1);
- goto start;
-
-/* #\s*d */
-pound_d:
- GETNEXT NOTCASE('e', __start);
- GETNEXT NOTCASE('f', __start);
- GETNEXT NOTCASE('i', __start);
- GETNEXT NOTCASE('n', __start);
- GETNEXT NOTCASE('e', __start);
- goto pound_define_undef;
-
-/* #\s*u */
-pound_u:
- GETNEXT NOTCASE('n', __start);
- GETNEXT NOTCASE('d', __start);
- GETNEXT NOTCASE('e', __start);
- GETNEXT NOTCASE('f', __start);
- goto pound_define_undef;
-
-/*
- * #\s*(define|undef)\s*CONFIG_(\w*)
- *
- * this does not define the word, because it could be inside another
- * conditional (#if 0). But I do parse the word so that this instance
- * does not count as a use. -- mec
- */
-pound_define_undef:
- GETNEXT
- CASE(' ', pound_define_undef);
- CASE('\t', pound_define_undef);
-
- NOTCASE('C', __start);
- GETNEXT NOTCASE('O', __start);
- GETNEXT NOTCASE('N', __start);
- GETNEXT NOTCASE('F', __start);
- GETNEXT NOTCASE('I', __start);
- GETNEXT NOTCASE('G', __start);
- GETNEXT NOTCASE('_', __start);
-
- map_dot = next;
-pound_define_undef_CONFIG_word:
- GETNEXT
- if (isalnum(current) || current == '_')
- goto pound_define_undef_CONFIG_word;
- goto __start;
-
-/* \<CONFIG_(\w*) */
-cee:
- if (next >= map+2 && (isalnum(next[-2]) || next[-2] == '_'))
- goto start;
- GETNEXT NOTCASE('O', __start);
- GETNEXT NOTCASE('N', __start);
- GETNEXT NOTCASE('F', __start);
- GETNEXT NOTCASE('I', __start);
- GETNEXT NOTCASE('G', __start);
- GETNEXT NOTCASE('_', __start);
-
- map_dot = next;
-cee_CONFIG_word:
- GETNEXT
- if (isalnum(current) || current == '_')
- goto cee_CONFIG_word;
- use_config(map_dot, next - map_dot - 1);
- goto __start;
- }
-}
-
-
-
-/*
- * Generate dependencies for one file.
- */
-void do_depend(const char * filename, const char * command)
-{
- int mapsize;
- int pagesizem1 = getpagesize()-1;
- int fd;
- struct stat st;
- char * map;
-
- fd = open(filename, O_RDONLY);
- if (fd < 0) {
- perror(filename);
- return;
- }
-
- fstat(fd, &st);
- if (st.st_size == 0) {
- fprintf(stderr,"%s is empty\n",filename);
- close(fd);
- return;
- }
-
- mapsize = st.st_size;
- mapsize = (mapsize+pagesizem1) & ~pagesizem1;
- map = mmap(NULL, mapsize, PROT_READ, MAP_PRIVATE, fd, 0);
- if ((long) map == -1) {
- perror("mkdep: mmap");
- close(fd);
- return;
- }
- if ((unsigned long) map % sizeof(unsigned long) != 0)
- {
- fprintf(stderr, "do_depend: map not aligned\n");
- exit(1);
- }
-
- hasdep = 0;
- clear_config();
- state_machine(map, map+st.st_size);
- if (hasdep) {
- puts(command);
- if (*command)
- define_precious(filename);
- }
-
- munmap(map, mapsize);
- close(fd);
-}
-
-
-
-/*
- * Generate dependencies for all files.
- */
-int main(int argc, char **argv)
-{
- int len;
- const char *hpath;
-
- hpath = getenv("HPATH");
- if (!hpath) {
- fputs("mkdep: HPATH not set in environment. "
- "Don't bypass the top level Makefile.\n", stderr);
- return 1;
- }
-
- add_path("."); /* for #include "..." */
-
- while (++argv, --argc > 0) {
- if (strncmp(*argv, "-I", 2) == 0) {
- if (*((*argv)+2)) {
- add_path((*argv)+2);
- }
- else {
- ++argv;
- --argc;
- add_path(*argv);
- }
- }
- else if (strcmp(*argv, "--") == 0) {
- break;
- }
- }
-
- add_path(hpath); /* must be last entry, for config files */
-
- while (--argc > 0) {
- const char * filename = *++argv;
- const char * command = __depname;
- g_filename = 0;
- len = strlen(filename);
- memcpy(depname, filename, len+1);
- if (len > 2 && filename[len-2] == '.') {
- if (filename[len-1] == 'c' || filename[len-1] == 'S') {
- depname[len-1] = 'o';
- g_filename = filename;
- command = "";
- }
- }
- do_depend(filename, command);
- }
- if (len_precious) {
- *(str_precious+len_precious) = '\0';
- printf(".PRECIOUS:%s\n", str_precious);
- }
- return 0;
-}
+++ /dev/null
-#!/bin/sh
-UP=
-DN=${PWD:?}
-TP=${TOPDIR:?}
-
-while [ ! $TP/$UP/. -ef $DN ] ;do
- UP=`basename $PWD`/$UP
- cd ..
- if [ "$PWD" = "/" ]; then echo "Lost"; exit 1; fi
-done
-
-echo $UP
-exit 0
+++ /dev/null
-#!/bin/bash
-
-export CVSROOT=ds@cvs.comedi.org:/var/cvs
-export CVS_RSH=ssh
-
-topdir=$(pwd)
-
-if [ ! "$1" ]
-then
- echo -n "minor version: "
- read minor
-else
- minor=$1
-fi
-
-lastminor=$(($minor - 1))
-
-tag=r0_7_$minor
-version=0.7.$minor
-lasttag=r0_7_$lastminor
-
-echo "deleting tag $tag"
-cvs rtag -d $tag comedi
-
-echo "tagging $tag"
-cvs rtag $tag comedi
-
-echo "exporting"
-cvs export -r $tag -d comedi-$version comedi
-
-echo "generating patch"
-cvs rdiff -u -r $lasttag -r $tag comedi >patch-comedi-$version
-
-cd comedi-$version
-
-sed -e "s/^SUBLEVEL.*/SUBLEVEL = $minor/" -e \
- "s/^EXTRAVERSION.*/EXTRAVERSION = /" \
- Makefile >Makefile.tmp
-mv Makefile.tmp Makefile
-make drivers.txt
-
-cd $topdir
-tar -czf comedi-$version.tgz comedi-$version
-