<86>Jan 18 09:21:22 userdel[41857]: delete user 'rooter' <86>Jan 18 09:21:22 groupadd[42027]: group added to /etc/group: name=rooter, GID=642 <86>Jan 18 09:21:22 groupadd[42027]: group added to /etc/gshadow: name=rooter <86>Jan 18 09:21:22 groupadd[42027]: new group: name=rooter, GID=642 <86>Jan 18 09:21:22 useradd[42069]: new user: name=rooter, UID=642, GID=642, home=/root, shell=/bin/bash <86>Jan 18 09:21:22 userdel[42109]: delete user 'builder' <86>Jan 18 09:21:22 userdel[42109]: removed group 'builder' owned by 'builder' <86>Jan 18 09:21:22 userdel[42109]: removed shadow group 'builder' owned by 'builder' <86>Jan 18 09:21:22 groupadd[42222]: group added to /etc/group: name=builder, GID=643 <86>Jan 18 09:21:22 groupadd[42222]: group added to /etc/gshadow: name=builder <86>Jan 18 09:21:22 groupadd[42222]: new group: name=builder, GID=643 <86>Jan 18 09:21:22 useradd[42321]: new user: name=builder, UID=643, GID=643, home=/usr/src, shell=/bin/bash /usr/src/in/srpm/scponly-4.8-alt2.qa1.src.rpm: The use of such a license name is ambiguous: GPL Building target platforms: i586 Building for target i586 Wrote: /usr/src/in/nosrpm/scponly-4.8-alt2.qa1.nosrc.rpm (w1.gzdio) Installing scponly-4.8-alt2.qa1.src.rpm Building target platforms: i586 Building for target i586 Executing(%prep): /bin/sh -e /usr/src/tmp/rpm-tmp.7985 + umask 022 + /bin/mkdir -p /usr/src/RPM/BUILD + cd /usr/src/RPM/BUILD + cd /usr/src/RPM/BUILD + rm -rf scponly-4.8 + echo 'Source #0 (scponly-4.8.tgz):' Source #0 (scponly-4.8.tgz): + /bin/gzip -dc /usr/src/RPM/SOURCES/scponly-4.8.tgz + /bin/tar -xf - + cd scponly-4.8 + /bin/chmod -c -Rf u+rwX,go-w . mode of './CHANGELOG' changed from 0654 (rw-r-xr--) to 0754 (rwxr-xr--) mode of './helper.c' changed from 0654 (rw-r-xr--) to 0754 (rwxr-xr--) mode of './scponly.h' changed from 0654 (rw-r-xr--) to 0754 (rwxr-xr--) mode of './scponly.8.alternate_manpage' changed from 0654 (rw-r-xr--) to 0754 (rwxr-xr--) mode of './scponly.8' changed from 0654 (rw-r-xr--) to 0754 (rwxr-xr--) mode of './install-sh' changed from 0654 (rw-r-xr--) to 0754 (rwxr-xr--) mode of './scponly.c' changed from 0654 (rw-r-xr--) to 0754 (rwxr-xr--) mode of './configure.in' changed from 0654 (rw-r-xr--) to 0754 (rwxr-xr--) mode of './config.h.in' changed from 0654 (rw-r-xr--) to 0754 (rwxr-xr--) mode of './aclocal.m4' changed from 0654 (rw-r-xr--) to 0754 (rwxr-xr--) mode of './TODO' changed from 0654 (rw-r-xr--) to 0754 (rwxr-xr--) mode of './README' changed from 0654 (rw-r-xr--) to 0754 (rwxr-xr--) mode of './Makefile.in' changed from 0654 (rw-r-xr--) to 0754 (rwxr-xr--) mode of './INSTALL' changed from 0654 (rw-r-xr--) to 0754 (rwxr-xr--) mode of './COPYING' changed from 0654 (rw-r-xr--) to 0754 (rwxr-xr--) mode of './CONTRIB' changed from 0654 (rw-r-xr--) to 0754 (rwxr-xr--) mode of './AUTHOR' changed from 0654 (rw-r-xr--) to 0754 (rwxr-xr--) + echo 'Patch #0 (scponly-install.patch):' Patch #0 (scponly-install.patch): + /usr/bin/patch -p1 patching file Makefile.in + echo 'Patch #1 (scponly-4.8-elif-gcc44.patch):' Patch #1 (scponly-4.8-elif-gcc44.patch): + /usr/bin/patch -p1 patching file helper.c + /bin/cp -p Makefile.in Makefile.in.orig + /usr/bin/subst 's,${INSTALL} -o 0 -g 0,${INSTALL},' Makefile.in + exit 0 Executing(%build): /bin/sh -e /usr/src/tmp/rpm-tmp.31291 + umask 022 + /bin/mkdir -p /usr/src/RPM/BUILD + cd /usr/src/RPM/BUILD + cd scponly-4.8 + CFLAGS='-pipe -frecord-gcc-switches -Wall -g -O2 -march=i586 -mtune=generic' + export CFLAGS + CXXFLAGS='-pipe -frecord-gcc-switches -Wall -g -O2 -march=i586 -mtune=generic' + export CXXFLAGS + FFLAGS='-pipe -frecord-gcc-switches -Wall -g -O2 -march=i586 -mtune=generic' + export FFLAGS + FCFLAGS='-pipe -frecord-gcc-switches -Wall -g -O2 -march=i586 -mtune=generic' + export FCFLAGS + '[' -n '' ']' ++ sed -r 's/(^|[[:space:]]+)-[^m][^[:space:]]*//g' ++ printf %s '-pipe -frecord-gcc-switches -Wall -g -O2 -march=i586 -mtune=generic' + ASFLAGS=' -march=i586 -mtune=generic' + export ASFLAGS + export lt_cv_deplibs_check_method=pass_all + lt_cv_deplibs_check_method=pass_all + xargs -ri find '{}' -type f '(' -name config.sub -or -name config.guess ')' -printf '%h/\n' + xargs -ri dirname -- '{}' + readlink -e -- ./configure + sort -u + xargs -rn1 install -pm755 -- /usr/share/gnu-config/config.sub /usr/share/gnu-config/config.guess + ./configure --build=i586-alt-linux --host=i586-alt-linux --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --datadir=/usr/share --includedir=/usr/include --libdir=/usr/lib --libexecdir=/usr/lib --localstatedir=/var/lib --sharedstatedir=/var/lib --mandir=/usr/share/man --infodir=/usr/share/info --disable-dependency-tracking --disable-silent-rules --without-included-gettext --with-sftp-server=/usr/lib/openssh/sftp-server scponly_PROG_PASSWD=/usr/bin/passwd scponly_PROG_USERADD=/usr/sbin/useradd scponly_PROG_UNISON=/usr/bin/unison scponly_PROG_RSYNC=/usr/bin/rsync scponly_PROG_SVNSERV=/usr/bin/svnserve scponly_PROG_SVN=/usr/bin/svn scponly_PROG_SCP=/usr/bin/scp scponly_PROG_SFTP_SERVER=/usr/lib/openssh/sftp-server --enable-wildcards --enable-gftp-compat --enable-winscp-compat --enable-scp-compat --enable-unison-compat --enable-rsync-compat --enable-chrooted-binary --enable-svn-compat --enable-svnserv-compat --enable-passwd-compat --enable-restrictive-names checking build system type... i586-alt-linux-gnu checking host system type... i586-alt-linux-gnu checking for i586-alt-linux-gcc... i586-alt-linux-gcc checking for C compiler default output file name... a.out checking whether the C compiler works... yes checking whether we are cross compiling... no checking for suffix of executables... checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether i586-alt-linux-gcc accepts -g... yes checking for i586-alt-linux-gcc option to accept ANSI C... none needed checking for a BSD-compatible install... /bin/install -c checking whether ln -s works... yes checking for cut... /bin/cut checking for grep... /bin/grep checking for sort... /bin/sort checking for ldd... /usr/bin/ldd checking for useradd... no checking for chown... /bin/chown checking for chmod... /bin/chmod checking for dirname... /usr/bin/dirname checking for id... /usr/bin/id checking for pw... no checking for rm... /bin/rm checking for pwd_mkdb... no configure: enabling core WinSCP and Vanilla SCP binaries... checking for sftp-server... /usr/lib/openssh/sftp-server checking for ls... /bin/ls checking for scp... /usr/bin/scp checking for rm... /bin/rm checking for ln... /bin/ln checking for mv... /bin/mv checking for chmod... /bin/chmod checking for chown... /bin/chown checking for chgrp... /bin/chgrp checking for mkdir... /bin/mkdir checking for rmdir... /bin/rmdir configure: enabling WinSCP compatability... checking for pwd... /bin/pwd checking for groups... /usr/bin/groups checking for id... /usr/bin/id checking for echo... /bin/echo configure: WARNING: read the SECURITY document before enabling unison compatibility configure: enabling unison compatability... checking for unison... /usr/bin/unison configure: WARNING: read the SECURITY document before enabling rsync compatibility configure: enabling rsync compatability... checking for rsync... /usr/bin/rsync configure: WARNING: read the SECURITY document before enabling svnserv compatibility configure: enabling svnserv compatibility... checking for svnserve... /usr/bin/svnserve configure: WARNING: read the SECURITY document before enabling svn compatibility configure: enabling subversion compatability... checking for svn... /usr/bin/svn configure: enabling passwd compatability... checking for passwd... /usr/bin/passwd configure: enabling SFTP compatability... checking for sftp-server... /usr/lib/openssh/sftp-server checking how to run the C preprocessor... i586-alt-linux-gcc -E checking for egrep... grep -E checking for ANSI C header files... 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 for stdlib.h... (cached) yes checking for string.h... (cached) yes checking syslog.h usability... yes checking syslog.h presence... yes checking for syslog.h... yes checking for unistd.h... (cached) yes checking wordexp.h usability... yes checking wordexp.h presence... yes checking for wordexp.h... yes checking glob.h usability... yes checking glob.h presence... yes checking for glob.h... yes checking libgen.h usability... yes checking libgen.h presence... yes checking for libgen.h... yes checking getopt.h usability... yes checking getopt.h presence... yes checking for getopt.h... yes checking for an ANSI C-conforming const... yes checking for inline... inline checking for working alloca.h... yes checking for alloca... yes checking for malloc... yes checking for atexit... yes checking for bzero... yes checking for strchr... yes checking for strerror... yes checking for glob... yes checking for wordexp... yes checking for strspn... yes checking for basename... yes checking for getopt... yes checking whether optreset is declared... no configure: creating ./config.status config.status: creating Makefile config.status: creating setup_chroot.sh config.status: creating config.h + make -j8 make: Entering directory '/usr/src/RPM/BUILD/scponly-4.8' i586-alt-linux-gcc -pipe -frecord-gcc-switches -Wall -g -O2 -march=i586 -mtune=generic -I. -I. -DHAVE_CONFIG_H -DDEBUGFILE='"/etc/scponly/debuglevel"' -o groups groups.c make: Leaving directory '/usr/src/RPM/BUILD/scponly-4.8' make: Entering directory '/usr/src/RPM/BUILD/scponly-4.8' i586-alt-linux-gcc -pipe -frecord-gcc-switches -Wall -g -O2 -march=i586 -mtune=generic -I. -I. -DHAVE_CONFIG_H -DDEBUGFILE='"/etc/scponly/debuglevel"' -o scponly.o -c scponly.c scponly.c:33:1: warning: missing braces around initializer [-Wmissing-braces] 33 | { | ^ scponly.c:145:1: warning: missing braces around initializer [-Wmissing-braces] 145 | { | ^ scponly.c: In function 'main': scponly.c:332:9: warning: bitwise comparison always evaluates to false [-Wtautological-compare] 332 | if (0 == (homedirstat.st_mode | S_IFDIR)) | ^~ In file included from scponly.c:19: scponly.c: At top level: scponly.h:42:14: warning: inline function 'strend' declared but never defined 42 | inline char *strend (char *, char *); | ^~~~~~ scponly.h:41:14: warning: inline function 'strbeg' declared but never defined 41 | inline char *strbeg (char *, char *); | ^~~~~~ scponly.c: In function 'main': scponly.c:226:3: warning: ignoring return value of 'fscanf' declared with attribute 'warn_unused_result' [-Wunused-result] 226 | fscanf(debugfile,"%u",&debuglevel); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ make: Leaving directory '/usr/src/RPM/BUILD/scponly-4.8' make: Entering directory '/usr/src/RPM/BUILD/scponly-4.8' i586-alt-linux-gcc -pipe -frecord-gcc-switches -Wall -g -O2 -march=i586 -mtune=generic -I. -I. -DHAVE_CONFIG_H -DDEBUGFILE='"/etc/scponly/debuglevel"' -o helper.o -c helper.c helper.c: In function 'strip_vector': helper.c:86:18: warning: argument to 'sizeof' in 'bzero' call is the same expression as the destination; did you mean to dereference it? [-Wsizeof-pointer-memaccess] 86 | bzero(dav,sizeof(dav)); | ^ helper.c: In function 'mysetenv': helper.c:565:14: warning: array subscript has type 'char' [-Wchar-subscripts] 565 | if ((safeenv[count] = strdup(buff))) { | ^ helper.c:566:11: warning: array subscript has type 'char' [-Wchar-subscripts] 566 | safeenv[++count] = NULL; | ^~~~~~~ In file included from /usr/include/string.h:532, from helper.c:5: In function 'strncpy', inlined from 'strend' at helper.c:455:3: /usr/include/bits/string_fortified.h:91:10: warning: '__builtin_strncpy' specified bound depends on the length of the source argument [-Wstringop-overflow=] 91 | return __builtin___strncpy_chk (__dest, __src, __len, __bos (__dest)); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ helper.c: In function 'strend': helper.c:440:7: note: length computed here 440 | blen=strlen(big); | ^~~~~~~~~~~ In file included from /usr/include/string.h:532, from helper.c:5: In function 'strncpy', inlined from 'get_uservar' at helper.c:525:2: /usr/include/bits/string_fortified.h:91:10: warning: '__builtin_strncpy' specified bound 32 equals destination size [-Wstringop-truncation] 91 | return __builtin___strncpy_chk (__dest, __src, __len, __bos (__dest)); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In function 'strncpy', inlined from 'get_uservar' at helper.c:526:2: /usr/include/bits/string_fortified.h:91:10: warning: '__builtin_strncpy' specified bound 4096 equals destination size [-Wstringop-truncation] 91 | return __builtin___strncpy_chk (__dest, __src, __len, __bos (__dest)); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ make: Leaving directory '/usr/src/RPM/BUILD/scponly-4.8' make: Entering directory '/usr/src/RPM/BUILD/scponly-4.8' i586-alt-linux-gcc -pipe -frecord-gcc-switches -Wall -g -O2 -march=i586 -mtune=generic -I. -I. -DHAVE_CONFIG_H -DDEBUGFILE='"/etc/scponly/debuglevel"' -o scponly scponly.o helper.o make: Leaving directory '/usr/src/RPM/BUILD/scponly-4.8' + exit 0 Executing(%install): /bin/sh -e /usr/src/tmp/rpm-tmp.56051 + umask 022 + /bin/mkdir -p /usr/src/RPM/BUILD + cd /usr/src/RPM/BUILD + /bin/chmod -Rf u+rwX -- /usr/src/tmp/scponly-buildroot + : + /bin/rm -rf -- /usr/src/tmp/scponly-buildroot + PATH=/usr/libexec/rpm-build:/usr/src/bin:/bin:/usr/bin:/usr/X11R6/bin:/usr/games + cd scponly-4.8 + /usr/bin/make 'INSTALL=/usr/libexec/rpm-build/install -p' prefix=/usr/src/tmp/scponly-buildroot/usr exec_prefix=/usr/src/tmp/scponly-buildroot/usr bindir=/usr/src/tmp/scponly-buildroot/usr/bin sbindir=/usr/src/tmp/scponly-buildroot/usr/sbin sysconfdir=/usr/src/tmp/scponly-buildroot/etc datadir=/usr/src/tmp/scponly-buildroot/usr/share includedir=/usr/src/tmp/scponly-buildroot/usr/include libdir=/usr/src/tmp/scponly-buildroot/usr/lib libexecdir=/usr/src/tmp/scponly-buildroot/usr/lib localstatedir=/usr/src/tmp/scponly-buildroot/var/lib sharedstatedir=/usr/src/tmp/scponly-buildroot/var/lib mandir=/usr/src/tmp/scponly-buildroot/usr/share/man infodir=/usr/src/tmp/scponly-buildroot/usr/share/info install CONFDIR=/usr/src/tmp/scponly-buildroot/etc/scponly make: Entering directory '/usr/src/RPM/BUILD/scponly-4.8' echo "0" > debuglevel /usr/libexec/rpm-build/install -p -d /usr/src/tmp/scponly-buildroot/usr/bin /usr/libexec/rpm-build/install -p -d /usr/src/tmp/scponly-buildroot/usr/share/man/man8 /usr/libexec/rpm-build/install -p -d /usr/src/tmp/scponly-buildroot/etc/scponly /usr/libexec/rpm-build/install -p scponly /usr/src/tmp/scponly-buildroot/usr/bin/scponly /usr/libexec/rpm-build/install -p -m 0644 scponly.8 /usr/src/tmp/scponly-buildroot/usr/share/man/man8/scponly.8 /usr/libexec/rpm-build/install -p -m 0644 debuglevel /usr/src/tmp/scponly-buildroot/etc/scponly/debuglevel if test "xscponlyc" != "x"; then \ /usr/libexec/rpm-build/install -p -d /usr/src/tmp/scponly-buildroot/usr/sbin; \ rm -f /usr/src/tmp/scponly-buildroot/usr/sbin/scponlyc; \ cp scponly scponlyc; \ /usr/libexec/rpm-build/install -p -m 4755 scponlyc /usr/src/tmp/scponly-buildroot/usr/sbin/scponlyc; \ fi make: Leaving directory '/usr/src/RPM/BUILD/scponly-4.8' + /usr/lib/rpm/brp-alt Cleaning files in /usr/src/tmp/scponly-buildroot (auto) mode of './usr/sbin/scponlyc' changed from 4755 (rwsr-xr-x) to 4711 (rws--x--x) Verifying and fixing files in /usr/src/tmp/scponly-buildroot (binconfig,pkgconfig,libtool,desktop,gnuconfig) Checking contents of files in /usr/src/tmp/scponly-buildroot/ (default) Compressing files in /usr/src/tmp/scponly-buildroot (auto) Verifying ELF objects in /usr/src/tmp/scponly-buildroot (arch=normal,fhs=normal,lfs=relaxed,lint=relaxed,rpath=normal,stack=normal,textrel=normal,unresolved=normal) verify-elf: WARNING: ./usr/sbin/scponlyc: uses non-LFS functions: __xstat fopen glob globfree verify-elf: WARNING: ./usr/bin/scponly: uses non-LFS functions: __xstat fopen glob globfree Hardlinking identical .pyc and .pyo files Processing files: scponly-4.8-alt2.qa1 Executing(%doc): /bin/sh -e /usr/src/tmp/rpm-tmp.96938 + umask 022 + /bin/mkdir -p /usr/src/RPM/BUILD + cd /usr/src/RPM/BUILD + cd scponly-4.8 + DOCDIR=/usr/src/tmp/scponly-buildroot/usr/share/doc/scponly-4.8 + export DOCDIR + rm -rf /usr/src/tmp/scponly-buildroot/usr/share/doc/scponly-4.8 + /bin/mkdir -p /usr/src/tmp/scponly-buildroot/usr/share/doc/scponly-4.8 + cp -prL AUTHOR BUILDING-JAILS.TXT CHANGELOG CONTRIB COPYING README TODO build_extras/setup_chroot.sh.RH9 /usr/src/tmp/scponly-buildroot/usr/share/doc/scponly-4.8 + chmod -R go-w /usr/src/tmp/scponly-buildroot/usr/share/doc/scponly-4.8 + chmod -R a+rX /usr/src/tmp/scponly-buildroot/usr/share/doc/scponly-4.8 + exit 0 Finding Provides (using /usr/lib/rpm/find-provides) Executing: /bin/sh -e /usr/src/tmp/rpm-tmp.V0skn6 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.IEbXZ7 find-requires: running scripts (cpp,debuginfo,files,lib,pam,perl,pkgconfig,pkgconfiglib,python,rpmlib,shebang,shell,static,symlinks,systemd-services) Finding Requires(post) (using /usr/lib/rpm/find-scriptlet-requires) Executing: /bin/sh -e /usr/src/tmp/rpm-tmp.xUWi56 Finding Requires(preun) (using /usr/lib/rpm/find-scriptlet-requires) Executing: /bin/sh -e /usr/src/tmp/rpm-tmp.JwExf6 Requires: /lib/ld-linux.so.2, libc.so.6(GLIBC_2.0), libc.so.6(GLIBC_2.1), libc.so.6(GLIBC_2.1.3), libc.so.6(GLIBC_2.27), libc.so.6(GLIBC_2.3.4), libc.so.6(GLIBC_2.4), libc.so.6(GLIBC_2.7), rtld(GNU_HASH) Requires(interp): /bin/sh Requires(post): /bin/sh, /bin/grep Requires(preun): /bin/sh, /bin/cat, /bin/grep, /bin/rm Finding debuginfo files (using /usr/lib/rpm/find-debuginfo-files) Executing: /bin/sh -e /usr/src/tmp/rpm-tmp.P4JvK9 Creating scponly-debuginfo package Processing files: scponly-debuginfo-4.8-alt2.qa1 Finding Provides (using /usr/lib/rpm/find-provides) Executing: /bin/sh -e /usr/src/tmp/rpm-tmp.Q7JkW9 find-provides: running scripts (debuginfo) Finding Requires (using /usr/lib/rpm/find-requires) Executing: /bin/sh -e /usr/src/tmp/rpm-tmp.X1FnE7 find-requires: running scripts (debuginfo) Requires: scponly = 4.8-alt2.qa1, /usr/lib/debug/lib/ld-linux.so.2.debug, debug(libc.so.6) Wrote: /usr/src/RPM/RPMS/i586/scponly-4.8-alt2.qa1.i586.rpm (w2.lzdio) Wrote: /usr/src/RPM/RPMS/i586/scponly-debuginfo-4.8-alt2.qa1.i586.rpm (w2.lzdio) 5.76user 1.07system 0:24.05elapsed 28%CPU (0avgtext+0avgdata 24584maxresident)k 0inputs+0outputs (0major+642359minor)pagefaults 0swaps /.out/scponly-4.8-alt2.qa1.i586.rpm: The use of such a license name is ambiguous: GPL /.out/scponly-debuginfo-4.8-alt2.qa1.i586.rpm: The use of such a license name is ambiguous: GPL 7.34user 3.11system 0:33.12elapsed 31%CPU (0avgtext+0avgdata 24584maxresident)k 0inputs+0outputs (0major+826071minor)pagefaults 0swaps --- scponly-4.8-alt2.qa1.i586.rpm.repo 2013-04-18 15:12:40.000000000 +0000 +++ scponly-4.8-alt2.qa1.i586.rpm.hasher 2021-01-18 09:21:52.058537115 +0000 @@ -13,4 +13,3 @@ /usr/share/doc/scponly-4.8/setup_chroot.sh.RH9 100755 -/usr/share/man/man8/scponly.8.gz 100644 -Requires: /bin/sh +/usr/share/man/man8/scponly.8.xz 100644 Requires: /bin/sh @@ -19,2 +18,4 @@ Requires: libc.so.6(GLIBC_2.1) +Requires: libc.so.6(GLIBC_2.1.3) +Requires: libc.so.6(GLIBC_2.27) Requires: libc.so.6(GLIBC_2.3.4) @@ -23,3 +24,2 @@ Requires: rtld(GNU_HASH) -Requires: /bin/grep Requires: /bin/cat