<86>May 26 10:17:22 userdel[1109538]: delete user 'rooter'
<86>May 26 10:17:22 userdel[1109538]: removed group 'rooter' owned by 'rooter'
<86>May 26 10:17:22 userdel[1109538]: removed shadow group 'rooter' owned by 'rooter'
<86>May 26 10:17:22 groupadd[1109567]: group added to /etc/group: name=rooter, GID=1877
<86>May 26 10:17:22 groupadd[1109567]: group added to /etc/gshadow: name=rooter
<86>May 26 10:17:22 groupadd[1109567]: new group: name=rooter, GID=1877
<86>May 26 10:17:22 useradd[1109590]: new user: name=rooter, UID=1877, GID=1877, home=/root, shell=/bin/bash
<86>May 26 10:17:22 userdel[1109638]: delete user 'builder'
<86>May 26 10:17:22 userdel[1109638]: removed shadow group 'builder' owned by 'builder'
<86>May 26 10:17:22 groupadd[1109673]: group added to /etc/group: name=builder, GID=1878
<86>May 26 10:17:22 groupadd[1109673]: group added to /etc/gshadow: name=builder
<86>May 26 10:17:22 groupadd[1109673]: new group: name=builder, GID=1878
<86>May 26 10:17:22 useradd[1109700]: new user: name=builder, UID=1878, GID=1878, home=/usr/src, shell=/bin/bash
<13>May 26 10:17:25 rpmi: halibut-1.2-alt1 1506419229 installed
Building target platforms: x86_64
Building for target x86_64
Wrote: /usr/src/in/nosrpm/agedu-0-alt2_15.20171202.8a8299e.nosrc.rpm (w1.gzdio)
Installing agedu-0-alt2_15.20171202.8a8299e.src.rpm
Building target platforms: x86_64
Building for target x86_64
Executing(%prep): /bin/sh -e /usr/src/tmp/rpm-tmp.84773
+ umask 022
+ /bin/mkdir -p /usr/src/RPM/BUILD
+ cd /usr/src/RPM/BUILD
+ cd /usr/src/RPM/BUILD
+ rm -rf agedu-20171202.8a8299e
+ echo 'Source #0 (agedu-20171202.8a8299e.tar.gz):'
Source #0 (agedu-20171202.8a8299e.tar.gz):
+ /bin/gzip -dc /usr/src/RPM/SOURCES/agedu-20171202.8a8299e.tar.gz
+ /bin/tar -xf -
+ cd agedu-20171202.8a8299e
+ /bin/chmod -c -Rf u+rwX,go-w .
+ exit 0
Executing(%build): /bin/sh -e /usr/src/tmp/rpm-tmp.84773
+ umask 022
+ /bin/mkdir -p /usr/src/RPM/BUILD
+ cd /usr/src/RPM/BUILD
+ cd agedu-20171202.8a8299e
+ CFLAGS='-pipe -frecord-gcc-switches -Wall -g -O2'
+ export CFLAGS
+ CXXFLAGS='-pipe -frecord-gcc-switches -Wall -g -O2'
+ export CXXFLAGS
+ FFLAGS='-pipe -frecord-gcc-switches -Wall -g -O2'
+ export FFLAGS
+ FCFLAGS='-pipe -frecord-gcc-switches -Wall -g -O2'
+ export FCFLAGS
+ '[' -n '' ']'
++ printf %s '-pipe -frecord-gcc-switches -Wall -g -O2'
++ sed -r 's/(^|[[:space:]]+)-[^m][^[:space:]]*//g'
+ ASFLAGS=
+ export ASFLAGS
+ export lt_cv_deplibs_check_method=pass_all
+ lt_cv_deplibs_check_method=pass_all
+ readlink -e -- ./configure
+ xargs -ri dirname -- '{}'
+ xargs -ri find '{}' -type f '(' -name config.sub -or -name config.guess ')' -printf '%h/\n'
+ sort -u
+ xargs -rn1 install -pm755 -- /usr/share/gnu-config/config.sub /usr/share/gnu-config/config.guess
+ ./configure --build=x86_64-alt-linux --host=x86_64-alt-linux --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --datadir=/usr/share --includedir=/usr/include --libdir=/usr/lib64 --libexecdir=/usr/lib --localstatedir=/var --sharedstatedir=/var/lib --mandir=/usr/share/man --infodir=/usr/share/info --disable-dependency-tracking --disable-silent-rules --without-included-gettext
configure: WARNING: unrecognized options: --without-included-gettext
checking for a BSD-compatible install... /bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking for x86_64-alt-linux-gcc... x86_64-alt-linux-gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether x86_64-alt-linux-gcc accepts -g... yes
checking for x86_64-alt-linux-gcc option to accept ISO C89... none needed
checking whether x86_64-alt-linux-gcc understands -c and -o together... yes
checking for style of include used by make... GNU
checking dependency style of x86_64-alt-linux-gcc... none
checking for x86_64-alt-linux-gcc option to accept ISO C99... none needed
checking for halibut... yes
checking for dirent.h that defines DIR... yes
checking for library containing opendir... none required
checking how to run the C preprocessor... x86_64-alt-linux-gcc -E
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for ANSI C header files... yes
checking for sys/wait.h that is POSIX.1 compatible... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking assert.h usability... yes
checking assert.h presence... yes
checking for assert.h... yes
checking arpa/inet.h usability... yes
checking arpa/inet.h presence... yes
checking for arpa/inet.h... yes
checking ctype.h usability... yes
checking ctype.h presence... yes
checking for ctype.h... yes
checking errno.h usability... yes
checking errno.h presence... yes
checking for errno.h... yes
checking fcntl.h usability... yes
checking fcntl.h presence... yes
checking for fcntl.h... yes
checking features.h usability... yes
checking features.h presence... yes
checking for features.h... yes
checking fnmatch.h usability... yes
checking fnmatch.h presence... yes
checking for fnmatch.h... yes
checking limits.h usability... yes
checking limits.h presence... yes
checking for limits.h... yes
checking netdb.h usability... yes
checking netdb.h presence... yes
checking for netdb.h... yes
checking netinet/in.h usability... yes
checking netinet/in.h presence... yes
checking for netinet/in.h... yes
checking pwd.h usability... yes
checking pwd.h presence... yes
checking for pwd.h... yes
checking stdarg.h usability... yes
checking stdarg.h presence... yes
checking for stdarg.h... yes
checking stddef.h usability... yes
checking stddef.h presence... yes
checking for stddef.h... yes
checking for stdint.h... (cached) yes
checking stdio.h usability... yes
checking stdio.h presence... yes
checking for stdio.h... yes
checking for stdlib.h... (cached) yes
checking for string.h... (cached) yes
checking sys/ioctl.h usability... yes
checking sys/ioctl.h presence... yes
checking for sys/ioctl.h... yes
checking sys/mman.h usability... yes
checking sys/mman.h presence... yes
checking for sys/mman.h... yes
checking sys/socket.h usability... yes
checking sys/socket.h presence... yes
checking for sys/socket.h... yes
checking syslog.h usability... yes
checking syslog.h presence... yes
checking for syslog.h... yes
checking termios.h usability... yes
checking termios.h presence... yes
checking for termios.h... yes
checking time.h usability... yes
checking time.h presence... yes
checking for time.h... yes
checking for unistd.h... (cached) yes
checking for an ANSI C-conforming const... yes
checking for off_t... yes
checking for size_t... yes
checking whether struct tm is in sys/time.h or time.h... time.h
checking whether closedir returns void... no
checking whether x86_64-alt-linux-gcc needs -traditional... no
checking for stdlib.h... (cached) yes
checking for unistd.h... (cached) yes
checking for sys/param.h... yes
checking for getpagesize... yes
checking for working mmap... yes
checking sys/select.h usability... yes
checking sys/select.h presence... yes
checking for sys/select.h... yes
checking for sys/socket.h... (cached) yes
checking types of arguments for select... int,fd_set *,struct timeval *
checking for strftime... yes
checking for vprintf... yes
checking for _doprnt... no
checking for library containing connect... none required
checking for library containing inet_ntoa... none required
checking for library containing inet_addr... none required
checking for library containing gethostbyname... none required
checking for library containing getaddrinfo... none required
checking for ftruncate... yes
checking for fdopendir... yes
checking for lstat64... yes
checking for stat64... yes
checking for memchr... yes
checking for munmap... yes
checking for select... yes
checking for socket... yes
checking for strcasecmp... yes
checking for strchr... yes
checking for strcspn... yes
checking for strerror... yes
checking for strrchr... yes
checking for strspn... yes
checking for strtoul... yes
checking for strtoull... yes
checking for connect... yes
checking for inet_ntoa... yes
checking for inet_addr... yes
checking for gethostbyname... yes
checking for getaddrinfo... yes
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating config.h
config.status: executing depfiles commands
configure: WARNING: unrecognized options: --without-included-gettext
+ make -j16
make  all-am
make[1]: Entering directory '/usr/src/RPM/BUILD/agedu-20171202.8a8299e'
x86_64-alt-linux-gcc -DHAVE_CONFIG_H -I.     -pipe -frecord-gcc-switches -Wall -g -O2 -c -o licence.o licence.c
make[1]: Leaving directory '/usr/src/RPM/BUILD/agedu-20171202.8a8299e'
make[1]: Entering directory '/usr/src/RPM/BUILD/agedu-20171202.8a8299e'
x86_64-alt-linux-gcc -DHAVE_CONFIG_H -I.     -pipe -frecord-gcc-switches -Wall -g -O2 -c -o fgetline.o fgetline.c
make[1]: Leaving directory '/usr/src/RPM/BUILD/agedu-20171202.8a8299e'
make[1]: Entering directory '/usr/src/RPM/BUILD/agedu-20171202.8a8299e'
x86_64-alt-linux-gcc -DHAVE_CONFIG_H -I.     -pipe -frecord-gcc-switches -Wall -g -O2 -c -o alloc.o alloc.c
make[1]: Leaving directory '/usr/src/RPM/BUILD/agedu-20171202.8a8299e'
make[1]: Entering directory '/usr/src/RPM/BUILD/agedu-20171202.8a8299e'
x86_64-alt-linux-gcc -DHAVE_CONFIG_H -I.     -pipe -frecord-gcc-switches -Wall -g -O2 -c -o du.o du.c
make[1]: Leaving directory '/usr/src/RPM/BUILD/agedu-20171202.8a8299e'
make[1]: Entering directory '/usr/src/RPM/BUILD/agedu-20171202.8a8299e'
x86_64-alt-linux-gcc -DHAVE_CONFIG_H -I.     -pipe -frecord-gcc-switches -Wall -g -O2 -c -o index.o index.c
make[1]: Leaving directory '/usr/src/RPM/BUILD/agedu-20171202.8a8299e'
make[1]: Entering directory '/usr/src/RPM/BUILD/agedu-20171202.8a8299e'
x86_64-alt-linux-gcc -DHAVE_CONFIG_H -I.     -pipe -frecord-gcc-switches -Wall -g -O2 -c -o trie.o trie.c
make[1]: Leaving directory '/usr/src/RPM/BUILD/agedu-20171202.8a8299e'
make[1]: Entering directory '/usr/src/RPM/BUILD/agedu-20171202.8a8299e'
x86_64-alt-linux-gcc -DHAVE_CONFIG_H -I.     -pipe -frecord-gcc-switches -Wall -g -O2 -c -o httpd.o httpd.c
httpd.c: In function 'check_owning_uid':
httpd.c:392:9: warning: variable 'connected' set but not used [-Wunused-but-set-variable]
     int connected;
         ^~~~~~~~~
