diff options
Diffstat (limited to 'package/busybox')
20 files changed, 62 insertions, 63 deletions
diff --git a/package/busybox/patches/001-init_avoid_loop_opening_tty.patch b/package/busybox/patches/001-init_avoid_loop_opening_tty.patch index 6cf410df08..d6e000752f 100644 --- a/package/busybox/patches/001-init_avoid_loop_opening_tty.patch +++ b/package/busybox/patches/001-init_avoid_loop_opening_tty.patch @@ -1,6 +1,6 @@ --- a/init/init.c +++ b/init/init.c -@@ -456,8 +456,11 @@ static void run_actions(int action_type) +@@ -460,8 +460,11 @@ static void run_actions(int action_type) /* Only run stuff with pid == 0. If pid != 0, * it is already running */ diff --git a/package/busybox/patches/003-brctl_show_fix.patch b/package/busybox/patches/003-brctl_show_fix.patch index 9a0e4e13b2..d36ffc5c12 100644 --- a/package/busybox/patches/003-brctl_show_fix.patch +++ b/package/busybox/patches/003-brctl_show_fix.patch @@ -1,6 +1,6 @@ --- a/networking/brctl.c +++ b/networking/brctl.c -@@ -104,7 +104,7 @@ int brctl_main(int argc UNUSED_PARAM, ch +@@ -105,7 +105,7 @@ int brctl_main(int argc UNUSED_PARAM, ch "setageing\0" "setfd\0" "sethello\0" "setmaxage\0" "setpathcost\0" "setportprio\0" "setbridgeprio\0" ) @@ -9,7 +9,7 @@ enum { ARG_addbr = 0, ARG_delbr, ARG_addif, ARG_delif IF_FEATURE_BRCTL_FANCY(, -@@ -112,7 +112,7 @@ int brctl_main(int argc UNUSED_PARAM, ch +@@ -113,7 +113,7 @@ int brctl_main(int argc UNUSED_PARAM, ch ARG_setageing, ARG_setfd, ARG_sethello, ARG_setmaxage, ARG_setpathcost, ARG_setportprio, ARG_setbridgeprio ) @@ -20,7 +20,7 @@ int fd; --- a/networking/Config.src +++ b/networking/Config.src -@@ -79,7 +79,7 @@ config FEATURE_BRCTL_FANCY +@@ -79,12 +79,12 @@ config FEATURE_BRCTL_FANCY This adds about 600 bytes. config FEATURE_BRCTL_SHOW @@ -29,3 +29,9 @@ default y depends on BRCTL && FEATURE_BRCTL_FANCY help + Add support for option which prints the current config: +- showmacs, showstp, show ++ show + + config DNSD + bool "dnsd" diff --git a/package/busybox/patches/110-wget_getopt_fix.patch b/package/busybox/patches/110-wget_getopt_fix.patch index 501f608484..078872cf0b 100644 --- a/package/busybox/patches/110-wget_getopt_fix.patch +++ b/package/busybox/patches/110-wget_getopt_fix.patch @@ -1,6 +1,6 @@ --- a/networking/wget.c +++ b/networking/wget.c -@@ -543,7 +543,7 @@ int wget_main(int argc UNUSED_PARAM, cha +@@ -545,7 +545,7 @@ int wget_main(int argc UNUSED_PARAM, cha // "tries\0" Required_argument "t" // "timeout\0" Required_argument "T" /* Ignored (we always use PASV): */ diff --git a/package/busybox/patches/240-udhcpc_retries.patch b/package/busybox/patches/240-udhcpc_retries.patch index bfcc02b7fb..c78dae533e 100644 --- a/package/busybox/patches/240-udhcpc_retries.patch +++ b/package/busybox/patches/240-udhcpc_retries.patch @@ -1,6 +1,6 @@ --- a/networking/udhcp/dhcpc.c +++ b/networking/udhcp/dhcpc.c -@@ -380,7 +380,7 @@ int udhcpc_main(int argc UNUSED_PARAM, c +@@ -1017,7 +1017,7 @@ int udhcpc_main(int argc UNUSED_PARAM, c switch (state) { case INIT_SELECTING: @@ -9,7 +9,7 @@ if (packet_num == 0) xid = random_xid(); /* broadcast */ -@@ -409,7 +409,7 @@ int udhcpc_main(int argc UNUSED_PARAM, c +@@ -1046,7 +1046,7 @@ int udhcpc_main(int argc UNUSED_PARAM, c packet_num = 0; continue; case REQUESTING: diff --git a/package/busybox/patches/243-udhcpc_changed_ifindex.patch b/package/busybox/patches/243-udhcpc_changed_ifindex.patch index c5bf9123db..45339242bf 100644 --- a/package/busybox/patches/243-udhcpc_changed_ifindex.patch +++ b/package/busybox/patches/243-udhcpc_changed_ifindex.patch @@ -1,6 +1,6 @@ --- a/networking/udhcp/dhcpc.c +++ b/networking/udhcp/dhcpc.c -@@ -342,6 +342,12 @@ int udhcpc_main(int argc UNUSED_PARAM, c +@@ -980,6 +980,12 @@ int udhcpc_main(int argc UNUSED_PARAM, c /* silence "uninitialized!" warning */ unsigned timestamp_before_wait = timestamp_before_wait; diff --git a/package/busybox/patches/250-ash_export-n.patch b/package/busybox/patches/250-ash_export-n.patch index bcc67d8eef..48efdcf942 100644 --- a/package/busybox/patches/250-ash_export-n.patch +++ b/package/busybox/patches/250-ash_export-n.patch @@ -1,6 +1,6 @@ --- a/shell/ash.c +++ b/shell/ash.c -@@ -12344,8 +12344,17 @@ exportcmd(int argc UNUSED_PARAM, char ** +@@ -12428,8 +12428,17 @@ exportcmd(int argc UNUSED_PARAM, char ** const char *p; char **aptr; int flag = argv[0][0] == 'r' ? VREADONLY : VEXPORT; @@ -19,7 +19,7 @@ aptr = argptr; name = *aptr; if (name) { -@@ -12357,10 +12366,12 @@ exportcmd(int argc UNUSED_PARAM, char ** +@@ -12441,10 +12450,12 @@ exportcmd(int argc UNUSED_PARAM, char ** vp = *findvar(hashvar(name), name); if (vp) { vp->flags |= flag; diff --git a/package/busybox/patches/300-netmsg.patch b/package/busybox/patches/300-netmsg.patch index 3553b640c0..7e48930bbc 100644 --- a/package/busybox/patches/300-netmsg.patch +++ b/package/busybox/patches/300-netmsg.patch @@ -1,6 +1,6 @@ --- a/include/applets.src.h +++ b/include/applets.src.h -@@ -282,6 +282,7 @@ IF_MT(APPLET(mt, _BB_DIR_BIN, _BB_SUID_D +@@ -278,6 +278,7 @@ IF_MT(APPLET(mt, _BB_DIR_BIN, _BB_SUID_D IF_MV(APPLET(mv, _BB_DIR_BIN, _BB_SUID_DROP)) IF_NAMEIF(APPLET(nameif, _BB_DIR_SBIN, _BB_SUID_DROP)) IF_NC(APPLET(nc, _BB_DIR_USR_BIN, _BB_SUID_DROP)) @@ -10,9 +10,9 @@ IF_NMETER(APPLET(nmeter, _BB_DIR_USR_BIN, _BB_SUID_DROP)) --- a/include/usage.src.h +++ b/include/usage.src.h -@@ -3166,6 +3166,9 @@ - - #endif +@@ -2961,6 +2961,9 @@ INSERT + " or\n" \ + "$ nameif -c /etc/my_mactab_file\n" \ +#define netmsg_trivial_usage NOUSAGE_STR +#define netmsg_full_usage "" @@ -37,7 +37,7 @@ default y --- a/networking/Kbuild.src +++ b/networking/Kbuild.src -@@ -25,6 +25,7 @@ lib-$(CONFIG_IP) += ip.o +@@ -27,6 +27,7 @@ lib-$(CONFIG_IP) += ip.o lib-$(CONFIG_IPCALC) += ipcalc.o lib-$(CONFIG_NAMEIF) += nameif.o lib-$(CONFIG_NC) += nc.o diff --git a/package/busybox/patches/310-passwd_access.patch b/package/busybox/patches/310-passwd_access.patch index fef9d3a7a8..24241c1260 100644 --- a/package/busybox/patches/310-passwd_access.patch +++ b/package/busybox/patches/310-passwd_access.patch @@ -3,7 +3,7 @@ --- a/networking/httpd.c +++ b/networking/httpd.c -@@ -1716,21 +1716,32 @@ static int check_user_passwd(const char +@@ -1717,21 +1717,32 @@ static int check_user_passwd(const char if (ENABLE_FEATURE_HTTPD_AUTH_MD5) { char *md5_passwd; diff --git a/package/busybox/patches/340-lock_util.patch b/package/busybox/patches/340-lock_util.patch index 4783ad11eb..b974b04469 100644 --- a/package/busybox/patches/340-lock_util.patch +++ b/package/busybox/patches/340-lock_util.patch @@ -1,6 +1,6 @@ --- a/include/applets.src.h +++ b/include/applets.src.h -@@ -234,6 +234,7 @@ IF_LN(APPLET_NOEXEC(ln, ln, _BB_DIR_BIN, +@@ -229,6 +229,7 @@ IF_LN(APPLET_NOEXEC(ln, ln, _BB_DIR_BIN, IF_LOAD_POLICY(APPLET(load_policy, _BB_DIR_USR_SBIN, _BB_SUID_DROP)) IF_LOADFONT(APPLET(loadfont, _BB_DIR_USR_SBIN, _BB_SUID_DROP)) IF_LOADKMAP(APPLET(loadkmap, _BB_DIR_SBIN, _BB_SUID_DROP)) @@ -10,7 +10,7 @@ IF_LOGNAME(APPLET_NOFORK(logname, logname, _BB_DIR_USR_BIN, _BB_SUID_DROP, logname)) --- a/include/usage.src.h +++ b/include/usage.src.h -@@ -2357,6 +2357,9 @@ +@@ -2319,6 +2319,9 @@ INSERT #define loadkmap_example_usage \ "$ loadkmap < /etc/i18n/lang-keymap\n" @@ -22,7 +22,7 @@ #define logger_full_usage "\n\n" \ --- a/miscutils/Config.src +++ b/miscutils/Config.src -@@ -463,6 +463,11 @@ config FEATURE_HDPARM_HDIO_GETSET_DMA +@@ -465,6 +465,11 @@ config FEATURE_HDPARM_HDIO_GETSET_DMA help Enables the 'hdparm -d' option to get/set using_dma flag. @@ -33,10 +33,10 @@ + config MAKEDEVS bool "makedevs" - default n + default y --- a/miscutils/Kbuild.src +++ b/miscutils/Kbuild.src -@@ -27,6 +27,7 @@ lib-$(CONFIG_INOTIFYD) += inotifyd.o +@@ -29,6 +29,7 @@ lib-$(CONFIG_INOTIFYD) += inotifyd.o lib-$(CONFIG_FEATURE_LAST_SMALL)+= last.o lib-$(CONFIG_FEATURE_LAST_FANCY)+= last_fancy.o lib-$(CONFIG_LESS) += less.o diff --git a/package/busybox/patches/350-httpd_redir.patch b/package/busybox/patches/350-httpd_redir.patch index 6161871cf8..2bd569c296 100644 --- a/package/busybox/patches/350-httpd_redir.patch +++ b/package/busybox/patches/350-httpd_redir.patch @@ -10,16 +10,16 @@ #define httpd_full_usage "\n\n" \ "Listen for incoming HTTP requests\n" \ "\nOptions:" \ -@@ -2319,6 +2320,9 @@ INSERT - #define loadkmap_example_usage \ - "$ loadkmap < /etc/i18n/lang-keymap\n" +@@ -2321,6 +2322,9 @@ INSERT + #define lock_trivial_usage NOUSAGE_STR + #define lock_full_usage "" ++ +#define lock_trivial_usage NOUSAGE_STR +#define lock_full_usage "" -+ + #define logger_trivial_usage \ "[OPTIONS] [MESSAGE]" - #define logger_full_usage "\n\n" \ --- a/networking/httpd.c +++ b/networking/httpd.c @@ -250,6 +250,8 @@ struct globals { @@ -53,7 +53,7 @@ (g_query ? "?" : ""), (g_query ? g_query : "")); } -@@ -1941,8 +1948,12 @@ static void handle_incoming_and_exit(con +@@ -1942,8 +1949,12 @@ static void handle_incoming_and_exit(con } while (*++tptr); *++urlp = '\0'; /* terminate after last character */ diff --git a/package/busybox/patches/410-httpd_cgi_headers.patch b/package/busybox/patches/410-httpd_cgi_headers.patch index 74baa7ab92..b47751a809 100644 --- a/package/busybox/patches/410-httpd_cgi_headers.patch +++ b/package/busybox/patches/410-httpd_cgi_headers.patch @@ -1,6 +1,6 @@ --- a/networking/httpd.c +++ b/networking/httpd.c -@@ -1254,10 +1254,10 @@ static NOINLINE void cgi_io_loop_and_exi +@@ -1255,10 +1255,10 @@ static NOINLINE void cgi_io_loop_and_exi if (full_write(STDOUT_FILENO, HTTP_200, sizeof(HTTP_200)-1) != sizeof(HTTP_200)-1) break; } diff --git a/package/busybox/patches/440-httpd_chdir.patch b/package/busybox/patches/440-httpd_chdir.patch index 56f5bb68c5..2f44111dcb 100644 --- a/package/busybox/patches/440-httpd_chdir.patch +++ b/package/busybox/patches/440-httpd_chdir.patch @@ -1,6 +1,6 @@ --- a/networking/httpd.c +++ b/networking/httpd.c -@@ -1827,6 +1827,7 @@ static void handle_incoming_and_exit(con +@@ -1828,6 +1828,7 @@ static void handle_incoming_and_exit(con char *header_ptr = header_ptr; Htaccess_Proxy *proxy_entry; #endif diff --git a/package/busybox/patches/470-insmod_search.patch b/package/busybox/patches/470-insmod_search.patch index fc060dda84..ef170a20c8 100644 --- a/package/busybox/patches/470-insmod_search.patch +++ b/package/busybox/patches/470-insmod_search.patch @@ -98,9 +98,9 @@ + return ret; +} - int insmod_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; - int insmod_main(int argc UNUSED_PARAM, char **argv) -@@ -33,9 +126,15 @@ int insmod_main(int argc UNUSED_PARAM, c + /* 2.6 style insmod has no options and required filename + * (not module name - .ko can't be omitted) */ +@@ -55,9 +148,15 @@ int insmod_main(int argc UNUSED_PARAM, c if (!filename) bb_show_usage(); diff --git a/package/busybox/patches/524-udhcpc_renew.patch b/package/busybox/patches/524-udhcpc_renew.patch index 8ba4835ae7..2a72755349 100644 --- a/package/busybox/patches/524-udhcpc_renew.patch +++ b/package/busybox/patches/524-udhcpc_renew.patch @@ -1,6 +1,6 @@ --- a/networking/udhcp/dhcpc.c +++ b/networking/udhcp/dhcpc.c -@@ -76,7 +76,6 @@ static void perform_renew(void) +@@ -711,7 +711,6 @@ static void perform_renew(void) state = RENEW_REQUESTED; break; case RENEW_REQUESTED: /* impatient are we? fine, square 1 */ diff --git a/package/busybox/patches/803-id_getgrouplist.patch b/package/busybox/patches/803-id_getgrouplist.patch index dd2dee66f6..48aa57c04f 100644 --- a/package/busybox/patches/803-id_getgrouplist.patch +++ b/package/busybox/patches/803-id_getgrouplist.patch @@ -31,7 +31,7 @@ Signed-off-by: Nicolas Thill <nico@openwrt.org> /* I guess *n < 0 might indicate error. Anyway, * malloc'ing -1 bytes won't be good, so: */ //if (*n < 0) -@@ -154,6 +160,7 @@ int id_main(int argc UNUSED_PARAM, char +@@ -154,6 +160,7 @@ int id_main(int argc UNUSED_PARAM, char if (egid != rgid) status |= print_group(egid, " "); } @@ -39,7 +39,7 @@ Signed-off-by: Nicolas Thill <nico@openwrt.org> /* We are supplying largish buffer, trying * to not run get_groups() twice. That might be slow * ("user database in remote SQL server" case) */ -@@ -181,6 +188,7 @@ int id_main(int argc UNUSED_PARAM, char +@@ -181,6 +188,7 @@ int id_main(int argc UNUSED_PARAM, char } if (ENABLE_FEATURE_CLEAN_UP) free(groups); diff --git a/package/busybox/patches/902-telnetd_intr.patch b/package/busybox/patches/902-telnetd_intr.patch index 1e3e6bf2fc..c5c25dc84e 100644 --- a/package/busybox/patches/902-telnetd_intr.patch +++ b/package/busybox/patches/902-telnetd_intr.patch @@ -1,10 +1,10 @@ --- a/networking/telnetd.c +++ b/networking/telnetd.c -@@ -308,6 +308,7 @@ make_new_session( +@@ -313,6 +313,7 @@ make_new_session( /* Restore default signal handling ASAP */ bb_signals((1 << SIGCHLD) + (1 << SIGPIPE), SIG_DFL); + signal(SIGINT, SIG_DFL); - /* Make new session and process group */ - setsid(); + if (ENABLE_FEATURE_UTMP) { + len_and_sockaddr *lsa = get_peer_lsa(sock); diff --git a/package/busybox/patches/910-insmod-q-flag.patch b/package/busybox/patches/910-insmod-q-flag.patch index 846b3df56f..e77b0a7d37 100644 --- a/package/busybox/patches/910-insmod-q-flag.patch +++ b/package/busybox/patches/910-insmod-q-flag.patch @@ -1,6 +1,6 @@ --- a/modutils/insmod.c +++ b/modutils/insmod.c -@@ -107,7 +107,7 @@ int insmod_main(int argc, char **argv) M +@@ -129,7 +129,7 @@ int insmod_main(int argc, char **argv) M int insmod_main(int argc UNUSED_PARAM, char **argv) { char *filename; @@ -9,7 +9,7 @@ /* Compat note: * 2.6 style insmod has no options and required filename -@@ -117,10 +117,8 @@ int insmod_main(int argc UNUSED_PARAM, c +@@ -139,10 +139,8 @@ int insmod_main(int argc UNUSED_PARAM, c * or in $MODPATH. */ @@ -22,7 +22,7 @@ filename = *++argv; if (!filename) -@@ -131,7 +129,7 @@ int insmod_main(int argc UNUSED_PARAM, c +@@ -153,7 +151,7 @@ int insmod_main(int argc UNUSED_PARAM, c goto done; rc = bb_init_module(g_filename, parse_cmdline_module_options(argv)); diff --git a/package/busybox/patches/920-mktemp.patch b/package/busybox/patches/920-mktemp.patch index 7116b1ee6a..a7727ca81f 100644 --- a/package/busybox/patches/920-mktemp.patch +++ b/package/busybox/patches/920-mktemp.patch @@ -1,4 +1,4 @@ ---- a/debianutils/mktemp.ci +--- a/debianutils/mktemp.c +++ b/debianutils/mktemp.c @@ -50,7 +50,7 @@ int mktemp_main(int argc UNUSED_PARAM, c opts = getopt32(argv, "dqtp:", &path); diff --git a/package/busybox/patches/921-sed.patch b/package/busybox/patches/921-sed.patch index 08bfa2a7e8..7693d626ff 100644 --- a/package/busybox/patches/921-sed.patch +++ b/package/busybox/patches/921-sed.patch @@ -42,9 +42,8 @@ opt = getopt32(argv, "irne:f:", &opt_e, &opt_f, &G.be_quiet); /* counter for -n */ //argc -= optind; -diff -urpN busybox-1.17.1/testsuite/sed.tests busybox-1.17.1-sed/testsuite/sed.tests ---- busybox-1.17.1/testsuite/sed.tests 2010-07-06 04:25:54.000000000 +0200 -+++ busybox-1.17.1-sed/testsuite/sed.tests 2010-08-01 04:19:26.000000000 +0200 +--- a/testsuite/sed.tests ++++ b/testsuite/sed.tests @@ -270,11 +270,16 @@ testing "sed a cmd ended by double backs | two \\ ' diff --git a/package/busybox/patches/922-shell.patch b/package/busybox/patches/922-shell.patch index 66d3506fc3..4f0058e38a 100644 --- a/package/busybox/patches/922-shell.patch +++ b/package/busybox/patches/922-shell.patch @@ -8,14 +8,12 @@ } /* Lives far away from here, needed for forkchild */ -diff -urpN busybox-1.17.1/shell/ash_test/ash-signals/signal7.right busybox-1.17.1-shell/shell/ash_test/ash-signals/signal7.right ---- busybox-1.17.1/shell/ash_test/ash-signals/signal7.right 1970-01-01 01:00:00.000000000 +0100 -+++ busybox-1.17.1-shell/shell/ash_test/ash-signals/signal7.right 2010-07-25 13:09:32.000000000 +0200 +--- /dev/null ++++ b/shell/ash_test/ash-signals/signal7.right @@ -0,0 +1 @@ +Bug detected: 0 -diff -urpN busybox-1.17.1/shell/ash_test/ash-signals/signal7.tests busybox-1.17.1-shell/shell/ash_test/ash-signals/signal7.tests ---- busybox-1.17.1/shell/ash_test/ash-signals/signal7.tests 1970-01-01 01:00:00.000000000 +0100 -+++ busybox-1.17.1-shell/shell/ash_test/ash-signals/signal7.tests 2010-07-25 13:09:32.000000000 +0200 +--- /dev/null ++++ b/shell/ash_test/ash-signals/signal7.tests @@ -0,0 +1,18 @@ +bug() { + trap : exit @@ -35,9 +33,8 @@ diff -urpN busybox-1.17.1/shell/ash_test/ash-signals/signal7.tests busybox-1.17. +&& test x"$REAL_CHILD" = x"$PARENTS_IDEA_OF_CHILD" +echo "Bug detected: $?" +} -diff -urpN busybox-1.17.1/shell/hush.c busybox-1.17.1-shell/shell/hush.c ---- busybox-1.17.1/shell/hush.c 2010-07-25 00:12:43.000000000 +0200 -+++ busybox-1.17.1-shell/shell/hush.c 2010-07-25 13:09:32.000000000 +0200 +--- a/shell/hush.c ++++ b/shell/hush.c @@ -3901,8 +3901,6 @@ static void insert_bg_job(struct pipe *p if (G_interactive_fd) @@ -56,14 +53,12 @@ diff -urpN busybox-1.17.1/shell/hush.c busybox-1.17.1-shell/shell/hush.c G.last_exitcode = rcode = EXIT_SUCCESS; debug_printf_exec(": cmd&: exitcode EXIT_SUCCESS\n"); } else { -diff -urpN busybox-1.17.1/shell/hush_test/hush-trap/signal7.right busybox-1.17.1-shell/shell/hush_test/hush-trap/signal7.right ---- busybox-1.17.1/shell/hush_test/hush-trap/signal7.right 1970-01-01 01:00:00.000000000 +0100 -+++ busybox-1.17.1-shell/shell/hush_test/hush-trap/signal7.right 2010-07-25 13:09:32.000000000 +0200 +--- /dev/null ++++ b/shell/hush_test/hush-trap/signal7.right @@ -0,0 +1 @@ +Bug detected: 0 -diff -urpN busybox-1.17.1/shell/hush_test/hush-trap/signal7.tests busybox-1.17.1-shell/shell/hush_test/hush-trap/signal7.tests ---- busybox-1.17.1/shell/hush_test/hush-trap/signal7.tests 1970-01-01 01:00:00.000000000 +0100 -+++ busybox-1.17.1-shell/shell/hush_test/hush-trap/signal7.tests 2010-07-25 13:09:32.000000000 +0200 +--- /dev/null ++++ b/shell/hush_test/hush-trap/signal7.tests @@ -0,0 +1,18 @@ +bug() { + trap : exit @@ -83,9 +78,8 @@ diff -urpN busybox-1.17.1/shell/hush_test/hush-trap/signal7.tests busybox-1.17.1 +&& test x"$REAL_CHILD" = x"$PARENTS_IDEA_OF_CHILD" +echo "Bug detected: $?" +} -diff -urpN busybox-1.17.1/shell/shell_common.c busybox-1.17.1-shell/shell/shell_common.c ---- busybox-1.17.1/shell/shell_common.c 2010-07-06 04:25:54.000000000 +0200 -+++ busybox-1.17.1-shell/shell/shell_common.c 2010-07-27 08:41:43.000000000 +0200 +--- a/shell/shell_common.c ++++ b/shell/shell_common.c @@ -428,9 +428,14 @@ shell_builtin_ulimit(char **argv) val <<= l->factor_shift; } |