[Toybox] Looking at nl

Rob Landley rob at landley.net
Sun May 26 19:14:16 PDT 2013


On 05/25/2013 06:36:49 PM, idunham at lavabit.com wrote:
> Would initializing GLOBALS to the defaults be something sane to allow,
> or would it complicate the build system too much?

Actually, now that I look at it, you can initialize the numerical ones  
in the option strings. (Boundary checking was fairly common, and  
setting a default is pretty much the same infrastructure.)

> Example:
> USE_NL(NEWTOY(wc, "1b:d:f:h:i#l#n:ps:v#w#", TOYBOX_USR | TOYBOX_BIN))

USE_NL(NEWTOY(wc, "1b:d:f:h:i#=1l#=1n:ps:v#=1w#=6"));

> ..
> GLOBALS(
> char *btype = "t";
> char *delim = "\:";
> char *ftype = "n";
> char *htype = "n";
> long incr = 1;
> long maxblank = 1;
> char *fmt = "rn";
> char *sep = "\t";
> long startnum = 1;
> long width = 6;
> )

If you stick the numerical defaults in the options string, you only  
have to initialize the string variables.

I didn't implement similar initialization logic for strings because A)  
there's no existing bounds checking logic to leverage, B) how do you  
know where the end of the string is, C) it complicates the "#define  
FLAG_x" generation logic because ordinarily "next letter" means start  
of new option. The signaling is done entirely with punctuation and  
digits.

Rob


More information about the Toybox mailing list