TotemPlParserResult totem_pl_parser_add_desktop (TotemPlParser *parser, GFile *file, GFile *base_file, TotemPlParseData *parse_data, gpointer data) { char *contents, **lines; const char *path, *display_name, *type; GFile *target; gsize size; TotemPlParserResult res = TOTEM_PL_PARSER_RESULT_ERROR; if (g_file_load_contents (file, NULL, &contents, &size, NULL, NULL) == FALSE) return res; lines = g_strsplit (contents, "\n", 0); g_free (contents); type = totem_pl_parser_read_ini_line_string (lines, "Type"); if (type == NULL) goto bail; if (g_ascii_strcasecmp (type, "Link") != 0 && g_ascii_strcasecmp (type, "FSDevice") != 0) { goto bail; } path = totem_pl_parser_read_ini_line_string (lines, "URL"); if (path == NULL) goto bail; target = g_file_new_for_uri (path); display_name = totem_pl_parser_read_ini_line_string (lines, "Name"); if (totem_pl_parser_ignore (parser, path) == FALSE && g_ascii_strcasecmp (type, "FSDevice") != 0) { totem_pl_parser_add_one_file (parser, target, display_name); } else { if (totem_pl_parser_parse_internal (parser, target, NULL, parse_data) != TOTEM_PL_PARSER_RESULT_SUCCESS) totem_pl_parser_add_one_file (parser, target, display_name); } res = TOTEM_PL_PARSER_RESULT_SUCCESS; bail: g_strfreev (lines); return res; }
TotemPlParserResult totem_pl_parser_add_ra (TotemPlParser *parser, GFile *file, GFile *base_file, TotemPlParseData *parse_data, gpointer data) { if (data == NULL || totem_pl_parser_is_uri_list (data, strlen (data)) == NULL) { totem_pl_parser_add_one_file (parser, file, NULL); return TOTEM_PL_PARSER_RESULT_SUCCESS; } return totem_pl_parser_add_ram (parser, file, parse_data, NULL); }