Denis Vlasenko [Mon, 29 Dec 2008 01:03:17 +0000 (01:03 -0000)]
sysctl: fix gcc warning (false positive)
Denis Vlasenko [Fri, 26 Dec 2008 14:56:03 +0000 (14:56 -0000)]
unexpand: fix incorrect expansion, add test for it
function old new delta
expand_main 676 656 -20
Denis Vlasenko [Thu, 25 Dec 2008 01:01:23 +0000 (01:01 -0000)]
s/an user/a user/
Denis Vlasenko [Wed, 24 Dec 2008 03:11:43 +0000 (03:11 -0000)]
*: tweak error messages
sysctl: shrink; support recursing if name is a directory:
"sysctl net.ipv4.conf". Patch by xmaks AT email.cz
text data bss dec hex filename
793659 504 7492 801655 c3b77 busybox_old
793576 504 7492 801572 c3b24 busybox_unstripped
Denis Vlasenko [Tue, 23 Dec 2008 23:36:47 +0000 (23:36 -0000)]
libbb: introduce and use xmalloc_ttyname (-32 in bss).
ash: small code shrink
text data bss dec hex filename
793669 504 7524 801697 c3ba1 busybox_old
793659 504 7492 801655 c3b77 busybox_unstripped
Bernhard Reutner-Fischer [Mon, 22 Dec 2008 17:09:12 +0000 (17:09 -0000)]
- we already have an impl for man
Bernhard Reutner-Fischer [Thu, 18 Dec 2008 00:44:58 +0000 (00:44 -0000)]
Add fancy svn browser thingy (via Lance Albertson of OSL)
Bernhard Reutner-Fischer [Thu, 18 Dec 2008 00:43:31 +0000 (00:43 -0000)]
Update links to new site locations (via Lance Albertson at OSL)
Denis Vlasenko [Mon, 15 Dec 2008 11:26:36 +0000 (11:26 -0000)]
ash: fix CONFIG_ASH_OPTIMIZE_FOR_SIZE off + high-bit chars case
(do we even need CONFIG_ASH_OPTIMIZE_FOR_SIZE conditional?)
Denis Vlasenko [Sun, 14 Dec 2008 15:45:25 +0000 (15:45 -0000)]
expand: fix incorrect expansion exactly on tab boundary; shrink the code
function old new delta
expand_main 698 676 -22
xputchar 53 - -53
Denis Vlasenko [Sun, 14 Dec 2008 14:49:06 +0000 (14:49 -0000)]
watchdog: build fixes, no code changes
Denis Vlasenko [Fri, 12 Dec 2008 02:14:35 +0000 (02:14 -0000)]
header_verbose_list: show off_t size, not cast to (unsigned)
get_header_tar: support GNU tar's "base256" encoding
function old new delta
get_header_tar 1536 1600 +64
header_verbose_list 242 257 +15
Denis Vlasenko [Wed, 10 Dec 2008 14:14:09 +0000 (14:14 -0000)]
libiproute: fix buggy open check: s/if (fd)/if (fd >= 0)/
less: small optimization -15 bytes
Denis Vlasenko [Wed, 10 Dec 2008 11:51:45 +0000 (11:51 -0000)]
ash: printf builtin with no arguments should not exit
Denis Vlasenko [Wed, 10 Dec 2008 11:39:18 +0000 (11:39 -0000)]
mount: make it more readable
Denis Vlasenko [Wed, 10 Dec 2008 11:28:30 +0000 (11:28 -0000)]
placate Rob's qualms about mount.c
Denis Vlasenko [Wed, 10 Dec 2008 11:24:33 +0000 (11:24 -0000)]
add a note that SO_BINDTODEVICE needs padded iface name on 2.6.26
Denis Vlasenko [Wed, 10 Dec 2008 11:16:47 +0000 (11:16 -0000)]
bb_info_msg: make it do atomic, unbuffered writes
udhcpc: fix a problem where we don't open listening socket fast enough
function old new delta
bb_info_msg 70 126 +56
change_listen_mode 37 78 +41
udhcp_listen_socket 151 124 -27
udhcpc_main 2344 2285 -59
Denis Vlasenko [Wed, 10 Dec 2008 11:12:16 +0000 (11:12 -0000)]
*: fix SO_BINDTODEVICE. Kernel wants at least IFNAMSIZ bytes there.
Denis Vlasenko [Tue, 9 Dec 2008 22:53:31 +0000 (22:53 -0000)]
syslogd: comment out file locking;
make signal handling syncronous (old was racy)
function old new delta
syslogd_main 963 1090 +127
quit_signal 96 - -96
log_locally 743 595 -148
------------------------------------------------------------------------------
(add/remove: 0/1 grow/shrink: 1/1 up/down: 127/-244) Total: -117 bytes
Denis Vlasenko [Tue, 9 Dec 2008 21:23:31 +0000 (21:23 -0000)]
init: do not eat last char in messages;
do not print duplicate "init:" prefix to syslog
Denis Vlasenko [Mon, 8 Dec 2008 22:56:18 +0000 (22:56 -0000)]
optimize 16- and 32-bit moves
function old new delta
udhcpd_main 1239 1257 +18
udhcp_add_simple_option 93 92 -1
buffer_read_le_u32 19 18 -1
unpack_gz_stream_with_info 526 520 -6
dnsd_main 1470 1463 -7
udhcp_run_script 1208 1186 -22
send_ACK 255 229 -26
arping_main 1661 1623 -38
send_offer 470 428 -42
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/8 up/down: 18/-143) Total: -125 bytes
Denis Vlasenko [Sun, 7 Dec 2008 01:16:34 +0000 (01:16 -0000)]
libbb: move crypt_make_salt() to pw_encrypt.c, reuse
bin-to-ascii64 conversion which does not require an array.
function old new delta
to64 29 33 +4
to64_msb_first 63 62 -1
ascii64 65 - -65
Denis Vlasenko [Sun, 7 Dec 2008 00:52:58 +0000 (00:52 -0000)]
Fix forgotten license comments
Denis Vlasenko [Fri, 5 Dec 2008 16:40:36 +0000 (16:40 -0000)]
mount: cosmetics, no code changes (verified with objdump -drsx)
Denis Vlasenko [Fri, 5 Dec 2008 16:23:06 +0000 (16:23 -0000)]
libbb: add xgetgrnam too. ~0 code size change
Denis Vlasenko [Thu, 4 Dec 2008 15:29:35 +0000 (15:29 -0000)]
libbb/crypt: code shrink
function old new delta
to64_msb_first - 63 +63
des_crypt 1509 1338 -171
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 0/1 up/down: 63/-171) Total: -108 bytes
Bernhard Reutner-Fischer [Thu, 4 Dec 2008 14:19:21 +0000 (14:19 -0000)]
- -4b and use proper define; add license note
Denis Vlasenko [Thu, 4 Dec 2008 13:57:59 +0000 (13:57 -0000)]
clarify which version of crond is known to put tasks in separate pgrps
Denis Vlasenko [Thu, 4 Dec 2008 12:15:19 +0000 (12:15 -0000)]
iproute: fix ipXXX utilities trying to parse their applet name
as their 1st parameter.
Denis Vlasenko [Thu, 4 Dec 2008 12:05:26 +0000 (12:05 -0000)]
Fold mkpasswd applet into cryptpw.
mkpasswd is in Debian, OTOH cryptpw was added to busybox earlier.
Trying to make both camps happy by making those two applets just aliases.
They are command-line compatible. We can decide whether we want to drop one
(and which one) later.
function old new delta
cryptpw_main 183 314 +131
static.methods 21 - -21
packed_usage 25707 25648 -59
mkpasswd_main 307 - -307
------------------------------------------------------------------------------
(add/remove: 0/2 grow/shrink: 1/1 up/down: 131/-387) Total: -256 bytes
Denis Vlasenko [Wed, 3 Dec 2008 20:16:11 +0000 (20:16 -0000)]
iptunnel: fix problems with including linux/ip_tunnel.h
on some systems
Denis Vlasenko [Wed, 3 Dec 2008 19:05:55 +0000 (19:05 -0000)]
libbb: introduce and use xgetpwnam. ~ -150 bytes.
Bernhard Reutner-Fischer [Wed, 3 Dec 2008 18:49:44 +0000 (18:49 -0000)]
- remove superfluous comment from previous commit
Bernhard Reutner-Fischer [Wed, 3 Dec 2008 18:48:39 +0000 (18:48 -0000)]
- add new applet mkpasswd(1)
function old new delta
bb_ask - 355 +355
mkpasswd_main - 296 +296
.rodata 121746 121847 +101
packed_usage 24632 24689 +57
static.methods - 21 +21
gmatch 229 248 +19
bb_ask_stdin - 11 +11
applet_names 1949 1958 +9
applet_main 1172 1176 +4
sulogin_main 503 505 +2
applet_nameofs 586 588 +2
sha256_hash 329 327 -2
correct_password 208 206 -2
parse_command 1442 1439 -3
get_cred_or_die 145 141 -4
passwd_main 1054 1044 -10
bb_askpass 348 - -348
------------------------------------------------------------------------------
(add/remove: 4/1 grow/shrink: 7/5 up/down: 877/-369) Total: 508 bytes
Denis Vlasenko [Wed, 3 Dec 2008 11:59:12 +0000 (11:59 -0000)]
ash: remove TODO which seems to actually work now.
no code changes
Denis Vlasenko [Wed, 3 Dec 2008 10:46:12 +0000 (10:46 -0000)]
crond: use bb_setpgrp, not setpgrp
platform.h: make a bit more readable
Denis Vlasenko [Wed, 3 Dec 2008 10:36:26 +0000 (10:36 -0000)]
ash: finally installed it as /bin/sh on my machine.
some breakage noticed, the most dire is mishandled ^C.
fixing it.
function old new delta
blocking_wait_with_raise_on_sig - 40 +40
waitforjob 85 100 +15
setsignal 280 278 -2
evalvar 1376 1374 -2
waitcmd 186 182 -4
dowait 350 316 -34
redirect 1231 1185 -46
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 1/5 up/down: 55/-88) Total: -33 bytes
Denis Vlasenko [Tue, 2 Dec 2008 22:56:59 +0000 (22:56 -0000)]
libbb: password/group function helpers rewritten by Tito:
function old new delta
xgetpwuid - 27 +27
uid2uname_utoa - 22 +22
gid2group_utoa - 22 +22
uid2uname - 18 +18
gid2group - 18 +18
buffer_fill_and_print 179 196 +17
print_user 12 24 +12
print_group 12 24 +12
get_cached 89 99 +10
...
print_common 134 120 -14
vlock_main 415 396 -19
logger_main 410 387 -23
crontab_main 642 609 -33
bb_getpwuid 42 - -42
bb_getgrgid 42 - -42
bb_getug 80 - -80
------------------------------------------------------------------------------
(add/remove: 6/3 grow/shrink: 9/11 up/down: 187/-296) Total: -109 bytes
Denis Vlasenko [Tue, 2 Dec 2008 21:52:24 +0000 (21:52 -0000)]
crond: put tasks in separate process groups
Denis Vlasenko [Tue, 2 Dec 2008 20:38:36 +0000 (20:38 -0000)]
vconfig: style fix, no code changes
Denis Vlasenko [Tue, 2 Dec 2008 18:18:50 +0000 (18:18 -0000)]
libbb: add strncpy_IFNAMSIZ
function old new delta
...
udhcp_read_interface 225 220 -5
brctl_main 1151 1146 -5
add_interface 109 104 -5
ipaddr_list_or_flush 2174 2167 -7
do_add_ioctl 88 80 -8
vconfig_main 249 240 -9
do_del_ioctl 78 68 -10
do_iplink 1186 1173 -13
do_if_fetch 766 753 -13
buffer_fill_and_print 196 179 -17
parse_args 1709 1684 -25
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/20 up/down: 11/-140) Total: -129 bytes
Denis Vlasenko [Mon, 1 Dec 2008 12:38:36 +0000 (12:38 -0000)]
...and exclude LC_ALL too
Denis Vlasenko [Mon, 1 Dec 2008 12:36:41 +0000 (12:36 -0000)]
build system: fix sorting + locale in make objsizes
Denis Vlasenko [Sun, 30 Nov 2008 17:41:31 +0000 (17:41 -0000)]
volume_id/fat: careful with sector#, it may not fit in 32 bits. +91 bytes
volume_id/*: a bit of code shrink
Denis Vlasenko [Sat, 29 Nov 2008 23:14:37 +0000 (23:14 -0000)]
init: O_NONBLOCK needs more thought. reverted for now
Denis Vlasenko [Sat, 29 Nov 2008 12:54:16 +0000 (12:54 -0000)]
mountpoint: add -n option (by Vladimir)
text data bss dec hex filename
799859 560 7748 808167 c54e7 busybox_old
799845 560 7748 808153 c54d9 busybox_unstripped
Denis Vlasenko [Sat, 29 Nov 2008 09:07:24 +0000 (09:07 -0000)]
inotifyd: save resourses by closing unused inotify descriptors
Denis Vlasenko [Sat, 29 Nov 2008 09:05:50 +0000 (09:05 -0000)]
acpid: new applet by Vladimir. +737 bytes
Denis Vlasenko [Sat, 29 Nov 2008 06:57:53 +0000 (06:57 -0000)]
Announce 1.13.1 and 1.12.3
Denis Vlasenko [Fri, 28 Nov 2008 04:01:03 +0000 (04:01 -0000)]
ash: add FIXME
Denis Vlasenko [Fri, 28 Nov 2008 03:50:46 +0000 (03:50 -0000)]
ash: "ash: syntax error: XXX unexpected" -> "ash: syntax error: unexpected XXX"
Denis Vlasenko [Fri, 28 Nov 2008 03:42:31 +0000 (03:42 -0000)]
ash: shrink on top of previous change
function old new delta
readtoken1 3201 3221 +20
xxreadtoken 306 313 +7
pungetc 13 12 -1
ash_main 1380 1379 -1
setinputfile 196 192 -4
plinno 4 - -4
parsenleft 4 - -4
parsenextc 4 - -4
parselleft 4 - -4
setinputstring 67 62 -5
pushstring 123 114 -9
pgetc 455 438 -17
pushfile 69 31 -38
popfile 114 76 -38
------------------------------------------------------------------------------
(add/remove: 0/4 grow/shrink: 2/8 up/down: 27/-129) Total: -102 bytes
text data bss dec hex filename
798750 564 7756 807070 c509e busybox_old
798664 560 7748 806972 c503c busybox_unstripped
Denis Vlasenko [Fri, 28 Nov 2008 03:41:47 +0000 (03:41 -0000)]
ash: better fix for ash -c 'echo 5&' and ash -c 'sleep 5&'
with testcase
Denis Vlasenko [Tue, 25 Nov 2008 13:33:11 +0000 (13:33 -0000)]
remove a few superfluous includes
Denis Vlasenko [Tue, 25 Nov 2008 01:36:03 +0000 (01:36 -0000)]
ash,hush: add TODO for rare build failure
*: remove some redundant includes
Denis Vlasenko [Tue, 25 Nov 2008 01:34:52 +0000 (01:34 -0000)]
ash: fix bad interaction between ash -c '....&' and bash compat
Denis Vlasenko [Mon, 24 Nov 2008 22:34:47 +0000 (22:34 -0000)]
timeout: fix a few bugs. vda is stupid
Denis Vlasenko [Mon, 24 Nov 2008 13:42:24 +0000 (13:42 -0000)]
trim help text a bit
Denis Vlasenko [Mon, 24 Nov 2008 13:25:20 +0000 (13:25 -0000)]
timeout: new applet. 370 bytes. by Roberto Foglietta.
Denis Vlasenko [Mon, 24 Nov 2008 07:34:42 +0000 (07:34 -0000)]
vi: speedup and code shrink (Walter Harms)
networking/interface.c: silence warning (Vladimir)
wget: more robust EINTR detection
Denis Vlasenko [Sun, 23 Nov 2008 14:58:14 +0000 (14:58 -0000)]
strings: code shrink -22 bytes by Tito
Denis Vlasenko [Sun, 23 Nov 2008 14:40:00 +0000 (14:40 -0000)]
diff: emit /dev/null if diff -rN diffs a file against /dev/null
function old new delta
diffreg 1782 1786 +4
Bernhard Reutner-Fischer [Sat, 22 Nov 2008 20:30:53 +0000 (20:30 -0000)]
- documentation fix
Denis Vlasenko [Sat, 22 Nov 2008 20:29:35 +0000 (20:29 -0000)]
httpd: set $HOST to Host: header value. +83 bytes.
by Tobias Poschwatta (tp AT fonz.de)
Denis Vlasenko [Sat, 22 Nov 2008 20:18:37 +0000 (20:18 -0000)]
modutils-24: small fixes by Harald Kuthe (harald-tuxbox AT arcor.de)
function old new delta
obj_load 819 832 +13
obj_allocate_commons 488 462 -26
bb_init_module_24 4800 4759 -41
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/2 up/down: 13/-67) Total: -54 bytes
Denis Vlasenko [Sat, 22 Nov 2008 18:58:11 +0000 (18:58 -0000)]
networking/interface.c: better readability (by Walter Harms)
mkfs_minix: whitespace fix
Denis Vlasenko [Sat, 22 Nov 2008 18:41:41 +0000 (18:41 -0000)]
tftpd: can also have TFTP_DEBUG
Denis Vlasenko [Sat, 22 Nov 2008 18:29:01 +0000 (18:29 -0000)]
insmod: clarify module_name / file_name distinction
Denis Vlasenko [Sat, 22 Nov 2008 01:32:40 +0000 (01:32 -0000)]
ash: NTO2 needs #if ENABLE_ASH_BASH_COMPAT
Denis Vlasenko [Fri, 21 Nov 2008 10:36:36 +0000 (10:36 -0000)]
ash: fix miscalculation of memory needed for eval tree
found by Timo Teras (timo.teras AT iki.fi)
Denis Vlasenko [Thu, 20 Nov 2008 23:41:56 +0000 (23:41 -0000)]
dpkg: better and shorter code to compare versions
(taken from "official" dpkg).
By Eugene T. Bordenkircher (eugebo AT gmail.com)
function old new delta
order - 48 +48
test_version 273 276 +3
version_compare_part 396 187 -209
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 1/1 up/down: 51/-209) Total: -158 bytes
Denis Vlasenko [Thu, 20 Nov 2008 01:24:39 +0000 (01:24 -0000)]
inotifyd: exit if x event happened for all files
fix FIONREAD parameter type
fix default mask code
shrink help text
function old new delta
inotifyd_main 497 506 +9
packed_usage 25446 25431 -15
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/1 up/down: 9/-15) Total: -6 bytes
Denis Vlasenko [Wed, 19 Nov 2008 13:25:14 +0000 (13:25 -0000)]
vi: fix several instances of major goof: when text grows, text[]
might get reallocated! We were keeping around pointers to old place...
function old new delta
colon 3017 3037 +20
char_insert 336 354 +18
stupid_insert 18 24 +6
string_insert 89 94 +5
do_cmd 4461 4465 +4
file_insert 328 329 +1
text_hole_make 134 120 -14
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 6/1 up/down: 54/-14) Total: 40 bytes
Denis Vlasenko [Wed, 19 Nov 2008 09:35:00 +0000 (09:35 -0000)]
klogd: fix small buglet in previous commit
Denis Vlasenko [Wed, 19 Nov 2008 07:59:49 +0000 (07:59 -0000)]
klogctl: fix a problem where we don't terminate read data with '\0'
and then misinterpret it. Code shrink while at it.
function old new delta
klogd_main 404 362 -42
Denis Vlasenko [Mon, 17 Nov 2008 22:19:18 +0000 (22:19 -0000)]
inotify: add x, o, and u events
Denis Vlasenko [Mon, 17 Nov 2008 15:36:36 +0000 (15:36 -0000)]
nslookup: glibc + IPv6 address of DNS server don't mix (yet)
Denis Vlasenko [Mon, 17 Nov 2008 00:12:17 +0000 (00:12 -0000)]
id: do not abort build if we use internal password/group functions.
Denis Vlasenko [Sun, 16 Nov 2008 22:21:23 +0000 (22:21 -0000)]
libbb: replace some memmove's with memcpy's (Ron (ron AT debian.org))
bb_dump_dump 2674 2611 -63
Denis Vlasenko [Sun, 16 Nov 2008 19:02:26 +0000 (19:02 -0000)]
nslookup: allow usage of IPv6 addresses or hostnames
for DNS server name; allow for port specification.
Tested to work: "nslookup google.com [::1]:5353"
Denis Vlasenko [Sun, 16 Nov 2008 15:03:11 +0000 (15:03 -0000)]
id: abort the build of uclibc is less than 0.9.30
Denis Vlasenko [Sun, 16 Nov 2008 04:05:13 +0000 (04:05 -0000)]
man: better check for duplicated MANPATH. Also -10 bytes.
Denis Vlasenko [Fri, 14 Nov 2008 22:14:12 +0000 (22:14 -0000)]
inotifyd: fix "inotifyd with no params" case
Denis Vlasenko [Fri, 14 Nov 2008 21:52:16 +0000 (21:52 -0000)]
inotify: document waiting behavior
Denis Vlasenko [Fri, 14 Nov 2008 21:34:13 +0000 (21:34 -0000)]
inotify: fix buffer overflow and "unreaped zombies" problem
Wade Berrier [Fri, 14 Nov 2008 21:18:45 +0000 (21:18 -0000)]
ifupdown.c: allow options to udhcpc to be configurable from .config
This allows more control over options that are passed to udhcpc
that are not configurable via /etc/network/interfaces.
Example: rather than quit when an initial lease isn't found,
you could use "--background" so that udhcpc keeps running and
continually attempts to get an ip. That way, when you plug in
the ethernet after powering on the device, you'll still get an ip.
Denis Vlasenko [Thu, 13 Nov 2008 21:53:32 +0000 (21:53 -0000)]
stat: fix compile breakage (get_f_fsid() is used even if !FEATURE_STAT_FORMAT)
Denis Vlasenko [Thu, 13 Nov 2008 13:25:18 +0000 (13:25 -0000)]
libbb: sha_crypt -123 bytes
Denis Vlasenko [Thu, 13 Nov 2008 12:55:11 +0000 (12:55 -0000)]
libbb/pw_encrypt_sha: -28 bytes
Denis Vlasenko [Thu, 13 Nov 2008 12:23:46 +0000 (12:23 -0000)]
libbb: remove glibc-style bloat from sha_crypt. -1130 bytes.
cryptpw: add more difficult test vectors.
Denis Vlasenko [Thu, 13 Nov 2008 00:05:17 +0000 (00:05 -0000)]
arp: stop using globals
function old new delta
hw_set 1 - -1
arp_main 1559 1558 -1
sockfd 8 4 -4
hw 4 - -4
device 4 - -4
ap 4 - -4
packed_usage 25402 25393 -9
------------------------------------------------------------------------------
(add/remove: 0/4 grow/shrink: 0/3 up/down: 0/-27) Total: -27 bytes
Denis Vlasenko [Wed, 12 Nov 2008 22:06:46 +0000 (22:06 -0000)]
gzip: fix gzip -dc case caused by using stale getopt state
Denis Vlasenko [Wed, 12 Nov 2008 21:37:19 +0000 (21:37 -0000)]
seq: shrink by 10 bytes
Denis Vlasenko [Wed, 12 Nov 2008 21:18:58 +0000 (21:18 -0000)]
correct help texts
Denis Vlasenko [Wed, 12 Nov 2008 21:14:50 +0000 (21:14 -0000)]
telnetd: fix compile problem for non-standalone telnetd
Bernhard Reutner-Fischer [Wed, 12 Nov 2008 13:22:24 +0000 (13:22 -0000)]
- add support for seq -s <separator>
Bernhard Reutner-Fischer [Wed, 12 Nov 2008 12:59:56 +0000 (12:59 -0000)]
- add seq -w support (Natanael Copa)
Denis Vlasenko [Wed, 12 Nov 2008 00:09:58 +0000 (00:09 -0000)]
modprobe-small: fix failure to load when no arguments are given
modutils-24: fix bad interaction of xzalloc with xrealloc_vector; style fixes
Denis Vlasenko [Tue, 11 Nov 2008 22:59:41 +0000 (22:59 -0000)]
cksum, printenv: report errors via exitcode
function old new delta
cksum_main 296 315 +19
printenv_main 74 86 +12