git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: Marcus Griep <marcus@griep.us>
Cc: "Shawn O. Pearce" <spearce@spearce.org>,
	Git Mailing List <git@vger.kernel.org>
Subject: Re: [PATCH 2] count-objects: add human-readable size option
Date: Wed, 13 Aug 2008 22:22:17 -0700	[thread overview]
Message-ID: <7vskt8f9x2.fsf@gitster.siamese.dyndns.org> (raw)
In-Reply-To: <20080814043817.GC11232@spearce.org> (Shawn O. Pearce's message of "Wed, 13 Aug 2008 21:38:17 -0700")

"Shawn O. Pearce" <spearce@spearce.org> writes:

> Marcus Griep <marcus@griep.us> wrote:
>> diff --git a/Documentation/git-count-objects.txt b/Documentation/git-count-objects.txt
>> index 75a8da1..291bc5e 100644
>> --- a/Documentation/git-count-objects.txt
>> +++ b/Documentation/git-count-objects.txt
>> +++ b/builtin-count-objects.c
> ...
>> +void human_readable_size(char *buf, int buf_size, double size /* in bytes */)
>
> Hmm.  This probably should be static.  Or if it really is meant
> to be a utility for use elsewhere in Git, moved to someplace where
> string handling is done.  Its not strbuf related, but maybe strbuf.c
> is a better location for this sort of library function.

Yes, with customizable precision (so that the caller can control "1.6k" vs
"1.62k"), and perhaps cutomizable unit (so that you can use this for
"3.6kB" and "2.6Mbps"), this kind of thing is a good candidate to be a
library function in strbuf.c.

>> +{
>> +	char human_readable_prefixes[10] = "BKMGTPEZY";

This enumerates suffix if I am not mistaken.  Do you have to say "10"
here, or does the compiler counts them for you?

>> +	for (; i < 8 && size >= 1000 ; ++i, size = size / 1024)
>> +		;

I do not think you would need to use the magic number "8" here.

I have this suspicion that the caller, if this is made into a generic
library, would want to pass in a list of units, not magnitude suffixes,
like this:

    extern int human_readable(struct strbuf *,
    			      double value, int precision,
                              const char **unit);

    static const char **size_unit = {
    	"byte", "KB", "MB", "GB", NULL,
    };
    static const char **throughput_unit = {
    	"bps", "Kbps", "Mbps", "Gbps", NULL,
    };

    human_readble(&sb, (double) bytes_transferred, 0, size_unit);
    human_readble(&sb, (double) throughput, 2, throughput_unit);

  parent reply	other threads:[~2008-08-14  5:23 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-08-13 20:05 [PATCH] count-objects: Add total pack size to verbose output Marcus Griep
2008-08-14  4:21 ` [PATCH 2] count-objects: add human-readable size option Marcus Griep
2008-08-14  4:38   ` Shawn O. Pearce
2008-08-14  4:44     ` Marcus Griep
2008-08-14  5:22     ` Junio C Hamano [this message]
2008-08-14 14:05       ` Johannes Schindelin
2008-08-14 14:26       ` Marcus Griep
2008-08-14  6:45   ` Alex Riesen
2008-08-14 14:03     ` Marcus Griep
2008-08-14 18:51       ` Alex Riesen
2008-08-15  9:22         ` Pierre Habouzit
2008-08-18 17:28           ` Alex Riesen
2008-08-14  7:39   ` Johannes Sixt
2008-08-14 14:09     ` Marcus Griep
2008-08-14 15:14   ` Petr Baudis
2008-08-14 16:26     ` Marcus Griep
2008-08-14 16:34       ` Petr Baudis
2008-08-14 16:42         ` Marcus Griep

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=7vskt8f9x2.fsf@gitster.siamese.dyndns.org \
    --to=gitster@pobox.com \
    --cc=git@vger.kernel.org \
    --cc=marcus@griep.us \
    --cc=spearce@spearce.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).