Hello community, here is the log from the commit of package libquvi for openSUSE:Factory checked in at 2014-02-12 11:09:02 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/libquvi (Old) and /work/SRC/openSUSE:Factory/.libquvi.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libquvi" Changes: -------- --- /work/SRC/openSUSE:Factory/libquvi/libquvi.changes 2013-10-22 10:18:54.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.libquvi.new/libquvi.changes 2014-02-12 11:09:03.000000000 +0100 @@ -1,0 +2,7 @@ +Mon Feb 10 19:32:50 UTC 2014 - [email protected] + +- Update to version 0.9.4: + + API: Return URLs in escaped (percent-encoded) form. + + m_url_unescaped_form: Check if g_uri_unescape_string fails. + +------------------------------------------------------------------- Old: ---- libquvi-0.9.3.tar.xz New: ---- libquvi-0.9.4.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libquvi.spec ++++++ --- /var/tmp/diff_new_pack.coSvO8/_old 2014-02-12 11:09:04.000000000 +0100 +++ /var/tmp/diff_new_pack.coSvO8/_new 2014-02-12 11:09:04.000000000 +0100 @@ -1,7 +1,7 @@ # # spec file for package libquvi # -# Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -16,16 +16,16 @@ # -%define soname -0_9-0_9_3 +%define soname -0_9-0_9_4 Name: libquvi -Version: 0.9.3 +Version: 0.9.4 Release: 0 Summary: Library to parse flash media stream URLs License: LGPL-2.1+ Group: System/Libraries Url: http://quvi.sourceforge.net/ -Source: http://downloads.sourceforge.net/project/quvi/0.9/libquvi/libquvi-%{version}.tar.xz +Source: http://sourceforge.net/projects/quvi/files/0.9/libquvi/libquvi-0.9.4.tar.xz BuildRequires: lua-devel # For pkgconfig() Provides BuildRequires: libgcrypt-devel ++++++ libquvi-0.9.3.tar.xz -> libquvi-0.9.4.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libquvi-0.9.3/ChangeLog new/libquvi-0.9.4/ChangeLog --- old/libquvi-0.9.3/ChangeLog 2013-09-03 16:31:59.000000000 +0200 +++ new/libquvi-0.9.4/ChangeLog 2013-11-10 08:46:58.000000000 +0100 @@ -1,3 +1,221 @@ +commit 47c744f +Author: Toni Gundogdu <[email protected]> +Date: 2013-11-10 + + Update NEWS for v0.9.4 + + Signed-off-by: Toni Gundogdu <[email protected]> + +NEWS + +commit 1522663 +Author: Toni Gundogdu <[email protected]> +Date: 2013-10-24 + + DOC: Make doxygen ignore `scripts_version_s' + + This fixes the "warning: Compound scripts_version_s is not documented." + while running doxygen. + + Signed-off-by: Toni Gundogdu <[email protected]> + +src/api/version.c + +commit b79b467 +Author: Toni Gundogdu <[email protected]> +Date: 2013-10-24 + + API: Return URLs in escaped (percent-encoded) form + + - Extend `l_chk_s' and `l_chk_assign_s' functions to allow the caller + set the `escape_url' arg to TRUE to tell the library to store the + string value in URI escaped form + + - All URLs returned by the library (e.g. media stream or thumbnail) are + now stored in their escaped form, and passed as such to the + applications querying them + + - "Reserved chars" remain unescaped + - https://tools.ietf.org/html/rfc3986#section-2.2 + + Affected API functions + + - quvi_subtitle_lang_get (QUVI_SUBTITLE_LANG_PROPERTY_URL) + - quvi_playlist_get (QUVI_PLAYLIST_*_URL) + - quvi_media_get (QUVI_MEDIA_*_URL) + + Rationale + + - Address the potential problem of chars getting mangled when the URLs + containing UTF8 chars are passed to the application trying to access + the URL + + Signed-off-by: Toni Gundogdu <[email protected]> + +src/api/media_get.c +src/api/playlist_get.c +src/api/subtitle_lang_get.c +src/lua/chk.c +src/lua/chk.h +src/lua/exec_media_script_parse.c +src/lua/exec_playlist_script_parse.c +src/lua/exec_subtitle_export_script_export.c +src/lua/exec_subtitle_export_script_ident.c +src/lua/exec_subtitle_script_parse.c + +commit 8e23664 +Author: Toni Gundogdu <[email protected]> +Date: 2013-10-24 + + m_url_unescaped_form: Check if g_uri_unescape_string fails + + Signed-off-by: Toni Gundogdu <[email protected]> + +src/misc/url.c + +commit 8f43c14 +Merge: 0c68568 6a9ee69 +Author: Toni Gundogdu <[email protected]> +Date: 2013-10-15 + + Merge branch 'tg/next__redo_url_{un}escaping' into next + +commit 6a9ee69 +Author: Toni Gundogdu <[email protected]> +Date: 2013-10-14 + + tests/media.c: Add test_media_escaped_utf8_url + + Signed-off-by: Toni Gundogdu <[email protected]> + +tests/media.c + +commit 0246e60 +Author: Toni Gundogdu <[email protected]> +Date: 2013-10-14 + + test_media_escaped_url: Replace URL + + Signed-off-by: Toni Gundogdu <[email protected]> + +tests/media.c + +commit 95d221b +Author: Toni Gundogdu <[email protected]> +Date: 2013-10-14 + + test_media_select: Replace URL, update patterns + + Signed-off-by: Toni Gundogdu <[email protected]> + +tests/media.c + +commit d7e5c54 +Author: Toni Gundogdu <[email protected]> +Date: 2013-10-14 + + test_media_multi: Replace test URL + + Other: + * Check {video,audio} encoding properties conditionally + + Signed-off-by: Toni Gundogdu <[email protected]> + +tests/media.c + +commit fa705e3 +Author: Toni Gundogdu <[email protected]> +Date: 2013-10-14 + + test_scan_core: Replace test URL + + Signed-off-by: Toni Gundogdu <[email protected]> + +tests/scan.c + +commit 5b02675 +Author: Toni Gundogdu <[email protected]> +Date: 2013-10-14 + + n_new, n_resolve_new: Escape URL for libcurl + + Escape the URLs at these chokepoints before they are passed to libcurl + (via CURLOPT_URL). libcurl works with UTF8 chars as long as they have + been escaped. + + Signed-off-by: Toni Gundogdu <[email protected]> + +src/net/handle.c + +commit 3b2a19d +Author: Toni Gundogdu <[email protected]> +Date: 2013-10-14 + + m_subtitle_new: Store input URL in unescaped form + + Signed-off-by: Toni Gundogdu <[email protected]> + +src/misc/subtitle.c + +commit c312f9a +Author: Toni Gundogdu <[email protected]> +Date: 2013-10-14 + + m_playlist_new: Store input URL in unescaped form + + Signed-off-by: Toni Gundogdu <[email protected]> + +src/misc/playlist.c + +commit 3e5cb7d +Author: Toni Gundogdu <[email protected]> +Date: 2013-10-14 + + m_media_new: Store input URL in unescaped form + + Signed-off-by: Toni Gundogdu <[email protected]> + +src/misc/media.c + +commit 4a626ab +Author: Toni Gundogdu <[email protected]> +Date: 2013-10-14 + + Add misc/url.* with m_url_(un)escaped_form + + Signed-off-by: Toni Gundogdu <[email protected]> + +src/misc/Makefile.am +src/misc/url.c +src/misc/url.h + +commit 741d967 +Author: Toni Gundogdu <[email protected]> +Date: 2013-10-14 + + m_unescape_url: Remove completely + + This function will be replaced by m_url_(un)escaped_form. + + Signed-off-by: Toni Gundogdu <[email protected]> + +src/misc/Makefile.am +src/misc/media.c +src/misc/playlist.c +src/misc/subtitle.c +src/misc/unescape.c +src/misc/unescape.h + +commit 0c68568 +Author: Toni Gundogdu <[email protected]> +Date: 2013-10-13 + + DOC: Update C API reference URL + + Signed-off-by: Toni Gundogdu <[email protected]> + +doc/footer.txt + commit c0a4fec Author: Toni Gundogdu <[email protected]> Date: 2013-09-03 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libquvi-0.9.3/NEWS new/libquvi-0.9.4/NEWS --- old/libquvi-0.9.3/NEWS 2013-09-03 16:30:29.000000000 +0200 +++ new/libquvi-0.9.4/NEWS 2013-11-10 08:44:57.000000000 +0100 @@ -1,3 +1,12 @@ +v0.9.4 [2013-11-10] + +Toni Gundogdu: + - API: Return URLs in escaped (percent-encoded) form [b79b467] + - FIX: m_url_unescaped_form: Check if g_uri_unescape_string fails [8e23664] + + 23 files changed, 255 insertions(+), 145 deletions(-) + + v0.9.3 [2013-09-03] Toni Gundogdu: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libquvi-0.9.3/VERSION new/libquvi-0.9.4/VERSION --- old/libquvi-0.9.3/VERSION 2013-09-03 16:31:59.000000000 +0200 +++ new/libquvi-0.9.4/VERSION 2013-11-10 08:46:53.000000000 +0100 @@ -1 +1 @@ -v0.9.3 +v0.9.4 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libquvi-0.9.3/configure new/libquvi-0.9.4/configure --- old/libquvi-0.9.3/configure 2013-09-03 16:31:21.000000000 +0200 +++ new/libquvi-0.9.4/configure 2013-11-10 08:45:43.000000000 +0100 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for libquvi 0.9.3. +# Generated by GNU Autoconf 2.69 for libquvi 0.9.4. # # Report bugs to <http://quvi.sf.net/bugs/>. # @@ -590,8 +590,8 @@ # Identity of this package. PACKAGE_NAME='libquvi' PACKAGE_TARNAME='libquvi' -PACKAGE_VERSION='0.9.3' -PACKAGE_STRING='libquvi 0.9.3' +PACKAGE_VERSION='0.9.4' +PACKAGE_STRING='libquvi 0.9.4' PACKAGE_BUGREPORT='http://quvi.sf.net/bugs/' PACKAGE_URL='http://quvi.sf.net/' @@ -1386,7 +1386,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures libquvi 0.9.3 to adapt to many kinds of systems. +\`configure' configures libquvi 0.9.4 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1457,7 +1457,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of libquvi 0.9.3:";; + short | recursive ) echo "Configuration of libquvi 0.9.4:";; esac cat <<\_ACEOF @@ -1597,7 +1597,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -libquvi configure 0.9.3 +libquvi configure 0.9.4 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2020,7 +2020,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by libquvi $as_me 0.9.3, which was +It was created by libquvi $as_me 0.9.4, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -4297,7 +4297,7 @@ # Define the identity of the package. PACKAGE='libquvi' - VERSION='0.9.3' + VERSION='0.9.4' cat >>confdefs.h <<_ACEOF @@ -17417,7 +17417,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by libquvi $as_me 0.9.3, which was +This file was extended by libquvi $as_me 0.9.4, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -17484,7 +17484,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -libquvi config.status 0.9.3 +libquvi config.status 0.9.4 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libquvi-0.9.3/doc/footer.txt new/libquvi-0.9.4/doc/footer.txt --- old/libquvi-0.9.3/doc/footer.txt 2013-09-03 16:28:40.000000000 +0200 +++ new/libquvi-0.9.4/doc/footer.txt 2013-11-10 08:33:09.000000000 +0100 @@ -11,7 +11,7 @@ C API reference:: The latest C API reference documentation may be viewed online at - `http://quvi.sf.net/doc/`. + `http://quvi.sourceforge.net/r/api/0.9/`. GLib:: http://developer.gnome.org/glib/stable/glib-Base64-Encoding.html diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libquvi-0.9.3/doc/man3/libquvi.3 new/libquvi-0.9.4/doc/man3/libquvi.3 --- old/libquvi-0.9.3/doc/man3/libquvi.3 2013-09-03 16:32:02.000000000 +0200 +++ new/libquvi-0.9.4/doc/man3/libquvi.3 2013-11-10 08:47:01.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: libquvi .\" Author: [see the "Authors" section] .\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/> -.\" Date: 09/03/2013 +.\" Date: 11/10/2013 .\" Manual: libquvi Manual -.\" Source: libquvi 0.9.3 +.\" Source: libquvi 0.9.4 .\" Language: English .\" -.TH "LIBQUVI" "3" "09/03/2013" "libquvi 0\&.9\&.3" "libquvi Manual" +.TH "LIBQUVI" "3" "11/10/2013" "libquvi 0\&.9\&.4" "libquvi Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -109,7 +109,7 @@ C API reference .RS 4 The latest C API reference documentation may be viewed online at -http://quvi\&.sf\&.net/doc/\&. +http://quvi\&.sourceforge\&.net/r/api/0\&.9/\&. .RE .PP GLib diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libquvi-0.9.3/doc/man7/quvi-object.7 new/libquvi-0.9.4/doc/man7/quvi-object.7 --- old/libquvi-0.9.3/doc/man7/quvi-object.7 2013-09-03 16:32:04.000000000 +0200 +++ new/libquvi-0.9.4/doc/man7/quvi-object.7 2013-11-10 08:47:02.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: quvi-object .\" Author: [see the "Authors" section] .\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/> -.\" Date: 09/03/2013 +.\" Date: 11/10/2013 .\" Manual: libquvi Manual -.\" Source: libquvi 0.9.3 +.\" Source: libquvi 0.9.4 .\" Language: English .\" -.TH "QUVI\-OBJECT" "7" "09/03/2013" "libquvi 0\&.9\&.3" "libquvi Manual" +.TH "QUVI\-OBJECT" "7" "11/10/2013" "libquvi 0\&.9\&.4" "libquvi Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -832,7 +832,7 @@ C API reference .RS 4 The latest C API reference documentation may be viewed online at -http://quvi\&.sf\&.net/doc/\&. +http://quvi\&.sourceforge\&.net/r/api/0\&.9/\&. .RE .PP GLib diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libquvi-0.9.3/po/libquvi.pot new/libquvi-0.9.4/po/libquvi.pot --- old/libquvi-0.9.3/po/libquvi.pot 2013-09-03 16:32:00.000000000 +0200 +++ new/libquvi-0.9.4/po/libquvi.pot 2013-11-10 08:46:44.000000000 +0100 @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: libquvi 0.9.3\n" +"Project-Id-Version: libquvi 0.9.4\n" "Report-Msgid-Bugs-To: http://quvi.sf.net/bugs/\n" -"POT-Creation-Date: 2013-09-03 17:32+0300\n" +"POT-Creation-Date: 2013-11-10 09:46+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <[email protected]>\n" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libquvi-0.9.3/src/api/media_get.c new/libquvi-0.9.4/src/api/media_get.c --- old/libquvi-0.9.3/src/api/media_get.c 2013-09-03 16:23:14.000000000 +0200 +++ new/libquvi-0.9.4/src/api/media_get.c 2013-11-10 08:33:09.000000000 +0100 @@ -160,11 +160,13 @@ /** @brief Return a media property @sa @ref parse_media @ingroup mediaprop -@note Accessing any of the QUVI_MEDIA_STREAM_PROPERTY_* values using -this function will cause the library to advance to the first stream -in the list, this will conflict with @ref quvi_media_stream_next, -causing @ref quvi_media_stream_next to advance from the second stream, -not the first stream +@note + - Accessing any of the QUVI_MEDIA_STREAM_PROPERTY_* values using this + function will cause the library to advance to the first stream in + the list, this will conflict with @ref quvi_media_stream_next, + causing @ref quvi_media_stream_next to advance from the second + stream, not the first stream + - URLs will be returned in the escaped form */ void quvi_media_get(quvi_media_t handle, QuviMediaProperty property, ...) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libquvi-0.9.3/src/api/playlist_get.c new/libquvi-0.9.4/src/api/playlist_get.c --- old/libquvi-0.9.3/src/api/playlist_get.c 2013-09-03 16:23:14.000000000 +0200 +++ new/libquvi-0.9.4/src/api/playlist_get.c 2013-11-10 08:33:09.000000000 +0100 @@ -146,6 +146,7 @@ /** @brief Return a playlist property @sa @ref parse_playlist @ingroup playlistprop +@note URLs will be returned in the escaped form */ void quvi_playlist_get(quvi_playlist_t handle, QuviPlaylistProperty property, ...) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libquvi-0.9.3/src/api/subtitle_lang_get.c new/libquvi-0.9.4/src/api/subtitle_lang_get.c --- old/libquvi-0.9.3/src/api/subtitle_lang_get.c 2013-09-03 16:23:14.000000000 +0200 +++ new/libquvi-0.9.4/src/api/subtitle_lang_get.c 2013-11-10 08:33:09.000000000 +0100 @@ -113,6 +113,7 @@ /** @brief Return a subtitle property @sa @ref parse_subtitle @ingroup subprop +@note URLs will be returned in the escaped form */ void quvi_subtitle_lang_get(quvi_subtitle_lang_t handle, QuviSubtitleLangProperty n, ...) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libquvi-0.9.3/src/api/version.c new/libquvi-0.9.4/src/api/version.c --- old/libquvi-0.9.3/src/api/version.c 2013-09-03 16:28:40.000000000 +0200 +++ new/libquvi-0.9.4/src/api/version.c 2013-11-10 08:33:09.000000000 +0100 @@ -42,6 +42,7 @@ } } +/** @cond NODOC */ struct scripts_version_s { gchar configuration[128]; @@ -49,6 +50,7 @@ }; typedef struct scripts_version_s *scripts_version_t; +/** @endcond */ static void scripts_version_read(scripts_version_t v) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libquvi-0.9.3/src/lua/chk.c new/libquvi-0.9.4/src/lua/chk.c --- old/libquvi-0.9.3/src/lua/chk.c 2013-05-19 17:44:39.000000000 +0200 +++ new/libquvi-0.9.4/src/lua/chk.c 2013-11-10 08:33:09.000000000 +0100 @@ -1,5 +1,5 @@ /* libquvi - * Copyright (C) 2012 Toni Gundogdu <[email protected]> + * Copyright (C) 2012,2013 Toni Gundogdu <[email protected]> * * This file is part of libquvi <http://quvi.sourceforge.net/>. * @@ -30,6 +30,7 @@ /* -- */ #include "lua/chk.h" #include "lua/def.h" +#include "misc/url.h" #include "misc/re.h" /* @@ -51,7 +52,7 @@ lua_pushnil(l); while (lua_next(l, LI_KEY)) { - l_chk_assign_s(l, k_domains, qs->domains, TRUE); + l_chk_assign_s(l, k_domains, qs->domains, TRUE, FALSE); l_chk_assign_b(l, k_can_parse_url, &r); lua_pop(l, 1); } @@ -70,7 +71,8 @@ * * NOTE: g_free the returned value when done using it. */ -gboolean l_chk_s(lua_State *l, const gchar *w, gchar **v, gboolean trim_flag) +gboolean l_chk_s(lua_State *l, const gchar *w, gchar **v, + gboolean trim_flag, gboolean escape_url) { if (lua_isstring(l, LI_KEY) && lua_isstring(l, LI_VALUE)) { @@ -80,6 +82,12 @@ *v = (trim_flag == TRUE) ? m_trim_ws(s) : g_strdup(s); + if (escape_url == TRUE) + { + gchar *e = m_url_escaped_form(*v); + g_free(*v); + *v = e; + } return (TRUE); } } @@ -87,10 +95,10 @@ } gboolean l_chk_assign_s(lua_State *l, const gchar *k, GString *v, - gboolean trim_flag) + gboolean trim_flag, gboolean escape_url) { gchar *s = NULL; - if (l_chk_s(l, k, &s, trim_flag) == TRUE) + if (l_chk_s(l, k, &s, trim_flag, escape_url) == TRUE) { g_string_assign(v, s); g_free(s); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libquvi-0.9.3/src/lua/chk.h new/libquvi-0.9.4/src/lua/chk.h --- old/libquvi-0.9.3/src/lua/chk.h 2013-05-19 17:44:39.000000000 +0200 +++ new/libquvi-0.9.4/src/lua/chk.h 2013-11-10 08:33:09.000000000 +0100 @@ -1,5 +1,5 @@ /* libquvi - * Copyright (C) 2012 Toni Gundogdu <[email protected]> + * Copyright (C) 2012,2013 Toni Gundogdu <[email protected]> * * This file is part of libquvi <http://quvi.sourceforge.net/>. * @@ -24,8 +24,9 @@ gboolean l_chk_can_parse_url(lua_State*, _quvi_script_t, const gchar*, const gchar*, const gchar*); -gboolean l_chk_assign_s(lua_State*, const gchar*, GString*, gboolean); -gboolean l_chk_s(lua_State*, const gchar*, gchar**, gboolean); +gboolean l_chk_assign_s(lua_State*, const gchar*, GString*, gboolean, + gboolean); +gboolean l_chk_s(lua_State*, const gchar*, gchar**, gboolean, gboolean); gboolean l_chk_assign_n(lua_State*, const gchar*, gdouble*); gboolean l_chk_n(lua_State*, const gchar*, gdouble*); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libquvi-0.9.3/src/lua/exec_media_script_parse.c new/libquvi-0.9.4/src/lua/exec_media_script_parse.c --- old/libquvi-0.9.3/src/lua/exec_media_script_parse.c 2013-05-19 17:44:39.000000000 +0200 +++ new/libquvi-0.9.4/src/lua/exec_media_script_parse.c 2013-11-10 08:33:09.000000000 +0100 @@ -52,7 +52,7 @@ while (lua_next(l, LI_KEY)) { l_chk_assign_n(l, MSS_VIDEO_BITRATE_KBIT_S, &qms->video.bitrate_kbit_s); - l_chk_assign_s(l, MSS_VIDEO_ENCODING, qms->video.encoding, TRUE); + l_chk_assign_s(l, MSS_VIDEO_ENCODING, qms->video.encoding, TRUE, FALSE); l_chk_assign_n(l, MSS_VIDEO_HEIGHT, &qms->video.height); l_chk_assign_n(l, MSS_VIDEO_WIDTH, &qms->video.width); lua_pop(l, 1); @@ -66,7 +66,7 @@ while (lua_next(l, LI_KEY)) { l_chk_assign_n(l, MSS_AUDIO_BITRATE_KBIT_S, &qms->audio.bitrate_kbit_s); - l_chk_assign_s(l, MSS_AUDIO_ENCODING, qms->audio.encoding, TRUE); + l_chk_assign_s(l, MSS_AUDIO_ENCODING, qms->audio.encoding, TRUE, FALSE); lua_pop(l, 1); } } @@ -130,9 +130,9 @@ _chk_stream_sublevel(MSS_VIDEO, l, qm, qms, _foreach_video_property); _chk_stream_sublevel(MSS_AUDIO, l, qm, qms, _foreach_audio_property); _chk_stream_sublevel(MSS_FLAGS, l, qm, qms, _foreach_flag_property); - l_chk_assign_s(l, MSS_CONTAINER, qms->container, TRUE); - l_chk_assign_s(l, MSS_URL, qms->url, TRUE); - l_chk_assign_s(l, MSS_ID, qms->id, TRUE); + l_chk_assign_s(l, MSS_CONTAINER, qms->container, TRUE, FALSE); + l_chk_assign_s(l, MSS_URL, qms->url, TRUE, TRUE); + l_chk_assign_s(l, MSS_ID, qms->id, TRUE, FALSE); lua_pop(l, 1); } _has_stream_url(l, qms, script_path, i); @@ -219,9 +219,9 @@ { l_chk_assign_n(l, MS_START_TIME_MS, &qm->start_time_ms); l_chk_assign_n(l, MS_DURATION_MS, &qm->duration_ms); - l_chk_assign_s(l, MS_THUMB_URL, qm->url.thumbnail, TRUE); - l_chk_assign_s(l, MS_TITLE, qm->title, TRUE); - l_chk_assign_s(l, MS_ID, qm->id, TRUE); + l_chk_assign_s(l, MS_THUMB_URL, qm->url.thumbnail, TRUE, TRUE); + l_chk_assign_s(l, MS_TITLE, qm->title, TRUE, FALSE); + l_chk_assign_s(l, MS_ID, qm->id, TRUE, FALSE); lua_pop(l, 1); } } @@ -232,7 +232,7 @@ lua_pushnil(l); while (lua_next(l, LI_KEY)) { - l_chk_assign_s(l, MS_GOTO_URL, qm->url.redirect_to, TRUE); + l_chk_assign_s(l, MS_GOTO_URL, qm->url.redirect_to, TRUE, TRUE); lua_pop(l, 1); } return ((qm->url.redirect_to->len >0) ? TRUE:FALSE); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libquvi-0.9.3/src/lua/exec_playlist_script_parse.c new/libquvi-0.9.4/src/lua/exec_playlist_script_parse.c --- old/libquvi-0.9.3/src/lua/exec_playlist_script_parse.c 2013-05-19 17:44:39.000000000 +0200 +++ new/libquvi-0.9.4/src/lua/exec_playlist_script_parse.c 2013-11-10 08:33:09.000000000 +0100 @@ -63,8 +63,8 @@ while (lua_next(l, LI_KEY)) /* For each qargs.media */ { l_chk_assign_n(l, PSM_DURATION_MS, &(*qpm)->duration_ms); - l_chk_assign_s(l, PSM_TITLE, (*qpm)->title, TRUE); - l_chk_assign_s(l, PSM_URL, (*qpm)->url, TRUE); + l_chk_assign_s(l, PSM_TITLE, (*qpm)->title, TRUE, FALSE); + l_chk_assign_s(l, PSM_URL, (*qpm)->url, TRUE, TRUE); lua_pop(l, 1); } @@ -122,9 +122,9 @@ lua_pushnil(l); while (lua_next(l, LI_KEY)) { - l_chk_assign_s(l, PS_THUMB_URL, qp->url.thumbnail, TRUE); - l_chk_assign_s(l, PS_ID, qp->id.playlist, TRUE); - l_chk_assign_s(l, PS_TITLE, qp->title, TRUE); + l_chk_assign_s(l, PS_THUMB_URL, qp->url.thumbnail, TRUE, TRUE); + l_chk_assign_s(l, PS_ID, qp->id.playlist, TRUE, FALSE); + l_chk_assign_s(l, PS_TITLE, qp->title, TRUE, FALSE); lua_pop(l, 1); } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libquvi-0.9.3/src/lua/exec_subtitle_export_script_export.c new/libquvi-0.9.4/src/lua/exec_subtitle_export_script_export.c --- old/libquvi-0.9.3/src/lua/exec_subtitle_export_script_export.c 2013-05-19 17:44:39.000000000 +0200 +++ new/libquvi-0.9.4/src/lua/exec_subtitle_export_script_export.c 2013-11-10 08:33:09.000000000 +0100 @@ -52,7 +52,7 @@ lua_pushnil(l); while (lua_next(l, LI_KEY)) { - l_chk_assign_s(l, SUES_DATA, qse->data, FALSE); + l_chk_assign_s(l, SUES_DATA, qse->data, FALSE, FALSE); lua_pop(l, 1); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libquvi-0.9.3/src/lua/exec_subtitle_export_script_ident.c new/libquvi-0.9.4/src/lua/exec_subtitle_export_script_ident.c --- old/libquvi-0.9.3/src/lua/exec_subtitle_export_script_ident.c 2013-05-19 17:44:39.000000000 +0200 +++ new/libquvi-0.9.4/src/lua/exec_subtitle_export_script_ident.c 2013-11-10 08:33:09.000000000 +0100 @@ -51,7 +51,7 @@ lua_pushnil(l); while (lua_next(l, LI_KEY)) { - l_chk_assign_s(l, SUES_EXPORT_FORMAT, qs->export.format, TRUE); + l_chk_assign_s(l, SUES_EXPORT_FORMAT, qs->export.format, TRUE, FALSE); l_chk_assign_b(l, SUES_CAN_EXPORT_DATA, &r); lua_pop(l, 1); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libquvi-0.9.3/src/lua/exec_subtitle_script_parse.c new/libquvi-0.9.4/src/lua/exec_subtitle_script_parse.c --- old/libquvi-0.9.3/src/lua/exec_subtitle_script_parse.c 2013-05-19 17:44:39.000000000 +0200 +++ new/libquvi-0.9.4/src/lua/exec_subtitle_script_parse.c 2013-11-10 08:33:09.000000000 +0100 @@ -130,11 +130,11 @@ lua_pushnil(l); while (lua_next(l, LI_KEY)) { - l_chk_assign_s(l, SUSSL_TRANSLATED, qsl->translated, TRUE); - l_chk_assign_s(l, SUSSL_ORIGINAL, qsl->original, TRUE); - l_chk_assign_s(l, SUSSL_CODE, qsl->code, TRUE); - l_chk_assign_s(l, SUSSL_URL, qsl->url, TRUE); - l_chk_assign_s(l, SUSSL_ID, qsl->id, TRUE); + l_chk_assign_s(l, SUSSL_TRANSLATED, qsl->translated, TRUE, FALSE); + l_chk_assign_s(l, SUSSL_ORIGINAL, qsl->original, TRUE, FALSE); + l_chk_assign_s(l, SUSSL_CODE, qsl->code, TRUE, FALSE); + l_chk_assign_s(l, SUSSL_URL, qsl->url, TRUE, TRUE); + l_chk_assign_s(l, SUSSL_ID, qsl->id, TRUE, FALSE); lua_pop(l, 1); } return (_chk_url(l, script_path, qsl, i)); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libquvi-0.9.3/src/misc/Makefile.am new/libquvi-0.9.4/src/misc/Makefile.am --- old/libquvi-0.9.3/src/misc/Makefile.am 2013-05-19 17:44:39.000000000 +0200 +++ new/libquvi-0.9.4/src/misc/Makefile.am 2013-11-10 08:33:09.000000000 +0100 @@ -16,7 +16,7 @@ subtitle_export.c\ to_utf8.c\ trim.c\ - unescape.c + url.c hdr=\ match_media_script.h\ @@ -32,7 +32,7 @@ slst.h\ subtitle_export.h\ subtitle.h\ - unescape.h + url.h noinst_LTLIBRARIES=libconvenience_misc.la libconvenience_misc_la_SOURCES=$(src) $(hdr) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libquvi-0.9.3/src/misc/Makefile.in new/libquvi-0.9.4/src/misc/Makefile.in --- old/libquvi-0.9.3/src/misc/Makefile.in 2013-09-03 16:31:24.000000000 +0200 +++ new/libquvi-0.9.4/src/misc/Makefile.in 2013-11-10 08:45:46.000000000 +0100 @@ -89,8 +89,7 @@ libconvenience_misc_la-subtitle.lo \ libconvenience_misc_la-subtitle_export.lo \ libconvenience_misc_la-to_utf8.lo \ - libconvenience_misc_la-trim.lo \ - libconvenience_misc_la-unescape.lo + libconvenience_misc_la-trim.lo libconvenience_misc_la-url.lo am__objects_2 = am_libconvenience_misc_la_OBJECTS = $(am__objects_1) $(am__objects_2) libconvenience_misc_la_OBJECTS = $(am_libconvenience_misc_la_OBJECTS) @@ -316,7 +315,7 @@ subtitle_export.c\ to_utf8.c\ trim.c\ - unescape.c + url.c hdr = \ match_media_script.h\ @@ -332,7 +331,7 @@ slst.h\ subtitle_export.h\ subtitle.h\ - unescape.h + url.h noinst_LTLIBRARIES = libconvenience_misc.la libconvenience_misc_la_SOURCES = $(src) $(hdr) @@ -419,7 +418,7 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libconvenience_misc_la-subtitle_export.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libconvenience_misc_la-to_utf8.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libconvenience_misc_la-trim.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libconvenience_misc_la-unescape.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libconvenience_misc_la-url.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @@ -561,12 +560,12 @@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libconvenience_misc_la_CPPFLAGS) $(CPPFLAGS) $(libconvenience_misc_la_CFLAGS) $(CFLAGS) -c -o libconvenience_misc_la-trim.lo `test -f 'trim.c' || echo '$(srcdir)/'`trim.c -libconvenience_misc_la-unescape.lo: unescape.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libconvenience_misc_la_CPPFLAGS) $(CPPFLAGS) $(libconvenience_misc_la_CFLAGS) $(CFLAGS) -MT libconvenience_misc_la-unescape.lo -MD -MP -MF $(DEPDIR)/libconvenience_misc_la-unescape.Tpo -c -o libconvenience_misc_la-unescape.lo `test -f 'unescape.c' || echo '$(srcdir)/'`unescape.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libconvenience_misc_la-unescape.Tpo $(DEPDIR)/libconvenience_misc_la-unescape.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unescape.c' object='libconvenience_misc_la-unescape.lo' libtool=yes @AMDEPBACKSLASH@ +libconvenience_misc_la-url.lo: url.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libconvenience_misc_la_CPPFLAGS) $(CPPFLAGS) $(libconvenience_misc_la_CFLAGS) $(CFLAGS) -MT libconvenience_misc_la-url.lo -MD -MP -MF $(DEPDIR)/libconvenience_misc_la-url.Tpo -c -o libconvenience_misc_la-url.lo `test -f 'url.c' || echo '$(srcdir)/'`url.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libconvenience_misc_la-url.Tpo $(DEPDIR)/libconvenience_misc_la-url.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='url.c' object='libconvenience_misc_la-url.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libconvenience_misc_la_CPPFLAGS) $(CPPFLAGS) $(libconvenience_misc_la_CFLAGS) $(CFLAGS) -c -o libconvenience_misc_la-unescape.lo `test -f 'unescape.c' || echo '$(srcdir)/'`unescape.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libconvenience_misc_la_CPPFLAGS) $(CPPFLAGS) $(libconvenience_misc_la_CFLAGS) $(CFLAGS) -c -o libconvenience_misc_la-url.lo `test -f 'url.c' || echo '$(srcdir)/'`url.c mostlyclean-libtool: -rm -f *.lo diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libquvi-0.9.3/src/misc/media.c new/libquvi-0.9.4/src/misc/media.c --- old/libquvi-0.9.3/src/misc/media.c 2013-09-03 16:28:40.000000000 +0200 +++ new/libquvi-0.9.4/src/misc/media.c 2013-11-10 08:33:09.000000000 +0100 @@ -27,23 +27,33 @@ #include "_quvi_s.h" #include "_quvi_media_s.h" /* -- */ -#include "misc/unescape.h" #include "misc/media.h" #include "misc/slst.h" +#include "misc/url.h" gpointer m_media_new(_quvi_t q, const gchar *url) { - _quvi_media_t qm = g_new0(struct _quvi_media_s, 1); - /* URL */ + _quvi_media_t qm; + gchar *u; + + qm = g_new0(struct _quvi_media_s, 1); + qm->url.redirect_to = g_string_new(NULL); qm->url.thumbnail = g_string_new(NULL); - qm->url.input = g_string_new(url); - m_unescape_url(qm->url.input); - /* Handle */ - qm->handle.quvi = q; - /* Other */ + + /* + * Store the input URL in the unescaped form which is what the `ident' + * functions of the scripts expect when the support check is run + * offline. + */ + u = m_url_unescaped_form(url); + qm->url.input = g_string_new(u); + g_free(u); + qm->title = g_string_new(NULL); qm->id = g_string_new(NULL); + qm->handle.quvi = q; + return (qm); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libquvi-0.9.3/src/misc/playlist.c new/libquvi-0.9.4/src/misc/playlist.c --- old/libquvi-0.9.3/src/misc/playlist.c 2013-09-03 16:28:40.000000000 +0200 +++ new/libquvi-0.9.4/src/misc/playlist.c 2013-11-10 08:33:09.000000000 +0100 @@ -27,23 +27,32 @@ #include "_quvi_s.h" #include "_quvi_playlist_s.h" /* -- */ -#include "misc/unescape.h" #include "misc/playlist.h" #include "misc/slst.h" +#include "misc/url.h" gpointer m_playlist_new(_quvi_t q, const gchar *url) { - _quvi_playlist_t qp = g_new0(struct _quvi_playlist_s, 1); - /* URL */ + _quvi_playlist_t qp; + gchar *u; + + qp = g_new0(struct _quvi_playlist_s, 1); + qp->url.thumbnail = g_string_new(NULL); - qp->url.input = g_string_new(url); - m_unescape_url(qp->url.input); - /* ID */ qp->id.playlist = g_string_new(NULL); - /* Handle */ - qp->handle.quvi = q; - /* Other */ + + /* + * Store the input URL in the unescaped form which is what the `ident' + * functions of the scripts expect when the support check is run + * offline. + */ + u = m_url_unescaped_form(url); + qp->url.input = g_string_new(u); + g_free(u); + qp->title = g_string_new(NULL); + qp->handle.quvi = q; + return (qp); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libquvi-0.9.3/src/misc/subtitle.c new/libquvi-0.9.4/src/misc/subtitle.c --- old/libquvi-0.9.3/src/misc/subtitle.c 2013-09-03 16:28:40.000000000 +0200 +++ new/libquvi-0.9.4/src/misc/subtitle.c 2013-11-10 08:33:09.000000000 +0100 @@ -27,18 +27,27 @@ #include "_quvi_s.h" #include "_quvi_subtitle_s.h" /* -- */ -#include "misc/unescape.h" #include "misc/subtitle.h" #include "misc/slst.h" +#include "misc/url.h" gpointer m_subtitle_new(_quvi_t q, const gchar *url) { - _quvi_subtitle_t qsub = g_new0(struct _quvi_subtitle_s, 1); - /* URL */ - qsub->url.input = g_string_new(url); - m_unescape_url(qsub->url.input); - /* Handle */ + _quvi_subtitle_t qsub; + gchar *u; + + qsub = g_new0(struct _quvi_subtitle_s, 1); qsub->handle.quvi = q; + + /* + * Store the input URL in the unescaped form which is what the `ident' + * functions of the scripts expect when the support check is run + * offline. + */ + u = m_url_unescaped_form(url); + qsub->url.input = g_string_new(u); + g_free(u); + return (qsub); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libquvi-0.9.3/src/misc/unescape.c new/libquvi-0.9.4/src/misc/unescape.c --- old/libquvi-0.9.3/src/misc/unescape.c 2013-09-03 16:23:47.000000000 +0200 +++ new/libquvi-0.9.4/src/misc/unescape.c 1970-01-01 01:00:00.000000000 +0100 @@ -1,38 +0,0 @@ -/* libquvi - * Copyright (C) 2012 Toni Gundogdu <[email protected]> - * - * This file is part of libquvi <http://quvi.sourceforge.net/>. - * - * This library is free software: you can redistribute it and/or - * modify it under the terms of the GNU Affero General Public - * License as published by the Free Software Foundation, either - * version 3 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General - * Public License along with this library. If not, see - * <http://www.gnu.org/licenses/>. - */ - -#include "config.h" - -#include <glib.h> -/* -- */ -#include "misc/unescape.h" - -void m_unescape_url(GString *dst) -{ - gchar *r = g_uri_unescape_string(dst->str, NULL); - if (r != NULL) - { - g_string_assign(dst, r); - g_free(r); - r = NULL; - } -} - -/* vim: set ts=2 sw=2 tw=72 expandtab: */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libquvi-0.9.3/src/misc/unescape.h new/libquvi-0.9.4/src/misc/unescape.h --- old/libquvi-0.9.3/src/misc/unescape.h 2013-09-03 16:23:47.000000000 +0200 +++ new/libquvi-0.9.4/src/misc/unescape.h 1970-01-01 01:00:00.000000000 +0100 @@ -1,26 +0,0 @@ -/* libquvi - * Copyright (C) 2012 Toni Gundogdu <[email protected]> - * - * This file is part of libquvi <http://quvi.sourceforge.net/>. - * - * This library is free software: you can redistribute it and/or - * modify it under the terms of the GNU Affero General Public - * License as published by the Free Software Foundation, either - * version 3 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General - * Public License along with this library. If not, see - * <http://www.gnu.org/licenses/>. - */ - -#ifndef m_unescape_h -#define m_unescape_h - -void m_unescape_url(GString*); - -#endif /* m_unescape_h */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libquvi-0.9.3/src/misc/url.c new/libquvi-0.9.4/src/misc/url.c --- old/libquvi-0.9.3/src/misc/url.c 1970-01-01 01:00:00.000000000 +0100 +++ new/libquvi-0.9.4/src/misc/url.c 2013-11-10 08:33:09.000000000 +0100 @@ -0,0 +1,62 @@ +/* libquvi + * Copyright (C) 2013 Toni Gundogdu <[email protected]> + * + * This file is part of libquvi <http://quvi.sourceforge.net/>. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/>. + */ + +#include "config.h" + +#include <glib.h> +/* -- */ +#include "misc/url.h" + +static gboolean _is_unescaped(const gchar *s) +{ + gboolean r; + gchar *u; + u = g_uri_unescape_string(s, NULL); + r = g_strcmp0(u,s) == 0 ? TRUE:FALSE; + g_free(u); + return (r); +} + +gchar *m_url_unescaped_form(const gchar *s) +{ + gchar *r = g_strdup(s); + do + { + gchar *u = g_uri_unescape_string(r, NULL); + if (u == NULL) + break; + g_free(r); + r = u; + } + while (_is_unescaped(r) == FALSE); + return (r); +} + +gchar *m_url_escaped_form(const gchar *s) +{ + static const gchar *reserved_chars = "!*'();:@&=+$,/?#[]"; + gchar *u, *r; + u = m_url_unescaped_form(s); + r = g_uri_escape_string(u, reserved_chars, FALSE); + g_free(u); + return (r); +} + +/* vim: set ts=2 sw=2 tw=72 expandtab: */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libquvi-0.9.3/src/misc/url.h new/libquvi-0.9.4/src/misc/url.h --- old/libquvi-0.9.3/src/misc/url.h 1970-01-01 01:00:00.000000000 +0100 +++ new/libquvi-0.9.4/src/misc/url.h 2013-11-10 08:33:09.000000000 +0100 @@ -0,0 +1,29 @@ +/* libquvi + * Copyright (C) 2013 Toni Gundogdu <[email protected]> + * + * This file is part of libquvi <http://quvi.sourceforge.net/>. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/>. + */ + +#ifndef m_url_h +#define m_url_h + +gchar *m_url_unescaped_form(const gchar*); +gchar *m_url_escaped_form(const gchar*); + +#endif /* m_url_h */ + +/* vim: set ts=2 sw=2 tw=72 expandtab: */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libquvi-0.9.3/src/net/handle.c new/libquvi-0.9.4/src/net/handle.c --- old/libquvi-0.9.3/src/net/handle.c 2013-05-19 17:44:39.000000000 +0200 +++ new/libquvi-0.9.4/src/net/handle.c 2013-11-10 08:33:09.000000000 +0100 @@ -1,5 +1,5 @@ /* libquvi - * Copyright (C) 2012 Toni Gundogdu <[email protected]> + * Copyright (C) 2012,2013 Toni Gundogdu <[email protected]> * * This file is part of libquvi <http://quvi.sourceforge.net/>. * @@ -30,6 +30,20 @@ #include "_quvi_net_resolve_s.h" /* -- */ #include "net/handle.h" +#include "misc/url.h" + +static GString *_escaped(const gchar *url) +{ + GString *r; + gchar *e; + + /* Pass the URL in escaped form to libcurl. */ + e = m_url_escaped_form(url); + r = g_string_new(e); + g_free(e); + + return (r); +} gpointer n_new(_quvi_t q, const gchar *url) { @@ -37,7 +51,7 @@ n->http_metainfo.content_type = g_string_new(NULL); n->status.errmsg = g_string_new(NULL); n->fetch.content = g_string_new(NULL); - n->url.addr = g_string_new(url); + n->url.addr = _escaped(url); n->handle.quvi = q; return (n); } @@ -69,8 +83,8 @@ { _quvi_net_resolve_t r = g_new0(struct _quvi_net_resolve_s, 1); r->status.errmsg = g_string_new(NULL); - r->url.addr = g_string_new(url); r->url.dst = g_string_new(NULL); + r->url.addr = _escaped(url); r->handle.quvi = q; return (r); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libquvi-0.9.3/tests/media.c new/libquvi-0.9.4/tests/media.c --- old/libquvi-0.9.3/tests/media.c 2013-09-03 16:28:40.000000000 +0200 +++ new/libquvi-0.9.4/tests/media.c 2013-11-10 08:33:09.000000000 +0100 @@ -107,8 +107,7 @@ static void test_media_multi() { - static const gchar URL[] = - "http://www.spiegel.de/video/64-jaehrige-schwimmt-von-kuba-richtung-florida-video-1293301.html"; + static const gchar URL[] = "http://www.youtube.com/watch?v=G4evlxq34og"; quvi_media_t qm; GString *b; @@ -151,15 +150,17 @@ if (b->len >0) /* Make sure each media stream URL is unique */ g_assert_cmpstr(b->str, !=, s); - g_string_assign(b, s); - chk_len(QUVI_MEDIA_STREAM_PROPERTY_VIDEO_ENCODING); chk_len(QUVI_MEDIA_STREAM_PROPERTY_CONTAINER); + quvi_media_get(qm, QUVI_MEDIA_STREAM_PROPERTY_CONTAINER, &s); + g_assert_cmpint(quvi_errcode(q), ==, QUVI_OK); - chk_val(QUVI_MEDIA_STREAM_PROPERTY_VIDEO_HEIGHT); - chk_val(QUVI_MEDIA_STREAM_PROPERTY_VIDEO_WIDTH); - + if (strstr(s, "flv") ==NULL) /* FLVs do not come with these */ + { + chk_len(QUVI_MEDIA_STREAM_PROPERTY_VIDEO_ENCODING); + chk_len(QUVI_MEDIA_STREAM_PROPERTY_AUDIO_ENCODING); + } ++i; } g_assert_cmpint(i, >, 1); @@ -173,8 +174,7 @@ static void test_media_select() { - static const gchar URL[] = - "http://www.spiegel.de/video/64-jaehrige-schwimmt-von-kuba-richtung-florida-video-1293301.html"; + static const gchar URL[] = "http://www.youtube.com/watch?v=G4evlxq34og"; quvi_media_t qm; gchar *s, *best; @@ -225,12 +225,12 @@ curr = g_slist_nth(ids, 0); g_assert_cmpstr(curr->data, ==, s); - /* The best stream -- anything but the default (first) stream. */ + /* The best stream, same as the first stream. */ quvi_media_stream_choose_best(qm); quvi_media_get(qm, QUVI_MEDIA_STREAM_PROPERTY_ID, &s); curr = g_slist_nth(ids, 0); - g_assert_cmpstr(curr->data, !=, s); + g_assert_cmpstr(curr->data, ==, s); best = g_strdup(s); /* Select. */ @@ -253,15 +253,15 @@ curr = g_slist_nth(ids, 0); /* Should be the default stream (first) */ g_assert_cmpstr(curr->data, ==, s); - quvi_media_stream_select(qm, "^\\w\\w\\d_\\w+_40\\dk_\\d20p$,bar,baz,croak"); + quvi_media_stream_select(qm, "^\\w+_\\w+_i\\d+_\\d40p$,bar,baz,croak"); g_assert_cmpint(quvi_errcode(q), ==, QUVI_OK); quvi_media_get(qm, QUVI_MEDIA_STREAM_PROPERTY_ID, &s); - g_assert_cmpstr(s, ==, "mp4_mpeg4_404k_320p"); + g_assert_cmpstr(s, ==, "medium_webm_i43_240p"); - quvi_media_stream_select(qm, "foo,^\\w\\w\\d_\\w+_14\\d+k_\\d+6p$,baz,croak"); + quvi_media_stream_select(qm, "foo,144p$,baz,croak"); g_assert_cmpint(quvi_errcode(q), ==, QUVI_OK); quvi_media_get(qm, QUVI_MEDIA_STREAM_PROPERTY_ID, &s); - g_assert_cmpstr(s, ==, "mp4_h264_1400k_576p"); + g_assert_cmpstr(s, ==, "small_3gpp_i17_144p"); quvi_media_free(qm); quvi_free(q); @@ -332,7 +332,32 @@ static void test_media_escaped_url() { static gchar URL[] = - "http%3A//www.liveleak.com/view%3Fi%3D77f_1378178228"; + "http%3A//www.youtube.com/watch%3Fv%3DLWxTGJ3TK1U%23t%3D2m22s"; + + quvi_media_t qm; + quvi_t q; + + if (chk_internet() == FALSE || chk_skip(__func__) == TRUE) + return; + + q = quvi_new(); + g_assert(q != NULL); + g_assert_cmpint(quvi_errcode(q), ==, QUVI_OK); + + chk_verbose(q); + + qm = quvi_media_new(q, URL); + g_assert_cmpint(qerr_m(q, URL), ==, QUVI_OK); + g_assert(qm != NULL); + + quvi_media_free(qm); + quvi_free(q); +} + +static void test_media_escaped_utf8_url() +{ + static gchar URL[] = + "http://flix.tapuz.co.il/v/watch-4323227-%D7%9C%D7%A2%D7%A7%D7%95%D7%A8%20%D7%A9%D7%9F%20%D7%9C%D7%98%D7%99%D7%92%D7%A8%D7%99%D7%A1.html"; quvi_media_t qm; quvi_t q; @@ -423,6 +448,8 @@ g_test_add_func("/quvi/media (select)", test_media_select); g_test_add_func("/quvi/media (short)", test_media_short); g_test_add_func("/quvi/media (escaped URL)", test_media_escaped_url); + g_test_add_func("/quvi/media (escaped UTF8 URL)", + test_media_escaped_utf8_url); g_test_add_func("/quvi/media (nosupport)", test_media_nosupport); g_test_add_func("/quvi/media (start_time)", test_media_starttime); g_test_add_func("/quvi/media (same handle)", test_media_same_q); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libquvi-0.9.3/tests/scan.c new/libquvi-0.9.4/tests/scan.c --- old/libquvi-0.9.3/tests/scan.c 2013-07-16 16:52:47.000000000 +0200 +++ new/libquvi-0.9.4/tests/scan.c 2013-11-10 08:33:09.000000000 +0100 @@ -50,8 +50,7 @@ static void test_scan_core() { static const gchar URL[] = - "http://www.fangoria.com/index.php/home/all-news/1-latest-news/" - "6981-new-qprometheusq-trailer-has-landed"; + "http://screenrant.com/superman-man-steel-trailer/"; quvi_scan_t qs; quvi_t q; -- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
