Deleted Added
full compact
rcadd (249746) rcadd (249751)
1#!/bin/sh
2#-
3# Copyright (c) 2012-2013 Devin Teske
4# All Rights Reserved.
5#
6# Redistribution and use in source and binary forms, with or without
7# modification, are permitted provided that the following conditions
8# are met:
9# 1. Redistributions of source code must retain the above copyright
10# notice, this list of conditions and the following disclaimer.
11# 2. Redistributions in binary form must reproduce the above copyright
12# notice, this list of conditions and the following disclaimer in the
13# documentation and/or other materials provided with the distribution.
14#
15# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
16# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING BUT NOT LIMITED TO, THE
17# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20# DAMAGES (INLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25# SUCH DAMAGE.
26#
1#!/bin/sh
2#-
3# Copyright (c) 2012-2013 Devin Teske
4# All Rights Reserved.
5#
6# Redistribution and use in source and binary forms, with or without
7# modification, are permitted provided that the following conditions
8# are met:
9# 1. Redistributions of source code must retain the above copyright
10# notice, this list of conditions and the following disclaimer.
11# 2. Redistributions in binary form must reproduce the above copyright
12# notice, this list of conditions and the following disclaimer in the
13# documentation and/or other materials provided with the distribution.
14#
15# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
16# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING BUT NOT LIMITED TO, THE
17# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20# DAMAGES (INLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25# SUCH DAMAGE.
26#
27# $FreeBSD: head/usr.sbin/bsdconfig/startup/rcadd 249746 2013-04-22 05:02:34Z dteske $
27# $FreeBSD: head/usr.sbin/bsdconfig/startup/rcadd 249751 2013-04-22 05:52:06Z dteske $
28#
29############################################################ INCLUDES
30
31BSDCFG_SHARE="/usr/share/bsdconfig"
32. $BSDCFG_SHARE/common.subr || exit 1
33f_dprintf "%s: loading includes..." "$0"
34f_include $BSDCFG_SHARE/dialog.subr
35f_include $BSDCFG_SHARE/mustberoot.subr
36f_include $BSDCFG_SHARE/startup/rcconf.subr
37
38BSDCFG_LIBE="/usr/libexec/bsdconfig" APP_DIR="140.startup"
39f_include_lang $BSDCFG_LIBE/$APP_DIR/include/messages.subr
40
41ipgm=$( f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" )
42[ $? -eq $SUCCESS -a "$ipgm" ] && pgm="$ipgm"
43
44############################################################ GLOBALS
45
46#
47# Options
48#
49# Inherit SHOW_DESC value if set, otherwise default to 1
50[ "${SHOW_DESC+set}" ] || SHOW_DESC=1
51
52############################################################ FUNCTIONS
53
54# dialog_menu_main
55#
56# Display the dialog(1)-based application main menu.
57#
58dialog_menu_main()
59{
60 local menu_list size
61 local hline="$hline_arrows_tab_enter"
62 local prompt=""
63
64 menu_list="
65 '1' '$msg_add_from_list'
66 '2' '$msg_add_custom'
67 " # END-QUOTE
68
69 size=$( eval f_dialog_menu_size \
70 \"\$DIALOG_TITLE\" \
71 \"\$DIALOG_BACKTITLE\" \
72 \"\$prompt\" \
73 \"\$hline\" \
74 $menu_list )
75
76 local dialog_menu
77 dialog_menu=$( eval $DIALOG \
28#
29############################################################ INCLUDES
30
31BSDCFG_SHARE="/usr/share/bsdconfig"
32. $BSDCFG_SHARE/common.subr || exit 1
33f_dprintf "%s: loading includes..." "$0"
34f_include $BSDCFG_SHARE/dialog.subr
35f_include $BSDCFG_SHARE/mustberoot.subr
36f_include $BSDCFG_SHARE/startup/rcconf.subr
37
38BSDCFG_LIBE="/usr/libexec/bsdconfig" APP_DIR="140.startup"
39f_include_lang $BSDCFG_LIBE/$APP_DIR/include/messages.subr
40
41ipgm=$( f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" )
42[ $? -eq $SUCCESS -a "$ipgm" ] && pgm="$ipgm"
43
44############################################################ GLOBALS
45
46#
47# Options
48#
49# Inherit SHOW_DESC value if set, otherwise default to 1
50[ "${SHOW_DESC+set}" ] || SHOW_DESC=1
51
52############################################################ FUNCTIONS
53
54# dialog_menu_main
55#
56# Display the dialog(1)-based application main menu.
57#
58dialog_menu_main()
59{
60 local menu_list size
61 local hline="$hline_arrows_tab_enter"
62 local prompt=""
63
64 menu_list="
65 '1' '$msg_add_from_list'
66 '2' '$msg_add_custom'
67 " # END-QUOTE
68
69 size=$( eval f_dialog_menu_size \
70 \"\$DIALOG_TITLE\" \
71 \"\$DIALOG_BACKTITLE\" \
72 \"\$prompt\" \
73 \"\$hline\" \
74 $menu_list )
75
76 local dialog_menu
77 dialog_menu=$( eval $DIALOG \
78 --clear --title \"\$DIALOG_TITLE\" \
78 --title \"\$DIALOG_TITLE\" \
79 --backtitle \"\$DIALOG_BACKTITLE\" \
80 --hline \"\$hline\" \
81 --ok-label \"\$msg_ok\" \
82 --cancel-label \"\$msg_cancel\" \
83 --menu \"\$prompt\" $size \
84 $menu_list \
85 2>&1 >&$DIALOG_TERMINAL_PASSTHRU_FD
86 )
87 local retval=$?
88 setvar DIALOG_MENU_$$ "$dialog_menu"
89 return $retval
90}
91
92############################################################ MAIN
93
94# Incorporate rc-file if it exists
95[ -f "$HOME/.bsdconfigrc" ] && f_include "$HOME/.bsdconfigrc"
96
97#
98# Process command-line arguments
99#
100while getopts dD:hSX flag; do
101 case "$flag" in
102 h|\?) f_usage $BSDCFG_LIBE/$APP_DIR/USAGE "PROGRAM_NAME" "$pgm";;
103 esac
104done
105shift $(( $OPTIND - 1 ))
106
107#
108# Initialize
109#
110f_dialog_title "$msg_add_startup_directive"
111f_dialog_backtitle "${ipgm:+bsdconfig }$pgm"
112f_mustberoot_init
113
114#
115# Launch application main menu
116#
117while :; do
118 dialog_menu_main
119 retval=$?
120 mtag=$( f_dialog_menutag )
121
122 [ $retval -eq 0 ] || f_die
123
124 case "$mtag" in
125 1) # Add From List
126 # Loop for easy return
127 while :; do
128 f_dialog_input_rclist
129 retval=$?
130 mtag=$( f_dialog_menutag )
131
132 [ $retval -eq 0 ] || break
133
134 case "$mtag" in
135 "X $msg_exit" ) break ;;
136 *) # Anything else is a directive
137 rcvar="${mtag# }"
138 $BSDCFG_LIBE/$APP_DIR/rcedit \
139 ${USE_XDIALOG:+-X} \
140 "$rcvar" || continue
141 esac
142 break
143 done
144 [ $retval -eq 0 ] || continue
145 ;;
146 2) # Add Custom
147 f_dialog_input_rcvar || continue
148 $BSDCFG_LIBE/$APP_DIR/rcedit ${USE_XDIALOG:+-X} "$rcvar" ||
149 continue
150 ;;
151 esac
152done
153
154exit $SUCCESS
155
156################################################################################
157# END
158################################################################################
79 --backtitle \"\$DIALOG_BACKTITLE\" \
80 --hline \"\$hline\" \
81 --ok-label \"\$msg_ok\" \
82 --cancel-label \"\$msg_cancel\" \
83 --menu \"\$prompt\" $size \
84 $menu_list \
85 2>&1 >&$DIALOG_TERMINAL_PASSTHRU_FD
86 )
87 local retval=$?
88 setvar DIALOG_MENU_$$ "$dialog_menu"
89 return $retval
90}
91
92############################################################ MAIN
93
94# Incorporate rc-file if it exists
95[ -f "$HOME/.bsdconfigrc" ] && f_include "$HOME/.bsdconfigrc"
96
97#
98# Process command-line arguments
99#
100while getopts dD:hSX flag; do
101 case "$flag" in
102 h|\?) f_usage $BSDCFG_LIBE/$APP_DIR/USAGE "PROGRAM_NAME" "$pgm";;
103 esac
104done
105shift $(( $OPTIND - 1 ))
106
107#
108# Initialize
109#
110f_dialog_title "$msg_add_startup_directive"
111f_dialog_backtitle "${ipgm:+bsdconfig }$pgm"
112f_mustberoot_init
113
114#
115# Launch application main menu
116#
117while :; do
118 dialog_menu_main
119 retval=$?
120 mtag=$( f_dialog_menutag )
121
122 [ $retval -eq 0 ] || f_die
123
124 case "$mtag" in
125 1) # Add From List
126 # Loop for easy return
127 while :; do
128 f_dialog_input_rclist
129 retval=$?
130 mtag=$( f_dialog_menutag )
131
132 [ $retval -eq 0 ] || break
133
134 case "$mtag" in
135 "X $msg_exit" ) break ;;
136 *) # Anything else is a directive
137 rcvar="${mtag# }"
138 $BSDCFG_LIBE/$APP_DIR/rcedit \
139 ${USE_XDIALOG:+-X} \
140 "$rcvar" || continue
141 esac
142 break
143 done
144 [ $retval -eq 0 ] || continue
145 ;;
146 2) # Add Custom
147 f_dialog_input_rcvar || continue
148 $BSDCFG_LIBE/$APP_DIR/rcedit ${USE_XDIALOG:+-X} "$rcvar" ||
149 continue
150 ;;
151 esac
152done
153
154exit $SUCCESS
155
156################################################################################
157# END
158################################################################################