<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def read_table(fstream):
 """ Read a likwid table info from the text stream. Args: fstream: Likwid's filestream. Returns (dict(str: str)):
 A dict containing likwid's table info as key/value pairs. """

    pos = fstream.tell()
    line = fstream.readline().strip()
    fragments = line.split(",")
    fragments = [x for x in fragments if x is not None]
    partition = dict()
    if not len(fragments) >= 4:
        return None

    partition["table"] = fragments[0]
    partition["group"] = fragments[1]
    partition["set"] = fragments[2]
    partition["num_lines"] = fragments[3]

    struct = None
    if partition is not None and partition["table"] == "TABLE":
        num_lines = int(partition["num_lines"].strip())
        struct = {}
        header = fetch_cols(fstream)

        struct.update({header[0]: header[1:]})
        for _ in range(num_lines):
            cols = fetch_cols(fstream)
            struct.update({cols[0]: cols[1:]})
    else:
        fstream.seek(pos)

    return struct