#!/usr/bin/python3

"""Like a mix of cat and tail -f."""

import os
import sys
import time


def usage(retval):
    """Output a usage message."""
    sys.stderr.write('Usage: {} --filename fn --prepend-time\n'.format(sys.argv[0]))
    sys.exit(retval)


def main():
    """Parse commandline options and act on them."""
    prepend_time = False
    filename = None

    while sys.argv[1:]:
        if sys.argv[1] == '--prepend-time':
            prepend_time = True
        elif sys.argv[1] == '--filename':
            filename = sys.argv[2]
            del sys.argv[1]
        elif sys.argv[1] in ['-h', '--help']:
            usage(0)
        else:
            sys.stderr.write('{}: Unrecognized option: {}\n'.format(sys.argv[0], sys.argv[1]))
            usage(1)
        del sys.argv[1]

    if filename is None:
        sys.stderr.write('--filename is a required option\n')
        usage(1)

    blocksize = 2 ** 18
    with open(filename, 'rb') as file_:
        while True:
            if prepend_time:
                for line in file_:
                    timestamp = bytes(time.ctime(), 'UTF-8')
                    os.write(1, timestamp + b' ' + line)
            else:
                block = file_.read(blocksize)
                if not block:
                    time.sleep(10)
                    continue
                os.write(1, block)


main()