Commit graph

37 commits

Author SHA1 Message Date
Devin Teske
437455deb8 f_substr(): Optimized recipe if running under bash
This makes runnig f_substr() faster than it was when running under bash,
but both sh and dash are still faster when using the non-bash recipe which
features dynamically unrolled loops.
2016-02-03 04:02:50 +00:00
Devin Teske
9e81c4fb73 f_substr: Write to stdout when no `-v var_to_set'
Fixes ``setvar: : bad variable name''
2016-02-03 03:03:04 +00:00
Devin Teske
679f1eab00 Remove trailing whitespace 2016-02-03 02:46:00 +00:00
Devin Teske
7883f9204b Define f_sprintf() dynamically at inclusion time
No need to check/re-check capabilities that won't change at runtime.
2016-02-03 00:51:38 +00:00
Devin Teske
0f9fec9d30 Move awk(1)-dependent recipes to the bottom 2016-01-31 21:34:25 +00:00
Devin Teske
92db38426f Move f_isinteger() to the top
Grouping builtins-only algos together
2016-01-31 21:33:24 +00:00
Devin Teske
e4f08d49c1 Move f_vsprintf() below f_sprintf()
Variable argument versions grouped with standard versions
2016-01-31 21:31:24 +00:00
Devin Teske
3c8cd13bf1 Move f_sprintf() above f_snprintf()
Ordering functions by appearance of use
2016-01-31 21:30:02 +00:00
Devin Teske
0cb8bea7ed Optimize f_substr() to use built-ins only
Change f_snprintf() to use optimzed f_substr()
2016-01-31 21:28:41 +00:00
Devin Teske
fcb16c1036 Optimize f_sprintf() for bash
bash lacks the ksh93 optimization that makes sub-shells fast if they do
not alter io. bash 3.1-alpha1 introduced printf -v var_to_set which is not
as fast but is still significantly faster than var_to_set=$( printf ) when
using any version of bash. If we find our interpreter to somehow be bash
by invocation or inclusion, use the feature that provides fastest results.
2016-01-31 21:22:10 +00:00
Devin Teske
0f913ed5f9 Replace awk with more efficient builtins-only algo 2016-01-27 02:11:58 +00:00
Devin Teske
33291485ae Fix a typo in a comment
MFC after:	3 days
X-MFC-to:	stable/10
2016-01-24 17:15:42 +00:00
Devin Teske
2fb115122e Point hat! Fix a broken f_isinteger(). 2014-03-14 03:00:02 +00:00
Devin Teske
33db33a752 Comment -- to go with NL global introduced (but not mentioned) by r262901 2014-03-07 20:32:26 +00:00
Devin Teske
05a0a04aee s/__number/__num/ for code clarify but more to prevent localization of
__number if passed as the var_to_set argument.
2014-03-07 20:29:19 +00:00
Devin Teske
3405870c3d Dummy commit (s/__num/__number/) in f_expand_number() to describe that the
previous commit here (SVN r260894) was [in-part] from Submitted-by:
Christoph Mallon <christoph.mallon@gmx.de>

MFC after: 3 days
2014-01-20 03:31:16 +00:00
Devin Teske
ae978c3682 Optimize f_expand_number(), improving performance.
MFC After:	3 days
2014-01-19 21:02:24 +00:00
Devin Teske
d4ae33f072 Performance and debugging enhancements:
+ Remove UNAME_P=$(...) from startup/misc -- already supplied by common.subr
+ Use f_getvar instead of $(eval echo \$$var) -- f_getvar is sub-shell free
+ Add `-e' and `-k var' options to f_eval_catch -- increasing use-cases
+ Use f_eval_catch to display errors on failure -- reducing duplicated code
+ Use f_eval_catch when we need output from a command -- improving debugging
+ Optimize f_isinter of strings.subr for performance -- now sub-shell free
+ Improve error checking on pidfiles -- using f_eval_catch and f_isinteger
+ Use $var_to_set arg of f_ifconfig_{inet,netmask} -- eliminate sub-shells
+ Use f_sprintf instead of $(printf ...) -- consolidate sub-shells
+ Use $var_to_set arg of f_route_get_default -- eliminate sub-shells
+ Add f_count to replace $(set -- ...;echo $#) -- eliminate sub-shells
+ Add f_count_ifs to replace $(IFS=x;set -- ...;echo $#) -- no sub-shells
+ Replace var="$var${var:+ }..." in loops with var="$var ..." with a follow-
  up var="${var# }" to trim leading whitespace -- optimize loops
+ Use $var_to_set arg of f_resolv_conf_nameservers -- eliminate sub-shells
+ Comments for the f_eval_catch function
+ Remove a duplicate `local ... desc ...' in f_device_get_all of device.subr
+ Use $var_to_set arg of f_device_capacity -- eliminate sub-shells
+ Whitespace fixes in f_dialog_init of dialog.subr
+ Optimize f_inet_atoi of media/tcpip.subr for performance -- sub-shell free
+ In several cases, send stderr to /dev/null -- clean up runtime execution
+ Change f_err of common.subr to go to program stderr not terminal stderr,
  allowing redirection of output from functions that use f_err
+ Disable debugging when using f_getvar to get variable argument to
  f_startup_rcconf_map_expand of startup/rcconf.subr
+ Use f_replace_all instead of $(echo ... | tr | sed) -- performance
+ Add a $var_to_set option to f_index_{file,menusel_{command,keyword}} of
  common.subr -- centralize sub-shells
2013-12-07 00:31:01 +00:00
Devin Teske
0efb8b7a98 Add f_sprintf() and f_vsprintf() to go along with previously added
f_snprintf() and f_vsnprintf() (size-constraint) functions.
2013-11-07 10:47:12 +00:00
Devin Teske
62c7db8a8a Fix a bug where a format with leading `-' could be mistaken for printf
getopts argument(s).
2013-11-07 10:45:25 +00:00
Devin Teske
f1d6beba07 Comments. 2013-11-07 10:44:24 +00:00
Devin Teske
9acbeddc57 Fix signed integer overflow detection in f_expand_number() of strings.subr.
Approved by:	re (glebius)
2013-10-12 19:52:27 +00:00
Devin Teske
a96ea66f3d Add new f_expand_number() (shadowing expand_number(3)).
Approved by:	re (glebius)
2013-10-11 20:12:30 +00:00
Devin Teske
fcaed0c1a5 Fix a minor bug; if strings.subr was included by itself it may not have
access to f_dprintf from common.subr -- fix this by including common.subr.

Approved by:	re (glebius)
2013-10-11 17:54:22 +00:00
Devin Teske
8e37a7c8b9 Fix typos in the BSD License. 2013-07-07 18:51:44 +00:00
Devin Teske
f8ea072a54 Be consistent with other usr.sbin programs w/respect to the copyright
wording ("All rights reserved."); I had the casing wrong on many instances.
2013-07-07 18:21:30 +00:00
Devin Teske
dd5cc066af Like r250701, introduce another handy function for truncating variables to a
specific byte-length. Works like vsnprintf(3).
2013-06-02 23:25:27 +00:00
Devin Teske
10908a6f19 Fix a copy/paste error within a comment. 2013-06-02 23:08:21 +00:00
Devin Teske
f82ca17bbe Fix a typo in a comment. 2013-05-16 16:51:52 +00:00
Devin Teske
60d8a2b517 Add a handy function for truncating variables to a specific byte-length. It
should be noted that newlines are both preserved and included in said byte-
count. If you want to truncate single-line values without regard to line
termination, there's always f_substr() which already exists herein.
2013-05-16 16:46:02 +00:00
Devin Teske
d3a0f91816 UI improvements. First, implement --default-item whenever and wherever
possible to save keystrokes. Second, overhaul startup/rcdelete for much
improved performance. Last, but not least, kill-off useage of --clear
and implement --keep-tite in harmony to minimize jarring transitions.
Also, fix local variable names where necessary while we're here with
other minor comment-enhancements/typo-corrections.
2013-04-22 05:52:06 +00:00
Devin Teske
7323adac99 Import media selection/preparation framework (sysinstall inspired). Makes
accessing files from various types of media nice and abstracted away from
the wet-work involved in preparing, validating, and initializing those
types of media. This will be used for the package management system module
and other modules that need access to files and want to allow the user to
decide where those files come from (either in a scripted fashion, prompted
fashion, or any combination thereof).

Heavily inspired by sysinstall and even uses the same reserved words so
that scripts are portable. Coded over months, tested continuously through-
out, and reviewed several times.

Some notes about the changes:
- Move network-setting acquisition/validation routines to media/tcpip.subr
- The options screen from sysinstall has been converted to a dialog menu
- The "UFS" media choice is renamed to "Directory" to reflect how sysinstall
  treats the choice and a new [true] "UFS" media choice has been added that
  acts on real UFS partitions (such as external disks with disklabels).
- Many more help files have been resurrected from sysinstall (I noticed that
  some of the content seems a bit dated; I gave them a once-over but they
  could really use an update).
- A total of 10 media choices are presented (via mediaGetType) including:
  CD/DVD, FTP, FTP Passive, HTTP Proxy, Directory, NFS, DOS, UFS, Floppy, USB
- Novel struct/device management layer for managing the issue of passing
  more information than can comfortably fit in an argument list.
2013-02-25 19:55:32 +00:00
Devin Teske
56961fd794 Add more debugging to help with diagnosis of program-flow when needed. 2012-12-25 10:47:45 +00:00
Devin Teske
7fba6f489e Fix a bug where blank lines were not being counted (because awk's split()
function returns zero when $0 is the NULL string).

Reviewed by:	adrian (co-mentor)
Approved by:	adrian (co-mentor)
2012-10-18 17:09:45 +00:00
Devin Teske
fb7d723e6b Reverse SVN r240770 -- jilles@ made a suggestion that allowed us to redesign
our embedded rescue environment to support /dev/null making r240770 obsolete.

Reviewed by:	jilles, adrian (co-mentor)
Approved by:	jilles, adrian (co-mentor)
2012-09-21 19:03:25 +00:00
Devin Teske
104a7f3e1d Replace redirections to /dev/null with "close file-descriptor" syntax (>&-).
Reviewed by:	adrian (co-mentor)
Approved by:	adrian (co-mentor)
2012-09-21 01:36:20 +00:00
Devin Teske
ab2043b81e Move major includes into /usr/share/bsdconfig for easy external access.
Reviewed by:	adrian (co-mentor)
Approved by:	adrian (co-mentor)
2012-09-18 22:28:42 +00:00
Renamed from usr.sbin/bsdconfig/include/strings.subr (Browse further)