[Bug 214933] [patch] bsdinstall: add support for "hidden" Wi-Fi networks
bugzilla-noreply at freebsd.org
bugzilla-noreply at freebsd.org
Fri Dec 2 21:48:12 UTC 2016
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=214933
--- Comment #5 from Devin Teske <dteske at FreeBSD.org> ---
In more than one place, please replace the following construct:
case $? in
0)
# many lines
;;
*)
exit 1
esac
with the following, reducing the indentation of the primary block:
[ $? -eq 0 ] || exit 1
# many lines
The scripts/wlanconfig module includes "dialog.subr" which provides both
f_dialog_noyes() and f_dialog_yesno() (depending on which you want to be the
default choice). See "bsdconfig api dialog" for more information. Please
change:
dialog --backtitle "FreeBSD Installer" --title "Network Selection"
--yesno "Do you want to select the network manually?" 0 0
Into the following:
f_dialog_yesno "Do you want to select the network manually?"
And there's no need to test $? exclusively, so instead of this:
dialog ...
[ $? -eq 0 ] || exit 1
You can instead simply say:
f_dialog_yesno ... || exit 1
However, "exit" by default retains the status of the last command when not
given a number, so in reality you can say this:
f_dialog_yesno ... || exit
And since the "||" is an "r-value seeking" operand, you can put the exit on a
line of its own if you like for style:
f_dialog_yesno "Do you want to select the network manually?" ||
exit
# many lines
That's the desired setup. The way you have it, everytime you call dialog, the
following code is indented further and further, whereas I would like to see:
f_dialog_yesno ... || exit
# ...
f_dialog_input ... || exit
# ...
f_dialog_input ... || exit
Which brings us to the API for input dialog boxen. Use f_dialog_input() instead
of "var=$( dialog ... --inputbox ... )". So instead of:
NETWORK=`dialog --backtitle "FreeBSD Installer" --title "Network
Selection" --inputbox "Enter SSID" 0 0 2>&1 1>&3`
First of all, we don't use `...` but instead $(...) as the former is not
nest-able. But instead of the above, we would use f_dialog_input() in the
following way (see: bsdconfig api -dF 'f_dialog_input$'):
f_dialog_title "Network Selection"
f_dialog_input NETWORK "Enter SSID" || exit
f_dialog_title_restore
Which introduces how to set the title if/when necessary. Feel free to use it
where most appropriate (e.g., before the f_dialog_yesno()).
NOTE: It's important to utilize f_dialog_title()/f_dialog_title_restore()
because some systems have backtitle and title reversed (and the API takes this
into consideration with respect to which back-end system is in-use). The
restore is not strictly necessary and is optional since scripts/wlanconfig runs
in a discrete namespace, unshared with anything else (hence your ability to use
"exit" without messing up the flow of bsdinstall).
However, all those issues aside, you completely neglected thew new wlan API.
See the following commands for required information:
% bsdconfig api media/wlan # brief oversight of functions
% bsdconfig api -da media/wlan | less -R # more verbose info
You should add a line toward the top scripts/wlanconfig:
f_include $BSDCFG_SHARE/media/wlan.subr
See also: /usr/libexec/bsdconfig/120.networking/wlanconfig
The bsdconfig wireless networking is much more advanced than, and is available
to, bsdinstall's. Both have a "wlanconfig" module (e.g., see "bsdconfig wifi"
or "bsdconfig wlan" or "bsdconfig wireless" -- all aliases to wlanconfig), but
bsdconfig's is WAY more advanced than bsdinstall's.
It's worth taking a look at bsdconfig's wlanconfig for inspiration, but more
importantly, you can actually *use* the code there in the installer. Go ahead
and steal code from bsdconfig to make bsdinstall better. I welcome that
immensely ;D
--
You are receiving this mail because:
You are the assignee for the bug.
More information about the freebsd-sysinstall
mailing list