'Desperately parse all C files in the directory or its package parents
(not re-descending) to find the (included) source file in one of them.'

def _find_c_source_files(self, dir_path, source_file):

    if (not os.path.isdir(dir_path)):
        return
    splitext = os.path.splitext
    for filename in os.listdir(dir_path):
        ext = splitext(filename)[1].lower()
        if (ext in ('.c', '.cpp')):
            self._parse_lines(os.path.join(dir_path, filename), source_file)
            if (source_file in self._c_files_map):
                return
    if is_package_dir(dir_path):
        self._find_c_source_files(os.path.dirname(dir_path), source_file)
