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"