#!/usr/bin/env python3 # Copyright 2019 The ChromiumOS Authors # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. import sys def chargen(modulo, max_chars): """Generate a stream of characters on the console. The stream is an ever incrementing pattern of characters from the following set: 0..9A..Za..z. Args: modulo: an int, restart the pattern every modulo characters, if modulo is non zero max_chars: an int, stop printing after this number of characters if non zero, if zero - print indefinitely """ base = "0" c = base counter = 0 while True: sys.stdout.write(c) counter = counter + 1 if (max_chars != 0) and (counter == max_chars): sys.stdout.write("\n") return if modulo and ((counter % modulo) == 0): c = base continue if c == "z": c = base elif c == "Z": c = "a" elif c == "9": c = "A" else: c = "%c" % (ord(c) + 1) def main(args): """Process command line arguments and invoke chargen if args are valid""" modulo = 0 max_chars = 0 try: if len(args) > 0: modulo = int(args[0]) if len(args) > 1: max_chars = int(args[1]) except ValueError: sys.stderr.write("usage %s:" "['seq_length' ['max_chars']]\n") sys.exit(1) try: chargen(modulo, max_chars) except KeyboardInterrupt: print() if __name__ == "__main__": main(sys.argv[1:]) sys.exit(0)