Hello community,

here is the log from the commit of package totem-pl-parser for openSUSE:Factory 
checked in at 2019-11-24 00:00:10
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/totem-pl-parser (Old)
 and      /work/SRC/openSUSE:Factory/.totem-pl-parser.new.26869 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "totem-pl-parser"

Sun Nov 24 00:00:10 2019 rev:81 rq:749275 version:3.26.4

Changes:
--------
--- /work/SRC/openSUSE:Factory/totem-pl-parser/totem-pl-parser.changes  
2019-03-13 09:05:30.967446898 +0100
+++ 
/work/SRC/openSUSE:Factory/.totem-pl-parser.new.26869/totem-pl-parser.changes   
    2019-11-24 00:00:12.943039216 +0100
@@ -1,0 +2,11 @@
+Tue Nov 12 18:23:52 UTC 2019 - [email protected]
+
+- Update to version 3.26.4:
+  + Apply same check to remote text files as local ones, which
+    should fix parsing of directories on network file systems.
+  + Add totem_pl_parser_add_ignored_glob() API, to force ignore
+    some files depending on how they are named, before we even get
+    to checking their contents.
+  + Fix a number of compilation warnings.
+
+-------------------------------------------------------------------

Old:
----
  totem-pl-parser-3.26.3.tar.xz

New:
----
  totem-pl-parser-3.26.4.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ totem-pl-parser.spec ++++++
--- /var/tmp/diff_new_pack.ObgZli/_old  2019-11-24 00:00:13.663039301 +0100
+++ /var/tmp/diff_new_pack.ObgZli/_new  2019-11-24 00:00:13.683039304 +0100
@@ -17,8 +17,9 @@
 
 
 %define sover   18
+
 Name:           totem-pl-parser
-Version:        3.26.3
+Version:        3.26.4
 Release:        0
 Summary:        A GObject-based library to parse playlist formats
 License:        LGPL-2.0-or-later AND GPL-2.0-or-later
@@ -26,6 +27,7 @@
 URL:            http://www.gnome.org/projects/totem/
 #Source0:       
http://download.gnome.org/sources/totem-pl-parser/3.26/%%{name}-%%{version}.tar.xz
 Source:         %{name}-%{version}.tar.xz
+
 BuildRequires:  gtk-doc
 BuildRequires:  intltool
 BuildRequires:  libgcrypt-devel

++++++ _service ++++++
--- /var/tmp/diff_new_pack.ObgZli/_old  2019-11-24 00:00:13.779039315 +0100
+++ /var/tmp/diff_new_pack.ObgZli/_new  2019-11-24 00:00:13.783039315 +0100
@@ -2,9 +2,8 @@
   <service mode="disabled" name="tar_scm">
     <param 
name="url">https://gitlab.gnome.org/GNOME/totem-pl-parser.git</param>
     <param name="scm">git</param>
-    <param name="revision">refs/tags/V_3_26_3</param>
-    <param name="versionformat">3.26.3</param>
-    <param name="changesgenerate">enable</param>
+    <param name="revision">refs/tags/V_3_26_4</param>
+    <param name="versionformat">3.26.4</param>
   </service>
   <service mode="disabled" name="recompress">
     <param name="file">*.tar</param>

++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.ObgZli/_old  2019-11-24 00:00:13.835039321 +0100
+++ /var/tmp/diff_new_pack.ObgZli/_new  2019-11-24 00:00:13.835039321 +0100
@@ -3,4 +3,4 @@
                 <param 
name="url">https://git.gnome.org/browse/totem-pl-parser</param>
               <param 
name="changesrevision">0091a562f2299fc61943bf5b44ecd7c472288693</param></service><service
 name="tar_scm">
                 <param 
name="url">https://gitlab.gnome.org/GNOME/totem-pl-parser.git</param>
-              <param 
name="changesrevision">9cb2d6e2c8eaf17d77e19493c6f1fac34893232b</param></service></servicedata>
\ No newline at end of file
+              <param 
name="changesrevision">ea7238580d0d94a439295eb92890f6229a51c382</param></service></servicedata>
\ No newline at end of file

++++++ totem-pl-parser-3.26.3.tar.xz -> totem-pl-parser-3.26.4.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/totem-pl-parser-3.26.3/.gitlab-ci.yml 
new/totem-pl-parser-3.26.4/.gitlab-ci.yml
--- old/totem-pl-parser-3.26.3/.gitlab-ci.yml   2019-03-05 13:51:28.000000000 
+0100
+++ new/totem-pl-parser-3.26.4/.gitlab-ci.yml   2019-11-12 16:07:37.000000000 
+0100
@@ -1,5 +1,6 @@
 variables:
-  DEPENDENCIES: redhat-rpm-config meson git gettext gtk-doc intltool meson 
glib2-devel libxml2-devel gobject-introspection-devel libgcrypt-devel 
libarchive-devel libquvi-devel
+  DEPENDENCIES: redhat-rpm-config meson git gettext gtk-doc intltool meson 
glib2-devel libxml2-devel gobject-introspection-devel libgcrypt-devel 
libarchive-devel
+  DEPS_QUVI: libquvi-devel
   TEST_DEPS: gvfs dbus-daemon
 
 build-fedora:
@@ -12,3 +13,9 @@
     - dnf install -y $TEST_DEPS
     - GIO_USE_VOLUME_MONITOR=unix dbus-run-session ninja -C _build test
     - ninja -C _build install
+    # And now with quvi support
+    - rm -rf _build
+    - dnf install -y $DEPS_QUVI
+    - meson _build
+    - GIO_USE_VOLUME_MONITOR=unix dbus-run-session ninja -C _build test
+    - ninja -C _build install
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/totem-pl-parser-3.26.3/NEWS 
new/totem-pl-parser-3.26.4/NEWS
--- old/totem-pl-parser-3.26.3/NEWS     2019-03-05 13:51:28.000000000 +0100
+++ new/totem-pl-parser-3.26.4/NEWS     2019-11-12 16:07:37.000000000 +0100
@@ -1,5 +1,13 @@
 New features and significant updates in version...
 
