coreutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Command-line program to convert 'human' sizes?


From: Pádraig Brady
Subject: Re: Command-line program to convert 'human' sizes?
Date: Wed, 05 Dec 2012 00:31:19 +0000
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:13.0) Gecko/20120615 Thunderbird/13.0.1

On 12/05/2012 12:19 AM, Jim Meyering wrote:
Pádraig Brady wrote:

On 12/04/2012 11:35 PM, Assaf Gordon wrote:
Pádraig Brady wrote, On 12/04/2012 06:11 PM:
On 12/04/2012 10:55 PM, Assaf Gordon wrote:
Hello,

Pádraig Brady wrote, On 12/04/2012 11:30 AM:
Nothing yet. The plan is to make a numfmt command available with
this interface:
http://lists.gnu.org/archive/html/coreutils/2012-02/msg00085.html


Attached is a patch, with a proof-of-concept working 'numfmt'.


Thanks a lot for working on this.
All I'll say at this stage is to take it
as far as you can as per the interface specified
at the above URL with a mind to reusing stuff from
lib/human.c if possible.

We'll review it then with a view to including it ASAP.

Thanks!

Input-wise, I had to copy and modify the xstrtol implementation,
because the original function doesn't allow the caller to force SI
or IEC or AUTO (it has internal logic to deduce it, based on
parameters and user input).

We can tweak xstrtol() in gnulib if needed
I suppose we can refactor after.

Output-wise, "human_readable()" from "lib/human.c" is called as-is
(no code modification).

Regarding the advanced options:
1. I'm wondering what is the reason/need for "--to=<NUMBER>" ? It
base different than 1024/1000 would result in values like "4K" that
are very unintuitive (since they don't mean 4096/4000).

Drats I can't remember now.

2. FORMAT: is the only use-case adding spaces before/after the
number, and grouping?
"human_readable()" already has support for grouping, and padding
might be added with different parameters?

we can do padding outside of human_readable() using mbsalign() I think,
and that would be auto enabled with the --field option.

I was thinking that --format would be a central place for tweaking
grouping and spacing etc. of numbers using standard printf format modifiers.


I'm asking about #1 and #2, because if we forgo them,
"human_readable()" could be used as-is. Otherwise, it will require
copy&pasting and some modifications.

We can tweak human_readable() in gnulib if needed
I suppose we can refactor after.


3. "SUFFIX" - is the purpose of this simply to print a string
following the number? or are there some more complications?

That's it basically.
It could be done with --format, but it's such a common requirement
that I thought it warranted a separate option.
Note human_readable() may output a 'B' suffix in certain cases,
which it shouldn't, and we should suppress it if it does as
noted in the spec.


4. Should nun-suffix characters following a parsed number cause
errors, or ignored? e.g. "4KQO"

Ignored I would say.

Ignoring trailing bytes for a string like "40000O" could be misleading, no?
I'd rather get a diagnostic that there's this "O" (capital "O") at the
end of my number.   Same thing for 1's vs l's: "9111l" looks a lot like
91,111 in some fonts.

Fair point.
Though if someone wanted to use O for octets,
or to count 4KOwls, 2Owls, ..
Hmm, maybe that's another reason I had the separate --suffix option,
so that only that suffix was allowed, and others were rejected.
Let's go with that for now.

thanks,
Pádraig.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]