Denis Vlasenko [Mon, 29 Oct 2007 19:18:39 +0000 (19:18 -0000)]
mount: size-optimize mount_options[] and nfs_errtbl[]
777253 974 9676 787903 c05bf busybox_old
777209 974 9676 787859 c0593 busybox_unstripped
Denis Vlasenko [Mon, 29 Oct 2007 19:17:29 +0000 (19:17 -0000)]
ash: if tcgetattr(stdin) fails, don't mess with tcsetattr
ash: size-optimize ulimit's table of limits
text data bss dec hex filename
777345 974 9676 787995 c061b busybox_old
777253 974 9676 787903 c05bf busybox_unstripped
Denis Vlasenko [Mon, 22 Oct 2007 15:53:34 +0000 (15:53 -0000)]
svlogd: fix compat problem: svlogd -tt should timestanp stderr too
Denis Vlasenko [Sun, 21 Oct 2007 23:24:42 +0000 (23:24 -0000)]
httpd: fix trivial bug (spotted by Alex Landau)
Denis Vlasenko [Sun, 21 Oct 2007 18:59:58 +0000 (18:59 -0000)]
bzip2: make -d actually work
Denis Vlasenko [Sat, 20 Oct 2007 19:20:22 +0000 (19:20 -0000)]
bb_askpass: handle Ctrl-C, restore termoios on Ctrl-C.
sulogin: remove alarm handling, as it is redundant there.
code shrink. After all differences cancel out:
text data bss dec hex filename
777543 1000 9532 788075 c066b busybox_old
777543 1000 9532 788075 c066b busybox_unstripped
Denis Vlasenko [Sat, 20 Oct 2007 18:30:38 +0000 (18:30 -0000)]
read_line_input: fix it to not do any fancy editing if echoing is disabled.
ash: make read handling both more correct and smaller
read_line_input 4037 4101 +64
input_backward 140 139 -1
readcmd 1079 1070 -9
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/2 up/down: 65/-10) Total: 54 bytes
text data bss dec hex filename
777575 1000 9532 788107 c068b busybox_old
777629 1000 9532 788161 c06c1 busybox_unstripped
Denis Vlasenko [Sat, 20 Oct 2007 14:54:58 +0000 (14:54 -0000)]
more fixes for help text wrt long options
Denis Vlasenko [Sat, 20 Oct 2007 04:44:08 +0000 (04:44 -0000)]
website: add link to "No ifup" document
Denis Vlasenko [Sat, 20 Oct 2007 02:00:49 +0000 (02:00 -0000)]
ping: fix breakage from -I fix
passwd: SELinux support by KaiGai Kohei <kaigai@ak.jp.nec.com>
Denis Vlasenko [Sat, 20 Oct 2007 00:17:34 +0000 (00:17 -0000)]
kbd_mode: new applet by Loïc Grenié <loic.grenie@gmail.com>
kbd_mode_main - 189 +189
packed_usage 22745 22833 +88
applets 3132 3144 +12
static.opts 7 12 +5
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 3/0 up/down: 294/0) Total: 294 bytes
text data bss dec hex filename
777210 1000 9532 787742 c051e busybox_old
777575 1000 9532 788107 c068b busybox_unstripped
Denis Vlasenko [Fri, 19 Oct 2007 21:49:48 +0000 (21:49 -0000)]
mkswap: selinux support by KaiGai Kohei <kaigai@ak.jp.nec.com>
Denis Vlasenko [Fri, 19 Oct 2007 21:39:25 +0000 (21:39 -0000)]
paing: make -I ethN work too (-I addr already worked)
Denis Vlasenko [Fri, 19 Oct 2007 21:03:09 +0000 (21:03 -0000)]
unzip: add a comment explaining why we don't die
Denis Vlasenko [Thu, 18 Oct 2007 23:27:46 +0000 (23:27 -0000)]
unzip: fix endianness bugs
Denis Vlasenko [Thu, 18 Oct 2007 13:01:22 +0000 (13:01 -0000)]
httpd: free big buffer after use; improve grep-ability of 'headers' variable
Denis Vlasenko [Thu, 18 Oct 2007 12:54:39 +0000 (12:54 -0000)]
xatonum.h: add comment
lineedit: fix typo in comment
httpd: support for proxying connection to other http server
(by Alex Landau <landau_alex@yahoo.com>)
Denis Vlasenko [Thu, 18 Oct 2007 11:11:12 +0000 (11:11 -0000)]
more of usage text fixes wrt long options
Denis Vlasenko [Thu, 18 Oct 2007 10:52:36 +0000 (10:52 -0000)]
exclude --longopts from usage texts if those are disabled
Denis Vlasenko [Thu, 18 Oct 2007 10:46:42 +0000 (10:46 -0000)]
snv add setsebool
Denis Vlasenko [Wed, 17 Oct 2007 14:33:31 +0000 (14:33 -0000)]
telnetd: make sure telnetd -K exits if child dies
Denis Vlasenko [Wed, 17 Oct 2007 11:18:49 +0000 (11:18 -0000)]
telnetd: trivial optimization
Denis Vlasenko [Wed, 17 Oct 2007 11:08:53 +0000 (11:08 -0000)]
ash: use fdprintf, not dprintf.
*: trailing whitespace removed
Denis Vlasenko [Wed, 17 Oct 2007 10:14:11 +0000 (10:14 -0000)]
bzip2: more of code shrink
compressStream 503 473 -30
BZ2_bzCompress 78 - -78
------------------------------------------------------------------------------
(add/remove: 0/1 grow/shrink: 0/1 up/down: 0/-108) Total: -108 bytes
text data bss dec hex filename
676300 2538 12104 690942 a8afe busybox_old
676192 2538 12104 690834 a8a92 busybox_unstripped
Denis Vlasenko [Wed, 17 Oct 2007 09:59:01 +0000 (09:59 -0000)]
another fix for build failure found by randomconfig
Denis Vlasenko [Tue, 16 Oct 2007 23:00:50 +0000 (23:00 -0000)]
even more fixes from randomconfig runs
Denis Vlasenko [Tue, 16 Oct 2007 22:53:05 +0000 (22:53 -0000)]
fixes revealed by randomconfig run
Denis Vlasenko [Tue, 16 Oct 2007 22:01:23 +0000 (22:01 -0000)]
telnetd: fix comment
Denis Vlasenko [Tue, 16 Oct 2007 21:35:17 +0000 (21:35 -0000)]
telnetd: code shrink suggested by Ralf Friedl <Ralf.Friedl@online.de>
Denis Vlasenko [Tue, 16 Oct 2007 14:07:41 +0000 (14:07 -0000)]
bzip2: move state pointer to the offset 0 (smaller code)
ifdef out DecompressEnd if FEATURE_CLEAN_UP is not seleted
fallbackSort 1655 1672 +17
mainSort 2447 2458 +11
bzip2_main 109 119 +10
.rodata 123466 123469 +3
generateMTFValues 433 435 +2
handle_compress 355 356 +1
BZ2_bzCompress 79 78 -1
prepare_new_block 55 48 -7
compressStream 547 503 -44
sendMTFValues 2225 2140 -85
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 6/4 up/down: 44/-137) Total: -93 bytes
text data bss dec hex filename
676421 2538 12104 691063 a8b77 busybox_old
676328 2538 12104 690970 a8b1a busybox_unstripped
Denis Vlasenko [Tue, 16 Oct 2007 10:47:27 +0000 (10:47 -0000)]
bzip2: make -s equivalent to -2 (compatible with standard bzip2)
telnetd: typo fix in comment
Denis Vlasenko [Mon, 15 Oct 2007 22:09:15 +0000 (22:09 -0000)]
telnetd: at Alexander Kriegisch <Alexander@kriegisch.name> insistence
add an option to close sessions as soon as child exits.
Maybe it should be a CONFIG option. OTOH, maybe it should be always on,
as it mimics, say, getty's behaviour.
function old new delta
handle_sigchld - 49 +49
telnetd_main 1312 1355 +43
.rodata 123429 123466 +37
packed_usage 22770 22806 +36
make_new_session 525 532 +7
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 4/0 up/down: 172/0) Total: 172 bytes
text data bss dec hex filename
676285 2538 12104 690927 a8aef busybox_old
676421 2538 12104 691063 a8b77 busybox_unstripped
Denis Vlasenko [Mon, 15 Oct 2007 17:28:00 +0000 (17:28 -0000)]
telnetd: document bug in remove_iacs. reinstate band-aid
which was making it near-impossible to trigger.
remove memmove call which was happening at each network read,
and in 99%+ cases was not needed. Unfortunately, +50 bytes.
Denis Vlasenko [Mon, 15 Oct 2007 15:19:36 +0000 (15:19 -0000)]
telnetd: some simplifications and better error hadling.
telnetd: don't SIGKILL child when closing the session.
kernel will seng SIGHUP for us.
static.iacs_to_send - 15 +15
.rodata 123418 123429 +11
make_new_session 549 525 -24
send_iac 26 - -26
free_session 144 118 -26
telnetd_main 1303 1261 -42
------------------------------------------------------------------------------
(add/remove: 1/1 grow/shrink: 1/3 up/down: 26/-118) Total: -92 bytes
text data bss dec hex filename
676341 2538 12104 690983 a8b27 busybox_old
676234 2538 12104 690876 a8abc busybox_unstripped
Denis Vlasenko [Sun, 14 Oct 2007 07:57:26 +0000 (07:57 -0000)]
bzip2: update help text
Denis Vlasenko [Sun, 14 Oct 2007 07:51:19 +0000 (07:51 -0000)]
bzip2: implement -1..-9 command line flags
Denis Vlasenko [Sun, 14 Oct 2007 07:49:48 +0000 (07:49 -0000)]
bzip2: eliminate some divisions
Denis Vlasenko [Sun, 14 Oct 2007 04:55:59 +0000 (04:55 -0000)]
remove trailing whitespace
Denis Vlasenko [Sun, 14 Oct 2007 04:48:44 +0000 (04:48 -0000)]
setsebool: new applet (Yuichi Nakamura <ynakam@hitachisoft.jp>)
Denis Vlasenko [Sun, 14 Oct 2007 02:34:20 +0000 (02:34 -0000)]
httpd: fix bug where we were trying to read more POSTDATA than content-length
Denis Vlasenko [Sun, 14 Oct 2007 01:37:53 +0000 (01:37 -0000)]
bzip2: code size shrink
Denis Vlasenko [Sun, 14 Oct 2007 00:44:10 +0000 (00:44 -0000)]
bzip2: remove files which are not used anymore
Denis Vlasenko [Sun, 14 Oct 2007 00:43:01 +0000 (00:43 -0000)]
bzip2: size reduction, to just below 9k.
Denis Vlasenko [Sat, 13 Oct 2007 03:36:03 +0000 (03:36 -0000)]
bzip2: port bzip2 1.0.4 to busybox. note: bzip2 code resides
in separate directory (archival/bz/*)
and is covered by BSD-style license.
code size: 13k
Denis Vlasenko [Thu, 11 Oct 2007 19:53:10 +0000 (19:53 -0000)]
whitespace/style fix
Denis Vlasenko [Thu, 11 Oct 2007 19:38:59 +0000 (19:38 -0000)]
mt: eliminate vector of structures with pointers (bad for libbusybox).
It's a win for static build too:
function old new delta
opcode_name - 213 +213
opcode_value - 68 +68
mt_main 281 256 -25
opcodes 280 - -280
------------------------------------------------------------------------------
(add/remove: 2/1 grow/shrink: 0/1 up/down: 281/-305) Total: -24 bytes
text data bss dec hex filename
767403 974 9420 777797 bde45 busybox_old
767224 974 9420 777618 bdd92 busybox_unstripped
Denis Vlasenko [Thu, 11 Oct 2007 16:02:36 +0000 (16:02 -0000)]
stty: incorporate strings into struct instead of keeping pointers there.
static:
text data bss dec hex filename
767535 974 9420 777929 bdec9 busybox_old
767403 974 9420 777797 bde45 busybox_unstripped
dynamic -fpic:
text data bss dec hex filename
718954 14030 12032 745016 b5e38 busybox_old
720278 12534 12032 744844 b5d8c busybox_unstripped
Denis Vlasenko [Thu, 11 Oct 2007 10:10:15 +0000 (10:10 -0000)]
vi: don't wait 50 ms before reading ESC sequences
inetd,syslogd: use safe_read instead of open-coded EINTR handling
syslogd: bail out if you see null read from Unix socket
(should never happen, but if it does, spinning forever
and eating 100% CPU is not a good idea)
Denis Vlasenko [Thu, 11 Oct 2007 10:07:24 +0000 (10:07 -0000)]
trim too verbose help texts
Denis Vlasenko [Thu, 11 Oct 2007 10:06:26 +0000 (10:06 -0000)]
fix a problem with two different applet_name's
Denis Vlasenko [Thu, 11 Oct 2007 10:05:36 +0000 (10:05 -0000)]
add -fvisibility=hidden to CC flags, mark XXX_main functions
EXTERNALLY_VISIBLE. 5% size reduction of libbusybox.so
Denis Vlasenko [Thu, 11 Oct 2007 10:02:52 +0000 (10:02 -0000)]
add -fpic to CC flags when we build libbusybox (14% smaller .so)
Denis Vlasenko [Wed, 10 Oct 2007 20:53:41 +0000 (20:53 -0000)]
bunzip: small code shrink and consmetics
read_bunzip 276 283 +7
get_bits 184 162 -22
get_next_block 1833 1810 -23
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/2 up/down: 7/-45) Total: -38 bytes
Denis Vlasenko [Wed, 10 Oct 2007 14:43:03 +0000 (14:43 -0000)]
ip tunnel parameter parsing fix by Jean Wolter <jw5@os.inf.tu-dresden.de>
Denis Vlasenko [Wed, 10 Oct 2007 14:41:07 +0000 (14:41 -0000)]
Move applets/applet.c into libbb, allows to get rid of --whole-archive
(smaller code). Tested in static and shared mode.
Denis Vlasenko [Wed, 10 Oct 2007 14:38:47 +0000 (14:38 -0000)]
get rid of global "struct bb_applet *current_applet"
Denis Vlasenko [Wed, 10 Oct 2007 10:05:35 +0000 (10:05 -0000)]
trylink: s/strip/$STRIP/g
Denis Vlasenko [Tue, 9 Oct 2007 18:08:04 +0000 (18:08 -0000)]
typo fix in help text
Denis Vlasenko [Tue, 9 Oct 2007 18:01:13 +0000 (18:01 -0000)]
trylink: trivial cleanup
Denis Vlasenko [Tue, 9 Oct 2007 13:49:26 +0000 (13:49 -0000)]
trylink: reformat link flags for readability
trylink: add --sort-section alignment:
text data bss dec hex filename
- 6557 428 3260 10245 2805 busybox
+ 6555 428 3260 10243 2803 busybox
- 909621 1076 12108 922805 e14b5 libbusybox.so.1.8.0.svn
+ 908868 1050 12016 921934 e114e libbusybox.so.1.8.0.svn
Denis Vlasenko [Tue, 9 Oct 2007 13:08:02 +0000 (13:08 -0000)]
trylink: remove useless redirects, add missing error checks
Denis Vlasenko [Tue, 9 Oct 2007 10:15:41 +0000 (10:15 -0000)]
trylink: trivial fixes
Denis Vlasenko [Mon, 8 Oct 2007 22:16:14 +0000 (22:16 -0000)]
make "individual applets" build less noisy.
add *.tmp to list of files deleted by make mrproper.
Denis Vlasenko [Mon, 8 Oct 2007 20:45:42 +0000 (20:45 -0000)]
whitespace fix
Denis Vlasenko [Mon, 8 Oct 2007 19:32:12 +0000 (19:32 -0000)]
add libbb/appletlib.c
Denis Vlasenko [Sun, 7 Oct 2007 21:00:41 +0000 (21:00 -0000)]
make --help work for "individual applets" too.
Denis Vlasenko [Sun, 7 Oct 2007 20:46:34 +0000 (20:46 -0000)]
libbusybox: move (possibly compressed) help stuff into libbusybox.
Makes individual binaries much smaller.
Denis Vlasenko [Sun, 7 Oct 2007 19:13:55 +0000 (19:13 -0000)]
trim too verbose help messages
Denis Vlasenko [Sun, 7 Oct 2007 18:10:44 +0000 (18:10 -0000)]
website: "BusyBox Weekly News" didn't really work, remove link
Denis Vlasenko [Sun, 7 Oct 2007 18:02:52 +0000 (18:02 -0000)]
ash: revert "cat | jobs" fix, it causes more problems than good
Denis Vlasenko [Sun, 7 Oct 2007 17:06:26 +0000 (17:06 -0000)]
reviving libbusybox, adding CONFIG_INDIVIDUAL part 4
Denis Vlasenko [Sun, 7 Oct 2007 17:06:01 +0000 (17:06 -0000)]
reviving libbusybox, adding CONFIG_INDIVIDUAL part 3
Denis Vlasenko [Sun, 7 Oct 2007 17:05:42 +0000 (17:05 -0000)]
reviving libbusybox, adding CONFIG_INDIVIDUAL part 2
Denis Vlasenko [Sun, 7 Oct 2007 17:05:22 +0000 (17:05 -0000)]
reviving libbusybox, adding CONFIG_INDIVIDUAL part 1
Bernhard Reutner-Fischer [Sat, 6 Oct 2007 20:47:53 +0000 (20:47 -0000)]
- mark TODO: use index_in_str_array()
Denis Vlasenko [Fri, 5 Oct 2007 22:11:06 +0000 (22:11 -0000)]
chpst: fix whitespace damage
svlogd: fix bug (two different "line" variables); stop using data/bss
function old new delta
processorstop 419 432 +13
rotate 514 525 +11
buffer_pwrite 493 499 +6
sig_term_handler 68 70 +2
sig_hangup_handler 34 36 +2
sig_alarm_handler 34 36 +2
rmoldest 305 307 +2
processorstart 401 403 +2
logdir_close 188 190 +2
tmaxflag 1 - -1
rotateasap 1 - -1
repl 1 - -1
reopenasap 1 - -1
linecomplete 1 - -1
exitasap 1 - -1
wstat 4 - -4
verbose 9 5 -4
replace 4 - -4
nearest_rotate 4 - -4
linemax 4 - -4
linelen 4 - -4
line 4 - -4
fndir 4 - -4
fl_flag_0 4 - -4
fdwdir 4 - -4
dirn 4 - -4
dir 4 - -4
blocked_sigset 4 - -4
sig_child_handler 248 239 -9
logdirs_reopen 1263 1240 -23
buffer_pread 532 473 -59
svlogd_main 1466 1367 -99
------------------------------------------------------------------------------
(add/remove: 0/18 grow/shrink: 9/5 up/down: 42/-248) Total: -206 bytes
text data bss dec hex filename
770916 989 9496 781401 bec59 busybox_old
770768 980 9448 781196 beb8c busybox_unstripped
Denis Vlasenko [Fri, 5 Oct 2007 21:23:49 +0000 (21:23 -0000)]
chpst: stop using data/bss
function old new delta
chpst_main 1066 1089 +23
set_user 4 - -4
root 4 - -4
nicelvl 4 - -4
limitt 4 - -4
limits 196 192 -4
limitr 4 - -4
limitp 4 - -4
limito 4 - -4
limitl 4 - -4
limitf 4 - -4
limitd 4 - -4
limitc 4 - -4
limita 4 - -4
env_user 4 - -4
env_dir 4 - -4
------------------------------------------------------------------------------
(add/remove: 0/14 grow/shrink: 1/1 up/down: 23/-60) Total: -37 bytes
text data bss dec hex filename
770892 1029 9520 781441 bec81 busybox_old
770916 989 9496 781401 bec59 busybox_unstripped
Denis Vlasenko [Fri, 5 Oct 2007 20:31:23 +0000 (20:31 -0000)]
stat: code shrink; stop using bss; stop using strncat incorrectly
function old new delta
printfs - 28 +28
strcatc - 26 +26
human_time 41 44 +3
print_it 229 219 -10
buf 30 - -30
print_statfs 420 358 -62
print_stat 1089 921 -168
------------------------------------------------------------------------------
(add/remove: 2/1 grow/shrink: 1/3 up/down: 57/-270) Total: -213 bytes
text data bss dec hex filename
771105 1029 9552 781686 bed76 busybox_old
770892 1029 9520 781441 bec81 busybox_unstripped
Denis Vlasenko [Fri, 5 Oct 2007 20:29:31 +0000 (20:29 -0000)]
delete now unused check_header_gzip.c
sum: do not use uintmax needlessly
Denis Vlasenko [Fri, 5 Oct 2007 19:17:16 +0000 (19:17 -0000)]
tail: sizeof(buf) is sizeof(char*)! must be BUFSIZ
Denis Vlasenko [Fri, 5 Oct 2007 15:27:03 +0000 (15:27 -0000)]
add tests for gunzip
Denis Vlasenko [Fri, 5 Oct 2007 15:26:08 +0000 (15:26 -0000)]
gunzip: support concatenated gz files.
text data bss dec hex filename
770988 1029 9552 781569 bed01 busybox.t0/busybox
771105 1029 9552 781686 bed76 busybox.t3/busybox
Denis Vlasenko [Tue, 2 Oct 2007 10:17:56 +0000 (10:17 -0000)]
tail: work correctly on /proc files (Kazuo TAKADA <kztakada@sm.sony.co.jp>)
Denis Vlasenko [Tue, 2 Oct 2007 09:57:41 +0000 (09:57 -0000)]
logger: fix a problem of losing all argv except first
Bernhard Reutner-Fischer [Mon, 1 Oct 2007 18:04:42 +0000 (18:04 -0000)]
- ditch 2 bytes
Denis Vlasenko [Mon, 1 Oct 2007 12:05:12 +0000 (12:05 -0000)]
printf("%s\n") -> puts()
Denis Vlasenko [Mon, 1 Oct 2007 11:58:38 +0000 (11:58 -0000)]
'simple' error message functions by Loic Grenie <loic.grenie@gmail.com>.
263 bytes saved.
Denis Vlasenko [Mon, 1 Oct 2007 10:02:25 +0000 (10:02 -0000)]
hush: fix glob() abuse. Code was making unfounded assumptions how
glob() works, and it broke horribly on specific uclibc config.
Denis Vlasenko [Mon, 1 Oct 2007 10:00:45 +0000 (10:00 -0000)]
hush: int->smallint for flag vars; make some names more "greppable"
Denis Vlasenko [Mon, 1 Oct 2007 09:59:47 +0000 (09:59 -0000)]
hush: feeble attempt at making it more NOMMU-friendly
Denis Vlasenko [Mon, 1 Oct 2007 09:59:01 +0000 (09:59 -0000)]
hush: stop doing manual acounting of open fd's, kernel can do it for us
Denis Vlasenko [Sun, 30 Sep 2007 23:50:48 +0000 (23:50 -0000)]
introduce and use close_on_exec_on(fd). -50 bytes.
Denis Vlasenko [Sun, 30 Sep 2007 17:55:43 +0000 (17:55 -0000)]
move udhcp_{client/server}_config to common_bufsiz1
udhcp_run_script 1108 1151 +43
init_packet 209 210 +1
udhcpc_main 2395 2393 -2
udhcp_client_config 56 - -56
udhcp_server_config 88 - -88
------------------------------------------------------------------------------
(add/remove: 0/2 grow/shrink: 2/1 up/down: 44/-146) Total: -102 bytes
text data bss dec hex filename
771326 1029 9696 782051 beee3 busybox_old
771383 1029 9552 781964 bee8c busybox_unstripped
Denis Vlasenko [Sun, 30 Sep 2007 17:54:10 +0000 (17:54 -0000)]
dhcpreplay: code shrink, -40 bytes
Denis Vlasenko [Sun, 30 Sep 2007 16:36:02 +0000 (16:36 -0000)]
fixlet to pgrep/pkill
Denis Vlasenko [Sun, 30 Sep 2007 16:32:01 +0000 (16:32 -0000)]
print_signames_and_exit -> print_signames (because of "ash calls kill_main")
Denis Vlasenko [Sun, 30 Sep 2007 16:22:36 +0000 (16:22 -0000)]
replace printf with fputs where appropriate
Denis Vlasenko [Sun, 30 Sep 2007 16:04:21 +0000 (16:04 -0000)]
libiproute: add missing break's
Denis Vlasenko [Sun, 30 Sep 2007 00:06:42 +0000 (00:06 -0000)]
announce 1.7.2 on the website
Denis Vlasenko [Sat, 29 Sep 2007 23:26:52 +0000 (23:26 -0000)]
small code shrink