Skip site navigation (1)Skip section navigation (2)
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>