#!/usr/bin/python3

"""Get directory sizes from a list of full paths to regular files."""

import collections
import errno
import os
import sys

sys.path.insert(0, '/usr/local/lib')
sys.path.insert(0, os.path.expanduser('~/lib'))

import readline0  # noqa: ignore=E402


def main():
    """Compute sizes of directories on stdin."""
    size_dict = collections.defaultdict(int)

    for full_path in readline0.readline0(file_=0):
        directory = os.path.dirname(full_path)

        try:
            stat_data = os.lstat(full_path)
        except OSError:
            try:
                os.write(2, b'Could not lstat %s\n' % full_path)
            except OSError as exc:
                if exc.errno != errno.EPIPE:
                    raise
                # otherwise fall through and continue
            continue

        size_dict[directory] += stat_data.st_size

    for directory, size in size_dict.items():
        try:
            os.write(1, bytes(str(size), 'ASCII') + b' ' + directory + b'\n')
        except OSError as exc:
            if exc.errno != errno.EPIPE:
                raise


main()