#include #include void usage(void){ sysfatal("usage: %s [-Xxob] [-w width] [first [incr]] last", argv0); } void main(int argc, char **argv){ vlong first = 0, last = 0, incr = 1; char *fmt, c = 'd'; int wid = 0; ARGBEGIN{ case 'X': c = 'X'; break; case 'x': c = 'x'; break; case 'o': c = 'o'; break; case 'b': c = 'b'; break; case 'w': wid = atoi(EARGF(usage())); break; default: goto escape; }ARGEND escape: switch(argc){ case 1: last = strtoll(argv[0], nil, 0); break; case 2: first = strtoll(argv[0], nil, 0); last = strtoll(argv[1], nil, 0); break; case 3: first = strtoll(argv[0], nil, 0); incr = strtoll(argv[1], nil, 0); if(incr < 0) sysfatal("incr must be positive"); last = strtoll(argv[2], nil, 0); break; default: usage(); } fmt = smprint("%%.%dll%c\n", wid, c); if(last < first) for(; last <= first; first -= incr) print(fmt, first); else for(; first <= last; first += incr) print(fmt, first); exits(nil); }