httpd.c: In function 'run_httpd':
httpd.c:755:15: warning: unused variable 'addrlen' [-Wunused-variable]
     socklen_t addrlen;
               ^~~~~~~
httpd.c:754:24: warning: unused variable 'addr' [-Wunused-variable]
     struct sockaddr_in addr;
                        ^~~~
httpd.c:749:9: warning: unused variable 'ret' [-Wunused-variable]
     int ret, port;
         ^~~
make[1]: Leaving directory '/usr/src/RPM/BUILD/agedu-20171202.8a8299e'
make[1]: Entering directory '/usr/src/RPM/BUILD/agedu-20171202.8a8299e'
x86_64-alt-linux-gcc -DHAVE_CONFIG_H -I.     -pipe -frecord-gcc-switches -Wall -g -O2 -c -o html.o html.c
html.c: In function 'format_string':
html.c:708:30: warning: unused variable 'opt' [-Wunused-variable]
         struct format_option opt = get_format_option(&stepfmt);
                              ^~~
html.c:684:29: warning: unused variable 'parseret' [-Wunused-variable]
     unsigned long indexout, parseret;
                             ^~~~~~~~
make[1]: Leaving directory '/usr/src/RPM/BUILD/agedu-20171202.8a8299e'
make[1]: Entering directory '/usr/src/RPM/BUILD/agedu-20171202.8a8299e'
x86_64-alt-linux-gcc -DHAVE_CONFIG_H -I.     -pipe -frecord-gcc-switches -Wall -g -O2 -c -o agedu.o agedu.c
agedu.c: In function 'main':
agedu.c:1146:7: warning: 'fd' may be used uninitialized in this function [-Wmaybe-uninitialized]
   if (lseek(fd, totalsize-1, SEEK_SET) < 0) {
       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
make[1]: Leaving directory '/usr/src/RPM/BUILD/agedu-20171202.8a8299e'
make[1]: Entering directory '/usr/src/RPM/BUILD/agedu-20171202.8a8299e'
x86_64-alt-linux-gcc  -pipe -frecord-gcc-switches -Wall -g -O2   -o agedu agedu.o du.o alloc.o trie.o index.o html.o httpd.o fgetline.o licence.o  
make[1]: Leaving directory '/usr/src/RPM/BUILD/agedu-20171202.8a8299e'
+ exit 0
Executing(%install): /bin/sh -e /usr/src/tmp/rpm-tmp.21214
+ umask 022
+ /bin/mkdir -p /usr/src/RPM/BUILD
+ cd /usr/src/RPM/BUILD
+ /bin/chmod -Rf u+rwX -- /usr/src/tmp/agedu-buildroot
+ :
+ /bin/rm -rf -- /usr/src/tmp/agedu-buildroot
+ PATH=/usr/libexec/rpm-build:/usr/src/bin:/bin:/usr/bin:/usr/X11R6/bin:/usr/games
+ cd agedu-20171202.8a8299e
+ make install DESTDIR=/usr/src/tmp/agedu-buildroot 'INSTALL=install -p'
make: Entering directory '/usr/src/RPM/BUILD/agedu-20171202.8a8299e'
make[1]: Entering directory '/usr/src/RPM/BUILD/agedu-20171202.8a8299e'
 /bin/mkdir -p '/usr/src/tmp/agedu-buildroot/usr/bin'
  install -p agedu '/usr/src/tmp/agedu-buildroot/usr/bin'
 /bin/mkdir -p '/usr/src/tmp/agedu-buildroot/usr/share/man/man1'
 install -p -m 644 agedu.1 '/usr/src/tmp/agedu-buildroot/usr/share/man/man1'
make[1]: Leaving directory '/usr/src/RPM/BUILD/agedu-20171202.8a8299e'
make: Leaving directory '/usr/src/RPM/BUILD/agedu-20171202.8a8299e'
+ /usr/lib/rpm/brp-alt
Cleaning files in /usr/src/tmp/agedu-buildroot (auto)
Verifying and fixing files in /usr/src/tmp/agedu-buildroot (binconfig,pkgconfig,libtool,desktop,gnuconfig)
Checking contents of files in /usr/src/tmp/agedu-buildroot/ (default)
Compressing files in /usr/src/tmp/agedu-buildroot (auto)
Verifying ELF objects in /usr/src/tmp/agedu-buildroot (arch=normal,fhs=normal,lfs=relaxed,lint=relaxed,rpath=normal,stack=normal,textrel=normal,unresolved=normal)
Hardlinking identical .pyc and .pyo files
Processing files: agedu-0-alt2_15.20171202.8a8299e
Executing(%doc): /bin/sh -e /usr/src/tmp/rpm-tmp.21214
+ umask 022
+ /bin/mkdir -p /usr/src/RPM/BUILD
+ cd /usr/src/RPM/BUILD
+ cd agedu-20171202.8a8299e
+ DOCDIR=/usr/src/tmp/agedu-buildroot/usr/share/doc/agedu-0
+ export DOCDIR
+ rm -rf /usr/src/tmp/agedu-buildroot/usr/share/doc/agedu-0
+ /bin/mkdir -p /usr/src/tmp/agedu-buildroot/usr/share/doc/agedu-0
+ cp -prL LICENCE TODO /usr/src/tmp/agedu-buildroot/usr/share/doc/agedu-0
+ chmod -R go-w /usr/src/tmp/agedu-buildroot/usr/share/doc/agedu-0
+ chmod -R a+rX /usr/src/tmp/agedu-buildroot/usr/share/doc/agedu-0
+ exit 0
Finding Provides (using /usr/lib/rpm/find-provides)
Executing: /bin/sh -e /usr/src/tmp/rpm-tmp.MXZUR1
find-provides: running scripts (debuginfo,lib,pam,perl,pkgconfig,python,shell)
Finding Requires (using /usr/lib/rpm/find-requires)
Executing: /bin/sh -e /usr/src/tmp/rpm-tmp.GSDobP
find-requires: running scripts (cpp,debuginfo,files,lib,pam,perl,pkgconfig,pkgconfiglib,python,rpmlib,shebang,shell,static,symlinks,systemd-services)
Requires: /lib64/ld-linux-x86-64.so.2, libc.so.6(GLIBC_2.14)(64bit), libc.so.6(GLIBC_2.15)(64bit), libc.so.6(GLIBC_2.2.5)(64bit), libc.so.6(GLIBC_2.3)(64bit), libc.so.6(GLIBC_2.3.4)(64bit), libc.so.6(GLIBC_2.4)(64bit), rtld(GNU_HASH)
Finding debuginfo files (using /usr/lib/rpm/find-debuginfo-files)
Executing: /bin/sh -e /usr/src/tmp/rpm-tmp.AhGTYF
Creating agedu-debuginfo package
Processing files: agedu-debuginfo-0-alt2_15.20171202.8a8299e
Finding Provides (using /usr/lib/rpm/find-provides)
Executing: /bin/sh -e /usr/src/tmp/rpm-tmp.YL9zhA
find-provides: running scripts (debuginfo)
Finding Requires (using /usr/lib/rpm/find-requires)
Executing: /bin/sh -e /usr/src/tmp/rpm-tmp.oT7R4x
find-requires: running scripts (debuginfo)
Requires: agedu = 0-alt2_15.20171202.8a8299e, /usr/lib/debug/lib64/ld-linux-x86-64.so.2.debug, debug64(libc.so.6)
Wrote: /usr/src/RPM/RPMS/x86_64/agedu-0-alt2_15.20171202.8a8299e.x86_64.rpm (w2.lzdio)
Wrote: /usr/src/RPM/RPMS/x86_64/agedu-debuginfo-0-alt2_15.20171202.8a8299e.x86_64.rpm (w2.lzdio)
4.34user 4.45system 0:11.16elapsed 78%CPU (0avgtext+0avgdata 50284maxresident)k
0inputs+0outputs (0major+844271minor)pagefaults 0swaps
3.29user 2.47system 0:19.92elapsed 28%CPU (0avgtext+0avgdata 135668maxresident)k
920inputs+0outputs (0major+210821minor)pagefaults 0swaps
--- agedu-0-alt2_15.20171202.8a8299e.x86_64.rpm.repo	2018-05-07 19:25:06.000000000 +0000
+++ agedu-0-alt2_15.20171202.8a8299e.x86_64.rpm.hasher	2024-05-26 10:17:39.103898914 +0000
@@ -15,3 +15,3 @@
 Provides: agedu = 0-alt2_15.20171202.8a8299e
-File: /usr/bin/agedu	100755	root:root	93b33c10541e704e4a01152cf4049519	
+File: /usr/bin/agedu	100755	root:root	e98975c58be00fe13cc07b43f1d88760	
 File: /usr/share/doc/agedu-0	40755	root:root		
@@ -20,2 +20,2 @@
 File: /usr/share/man/man1/agedu.1.xz	100644	root:root	6501135f2d65cb9e0d6eead0e7c2447c	
-RPMIdentity: f2e8ca0e4ae35ed19cab07e4796ececb422dcadee563091bf3201e2e66a43c671a7ba92b59d26cfa1e933dbca2a625977cf33513ac2a8869e7bd4f7927a29565
+RPMIdentity: b955c0dd3b32625c0f95f5577b75f75ccca4c460b681bd540757b8c58d6bc2707f8c0093c4d032ec281bb3416c2ca3919f9a644e2632b15883eebdfe52624a48
--- agedu-debuginfo-0-alt2_15.20171202.8a8299e.x86_64.rpm.repo	2018-05-07 19:25:06.000000000 +0000
+++ agedu-debuginfo-0-alt2_15.20171202.8a8299e.x86_64.rpm.hasher	2024-05-26 10:17:39.190900573 +0000
@@ -1,4 +1,4 @@
-/usr/lib/debug/.build-id/c3	40755	root:root	
-/usr/lib/debug/.build-id/c3/f34dd5eb272b4c74c383477e0c6b0dfd826b04	120777	root:root	../../../../bin/agedu
-/usr/lib/debug/.build-id/c3/f34dd5eb272b4c74c383477e0c6b0dfd826b04.debug	120777	root:root	../../usr/bin/agedu.debug
+/usr/lib/debug/.build-id/41	40755	root:root	
+/usr/lib/debug/.build-id/41/ad26d07a24f888def2e2de92630ba6194982e0	120777	root:root	../../../../bin/agedu
+/usr/lib/debug/.build-id/41/ad26d07a24f888def2e2de92630ba6194982e0.debug	120777	root:root	../../usr/bin/agedu.debug
 /usr/lib/debug/usr/bin/agedu.debug	100644	root:root	
@@ -27,6 +27,6 @@
 Provides: agedu-debuginfo = 0-alt2_15.20171202.8a8299e
-File: /usr/lib/debug/.build-id/c3	40755	root:root		
-File: /usr/lib/debug/.build-id/c3/f34dd5eb272b4c74c383477e0c6b0dfd826b04	120777	root:root		../../../../bin/agedu
-File: /usr/lib/debug/.build-id/c3/f34dd5eb272b4c74c383477e0c6b0dfd826b04.debug	120777	root:root		../../usr/bin/agedu.debug
-File: /usr/lib/debug/usr/bin/agedu.debug	100644	root:root	7812392906aa4d1b0d95f33ebf0fbda3	
+File: /usr/lib/debug/.build-id/41	40755	root:root		
+File: /usr/lib/debug/.build-id/41/ad26d07a24f888def2e2de92630ba6194982e0	120777	root:root		../../../../bin/agedu
+File: /usr/lib/debug/.build-id/41/ad26d07a24f888def2e2de92630ba6194982e0.debug	120777	root:root		../../usr/bin/agedu.debug
+File: /usr/lib/debug/usr/bin/agedu.debug	100644	root:root	aa76b45a0ffece1dbc12f5ab04dfc876	
 File: /usr/src/debug/agedu-20171202.8a8299e	40755	root:root		
@@ -49,2 +49,2 @@
 File: /usr/src/debug/agedu-20171202.8a8299e/trie.h	100644	root:root	d102de2ec60820700c07779e95f533d9	
-RPMIdentity: e8edca9ae5b2a5d9f30b649faaaac932261afb94d49dc62f038002548bc84e1142cfab33afc5650d07a02782c0b23a93c396189ffa133b4d31e238f4403495ea
+RPMIdentity: e272e700b3cfd9059df7470b2ff1b29a81dfacf25c0d03cdf9e49b2fd44ce7f01166cb5ce557bbd031046dd9ffe56e32ec7c23e8b5c0967fb43056d15e45ce1f