+3.26.4:
+- Apply same check to remote text files as local ones, which should
+  fix parsing of directories on network file systems
+- Add totem_pl_parser_add_ignored_glob() API, to force ignore some
+  files depending on how they are named, before we even get to checking
+  their contents
+- Fix a number of compilation warnings
+
 3.26.3:
 - Atom parsing bug fixes
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/totem-pl-parser-3.26.3/docs/reference/totem-pl-parser-sections.txt 
new/totem-pl-parser-3.26.4/docs/reference/totem-pl-parser-sections.txt
--- old/totem-pl-parser-3.26.3/docs/reference/totem-pl-parser-sections.txt      
2019-03-05 13:51:28.000000000 +0100
+++ new/totem-pl-parser-3.26.4/docs/reference/totem-pl-parser-sections.txt      
2019-11-12 16:07:37.000000000 +0100
@@ -18,6 +18,7 @@
 totem_pl_parser_parse_date
 totem_pl_parser_add_ignored_scheme
 totem_pl_parser_add_ignored_mimetype
+totem_pl_parser_add_ignored_glob
 totem_pl_parser_can_parse_from_data
 totem_pl_parser_can_parse_from_filename
 totem_pl_parser_can_parse_from_uri
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/totem-pl-parser-3.26.3/meson.build 
new/totem-pl-parser-3.26.4/meson.build
--- old/totem-pl-parser-3.26.3/meson.build      2019-03-05 13:51:28.000000000 
+0100
+++ new/totem-pl-parser-3.26.4/meson.build      2019-11-12 16:07:37.000000000 
+0100
@@ -1,5 +1,5 @@
 project('totem-pl-parser', 'c',
-        version: '3.26.3', # Don't forget to also change plparser_lt_version!
+        version: '3.26.4', # Don't forget to also change plparser_lt_version!
         default_options: [
           'buildtype=debugoptimized',
           'warning_level=1',
@@ -14,7 +14,7 @@
 # - If binary compatibility has been broken (eg removed or changed interfaces)
 #   change to C+1:0:0
 # - If the interface is the same as the previous version, change to C:R+1:A
-plparser_lt_version='19:4:1'
+plparser_lt_version='20:4:2'
 
 plparse_version       = meson.project_version()
 plparse_major_version = plparse_version.split('.')[0].to_int()
@@ -30,7 +30,7 @@
 plparse_libversion  = '@0@.@1@.@2@'.format(plparse_soversion, plparse_lt_age, 
plparse_lt_revision)
 
 # Requirements
-glib_req    = '>= 2.36.0'
+glib_req    = '>= 2.56.0'
 gio_req     = '>= 2.24.0'
 quvi_req    = '>= 0.9.1'
 archive_req = '>= 3.0'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/totem-pl-parser-3.26.3/plparse/plparser.map 
new/totem-pl-parser-3.26.4/plparse/plparser.map
--- old/totem-pl-parser-3.26.3/plparse/plparser.map     2019-03-05 
13:51:28.000000000 +0100
+++ new/totem-pl-parser-3.26.4/plparse/plparser.map     2019-11-12 
16:07:37.000000000 +0100
@@ -10,6 +10,7 @@
     totem_disc_media_type_quark;
     totem_pl_parser_add_ignored_mimetype;
     totem_pl_parser_add_ignored_scheme;
+    totem_pl_parser_add_ignored_glob;
     totem_pl_parser_can_parse_from_data;
     totem_pl_parser_can_parse_from_filename;
     totem_pl_parser_can_parse_from_uri;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/totem-pl-parser-3.26.3/plparse/tests/foo/some-information-file.txt 
new/totem-pl-parser-3.26.4/plparse/tests/foo/some-information-file.txt
--- old/totem-pl-parser-3.26.3/plparse/tests/foo/some-information-file.txt      
1970-01-01 01:00:00.000000000 +0100
+++ new/totem-pl-parser-3.26.4/plparse/tests/foo/some-information-file.txt      
2019-11-12 16:07:37.000000000 +0100
@@ -0,0 +1 @@
+This is an empty file that isn't really a playlist
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/totem-pl-parser-3.26.3/plparse/tests/parser.c 
new/totem-pl-parser-3.26.4/plparse/tests/parser.c
--- old/totem-pl-parser-3.26.3/plparse/tests/parser.c   2019-03-05 
13:51:28.000000000 +0100
+++ new/totem-pl-parser-3.26.4/plparse/tests/parser.c   2019-11-12 
16:07:37.000000000 +0100
@@ -135,7 +135,7 @@
 
        /* Atom */
        g_assert_cmpuint (totem_pl_parser_parse_date ("2003-12-13T18:30:02Z", 
verbose), ==, 1071340202);
-       g_assert_cmpuint (totem_pl_parser_parse_date 
("1990-12-31T15:59:60-08:00", verbose), ==, 662688000);
+       g_assert_cmpuint (totem_pl_parser_parse_date 
("1990-12-31T15:59:59-08:00", verbose), ==, 662687999);
 }
 
 #define READ_CHUNK_SIZE 8192
@@ -524,6 +524,7 @@
 #endif
 }
 
+#ifdef HAVE_QUVI
 static void
 test_youtube_starttime (void)
 {
@@ -544,6 +545,7 @@
        g_assert_cmpstr (parser_test_get_entry_field (uri, 
TOTEM_PL_PARSER_FIELD_STARTTIME), ==, "150");
 #endif
 }
+#endif /* HAVE_QUVI */
 
 static void
 test_itms_parsing (void)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/totem-pl-parser-3.26.3/plparse/tests/some-information-file.txt 
