diff options
author | Bastien Nocera <hadess@hadess.net> | 2019-11-09 13:37:33 +0100 |
---|---|---|
committer | Bastien Nocera <hadess@hadess.net> | 2019-11-09 14:16:54 +0100 |
commit | c7c01211812acde1648891746050f23581008271 (patch) | |
tree | 8cc9665aa70f7fa5b00858dff10fddc39bdd90dd | |
parent | bab470fcdce08ea24eba6327277d8d01bf9dc3aa (diff) | |
download | totem-pl-parser-c7c01211812acde1648891746050f23581008271.tar.gz |
plparser: Simplify totem_pl_parser_parse_internal()
Using g_auto* again. Lots of exit paths with less code now.
-rw-r--r-- | plparse/totem-pl-parser.c | 41 |
1 files changed, 10 insertions, 31 deletions
diff --git a/plparse/totem-pl-parser.c b/plparse/totem-pl-parser.c index 5c0a8be..6d11e29 100644 --- a/plparse/totem-pl-parser.c +++ b/plparse/totem-pl-parser.c @@ -1769,9 +1769,9 @@ totem_pl_parser_parse_internal (TotemPlParser *parser, GFile *base_file, TotemPlParseData *parse_data) { - char *mimetype; + g_autofree char *mimetype = NULL; + g_autofree gpointer data = NULL; guint i; - gpointer data = NULL; TotemPlParserResult ret = TOTEM_PL_PARSER_RESULT_UNHANDLED; gboolean found = FALSE; @@ -1854,8 +1854,7 @@ totem_pl_parser_parse_internal (TotemPlParser *parser, /* Not a directory on http though */ if (g_strcmp0 (mimetype, "inode/directory") == 0 && g_file_has_uri_scheme (file, "http")) { - g_free (mimetype); - mimetype = NULL; + g_clear_pointer (&mimetype, g_free); } DEBUG(file, g_print ("_get_mime_type_for_name for '%s' returned '%s'\n", uri, mimetype)); @@ -1872,20 +1871,13 @@ totem_pl_parser_parse_internal (TotemPlParser *parser, } } - if (mimetype == NULL) { - g_free (data); + if (mimetype == NULL) return TOTEM_PL_PARSER_RESULT_UNHANDLED; - } - if (strcmp (mimetype, EMPTY_FILE_TYPE) == 0) { - g_free (data); - g_free (mimetype); + if (strcmp (mimetype, EMPTY_FILE_TYPE) == 0) return TOTEM_PL_PARSER_RESULT_SUCCESS; - } else if (strcmp (mimetype, HLS_MIME_TYPE) == 0) { - g_free (data); - g_free (mimetype); + else if (strcmp (mimetype, HLS_MIME_TYPE) == 0) return TOTEM_PL_PARSER_RESULT_UNHANDLED; - } /* If we're at the top-level of the parsing, try to get more * data from the playlist parser */ @@ -1899,11 +1891,8 @@ totem_pl_parser_parse_internal (TotemPlParser *parser, DEBUG(file, g_print ("_get_mime_type_with_data for '%s' returned '%s' (was %s)\n", uri, mimetype, AUDIO_MPEG_TYPE)); } - if (totem_pl_parser_mimetype_is_ignored (parser, mimetype) != FALSE) { - g_free (mimetype); - g_free (data); + if (totem_pl_parser_mimetype_is_ignored (parser, mimetype) != FALSE) return TOTEM_PL_PARSER_RESULT_IGNORED; - } if (parse_data->recurse || parse_data->recurse_level == 0) { parse_data->recurse_level++; @@ -1913,8 +1902,6 @@ totem_pl_parser_parse_internal (TotemPlParser *parser, DEBUG(file, g_print ("URI '%s' is special type '%s'\n", uri, mimetype)); if (parse_data->disable_unsafe != FALSE && special_types[i].unsafe != FALSE) { DEBUG(file, g_print ("URI '%s' is unsafe so was ignored\n", uri)); - g_free (mimetype); - g_free (data); return TOTEM_PL_PARSER_RESULT_IGNORED; } if (base_file == NULL) @@ -1958,8 +1945,7 @@ totem_pl_parser_parse_internal (TotemPlParser *parser, if ((func == NULL && mimetype != NULL) || (mimetype == NULL && dual_types[i].func == NULL)) { DEBUG(file, g_print ("Ignoring URI '%s' because we couldn't find a playlist parser for '%s'\n", uri, mimetype)); ret = TOTEM_PL_PARSER_RESULT_UNHANDLED; - g_free (mimetype); - mimetype = NULL; + g_clear_pointer (&mimetype, g_free); break; } else if (func == NULL) { func = dual_types[i].func; @@ -1980,21 +1966,14 @@ totem_pl_parser_parse_internal (TotemPlParser *parser, } } - g_free (data); - parse_data->recurse_level--; } - if (ret == TOTEM_PL_PARSER_RESULT_SUCCESS) { - g_free (mimetype); + if (ret == TOTEM_PL_PARSER_RESULT_SUCCESS) return ret; - } - if (totem_pl_parser_ignore_from_mimetype (parser, mimetype) != FALSE) { - g_free (mimetype); + if (totem_pl_parser_ignore_from_mimetype (parser, mimetype) != FALSE) return TOTEM_PL_PARSER_RESULT_IGNORED; - } - g_free (mimetype); if (ret != TOTEM_PL_PARSER_RESULT_SUCCESS && parse_data->fallback) { totem_pl_parser_add_one_file (parser, file, NULL); |