Date: Tue, 14 Jul 2009 09:08:16 +0000 (UTC) From: "Bjoern A. Zeeb" <bz@FreeBSD.org> To: Ed Schouten <ed@freebsd.org> Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, FreBSD Release Engineering Team <re@FreeBSD.org> Subject: Re: svn commit: r195637 - head/lib/libc/stdio Message-ID: <20090714090127.K245@maildrop.int.zabbadoz.net> In-Reply-To: <d04e16b70907132321x4eb9a071ga04effaeaed771de@mail.gmail.com> References: <200907121309.n6CD9iXj085206@svn.freebsd.org> <d04e16b70907132321x4eb9a071ga04effaeaed771de@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, 13 Jul 2009, Navdeep Parhar wrote: > On Sun, Jul 12, 2009 at 6:09 AM, Ed Schouten<ed@freebsd.org> wrote: >> Author: ed >> Date: Sun Jul 12 13:09:43 2009 >> New Revision: 195637 >> URL: http://svn.freebsd.org/changeset/base/195637 >> >> Log: >> Fix fwrite() to return 0 when size or nmemb are zero. > > Hello Ed, > > This breaks buildworld. This change itself compiles, but once the > system's libc has this fwrite (say, after an installworld), buildworld > on that system will fail. mklocale does not like fwrite returning 0. > And who knows if there are other programs like this out there... > > .... > mklocale -o am_ET.UTF-8.out /usr/src/share/mklocale/am_ET.UTF-8.src > am_ET.UTF-8.out: Inappropriate ioctl for device > *** Error code 1 > Stop in /usr/src/share/mklocale. > .... > > > I've attached a patch to mklocale that will fix the problem. As I hit this last night on a reference machine and someone else did, I did a quick check for fwrite uses; I already removed a bit but not all of the noise: src/ > svngrep -r fwrite . > ../tmp/fwrite.files src/ > cd ../tmp tmp/ > grep -v '(void)fwrite' fwrite.files | grep -v zyd_rfwrite | grep -v cfwrite8 | grep -v bufwrite | grep -v ObsoleteFiles.inc | grep -v bpfwrite | grep -v fread.3 | grep -v Makefile | grep -v Symbol.map: | cut -d: -f1 | sed -e 's,\(.*\)/[^/]*,\1,g' | sort | uniq -c 2 ./bin/ed 2 ./bin/sh 1 ./cddl/contrib/opensolaris/cmd/sgs/tools/common 1 ./contrib/amd/amd 1 ./contrib/amd/fsinfo 5 ./contrib/amd/libamu 1 ./contrib/bc 1 ./contrib/bc/dc 2 ./contrib/bind9/bin/dnssec 3 ./contrib/bind9/lib/dns 1 ./contrib/bind9/lib/isc/unix 8 ./contrib/binutils/bfd 1 ./contrib/binutils/bfd/doc 13 ./contrib/binutils/binutils 1 ./contrib/binutils/gas/config 1 ./contrib/binutils/ld 1 ./contrib/binutils/libiberty 5 ./contrib/bzip2 2 ./contrib/com_err 9 ./contrib/cpio/lib 2 ./contrib/csup 3 ./contrib/cvs/diff 34 ./contrib/cvs/src 3 ./contrib/diff 3 ./contrib/diff/lib 15 ./contrib/diff/src 1 ./contrib/file 69 ./contrib/gcc 1 ./contrib/gcc/cp 31 ./contrib/gcclibs/libcpp 1 ./contrib/gcclibs/libiberty 1 ./contrib/gcclibs/libiberty/testsuite 6 ./contrib/gcclibs/libmudflap 5 ./contrib/gdb/gdb 1 ./contrib/gdb/gdb/cli 2 ./contrib/gnu-sort 1 ./contrib/gnu-sort/src 2 ./contrib/groff 1 ./contrib/groff/contrib/groffer 1 ./contrib/groff/contrib/pdfmark 1 ./contrib/groff/src/devices/grolbp 2 ./contrib/groff/src/preproc/html 1 ./contrib/groff/src/preproc/tbl 11 ./contrib/groff/src/utils/indxbib 1 ./contrib/groff/src/utils/lkbib 1 ./contrib/groff/src/utils/lookbib 2 ./contrib/ipfilter/tools 3 ./contrib/less 5 ./contrib/libf2c/libI77 3 ./contrib/libobjc 1 ./contrib/libpcap 1 ./contrib/libpcap/lbl 2 ./contrib/libreadline 5 ./contrib/libstdc++ 1 ./contrib/libstdc++/include/c 1 ./contrib/libstdc++/include/c_compatibility 2 ./contrib/libstdc++/include/c_std 1 ./contrib/libstdc++/include/ext 1 ./contrib/lukemftp/src 1 ./contrib/ncurses/man 1 ./contrib/ncurses/ncurses 2 ./contrib/ncurses/ncurses/base 1 ./contrib/ncurses/ncurses/tinfo 1 ./contrib/ncurses/progs 2 ./contrib/ntp/sntp 1 ./contrib/nvi/ex 2 ./contrib/one-true-awk 1 ./contrib/openbsm/bin/auditreduce 3 ./contrib/opie/libmissing 7 ./contrib/pf/pflogd 1 ./contrib/sendmail/libmilter 1 ./contrib/sendmail/libmilter/docs 4 ./contrib/sendmail/libsm 1 ./contrib/sendmail/mail.local 4 ./contrib/sendmail/src 1 ./contrib/tcpdump 1 ./contrib/tcpdump/lbl 1 ./contrib/telnet/telnet 1 ./contrib/texinfo 4 ./contrib/texinfo/info 6 ./contrib/texinfo/makeinfo 5 ./contrib/texinfo/util 1 ./contrib/traceroute/lbl 1 ./contrib/wpa/src/eap_peer 1 ./contrib/wpa/src/utils 1 ./crypto/heimdal/appl/ftp/ftpd 1 ./crypto/heimdal/appl/telnet/telnet 6 ./crypto/heimdal/lib/asn1 2 ./crypto/heimdal/lib/com_err 5 ./crypto/heimdal/lib/hx509 2 ./crypto/heimdal/lib/krb5 1 ./crypto/heimdal/lib/roken 4 ./crypto/heimdal/lib/sl 1 ./crypto/openssl/crypto/asn1 5 ./crypto/openssl/crypto/bio 13 ./crypto/openssl/crypto/des 1 ./crypto/openssl/crypto/err 1 ./crypto/openssl/crypto/pkcs12 1 ./crypto/openssl/crypto/pkcs7 1 ./crypto/openssl/crypto/rand 1 ./crypto/openssl/crypto/rc4 2 ./crypto/openssl/crypto/threads 2 ./crypto/openssl/demos/bio 4 ./crypto/openssl/demos/eay 3 ./crypto/openssl/doc/crypto 1 ./crypto/openssl/fips/dsa 1 ./crypto/openssl/fips/sha 1 ./crypto/openssl/ssl 1 ./crypto/openssl/test 1 ./games/fortune/fortune 3 ./games/fortune/strfile 2 ./gnu/usr.bin/cc/cc_tools 2 ./gnu/usr.bin/cc/libcpp 1 ./gnu/usr.bin/cpio 5 ./gnu/usr.bin/grep 3 ./gnu/usr.bin/rcs/lib 1 ./gnu/usr.bin/sort 1 ./include 1 ./lib/libarchive 3 ./lib/libc/rpc/PSD.doc 6 ./lib/libc/stdio 3 ./lib/libc/xdr 2 ./lib/libfetch 5 ./lib/libz 1 ./libexec/bootpd 1 ./libexec/bootpd/tools/bootpef 1 ./sbin/ldconfig 1 ./sbin/md5 2 ./sbin/quotacheck 9 ./sbin/restore 3 ./sbin/savecore 1 ./sbin/sysctl 3 ./secure/lib/libcrypto/man 2 ./secure/usr.bin/bdes 1 ./share/doc/papers/sysperf 1 ./share/doc/psd/04.uprog 1 ./share/syscons/scrnmaps 1 ./sys/boot/arm/ixp425/boot2 7 ./sys/boot/ficl 1 ./sys/boot/forth 1 ./sys/contrib/dev/acpica/common 2 ./sys/contrib/dev/acpica/compiler 1 ./tools/test/ppsapi 2 ./usr.bin/at 4 ./usr.bin/bsdiff/bsdiff 5 ./usr.bin/colldef 8 ./usr.bin/compress 4 ./usr.bin/compress/doc 2 ./usr.bin/cut 1 ./usr.bin/fetch 3 ./usr.bin/gprof 1 ./usr.bin/gzip 2 ./usr.bin/head 2 ./usr.bin/indent 4 ./usr.bin/lex 1 ./usr.bin/locate/code 2 ./usr.bin/mail 1 ./usr.bin/make 6 ./usr.bin/mklocale 2 ./usr.bin/mkstr 1 ./usr.bin/msgs 1 ./usr.bin/pr 2 ./usr.bin/printf 3 ./usr.bin/sed 6 ./usr.bin/tip/tip 1 ./usr.bin/uudecode 1 ./usr.bin/xlint/common 1 ./usr.bin/xlint/lint1 2 ./usr.bin/xlint/llib 1 ./usr.bin/xstr 1 ./usr.sbin/acpi/acpidump 3 ./usr.sbin/ctm/ctm 2 ./usr.sbin/ctm/ctm_rmail 1 ./usr.sbin/ctm/ctm_smail 3 ./usr.sbin/ctm/mkCTM 1 ./usr.sbin/extattr 4 ./usr.sbin/fdread 3 ./usr.sbin/kgmon 3 ./usr.sbin/kldxref 5 ./usr.sbin/lpr/common_source 1 ./usr.sbin/lpr/lpc 1 ./usr.sbin/ndiscvt 1 ./usr.sbin/pkg_install/info 2 ./usr.sbin/pkg_install/lib 1 ./usr.sbin/pmcstat 1 ./usr.sbin/pw 3 ./usr.sbin/sysinstall 5 ./usr.sbin/zic About 550+ places to audit in src/ for proper usage to say world would be clean and we can ship it; some are in contrib/ ... Considering that world already broke after this I'd prefer it to be backed out. As others pointed out, noone knows how many ports will break runtime by that. We should re-introduce it a later time, possibly after 8.0-R though for standard compliance, once more code has been audited. /bz -- Bjoern A. Zeeb The greatest risk is not taking one.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20090714090127.K245>