new/totem-pl-parser-3.26.4/plparse/tests/some-information-file.txt
--- old/totem-pl-parser-3.26.3/plparse/tests/some-information-file.txt  
1970-01-01 01:00:00.000000000 +0100
+++ new/totem-pl-parser-3.26.4/plparse/tests/some-information-file.txt  
2019-11-12 16:07:37.000000000 +0100
@@ -0,0 +1 @@
+This is an empty file that isn't really a playlist
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/totem-pl-parser-3.26.3/plparse/totem-pl-parser.c 
new/totem-pl-parser-3.26.4/plparse/totem-pl-parser.c
--- old/totem-pl-parser-3.26.3/plparse/totem-pl-parser.c        2019-03-05 
13:51:28.000000000 +0100
+++ new/totem-pl-parser-3.26.4/plparse/totem-pl-parser.c        2019-11-12 
16:07:37.000000000 +0100
@@ -124,6 +124,7 @@
 #include "config.h"
 
 #include <string.h>
+#include <fnmatch.h>
 #include <glib.h>
 #include <glib/gstdio.h>
 #include <glib/gi18n-lib.h>
@@ -257,6 +258,7 @@
 struct TotemPlParserPrivate {
        GHashTable *ignore_schemes; /* key = char *, value = boolean */
        GHashTable *ignore_mimetypes; /*key = char *, value = boolean */
+       GHashTable *ignore_globs; /*key = char *, value = boolean */
        GMutex ignore_mutex;
        GThread *main_thread; /* see CALL_ASYNC() in *-private.h */
 
@@ -325,8 +327,6 @@
 
        totem_pl_parser_parent_class = g_type_class_peek_parent (klass);
 
-       g_type_class_add_private (klass, sizeof (TotemPlParserPrivate));
-
        object_class->finalize = totem_pl_parser_finalize;
        object_class->set_property = totem_pl_parser_set_property;
        object_class->get_property = totem_pl_parser_get_property;
@@ -1136,8 +1136,8 @@
                       TotemPlParserType   type,
                       GError            **error)
 {
-        g_return_val_if_fail (TOTEM_IS_PL_PARSER (parser), FALSE);
-        g_return_val_if_fail (TOTEM_IS_PL_PLAYLIST (playlist), FALSE);
+        g_return_val_if_fail (TOTEM_PL_IS_PARSER (parser), FALSE);
+        g_return_val_if_fail (TOTEM_PL_IS_PLAYLIST (playlist), FALSE);
         g_return_val_if_fail (G_IS_FILE (dest), FALSE);
 
         if (totem_pl_playlist_size (playlist) == 0) {
@@ -1276,25 +1276,25 @@
 static void
 totem_pl_parser_init (TotemPlParser *parser)
 {
-       parser->priv = G_TYPE_INSTANCE_GET_PRIVATE (parser, 
TOTEM_TYPE_PL_PARSER, TotemPlParserPrivate);
+       parser->priv = g_new0 (TotemPlParserPrivate, 1);
        parser->priv->main_thread = g_thread_self ();
        g_mutex_init (&parser->priv->ignore_mutex);
        parser->priv->ignore_schemes = g_hash_table_new_full (g_str_hash, 
g_str_equal, g_free, NULL);
        parser->priv->ignore_mimetypes = g_hash_table_new_full (g_str_hash, 
g_str_equal, g_free, NULL);
+       parser->priv->ignore_globs = g_hash_table_new_full (g_str_hash, 
g_str_equal, g_free, NULL);
 }
 
 static void
 totem_pl_parser_finalize (GObject *object)
 {
-       TotemPlParserPrivate *priv = TOTEM_PL_PARSER (object)->priv;
-
-       g_return_if_fail (object != NULL);
-       g_return_if_fail (priv != NULL);
+       TotemPlParser *parser = TOTEM_PL_PARSER (object);
+       TotemPlParserPrivate *priv = parser->priv;
 
        g_clear_pointer (&priv->ignore_schemes, g_hash_table_destroy);
        g_clear_pointer (&priv->ignore_mimetypes, g_hash_table_destroy);
-
+       g_clear_pointer (&priv->ignore_globs, g_hash_table_destroy);
        g_mutex_clear (&priv->ignore_mutex);
+       g_clear_pointer (&parser->priv, g_free);
 
        G_OBJECT_CLASS (totem_pl_parser_parent_class)->finalize (object);
 }
@@ -1584,6 +1584,28 @@
        return ret;
 }
 
+static gboolean
+totem_pl_parser_glob_is_ignored (TotemPlParser *parser,
+                                const char *filename)
+{
+       GHashTableIter iter;
+       gpointer key;
+       int ret;
+
+       g_mutex_lock (&parser->priv->ignore_mutex);
+       g_hash_table_iter_init (&iter, parser->priv->ignore_globs);
+       while (g_hash_table_iter_next (&iter, &key, NULL)) {
+               const char *glob = key;
+
+               ret = fnmatch (glob, filename, 0);
+               if (ret == 0)
+                       break;
+       }
+       g_mutex_unlock (&parser->priv->ignore_mutex);
+
+       return (ret == 0);
+}
+
 /**
  * totem_pl_parser_ignore:
  * @parser: a #TotemPlParser
@@ -1604,40 +1626,32 @@
 gboolean
 totem_pl_parser_ignore (TotemPlParser *parser, const char *uri)
 {
-       char *mimetype;
-       GFile *file;
+       g_autofree char *mimetype;
+       g_autoptr(GFile) file;
        guint i;
 
+       if (totem_pl_parser_glob_is_ignored (parser, uri) != FALSE)
+               return TRUE;
+
        file = g_file_new_for_path (uri);
-       if (totem_pl_parser_scheme_is_ignored (parser, file) != FALSE) {
-               g_object_unref (file);
+       if (totem_pl_parser_scheme_is_ignored (parser, file) != FALSE)
                return TRUE;
-       }
-       g_object_unref (file);
 
        //FIXME wrong for win32
        mimetype = g_content_type_guess (uri, NULL, 0, NULL);
-       if (mimetype == NULL || strcmp (mimetype, UNKNOWN_TYPE) == 0) {
-               g_free (mimetype);
+       if (mimetype == NULL || strcmp (mimetype, UNKNOWN_TYPE) == 0)
                return FALSE;
-       }
 
        for (i = 0; i < G_N_ELEMENTS (special_types); i++) {
-               if (strcmp (special_types[i].mimetype, mimetype) == 0) {
-                       g_free (mimetype);
+               if (strcmp (special_types[i].mimetype, mimetype) == 0)
                        return FALSE;
-               }
        }
 
        for (i = 0; i < G_N_ELEMENTS (dual_types); i++) {
-               if (strcmp (dual_types[i].mimetype, mimetype) == 0) {
-                       g_free (mimetype);
+               if (strcmp (dual_types[i].mimetype, mimetype) == 0)
                        return FALSE;
-               }
        }
 
-       g_free (mimetype);
-
        return TRUE;
 }
 
@@ -1780,9 +1794,10 @@
                                GFile *base_file,
                                TotemPlParseData *parse_data)
 {
-       char *mimetype;
+       g_autofree char *mimetype = NULL;
+       g_autofree gpointer data = NULL;
+       g_autofree char *uri = NULL;
        guint i;
-       gpointer data = NULL;
        TotemPlParserResult ret = TOTEM_PL_PARSER_RESULT_UNHANDLED;
        gboolean found = FALSE;
 
@@ -1820,18 +1835,21 @@
        if (!parse_data->recurse && parse_data->recurse_level > 0)
                return TOTEM_PL_PARSER_RESULT_UNHANDLED;
 
+       uri = g_file_get_uri (file);
+
        /* Should we try to parse it with quvi? */
-       if (g_file_has_uri_scheme (file, "http")) {
-               char *url;
-               url = g_file_get_uri (file);
-               if (url != NULL && totem_pl_parser_is_videosite (url, 
parser->priv->debug) != FALSE) {
+       if (g_file_has_uri_scheme (file, "http") ||
+           g_file_has_uri_scheme (file, "https")) {
+               if (uri != NULL && totem_pl_parser_is_videosite (uri, 
parser->priv->debug) != FALSE) {
                        ret = totem_pl_parser_add_videosite (parser, file, 
base_file, parse_data, NULL);
-                       if (ret == TOTEM_PL_PARSER_RESULT_SUCCESS) {
-                               g_free (url);
+                       if (ret == TOTEM_PL_PARSER_RESULT_SUCCESS)
                                return ret;
-                       }
                }
-               g_free (url);
+       }
+
+       if (uri != NULL) {
+               if (totem_pl_parser_glob_is_ignored (parser, uri))
+                       return TOTEM_PL_PARSER_RESULT_IGNORED;
        }
 
        /* In force mode we want to get the data */
@@ -1865,13 +1883,13 @@
        /* 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));
-       if (mimetype == NULL || strcmp (UNKNOWN_TYPE, mimetype) == 0
-           || (g_file_is_native (file) && g_content_type_is_a (mimetype, 
"text/plain") != FALSE)) {
+       if (mimetype == NULL ||
+           strcmp (UNKNOWN_TYPE, mimetype) == 0 ||
+           g_content_type_is_a (mimetype, "text/plain") != FALSE) {
                char *new_mimetype;
                new_mimetype = my_g_file_info_get_mime_type_with_data (file, 
&data, parser);
                if (new_mimetype) {
@@ -1883,20 +1901,13 @@
                }
        }
 
-       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 */
@@ -1910,11 +1921,8 @@
                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++;
@@ -1924,8 +1932,6 @@
                                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)
@@ -1969,8 +1975,7 @@
                                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;
@@ -1991,21 +1996,14 @@
                        }
                }
 
