svn commit: r195637 - head/lib/libc/stdio
Bjoern A. Zeeb
bz at FreeBSD.org
Tue Jul 14 09:10:09 UTC 2009
On Mon, 13 Jul 2009, Navdeep Parhar wrote:
> On Sun, Jul 12, 2009 at 6:09 AM, Ed Schouten<ed at 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.
More information about the svn-src-head
mailing list