bup random [-S seed] <numbytes>
--
S,seed= optional random number seed (default 1)
+f,force print random data to stdout even if it's a tty
"""
o = options.Options('bup random', optspec)
(opt, flags, extra) = o.parse(sys.argv[1:])
o.fatal("exactly one argument expected")
total = parse_num(extra[0])
-_hashsplit.write_random(sys.stdout.fileno(), total, opt.seed or 0)
+
+if opt.force or (not os.isatty(1) and
+ not atoi(os.environ.get('BUP_FORCE_TTY')) & 1):
+ _hashsplit.write_random(sys.stdout.fileno(), total, opt.seed or 0)
+else:
+ log('error: not writing binary data to a terminal. Use -f to force.\n')
+ sys.exit(1)
srandom(seed);
- for (kbytes = len/1024; kbytes > 0; kbytes--)
+ for (kbytes = 0; kbytes < len/1024; kbytes++)
{
int i;
for (i = 0; i < sizeof(buf)/sizeof(buf[0]); i++)
written += ret;
if (ret < sizeof(buf))
break;
- if (!(kbytes%1024))
- fprintf(stderr, ".");
+ if (kbytes/1024 > 0 && !(kbytes%1024))
+ fprintf(stderr, "Random: %lld Mbytes\r", kbytes/1024);
}
+ if (kbytes/1024 > 0)
+ fprintf(stderr, "Random: %lld Mbytes, done.\n", kbytes/1024);
return Py_BuildValue("L", written);
}
def force_tty():
if fix_stdout or fix_stderr:
- os.environ['BUP_FORCE_TTY'] = '1'
+ amt = (fix_stdout and 1 or 0) + (fix_stderr and 2 or 0)
+ os.environ['BUP_FORCE_TTY'] = str(amt)
if fix_stdout or fix_stderr:
realf = fix_stderr and 2 or 1