code: def make_unix_filename(fname):
      
      # sanity check for filenames
      bad_filenames = [".", ".."]
      if fname in bad_filenames:
          raise DXError("Invalid filename {}".format(fname))
      return fname.replace('/', '%2F')
docs: :param fname: the basename of a file (e.g., xxx in /zzz/yyy/xxx).
      :returns: a valid unix filename
      :rtype: string
      :raises: DXError if the filename is invalid on a Unix system
  
      The problem being solved here is that *fname* is a python string, it
      may contain characters that are invalid for a file name. We replace all the slashes with %2F.
      Another issue, is that the user may choose an invalid name. Since we focus
      on Unix systems, the only possibilies are "." and "..".