From owner-svn-src-head@freebsd.org Fri Dec 16 23:44:04 2016 Return-Path: Delivered-To: svn-src-head@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id F0EB6C83928 for ; Fri, 16 Dec 2016 23:44:04 +0000 (UTC) (envelope-from wlosh@bsdimp.com) Received: from mail-io0-x243.google.com (mail-io0-x243.google.com [IPv6:2607:f8b0:4001:c06::243]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id B55C1E01 for ; Fri, 16 Dec 2016 23:44:04 +0000 (UTC) (envelope-from wlosh@bsdimp.com) Received: by mail-io0-x243.google.com with SMTP id f73so13477281ioe.2 for ; Fri, 16 Dec 2016 15:44:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bsdimp-com.20150623.gappssmtp.com; s=20150623; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc; bh=5Hgdhz38M73CrHsa9UzmCwM3KRhPyffIfbayxfsli7o=; b=cq2hyMBAtT9Bh/GeRHwUBP344Dnv6Y1bPPzkFCz3PzSPIdmqpdfDaGqdkteoIfvgqN ulAwNg9Zc6b4ao8M9VrfmzDtA/1VW7l6PMwcxejSXfwjxeRM7Fne4Eel9uaa96EkNE5J 7Reyt/ia1bGrk4FWkVgMWPQNONwb2aiI0T623ymjQpKpLzFmktQBf9jFZJODhVYiuCQs lE66uhjctS7NIQU+45ArOWwGFIJvrdra8Pk1xk9s29P4rlffujOAz/NAtLt4SN2wSMcX e5ghjspoH55Ys/sQPYblJI3WdxNQeV0KAbg37YmLPTXw44muyWC6nV2s5hCLbeKp2EkA ZsRw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to:cc; bh=5Hgdhz38M73CrHsa9UzmCwM3KRhPyffIfbayxfsli7o=; b=sWrz0yE/3/B5SHV/HZw4JF8yr1CP/C1c+dXZ1z3NsCwpq9qIYprXj7Lwyazd+duH1e QTkfCpDmFhEBUShL2C42D7kahZWt13elJO5dLZh0LNRoCXNY0qhtp83oWbmulYAqRobd XKcHnYm88cqLA0kZ+1Dx/UqWiJ6Zyx3thEUMbuEp6qT4zLYyKlJ5qJxJaZXJg4Y3pIFQ noxjlBxJ7sSFsxUmBE2/rkH7avtxAC/Jxi4ZRkH99AMla3UAXxmejaV0BYyAG3pmuJ7d 5z5DBQpxtu0o6Uc8f7CXTArR4PdD8gS/69o/lLsyC1BYYxqqNa1O7cDzia5hshxW7r5K ej0A== X-Gm-Message-State: AKaTC02jYm0OyQm8q4SkU/tA8wLLitNFzlUXajkh3vDpTUcabhHFcRJ6MYnhEQLdz+hDdy34tWs5hPRUgNwiHw== X-Received: by 10.107.139.74 with SMTP id n71mr5973923iod.166.1481931843803; Fri, 16 Dec 2016 15:44:03 -0800 (PST) MIME-Version: 1.0 Sender: wlosh@bsdimp.com Received: by 10.79.22.135 with HTTP; Fri, 16 Dec 2016 15:44:03 -0800 (PST) X-Originating-IP: [156.39.10.46] In-Reply-To: <3160837.brVkGGj5yS@ralph.baldwin.cx> References: <201612160144.uBG1ipjW016736@repo.freebsd.org> <13059937.h5mayX8aKo@ralph.baldwin.cx> <9e255301-f663-a96c-68c7-e6d1a3d1db8c@FreeBSD.org> <3160837.brVkGGj5yS@ralph.baldwin.cx> From: Warner Losh Date: Fri, 16 Dec 2016 15:44:03 -0800 X-Google-Sender-Auth: fo3usF53bE4B160ISGJs01clhx4 Message-ID: Subject: Re: svn commit: r310138 - head/lib/libc/stdio To: John Baldwin Cc: Eric van Gyzen , Dimitry Andric , Baptiste Daroussin , "Conrad E. Meyer" , src-committers , "svn-src-all@freebsd.org" , "svn-src-head@freebsd.org" Content-Type: text/plain; charset=UTF-8 X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Dec 2016 23:44:05 -0000 On Fri, Dec 16, 2016 at 3:07 PM, John Baldwin wrote: > On Friday, December 16, 2016 04:53:04 PM Eric van Gyzen wrote: >> On 12/16/2016 16:45, John Baldwin wrote: >> > On Friday, December 16, 2016 08:53:26 PM Dimitry Andric wrote: >> >> On 16 Dec 2016, at 20:31, Baptiste Daroussin wrote: >> >>> >> >>> On Fri, Dec 16, 2016 at 01:44:51AM +0000, Conrad E. Meyer wrote: >> >>>> Author: cem >> >>>> Date: Fri Dec 16 01:44:50 2016 >> >>>> New Revision: 310138 >> >>>> URL: https://svnweb.freebsd.org/changeset/base/310138 >> >>>> >> >>>> Log: >> >>>> vfprintf(3): Add support for kernel %b format >> >>>> >> >>>> This is a direct port of the kernel %b format. >> >>>> >> >>>> I'm unclear on if (more) non-portable printf extensions will be a >> >>>> problem. I think it's desirable to have userspace formats include all >> >>>> kernel formats, but there may be competing goals I'm not aware of. >> >>>> >> >>>> Reviewed by: no one, unfortunately >> >>>> Sponsored by: Dell EMC Isilon >> >>>> Differential Revision: https://reviews.freebsd.org/D8426 >> >>>> >> >>> >> >>> I really don't think it is a good idea, if used in userland it would be make >> >>> more of our code difficult to port elsewhere. >> >> >> >> Indeed, this is a bad idea. These custom format specifiers should be >> >> eliminated, not multiplied. :-) >> >> >> >> >> >>> Other than that, it makes more difficult to use vanilla gcc with out userland. >> >>> and it is adding more complexity to be able to build freebsd from a non freebsd >> >>> system which some people are working on. >> >>> >> >>> Personnaly I would prefer to see those extensions removed from the kernel rather >> >>> than see them available in userland. >> >> >> >> Same here. >> >> >> >> >> >>> Can't we use simple helper function instead? >> >> >> >> Yes, please. Just take the snprintb(3) function from NetBSD: >> >> >> >> http://netbsd.gw.com/cgi-bin/man-cgi?snprintb+3+NetBSD-current >> > >> > In general I agree with something like this instead, but it is quite a bit more >> > tedious to use as you have to run it once to determine the length, allocate a >> > buffer, and then run it again. Calling malloc() for that buffer isn't always >> > convenient in the kernel (though it should be fine in userland). Having it live >> > in printf() itself means the output is generated to the stream without having to >> > manage a variable-sized intermediate buffer. >> >> I imagine most callers can simply use a char[sizeof(fmt)+C] on the stack, where >> C is some constant that I haven't taken the time to calculate, at the risk of >> making myself look foolish and unprofessional. > > Hmm, that might work, but it is still cumbersome. Probably to make things readable > we'd end up with a wrapper: > > printb(uint val, const char *fmt) > { > char buf[strlen(fmt) + C]; > > snprintb(...); > printf("%s", buf); > } Sadly this "cure" is worse than the disease. Warner