def file_info_equal(file_info_1, file_info_2):
    """Return true if the two file-infos indicate the file hasn't changed."""
    # Negative matches are never equal to each other: a file not
    # existing is not equal to another file not existing.
    if (None, None, None) in (file_info_1, file_info_2):
        return False

    # Equal if the size and the mtimes match.
    if file_info_1[:2] == file_info_2[:2]:
        return True
    # Even if mtimes don't match, they're equal if the size and the
    # crcs match.  But we have to be careful, since crcs are optional,
    # so we don't do this test if the crcs are None.
    if file_info_1[2] is not None and file_info_1[1:] == file_info_2[1:]:
        return True
    return False