code: def parse_non_selinux(parts):
      
      links, owner, group, last = parts
      result = {
          "links": int(links),
          "owner": owner,
          "group": group,
      }
  
      # device numbers only go to 256.
      # If a comma is in the first four characters, the next two elements are
      # major and minor device numbers. Otherwise, the next element is the size.
      if "," in last[:4]:
          major, minor, rest = last.split(None, 2)
          result["major"] = int(major.rstrip(","))
          result["minor"] = int(minor)
      else:
          size, rest = last.split(None, 1)
          result["size"] = int(size)
  
      # The date part is always 12 characters regardless of content.
      result["date"] = rest[:12]
  
      # Jump over the date and the following space to get the path part.
      path, link = parse_path(rest[13:])
      result["name"] = path
      if link:
          result["link"] = link
  
      return result
docs: Parse part of an ls output line that isn't selinux.
  
      Args:
          parts (list): A four element list of strings representing the initial
              parts of an ls line after the permission bits. The parts are link
              count, owner, group, and everything else.
  
      Returns:
          A dict containing links, owner, group, date, and name. If the line
          represented a device, major and minor numbers are included.  Otherwise,
          size is included. If the raw name was a symbolic link, link is
          included.