3 # VLC media player configuration script, borrowed from linux menuconfig
4 # Cyril Deguet <asmax@videolan.org>
6 # Currently out of date
8 echo "'./menuconfig' is currently not maintained and out-of-date. Use './configure' instead."
13 #-----------------------------------------------------------------
14 # William Roadcap was the original author of Menuconfig.
15 # Michael Elizabeth Chastain (mec@shout.net) is the current maintainer.
17 # 070497 Bernhard Kaindl (bkaindl@netway.at) - get default values for
18 # new bool, tristate and dep_tristate parameters from the defconfig file.
19 # new configuration parameters are marked with '(NEW)' as in make config.
21 # 180697 Bernhard Kaindl (bkaindl@netway.at) - added the needed support
22 # for string options. They are handled like the int and hex options.
24 # 081297 Pavel Machek (pavel@atrey.karlin.mff.cuni.cz) - better error
27 # 131197 Michael Chastain (mec@shout.net) - output all lines for a
28 # choice list, not just the selected one. This makes the output
29 # the same as Configure output, which is important for smart config
32 # 101297 Michael Chastain (mec@shout.net) - remove sound driver cruft.
34 # 221297 Michael Chastain (mec@shout.net) - make define_bool actually
35 # define its arguments so that later tests on them work right.
37 # 160198 Michael Chastain (mec@shout.net) - fix bug with 'c' command
38 # (complement existing value) when used on virgin uninitialized variables.
40 # 090398 Axel Boldt (boldt@math.ucsb.edu) - allow for empty lines in help
43 # 12 Dec 1998, Michael Elizabeth Chastain (mec@shout.net)
44 # Remove a /tmp security hole in get_def (also makes it faster).
45 # Give uninitialized variables canonical values rather than null value.
46 # Change a lot of places to call set_x_info uniformly.
47 # Take out message about preparing version (old sound driver cruft).
49 # 13 Dec 1998, Riley H Williams <Riley@Williams.Name>
50 # When an error occurs, actually display the error message as well as
51 # our comments thereon.
53 # 31 Dec 1998, Michael Elizabeth Chastain (mec@shout.net)
54 # Fix mod_bool to honor $CONFIG_MODULES.
55 # Fix dep_tristate to call define_bool when dependency is "n".
57 # 02 January 1999, Michael Elizabeth Chastain (mec@shout.net)
58 # Blow away lxdialog.scrltmp on entry to activate_menu. This protects
59 # against people who use commands like ' ' to select menus.
61 # 24 January 1999, Michael Elizabeth Chastain, <mec@shout.net>
62 # - Improve the exit message (Jeff Ronne).
64 # 06 July 1999, Andrzej M. Krzysztofowicz, <ankry@mif.pg.gda.pl>
65 # - Support for multiple conditions in dep_tristate().
66 # - Implemented new functions: define_tristate(), define_int(), define_hex(),
67 # define_string(), dep_bool().
69 # 12 November 2001, Keith Owens <kaos@ocs.com.au>
70 # Escape double quotes on eval so the quotes are still there on the second
71 # evaluation, required to handle strings with special characters.
76 # Change this to TRUE if you prefer all kernel options listed
77 # in a single menu rather than the standard menu hierarchy.
82 # Make sure we're really running bash.
84 [ -z "$BASH" ] && { echo "Menuconfig requires bash" 1>&2; exit 1; }
87 # Cache function definitions, turn off posix compliance
93 # Given a configuration variable, set the global variable $x to its value,
94 # and the global variable $info to the string " (NEW)" if this is a new
97 # This function looks for: (1) the current value, or (2) the default value
98 # from the arch-dependent defconfig file, or (3) a default passed by the caller.
100 function set_x_info () {
103 eval `sed -n -e 's/# \(.*\) is not set.*/\1=n/' -e "/^$1=/p" arch/$ARCH/defconfig`
104 eval x=\${$1:-\"$2\"}
106 eval INFO_$1="' (NEW)'"
108 eval info=\"\$INFO_$1\"
112 # Load the functions used by the config.in files.
114 # I do this because these functions must be redefined depending
115 # on whether they are being called for interactive use or for
116 # saving a configuration to a file.
118 # Thank the heavens bash supports nesting function definitions.
123 # Additional comments
125 function comment () {
126 comment_ctr=$[ comment_ctr + 1 ]
127 echo -ne "': $comment_ctr' '--- $1' " >>MCmenu
131 # Define a boolean to a specific value.
133 function define_bool () {
137 function define_tristate () {
141 function define_hex () {
145 function define_int () {
149 function define_string () {
154 # Create a boolean (Yes/No) function for our current menu
155 # which calls our local bool function.
165 echo -ne "'$2' '[$flag] $1$info' " >>MCmenu
167 echo -e "function $2 () { l_bool '$2' \"\$1\" ;}\n" >>MCradiolists
171 # Create a tristate (Yes/No/Module) radiolist function
172 # which calls our local tristate function.
174 # Collapses to a boolean (Yes/No) if module support is disabled.
176 function tristate () {
177 if [ "$CONFIG_MODULES" != "y" ]
189 echo -ne "'$2' '<$flag> $1$info' " >>MCmenu
192 function $2 () { l_tristate '$2' \"\$1\" ;}" >>MCradiolists
197 # Create a tristate radiolist function which is dependent on
198 # another vlc configuration option.
200 # Quote from the original configure script:
202 # If the option we depend upon is a module,
203 # then the only allowable options are M or N. If Y, then
204 # this is a normal tristate. This is used in cases where modules
205 # are nested, and one module requires the presence of something
206 # else in the kernel.
208 function dep_tristate () {
213 while [ $# -gt 0 ]; do
214 if [ "$1" = y ]; then
216 elif [ "$1" = m ]; then
224 if [ "$dep" = y ]; then
225 tristate "$ques" "$var"
226 elif [ "$dep" = m ]; then
227 mod_bool "$ques" "$var"
229 define_tristate "$var" n
234 # Same as above, but now only Y and N are allowed as dependency
235 # (i.e. third and next arguments).
237 function dep_bool () {
242 while [ $# -gt 0 ]; do
243 if [ "$1" = y ]; then
250 if [ "$dep" = y ]; then
257 function dep_mbool () {
262 while [ $# -gt 0 ]; do
263 if [ "$1" = y -o "$1" = m ]; then
270 if [ "$dep" = y ]; then
278 # Add a menu item which will call our local int function.
283 echo -ne "'$2' '($x) $1$info' " >>MCmenu
285 echo -e "function $2 () { l_int '$1' '$2' '$3' '$x' ;}" >>MCradiolists
289 # Add a menu item which will call our local hex function.
295 echo -ne "'$2' '($x) $1$info' " >>MCmenu
297 echo -e "function $2 () { l_hex '$1' '$2' '$3' '$x' ;}" >>MCradiolists
301 # Add a menu item which will call our local string function.
306 echo -ne "'$2' ' $1: \"$x\"$info' " >>MCmenu
308 echo -e "function $2 () { l_string '$1' '$2' '$3' '$x' ;}" >>MCradiolists
312 # Add a menu item which will call our local One-of-Many choice list.
316 # Need to remember params cause they're gonna get reset.
324 # Find out if one of the choices is already set.
325 # If it's not then make it the default.
332 if eval [ \"_\$$2\" = \"_y\" ]
340 : ${current:=$default}
342 echo -ne "'$firstchoice' '($current) $title' " >>MCmenu
345 function $firstchoice () \
346 { l_choice '$title' \"$choices\" \"$current\" ;}" >>MCradiolists
349 } # END load_functions()
356 # Extract available help for an option from Configure.help
357 # and send it to standard output.
359 # Most of this function was borrowed from the original kernel
362 function extract_help () {
363 if [ -f doc/Configure.help ]
365 #first escape regexp special characters in the argument:
366 var=$(echo "$1"|sed 's/[][\/.^$*]/\\&/g')
367 #now pick out the right help text:
368 text=$(sed -n "/^$var[ ]*\$/,\${
375 /<file:\\([^>]*\\)>/s//\\1/g
377 }" doc/Configure.help)
381 echo "There is no help available for this option."
387 echo "There is no help available for this option."
393 # Activate a help dialog.
396 if extract_help $1 >help.out
398 $DIALOG --backtitle "$backtitle" --title "$2"\
399 --textbox help.out $ROWS $COLS
401 $DIALOG --backtitle "$backtitle" \
402 --textbox help.out $ROWS $COLS
408 # Show the README file.
410 function show_readme () {
411 $DIALOG --backtitle "$backtitle" \
412 --textbox scripts/README.Menuconfig $ROWS $COLS
416 # Begin building the dialog menu command and Initialize the
417 # Radiolist function file.
419 function menu_name () {
420 echo -ne "$DIALOG --title '$1'\
421 --backtitle '$backtitle' \
422 --menu '$menu_instructions' \
423 $ROWS $COLS $((ROWS-10)) \
429 # Add a submenu option to the menu currently under construction.
431 function submenu () {
432 echo -ne "'activate_menu $2' '$1 --->' " >>MCmenu
436 # Handle a boolean (Yes/No) option.
457 # Same as bool() except options are (Module/No)
459 function mod_bool () {
460 if [ "$CONFIG_MODULES" != "y" ]; then
470 echo -ne "'$2' '<$flag> $1$info' " >>MCmenu
472 echo -e "function $2 () { l_mod_bool '$2' \"\$1\" ;}" >>MCradiolists
477 # Same as l_bool() except options are (Module/No)
479 function l_mod_bool() {
484 ${DIALOG} --backtitle "$backtitle" \
486 This feature depends on another which has been configured as a module. \
487 As a result, this feature will be built as a module." 4 70
505 # Handle a tristate (Yes/No/Module) option.
507 function l_tristate () {
530 # Create a dialog for entering an integer into a kernel option.
535 if $DIALOG --title "$1" \
536 --backtitle "$backtitle" \
537 --inputbox "$inputbox_instructions_int" \
538 10 75 "$4" 2>MCdialog.out
540 answer="`cat MCdialog.out`"
541 answer="${answer:-$3}"
543 # Semantics of + and ? in GNU expr changed, so
545 if expr "$answer" : '0$' '|' "$answer" : '[1-9][0-9]*$' '|' "$answer" : '-[1-9][0-9]*$' >/dev/null
551 ${DIALOG} --backtitle "$backtitle" \
552 --infobox "You have made an invalid entry." 3 43
564 # Create a dialog for entering a hexadecimal into a kernel option.
569 if $DIALOG --title "$1" \
570 --backtitle "$backtitle" \
571 --inputbox "$inputbox_instructions_hex" \
572 10 75 "$4" 2>MCdialog.out
574 answer="`cat MCdialog.out`"
575 answer="${answer:-$3}"
576 answer="${answer##*[x,X]}"
578 if expr "$answer" : '[0-9a-fA-F][0-9a-fA-F]*$' >/dev/null
584 ${DIALOG} --backtitle "$backtitle" \
585 --infobox "You have made an invalid entry." 3 43
597 # Create a dialog for entering a string into a kernel option.
599 function l_string () {
602 if $DIALOG --title "$1" \
603 --backtitle "$backtitle" \
604 --inputbox "$inputbox_instructions_string" \
605 10 75 "$4" 2>MCdialog.out
607 answer="`cat MCdialog.out`"
608 answer="${answer:-$3}"
611 # Someone may add a nice check for the entered
625 # Handle a one-of-many choice list.
627 function l_choice () {
629 # Need to remember params cause they're gonna get reset.
637 # Scan current value of choices and set radiolist switches.
645 "$current"*) if [ -z "$chosen" ]; then
646 list="$list $2 $1 ON "
649 list="$list $2 $1 OFF "
651 *) list="$list $2 $1 OFF " ;;
659 if $DIALOG --title "$title" \
660 --backtitle "$backtitle" \
661 --radiolist "$radiolist_instructions" \
662 15 70 6 $list 2>MCdialog.out
664 choice=`cat MCdialog.out`
668 help "$firstchoice" "$title"
672 # Now set the boolean value of each option based on
673 # the selection made from the radiolist.
678 if [ "$2" = "$choice" ]
690 # Call awk, and watch for error codes, etc.
692 function callawk () {
693 awk "$1" || { echo "Awk died with error code $?. Giving up."; exit 1; }
697 # A faster awk based recursive parser. (I hope)
699 function parser1 () {
703 comment_is_option = 0
704 parser("'$CONFIG_IN'","MCmenu0")
707 function parser(ifile,menu) {
709 while (getline <ifile) {
710 if ($1 == "mainmenu_option") {
711 comment_is_option = "1"
713 else if ($1 == "comment" && comment_is_option == "1") {
714 comment_is_option= "0"
718 printf("submenu %s MCmenu%s\n", $0, menu_no) >>menu
720 newmenu = sprintf("MCmenu%d", menu_no);
721 printf( "function MCmenu%s () {\n"\
724 menu_no, $0) >newmenu
726 parser(ifile, newmenu)
728 else if ($0 ~ /^#|\$MAKE|mainmenu_name/) {
731 else if ($1 ~ "endmenu") {
735 else if ($1 == "source") {
746 # Secondary parser for single menu mode.
748 function parser2 () {
751 parser("'$CONFIG_IN'","MCmenu0")
754 function parser(ifile,menu) {
756 while (getline <ifile) {
757 if ($0 ~ /^#|$MAKE|mainmenu_name/) {
760 else if ($1 ~ /mainmenu_option|endmenu/) {
763 else if ($1 == "source") {
774 # Parse all the config.in files into mini scripts.
776 function parse_config_files () {
779 echo "function MCmenu0 () {" >MCmenu0
780 echo 'default=$1' >>MCmenu0
781 echo "menu_name 'Main Menu'" >>MCmenu0
783 if [ "_$single_menu_mode" = "_TRUE" ]
790 echo "comment ''" >>MCmenu0
791 echo "g_alt_config" >>MCmenu0
792 echo "s_alt_config" >>MCmenu0
797 # These mini scripts must be sourced into the current
798 # environment in order for all of this to work. Leaving
799 # them on the disk as executables screws up the recursion
800 # in activate_menu(), among other things. Once they are
801 # sourced we can discard them.
812 # This is the menu tree's bootstrap.
814 # Executes the parsed menus on demand and creates a set of functions,
815 # one per configuration option. These functions will in turn execute
816 # dialog commands or recursively call other menus.
818 function activate_menu () {
819 rm -f lxdialog.scrltmp
822 comment_ctr=0 #So comment lines get unique tags
824 $1 "$default" 2> MCerror #Create the lxdialog menu & functions
831 Menuconfig has encountered a possible error in one of the vlc's
832 configuration files and is unable to continue. Here is the error
836 sed 's/^/ Q> /' MCerror
839 Please report this to the maintainer <asmax@videolan.org>.
841 Please indicate the vlc version you are trying to configure and
842 which menu you were trying to enter when this error occurred.
850 . ./MCradiolists #Source the menu's functions
852 . ./MCmenu 2>MCdialog.out #Activate the lxdialog menu
855 read selection <MCdialog.out
859 defaults="$selection
\12$defaults" #pseudo stack
861 0) eval $selection ;;
862 3) eval $selection y ;;
863 4) eval $selection n ;;
864 5) eval $selection m ;;
865 6) eval $selection c ;;
867 default="${defaults%%
\12*}" defaults="${defaults#*
\12}"
870 default="${selection%%\ *}"
873 *"-->"*|*"alt_config"*)
876 eval help $selection ;;
887 There seems to be a problem with the lxdialog companion utility which is
888 built prior to running Menuconfig. Usually this is an indicator that you
889 have upgraded/downgraded your ncurses libraries and did not remove the
890 old ncurses header file(s) in /usr/include or /usr/include/ncurses.
892 It is VERY important that you have only one set of ncurses header files
893 and that those files are properly version matched to the ncurses libraries
894 installed on your machine.
896 You may also need to rebuild lxdialog. This can be done by moving to
897 the /usr/src/linux/scripts/lxdialog directory and issuing the
898 "make clean all" command.
900 If you have verified that your ncurses install is correct, you may email
901 the maintainer <asmax@videolan.org>.
912 # Create a menu item to load an alternate configuration file.
915 echo -n "get_alt_config 'Load an Alternate Configuration File' "\
920 # Get alternate config file name and load the
921 # configuration from it.
924 set -f ## Switch file expansion OFF
928 ALT_CONFIG="${ALT_CONFIG:-$DEFAULTS}"
930 $DIALOG --backtitle "$backtitle" \
932 Enter the name of the configuration file you wish to load. \
933 Accept the name shown to restore the configuration you \
934 last retrieved. Leave blank to abort."\
935 11 55 "$ALT_CONFIG" 2>MCdialog.out
939 ALT_CONFIG=`cat MCdialog.out`
941 [ "_" = "_$ALT_CONFIG" ] && break
943 if eval [ -r \"$ALT_CONFIG\" ]
945 eval load_config_file \"$ALT_CONFIG\"
949 $DIALOG --backtitle "$backtitle" \
950 --infobox "File does not exist!" 3 38
956 For various reasons, one may wish to keep several different vlc
957 configurations available on a single machine.
959 If you have saved a previous configuration in a file other than the
960 vlc's default, entering the name of the file here will allow you
961 to modify that configuration.
963 If you are uncertain, then you have probably never used alternate
964 configuration files. You should therefor leave this blank to abort.
967 $DIALOG --backtitle "$backtitle"\
968 --title "Load Alternate Configuration"\
969 --textbox help.out $ROWS $COLS
973 set +f ## Switch file expansion ON
974 rm -f help.out MCdialog.out
978 # Create a menu item to store an alternate config file.
981 echo -n "save_alt_config 'Save Configuration to an Alternate File' "\
986 # Get an alternate config file name and save the current
987 # configuration to it.
990 set -f ## Switch file expansion OFF
994 $DIALOG --backtitle "$backtitle" \
996 Enter a filename to which this configuration should be saved \
997 as an alternate. Leave blank to abort."\
998 10 55 "$ALT_CONFIG" 2>MCdialog.out
1002 ALT_CONFIG=`cat MCdialog.out`
1004 [ "_" = "_$ALT_CONFIG" ] && break
1006 if eval touch $ALT_CONFIG 2>/dev/null
1008 eval save_configuration $ALT_CONFIG
1009 load_functions ## RELOAD
1013 $DIALOG --backtitle "$backtitle" \
1014 --infobox "Can't create file! Probably a nonexistent directory." 3 60
1020 For various reasons, one may wish to keep different vlc
1021 configurations available on a single machine.
1023 Entering a file name here will allow you to later retrieve, modify
1024 and use the current configuration as an alternate to whatever
1025 configuration options you have selected at that time.
1027 If you are uncertain what all this means then you should probably
1030 $DIALOG --backtitle "$backtitle"\
1031 --title "Save Alternate Configuration"\
1032 --textbox help.out $ROWS $COLS
1036 set +f ## Switch file expansion ON
1037 rm -f help.out MCdialog.out
1041 # Load config options from a file.
1042 # Converts all "# OPTION is not set" lines to "OPTION=n" lines
1044 function load_config_file () {
1046 /# .* is not set.*/ { printf("%s=n\n", $2) }
1047 ! /# .* is not set.*/ { print }
1055 # Just what it says.
1057 save_configuration () {
1059 echo -n "Saving your vlc configuration."
1062 # Now, let's redefine the configuration functions for final
1063 # output to the config files.
1065 # Nested function definitions, YIPEE!
1069 eval define_bool \"$2\" \"$x\"
1072 function tristate () {
1074 eval define_tristate \"$2\" \"$x\"
1077 function dep_tristate () {
1081 while [ $# -gt 0 ]; do
1082 if [ "$1" = y ]; then
1084 elif [ "$1" = m -a "$x" != n ]; then
1090 define_tristate "$var" "$x"
1093 function dep_bool () {
1097 while [ $# -gt 0 ]; do
1098 if [ "$1" = y ]; then
1104 define_bool "$var" "$x"
1107 function dep_mbool () {
1111 while [ $# -gt 0 ]; do
1112 if [ "$1" = y -o "$1" = m ]; then
1118 define_bool "$var" "$x"
1122 set_x_info "$2" "$3"
1123 echo "$2=$x" >>$CONFIG
1127 set_x_info "$2" "$3"
1128 echo "$2=$x" >>$CONFIG
1131 function string () {
1132 set_x_info "$2" "$3"
1133 echo "$2=\"$x\"" >>$CONFIG
1136 function define_hex () {
1138 echo "$1=$2" >>$CONFIG
1141 function define_int () {
1143 echo "$1=$2" >>$CONFIG
1146 function define_string () {
1148 echo "$1=\"$2\"" >>$CONFIG
1151 function define_bool () {
1152 define_tristate "$1" "$2"
1155 function define_tristate () {
1160 echo "$1=y" >>$CONFIG
1164 if [ "$CONFIG_MODULES" = "y" ]
1166 echo "$1=m" >>$CONFIG
1168 echo "$1=y" >>$CONFIG
1173 echo "# $1 is not set" >>$CONFIG
1178 function choice () {
1180 # Find the first choice that's already set to 'y'
1190 if eval [ \"_\$$2\" = \"_y\" ]
1199 # Use the default if none were set.
1201 : ${current:=$default}
1204 # Output all choices (to be compatible with other configs).
1210 "$current"*) if [ -z "$chosen" ]; then
1211 define_bool "$2" "y"
1214 define_bool "$2" "n"
1216 *) define_bool "$2" "n" ;;
1222 function mainmenu_name () {
1226 function mainmenu_option () {
1227 comment_is_option=TRUE
1230 function endmenu () {
1234 function comment () {
1235 if [ "$comment_is_option" ]
1240 echo "# $1" >>$CONFIG
1247 DEF_CONFIG="${1:-.config}"
1252 echo "# Automatically generated by make menuconfig: don't edit" >>$CONFIG
1256 if . $CONFIG_IN >>.menuconfig.log 2>&1
1258 if [ -f "$DEF_CONFIG" ]
1260 rm -f ${DEF_CONFIG}.old
1261 mv $DEF_CONFIG ${DEF_CONFIG}.old
1264 mv $CONFIG $DEF_CONFIG
1273 # Remove temporary files
1281 rm -f MCmenu* MCradiolists MCdialog.out help.out
1289 # Some distributions export these with incorrect values
1290 # which can really screw up some ncurses programs.
1293 ROWS=${1:-24} COLS=${2:-80}
1295 # Just in case the nasty rlogin bug returns.
1297 [ $ROWS = 0 ] && ROWS=24
1298 [ $COLS = 0 ] && COLS=80
1300 if [ $ROWS -lt 19 -o $COLS -lt 80 ]
1302 echo -e "\n\007Your display is too small to run Menuconfig!"
1303 echo "It must be at least 19 lines by 80 columns."
1307 ROWS=$((ROWS-4)) COLS=$((COLS-5))
1311 set_geometry `stty size 2>/dev/null`
1313 menu_instructions="\
1314 Arrow keys navigate the menu. \
1315 <Enter> selects submenus --->. \
1316 Highlighted letters are hotkeys. \
1317 Pressing <Y> includes, <N> excludes, <M> modularizes features. \
1318 Press <Esc><Esc> to exit, <?> for Help. \
1319 Legend: [*] built-in [ ] excluded <M> module < > module capable"
1321 radiolist_instructions="\
1322 Use the arrow keys to navigate this window or \
1323 press the hotkey of the item you wish to select \
1324 followed by the <SPACE BAR>.
1325 Press <?> for additional information about this option."
1327 inputbox_instructions_int="\
1328 Please enter a decimal value. \
1329 Fractions will not be accepted. \
1330 Use the <TAB> key to move from the input field to the buttons below it."
1332 inputbox_instructions_hex="\
1333 Please enter a hexadecimal value. \
1334 Use the <TAB> key to move from the input field to the buttons below it."
1336 inputbox_instructions_string="\
1337 Please enter a string value. \
1338 Use the <TAB> key to move from the input field to the buttons below it."
1340 DIALOG="./lxdialog/lxdialog"
1342 backtitle="VLC media player configuration"
1344 trap "cleanup ; exit 1" 1 2 15
1348 # Locate default files.
1350 CONFIG_IN=./config.in
1351 if [ "$1" != "" ] ; then
1356 if [ -f .config ]; then
1362 echo "Using defaults found in" $DEFAULTS
1363 load_config_file $DEFAULTS
1365 echo "No defaults found"
1372 # Load the functions used by the config.in files.
1373 echo -n "Preparing scripts: functions"
1376 if [ ! -e $CONFIG_IN ]
1378 echo "Your main config.in file ($CONFIG_IN) does not exist"
1384 echo "Building lxdialog"
1391 echo "Your lxdialog utility does not exist"
1397 # Read config.in files and parse them into one shell function per menu.
1400 parse_config_files $CONFIG_IN
1404 # Start the ball rolling from the top.
1406 activate_menu MCmenu0
1416 if $DIALOG --backtitle "$backtitle" \
1417 --yesno "Do you wish to save your new vlc configuration?" 5 60
1421 echo "*** End of VideoLAN client configuration. ***"
1422 echo "Run ./build-vlc to launch the build process"
1427 echo Your vlc configuration changes were NOT saved.
1431 # Remove log if empty.
1432 if [ ! -s .menuconfig.log ] ; then
1433 rm -f .menuconfig.log