-               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);
@@ -2074,7 +2072,7 @@
        GTask *task;
        ParseAsyncData *data;
 
-       g_return_if_fail (TOTEM_IS_PL_PARSER (parser));
+       g_return_if_fail (TOTEM_PL_IS_PARSER (parser));
        g_return_if_fail (uri != NULL);
        g_return_if_fail (strstr (uri, "://") != NULL);
 
@@ -2110,7 +2108,7 @@
        TotemPlParserResult retval;
        TotemPlParseData data;
 
-       g_return_val_if_fail (TOTEM_IS_PL_PARSER (parser), 
TOTEM_PL_PARSER_RESULT_UNHANDLED);
+       g_return_val_if_fail (TOTEM_PL_IS_PARSER (parser), 
TOTEM_PL_PARSER_RESULT_UNHANDLED);
        g_return_val_if_fail (uri != NULL, TOTEM_PL_PARSER_RESULT_UNHANDLED);
        g_return_val_if_fail (strstr (uri, "://") != NULL,
                        TOTEM_PL_PARSER_RESULT_ERROR);
@@ -2185,7 +2183,7 @@
 {
        GTask *task = G_TASK (async_result);
 
-       g_return_val_if_fail (TOTEM_IS_PL_PARSER (parser), FALSE);
+       g_return_val_if_fail (TOTEM_PL_IS_PARSER (parser), FALSE);
        g_return_val_if_fail (g_task_is_valid (async_result, parser), FALSE);
 
        /* Propagate any errors which were caught and return the result; 
otherwise just return the result */
@@ -2228,7 +2226,7 @@
 {
        char *s;
 
-       g_return_if_fail (TOTEM_IS_PL_PARSER (parser));
+       g_return_if_fail (TOTEM_PL_IS_PARSER (parser));
 
        g_mutex_lock (&parser->priv->ignore_mutex);
 
@@ -2252,7 +2250,7 @@
 totem_pl_parser_add_ignored_mimetype (TotemPlParser *parser,
                const char *mimetype)
 {
-       g_return_if_fail (TOTEM_IS_PL_PARSER (parser));
+       g_return_if_fail (TOTEM_PL_IS_PARSER (parser));
 
        g_mutex_lock (&parser->priv->ignore_mutex);
        g_hash_table_insert (parser->priv->ignore_mimetypes, g_strdup 
(mimetype), GINT_TO_POINTER (1));
@@ -2260,6 +2258,27 @@
 }
 
 /**
+ * totem_pl_parser_add_ignored_glob:
+ * @parser: a #TotemPlParser
+ * @glob: a glob to ignore
+ *
+ * Adds a glob to the list of mimetypes to ignore, so that
+ * any URI of that glob is ignored during playlist parsing.
+ *
+ * Since: 3.26.4
+ **/
+void
+totem_pl_parser_add_ignored_glob (TotemPlParser *parser,
+                                 const char    *glob)
+{
+       g_return_if_fail (TOTEM_PL_IS_PARSER (parser));
+
+       g_mutex_lock (&parser->priv->ignore_mutex);
+       g_hash_table_insert (parser->priv->ignore_globs, g_strdup (glob), 
GINT_TO_POINTER (1));
+       g_mutex_unlock (&parser->priv->ignore_mutex);
+}
+
+/**
  * totem_pl_parser_parse_duration:
  * @duration: the duration string to parse
  * @debug: %TRUE if debug statements should be printed
@@ -2342,27 +2361,24 @@
 guint64
 totem_pl_parser_parse_date (const char *date_str, gboolean debug)
 {
-       GTimeVal val;
+       g_autoptr(GDateTime) date = NULL;
 
        g_return_val_if_fail (date_str != NULL, -1);
 
-       memset (&val, 0, sizeof(val));
        /* Try to parse as an ISO8601/RFC3339 date */
-       if (g_time_val_from_iso8601 (date_str, &val) != FALSE) {
+       date = g_date_time_new_from_iso8601 (date_str, NULL);
+       if (date != NULL) {
                D(g_message ("Parsed duration '%s' using the ISO8601 parser", 
date_str));
-               return val.tv_sec;
+               return g_date_time_to_unix (date);
        }
        D(g_message ("Failed to parse duration '%s' using the ISO8601 parser", 
date_str));
        /* Fall back to RFC 2822 date parsing */
-       {
-               g_autoptr(GDateTime) date = NULL;
-               date = g_mime_utils_header_decode_date (date_str);
-               if (!date || !g_date_time_to_timeval (date, &val)) {
-                       D(g_message ("Failed to parse duration '%s' using the 
RFC 2822 parser", date_str));
-                       return -1;
-               }
-               return val.tv_sec;
+       date = g_mime_utils_header_decode_date (date_str);
+       if (!date) {
+               D(g_message ("Failed to parse duration '%s' using the RFC 2822 
parser", date_str));
+               return -1;
        }
+       return g_date_time_to_unix (date);
 }
 #endif /* !TOTEM_PL_PARSER_MINI */
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/totem-pl-parser-3.26.3/plparse/totem-pl-parser.h 
new/totem-pl-parser-3.26.4/plparse/totem-pl-parser.h
--- old/totem-pl-parser-3.26.3/plparse/totem-pl-parser.h        2019-03-05 
13:51:28.000000000 +0100
+++ new/totem-pl-parser-3.26.4/plparse/totem-pl-parser.h        2019-11-12 
16:07:37.000000000 +0100
@@ -35,8 +35,8 @@
 #define TOTEM_TYPE_PL_PARSER            (totem_pl_parser_get_type ())
 #define TOTEM_PL_PARSER(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), 
TOTEM_TYPE_PL_PARSER, TotemPlParser))
 #define TOTEM_PL_PARSER_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), 
TOTEM_TYPE_PL_PARSER, TotemPlParserClass))
-#define TOTEM_IS_PL_PARSER(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), 
TOTEM_TYPE_PL_PARSER))
-#define TOTEM_IS_PL_PARSER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), 
TOTEM_TYPE_PL_PARSER))
+#define TOTEM_PL_IS_PARSER(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), 
TOTEM_TYPE_PL_PARSER))
+#define TOTEM_PL_IS_PARSER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), 
TOTEM_TYPE_PL_PARSER))
 
 /**
  * TotemPlParserResult:
@@ -352,6 +352,8 @@
                                               const char *scheme);
 void       totem_pl_parser_add_ignored_mimetype (TotemPlParser *parser,
                                                 const char *mimetype);
+void       totem_pl_parser_add_ignored_glob (TotemPlParser *parser,
+                                            const char *glob);
 
 TotemPlParserResult totem_pl_parser_parse (TotemPlParser *parser,
                                           const char *uri, gboolean fallback);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/totem-pl-parser-3.26.3/plparse/totem-pl-playlist.c 
new/totem-pl-parser-3.26.4/plparse/totem-pl-playlist.c
--- old/totem-pl-parser-3.26.3/plparse/totem-pl-playlist.c      2019-03-05 
13:51:28.000000000 +0100
+++ new/totem-pl-parser-3.26.4/plparse/totem-pl-playlist.c      2019-11-12 
16:07:37.000000000 +0100
@@ -51,13 +51,10 @@
         GList *items;
 };
 
-#define TOTEM_PL_PLAYLIST_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), 
TOTEM_TYPE_PL_PLAYLIST, TotemPlPlaylistPrivate))
-
 static void totem_pl_playlist_finalize (GObject *object);
 
-
-G_DEFINE_TYPE (TotemPlPlaylist, totem_pl_playlist, G_TYPE_OBJECT)
-
+G_DEFINE_TYPE_WITH_CODE (TotemPlPlaylist, totem_pl_playlist, G_TYPE_OBJECT,
+                        G_ADD_PRIVATE (TotemPlPlaylist))
 
 static void
 totem_pl_playlist_class_init (TotemPlPlaylistClass *klass)
@@ -65,8 +62,6 @@
         GObjectClass *object_class = G_OBJECT_CLASS (klass);
 
         object_class->finalize = totem_pl_playlist_finalize;
-
-        g_type_class_add_private (klass, sizeof (TotemPlPlaylistPrivate));
 }
 
 static void
@@ -79,7 +74,7 @@
 {
         TotemPlPlaylistPrivate *priv;
 
-        priv = TOTEM_PL_PLAYLIST_GET_PRIVATE (object);
+        priv = totem_pl_playlist_get_instance_private (TOTEM_PL_PLAYLIST 
(object));
 
         g_list_foreach (priv->items, (GFunc) g_hash_table_destroy, NULL);
         g_list_free (priv->items);
@@ -113,9 +108,9 @@
 {
         TotemPlPlaylistPrivate *priv;
 
-        g_return_val_if_fail (TOTEM_IS_PL_PLAYLIST (playlist), 0);
+        g_return_val_if_fail (TOTEM_PL_IS_PLAYLIST (playlist), 0);
 
-        priv = TOTEM_PL_PLAYLIST_GET_PRIVATE (playlist);
+        priv = totem_pl_playlist_get_instance_private (playlist);
 
         return g_list_length (priv->items);
 }
@@ -145,10 +140,10 @@
         TotemPlPlaylistPrivate *priv;
         GHashTable *item;
 
-        g_return_if_fail (TOTEM_IS_PL_PLAYLIST (playlist));
+        g_return_if_fail (TOTEM_PL_IS_PLAYLIST (playlist));
         g_return_if_fail (iter != NULL);
 
-        priv = TOTEM_PL_PLAYLIST_GET_PRIVATE (playlist);
+        priv = totem_pl_playlist_get_instance_private (playlist);
 
         item = create_playlist_item ();
         priv->items = g_list_prepend (priv->items, item);
@@ -174,10 +169,10 @@
         GHashTable *item;
         GList *list_item;
 
-        g_return_if_fail (TOTEM_IS_PL_PLAYLIST (playlist));
+        g_return_if_fail (TOTEM_PL_IS_PLAYLIST (playlist));
         g_return_if_fail (iter != NULL);
 
-        priv = TOTEM_PL_PLAYLIST_GET_PRIVATE (playlist);
+        priv = totem_pl_playlist_get_instance_private (playlist);
 
         item = create_playlist_item ();
 
@@ -211,10 +206,10 @@
         TotemPlPlaylistPrivate *priv;
         GHashTable *item;
 
-        g_return_if_fail (TOTEM_IS_PL_PLAYLIST (playlist));
+        g_return_if_fail (TOTEM_PL_IS_PLAYLIST (playlist));
         g_return_if_fail (iter != NULL);
 
-        priv = TOTEM_PL_PLAYLIST_GET_PRIVATE (playlist);
+        priv = totem_pl_playlist_get_instance_private (playlist);
 
         item = create_playlist_item ();
         priv->items = g_list_insert (priv->items, item, position);
@@ -237,7 +232,7 @@
                 return FALSE;
         }
 
-        priv = TOTEM_PL_PLAYLIST_GET_PRIVATE (playlist);
+        priv = totem_pl_playlist_get_instance_private (playlist);
 
         if (g_list_position (priv->items, iter->data2) == -1) {
                 return FALSE;
@@ -261,10 +256,10 @@
 {
         TotemPlPlaylistPrivate *priv;
 
-        g_return_val_if_fail (TOTEM_IS_PL_PLAYLIST (playlist), FALSE);
+        g_return_val_if_fail (TOTEM_PL_IS_PLAYLIST (playlist), FALSE);
         g_return_val_if_fail (iter != NULL, FALSE);
 
-        priv = TOTEM_PL_PLAYLIST_GET_PRIVATE (playlist);
+        priv = totem_pl_playlist_get_instance_private (playlist);
 
         if (!priv->items) {
                 /* Empty playlist */
