[Toybox] More expand cleanups
Jonathan Clairembault
jonathan at clairembault.fr
Wed Nov 28 01:34:59 PST 2012
On Wed, Nov 28, 2012 at 8:51 AM, Rob Landley <rob at landley.net> wrote:
>
> I don't like adding new types to global headers which are only used in one
> command, so change global tablist to be a void *...
That will be used in unexpand but void * is fine anyway.
> Also, in the help text I'm tempted to just say "a comma separated list"
> instead of having comma or space awkwardly explained in the paranethetical.
> Yes we should support space, but since "expand -n 1 2 3" treats 2 and 3 as
> filenames, you need quotes around it to use spaces as a separator which is
> just awkward. If they're going to read the docs to see how to use it, comma
> is fine. If an existing script already provides spaces, we work anyway...
> Wordsmithing a bit.
Make sense.
> Now let's look at expand_file(). Collate all same declaration types, so just
> one line of ssize_t declarations instead of several... and why are we using
> ssize_t for something that it's a file position offset?
Right, that's a mistake.
> Ah, you're using toybuf already, for file input. Reasonable choice. Ok, I'll
> break the parsing logic out into a function that returns the number of
> entries and takes the array to write into as its argument, and have it not
> write anything to the array if the argument is NULL. Then I can call it
> twice, once to count the number of entries and the second time to fill out
> the array.
>
> Back to expand_file(). The downside of using readall() is that interactive
> granularity goes way down. I had this problem with "tee" once upon a time,
> it meant that piping the output of anything through tee made it appear in 4k
> chunks, which meant if you logged the result of a build you couldn't really
> see what the build was doing. I'm not sure expand has the same use cases,
> but that's why I did xread().
Well it seems like gnu/damnit version does buffering as well at least
it does not process input as a line by line basis. I don't see why
using xread changes anything, you probably need fgets here. Though I
think we can safely buffer until someone comes in and raises
interactivity need. wdyt?
> Ah, hang on. Internationalization. This thing is going to need multibyte
> support for utf8, isn't it? (The same general logic as wc -m. Hmmm, I wonder
> if they can share code?)
Ah! I thought toybox was not dealing with internationalization. Though
that's a good thing to have internationalization.
>
> Ok, I'll have to come back to this in the morning.
>
> Rob
Jonathan
More information about the Toybox
mailing list