@@ -293,7 +288,7 @@
 totem_pl_playlist_iter_next (TotemPlPlaylist     *playlist,
                              TotemPlPlaylistIter *iter)
 {
-        g_return_val_if_fail (TOTEM_IS_PL_PLAYLIST (playlist), FALSE);
+        g_return_val_if_fail (TOTEM_PL_IS_PLAYLIST (playlist), FALSE);
         g_return_val_if_fail (check_iter (playlist, iter), FALSE);
 
         iter->data2 = ((GList *) iter->data2)->next;
@@ -317,7 +312,7 @@
 totem_pl_playlist_iter_prev (TotemPlPlaylist     *playlist,
                              TotemPlPlaylistIter *iter)
 {
-        g_return_val_if_fail (TOTEM_IS_PL_PLAYLIST (playlist), FALSE);
+        g_return_val_if_fail (TOTEM_PL_IS_PLAYLIST (playlist), FALSE);
         g_return_val_if_fail (check_iter (playlist, iter), FALSE);
 
         iter->data2 = ((GList *) iter->data2)->prev;
@@ -346,7 +341,7 @@
         GHashTable *item_data;
         gchar *str;
 
-        g_return_val_if_fail (TOTEM_IS_PL_PLAYLIST (playlist), FALSE);
+        g_return_val_if_fail (TOTEM_PL_IS_PLAYLIST (playlist), FALSE);
         g_return_val_if_fail (check_iter (playlist, iter), FALSE);
         g_return_val_if_fail (key != NULL, FALSE);
         g_return_val_if_fail (value != NULL, FALSE);
@@ -381,7 +376,7 @@
         GHashTable *item_data;
         gchar *key, **value;
 
-        g_return_if_fail (TOTEM_IS_PL_PLAYLIST (playlist));
+        g_return_if_fail (TOTEM_PL_IS_PLAYLIST (playlist));
         g_return_if_fail (check_iter (playlist, iter));
 
         item_data = ((GList *) iter->data2)->data;
@@ -418,7 +413,7 @@
 {
         va_list args;
 
-        g_return_if_fail (TOTEM_IS_PL_PLAYLIST (playlist));
+        g_return_if_fail (TOTEM_PL_IS_PLAYLIST (playlist));
         g_return_if_fail (check_iter (playlist, iter));
 
         va_start (args, iter);
@@ -446,7 +441,7 @@
         GHashTable *item_data;
         gchar *str;
 
-        g_return_val_if_fail (TOTEM_IS_PL_PLAYLIST (playlist), FALSE);
+        g_return_val_if_fail (TOTEM_PL_IS_PLAYLIST (playlist), FALSE);
         g_return_val_if_fail (check_iter (playlist, iter), FALSE);
         g_return_val_if_fail (key != NULL, FALSE);
         g_return_val_if_fail (value != NULL, FALSE);
@@ -495,7 +490,7 @@
         GHashTable *item_data;
         gchar *key, *value;
 
-        g_return_if_fail (TOTEM_IS_PL_PLAYLIST (playlist));
+        g_return_if_fail (TOTEM_PL_IS_PLAYLIST (playlist));
         g_return_if_fail (check_iter (playlist, iter));
 
         item_data = ((GList *) iter->data2)->data;
@@ -529,7 +524,7 @@
 {
         va_list args;
 
-        g_return_if_fail (TOTEM_IS_PL_PLAYLIST (playlist));
+        g_return_if_fail (TOTEM_PL_IS_PLAYLIST (playlist));
         g_return_if_fail (check_iter (playlist, iter));
 
         va_start (args, iter);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/totem-pl-parser-3.26.3/plparse/totem-pl-playlist.h 
new/totem-pl-parser-3.26.4/plparse/totem-pl-playlist.h
--- old/totem-pl-parser-3.26.3/plparse/totem-pl-playlist.h      2019-03-05 
13:51:28.000000000 +0100
+++ new/totem-pl-parser-3.26.4/plparse/totem-pl-playlist.h      2019-11-12 
16:07:37.000000000 +0100
@@ -29,8 +29,8 @@
 #define TOTEM_TYPE_PL_PLAYLIST            (totem_pl_playlist_get_type ())
 #define TOTEM_PL_PLAYLIST(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), 
TOTEM_TYPE_PL_PLAYLIST, TotemPlPlaylist))
 #define TOTEM_PL_PLAYLIST_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), 
TOTEM_TYPE_PL_PLAYLIST, TotemPlPlaylistClass))
-#define TOTEM_IS_PL_PLAYLIST(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), 
TOTEM_TYPE_PL_PLAYLIST))
-#define TOTEM_IS_PL_PLAYLIST_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), 
TOTEM_TYPE_PL_PLAYLIST))
+#define TOTEM_PL_IS_PLAYLIST(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), 
TOTEM_TYPE_PL_PLAYLIST))
+#define TOTEM_PL_IS_PLAYLIST_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), 
TOTEM_TYPE_PL_PLAYLIST))
 
 /**
  * TotemPlPlaylist:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/totem-pl-parser-3.26.3/po/LINGUAS 
new/totem-pl-parser-3.26.4/po/LINGUAS
--- old/totem-pl-parser-3.26.3/po/LINGUAS       2019-03-05 13:51:28.000000000 
+0100
+++ new/totem-pl-parser-3.26.4/po/LINGUAS       2019-11-12 16:07:37.000000000 
+0100
@@ -53,6 +53,7 @@
 lv
 mai
 mg
+mjw
 mk
 ml
 mn
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/totem-pl-parser-3.26.3/po/da.po 
new/totem-pl-parser-3.26.4/po/da.po
--- old/totem-pl-parser-3.26.3/po/da.po 2019-03-05 13:51:28.000000000 +0100
+++ new/totem-pl-parser-3.26.4/po/da.po 2019-11-12 16:07:37.000000000 +0100
@@ -14,9 +14,8 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: totem-pl-parser\n"
-"Report-Msgid-Bugs-To: "
-"https://bugzilla.gnome.org/enter_bug.cgi?product=totem-pl-parser&keywords=I18N+L10N&component=General\n";
-"POT-Creation-Date: 2017-08-15 20:46+0000\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/totem-pl-parser/issues\n";
+"POT-Creation-Date: 2018-06-10 18:50+0000\n"
 "PO-Revision-Date: 2017-02-16 00:57+0100\n"
 "Last-Translator: Per Kongstad <[email protected]>\n"
 "Language-Team: Danish <[email protected]>\n"
@@ -452,8 +451,9 @@
 #~ "Lasse Bang Mikkelsen\n"
 #~ "Ask Hjorth Larsen\n"
 #~ "\n"
-#~ "Dansk-gruppen <[email protected]>\n"
-#~ "Mere info: http://www.dansk-gruppen.dk";
+#~ "Dansk-gruppen\n"
+#~ "Websted http://dansk-gruppen.dk\n";
+#~ "E-mail <[email protected]>"
 
 #~ msgid "Totem Website"
 #~ msgstr "Totems hjemmeside"
@@ -1487,4 +1487,3 @@
 #~ msgid "_Open with \"%s\""
 #~ msgstr "_Åbn med “%s”"
 
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/totem-pl-parser-3.26.3/po/et.po 
new/totem-pl-parser-3.26.4/po/et.po
--- old/totem-pl-parser-3.26.3/po/et.po 2019-03-05 13:51:28.000000000 +0100
+++ new/totem-pl-parser-3.26.4/po/et.po 2019-11-12 16:07:37.000000000 +0100
@@ -12,42 +12,49 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: totem-pl-parser HEAD\n"
-"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?";
-"product=totem&keywords=I18N+L10N&component=playlist parser\n"
-"POT-Creation-Date: 2014-04-15 11:49+0000\n"
-"PO-Revision-Date: 2014-04-16 00:55+0300\n"
-"Last-Translator: Mattias Põldaru <[email protected]>\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/totem-pl-parser/issues\n";
+"POT-Creation-Date: 2018-06-10 18:50+0000\n"
+"PO-Revision-Date: 2019-03-10 19:16+0200\n"
+"Last-Translator: Mart Raudsepp <[email protected]>\n"
 "Language-Team: Estonian <[email protected]>\n"
 "Language: et\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Poedit 1.5.4\n"
+"X-Generator: Poedit 2.2\n"
 
+#: plparse/totem-disc.c:276 plparse/totem-disc.c:289 plparse/totem-disc.c:533
 #, c-format
 msgid "Failed to mount %s."
 msgstr "Tõrge %s külgehaakimisel."
 
+#: plparse/totem-disc.c:418
 #, c-format
-msgid "No media in drive for device '%s'."
-msgstr "Seadmes '%s' pole andmekandjat."
+msgid "No media in drive for device “%s”."
+msgstr "Seadmes „%s“ pole andmekandjat."
 
+#: plparse/totem-disc.c:476
 #, c-format
 msgid "Please check that a disc is present in the drive."
 msgstr "Palun veendu, et plaat on seadmes."
 
+#: plparse/totem-disc.c:947
 msgid "Audio CD"
 msgstr "Audio CD"
 
+#: plparse/totem-disc.c:949
 msgid "Video CD"
 msgstr "Video VCD"
 
+#: plparse/totem-disc.c:951
 msgid "DVD"
 msgstr "DVD"
 
+#: plparse/totem-disc.c:953
 msgid "Digital Television"
 msgstr "Digitaaltelevisioon"
 
+#: plparse/totem-disc.c:955
 msgid "Blu-ray"
 msgstr "Blu-ray"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/totem-pl-parser-3.26.3/po/ja.po 
new/totem-pl-parser-3.26.4/po/ja.po
--- old/totem-pl-parser-3.26.3/po/ja.po 2019-03-05 13:51:28.000000000 +0100
+++ new/totem-pl-parser-3.26.4/po/ja.po 2019-11-12 16:07:37.000000000 +0100
@@ -1,59 +1,58 @@
 # totem-pl-parser ja.po.
 # This file is distributed under the same license as the totem-pl-parser 
package.
-# Copyright (C) 2002-2010 Free Software Foundation, Inc.
+# Copyright (C) 2002-2019 Free Software Foundation, Inc.
 # James Hashida <[email protected]>, 2002.
 # KAMAGASAKO Masatoshi <[email protected]>, 2003.
 # Takeshi AIHANA <[email protected]>, 2003-2009.
 # Takayuki KUSANO <[email protected]>, 2004, 2010.
 # Satoru SATOH <[email protected]>, 2005, 2006.
 # Jiro Matsuzawa <[email protected]>, 2015
+# sicklylife <[email protected]>, 2019.
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: totem-pl-parser master\n"
-"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?";
-"product=totem&keywords=I18N+L10N&component=playlist parser\n"
-"POT-Creation-Date: 2014-10-06 23:04+0000\n"
-"PO-Revision-Date: 2015-12-29 20:58+0900\n"
-"Last-Translator: Jiro Matsuzawa <[email protected]>\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/totem-pl-parser/issues\n";
+"POT-Creation-Date: 2018-06-10 18:50+0000\n"
+"PO-Revision-Date: 2019-10-08 21:00+0900\n"
+"Last-Translator: sicklylife <[email protected]>\n"
 "Language-Team: Japanese <[email protected]>\n"
 "Language: ja\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: ../plparse/totem-disc.c:276 ../plparse/totem-disc.c:289
-#: ../plparse/totem-disc.c:533
+#: plparse/totem-disc.c:276 plparse/totem-disc.c:289 plparse/totem-disc.c:533
 #, c-format
 msgid "Failed to mount %s."
 msgstr "%s のマウントに失敗しました。"
 
-#: ../plparse/totem-disc.c:418
+#: plparse/totem-disc.c:418
 #, c-format
-msgid "No media in drive for device '%s'."
-msgstr "デバイス '%s' のドライブにメディアはありません。"
+msgid "No media in drive for device “%s”."
+msgstr "デバイス“%s”のドライブにメディアはありません。"
 
-#: ../plparse/totem-disc.c:476
+#: plparse/totem-disc.c:476
 #, c-format
 msgid "Please check that a disc is present in the drive."
 msgstr "ドライブの中にディスクがあるか確認してください。"
 
-#: ../plparse/totem-disc.c:947
+#: plparse/totem-disc.c:947
 msgid "Audio CD"
 msgstr "楽曲の CD"
 
-#: ../plparse/totem-disc.c:949
+#: plparse/totem-disc.c:949
 msgid "Video CD"
 msgstr "ビデオ CD"
 
-#: ../plparse/totem-disc.c:951
+#: plparse/totem-disc.c:951
 msgid "DVD"
 msgstr "DVD"
 
-#: ../plparse/totem-disc.c:953
+#: plparse/totem-disc.c:953
 msgid "Digital Television"
 msgstr "デジタルテレビ"
 
-#: ../plparse/totem-disc.c:955
+#: plparse/totem-disc.c:955
 msgid "Blu-ray"
 msgstr "Blu-ray"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/totem-pl-parser-3.26.3/po/mjw.po 
new/totem-pl-parser-3.26.4/po/mjw.po
--- old/totem-pl-parser-3.26.3/po/mjw.po        1970-01-01 01:00:00.000000000 
+0100
+++ new/totem-pl-parser-3.26.4/po/mjw.po        2019-11-12 16:07:37.000000000 
+0100
@@ -0,0 +1,53 @@
+# Karbi translation for totem-pl-parser.
+# Copyright (C) 2019 totem-pl-parser's Free Software Foundation, Inc.
+# This file is distributed under the same license as the totem-pl-parser 
package.
+# Jor Teron <[email protected]>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: totem-pl-parser master\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/totem-pl-parser/issues\n";
+"POT-Creation-Date: 2019-04-08 19:26+0000\n"
+"PO-Revision-Date: 2019-08-01 19:26+0000\n"
+"Last-Translator: Jor Teron <[email protected]>\n"
+"Language-Team: Karbi <[email protected]>\n"
+"Language: mjw\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plurals-Forms: nplurals=2 ; plural= (n != 1 );\n"
+
+#: plparse/totem-disc.c:276 plparse/totem-disc.c:289 plparse/totem-disc.c:533
+#, c-format
+msgid "Failed to mount %s."
+msgstr "kethap-ingpu un eh %s"
+
+#: plparse/totem-disc.c:418
+#, c-format
+msgid "No media in drive for device “%s”."
+msgstr "“%s” long, kethap ason awe."
+
+#: plparse/totem-disc.c:476
+#, c-format
+msgid "Please check that a disc is present in the drive."
+msgstr "Drive long disc doma awe lang pame tha."
+
+#: plparse/totem-disc.c:947
+msgid "Audio CD"
+msgstr "Audio CD"
+
+#: plparse/totem-disc.c:949
+msgid "Video CD"
+msgstr "Video CD"
+
+#: plparse/totem-disc.c:951
+msgid "DVD"
+msgstr "DVD"
+
+#: plparse/totem-disc.c:953
+msgid "Digital Television"
+msgstr "Digital Television"
+
+#: plparse/totem-disc.c:955
+msgid "Blu-ray"
+msgstr "Blu-ray"


Reply via email to