Merge and update

i9ce changed/i9/libmms-0.6.4-24.el9
MSVSphere Packaging Team 1 year ago
commit d1d22ad2d8

@ -1,8 +1,8 @@
From b9bbe17c08e5dcbe3ce841e6bed52ce8d8b10f9e Mon Sep 17 00:00:00 2001 From b9bbe17c08e5dcbe3ce841e6bed52ce8d8b10f9e Mon Sep 17 00:00:00 2001
From: John Lindgren <john.lindgren@aol.com> From: John Lindgren <john.lindgren@aol.com>
Date: Thu, 29 May 2014 22:42:53 -0400 Date: Thu, 29 May 2014 22:42:53 -0400
Subject: [PATCH] Remove "Requires: glib-2.0" since libmms no longer depends on Subject: [PATCH 1/8] Remove "Requires: glib-2.0" since libmms no longer
GLib. depends on GLib.
Signed-off-by: Hans de Goede <j.w.r.degoede@gmail.com> Signed-off-by: Hans de Goede <j.w.r.degoede@gmail.com>
--- ---
@ -24,5 +24,5 @@ index 602c967..a86d15a 100644
Libs: -L${libdir} -lmms -lm Libs: -L${libdir} -lmms -lm
Cflags: -I${includedir} Cflags: -I${includedir}
-- --
2.0.0 2.39.2

@ -0,0 +1,192 @@
From 34060b0c0cb13eed323577becf72a13b43654c00 Mon Sep 17 00:00:00 2001
From: Amit <chauhanamit067@users.sourceforge.net>
Date: Thu, 19 Nov 2015 13:35:30 +0100
Subject: [PATCH 2/8] Add a new testfiledownload.c example
New test code which connects to a mms url and downloads this as a file
to the local machine using mmsx_connect and mmsx_get_length().
---
src/Makefile.am | 4 +-
src/testdownload.c | 29 ----------
src/testfiledownload.c | 114 +++++++++++++++++++++++++++++++++++++++
src/teststreamdownload.c | 29 ++++++++++
4 files changed, 145 insertions(+), 31 deletions(-)
delete mode 100644 src/testdownload.c
create mode 100644 src/testfiledownload.c
create mode 100644 src/teststreamdownload.c
diff --git a/src/Makefile.am b/src/Makefile.am
index 4fbb5c0..295cc34 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -1,4 +1,4 @@
-# noinst_PROGRAMS = testconnect testdownload testswap
+# noinst_PROGRAMS = testconnect testfiledownload teststreamdownload testswap
lib_LTLIBRARIES = libmms.la
@@ -46,5 +46,5 @@ INCLUDES = \
DEPS = $(top_builddir)/src/libmms.la
LDADD = $(top_builddir)/src/libmms.la
-# libmms_test_SOURCES = testconnect.c testdownload.c testswap.c
+# libmms_test_SOURCES = testconnect.c testfiledownload.c teststreamdownload.c testswap.c
# libmms_test_LDADD = $(LDADD)
diff --git a/src/testfiledownload.c b/src/testfiledownload.c
new file mode 100644
index 0000000..cfef631
--- /dev/null
+++ b/src/testfiledownload.c
@@ -0,0 +1,114 @@
+/*
+ * Copyright (C) 2002-2004 the xine project
+ * Copyright (C) 2004-2012 the libmms project
+ *
+ * This file is part of LibMMS, an MMS protocol handling library.
+ * This file was originally a part of xine, a free video player.
+ *
+ * Libmms is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Library General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * Libmms 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA
+ * This file is created by : Amit Kumar (amit3.kumar@samsung.com)
+*/
+
+/* Sample program: Connect a mms URL and download media file on local machine. */
+
+
+
+
+
+#include<stdio.h>
+
+#include "mms.h"
+#include "mmsx.h"
+
+#define ERROR 1
+
+// Working MMS URL
+
+const char *url = "mms://a1014.v1252931.c125293.g.vm.akamaistream.net/7/1014/125293/v0001/wm.od.origin.zdf.de.gl-systemhaus.de/none/zdf/09/09/090925_hinweis_geo_de_vh.wmv";
+
+int main()
+{
+ mmsx_t * pMMSX = NULL;
+ FILE* localFileHandle;
+ int loop, readMediaResult;
+ const char *localMediaName = "/tmp/mmsdownload.wmv";
+ char buf[1024];
+
+ //Here we make a connection to the passed URL.
+
+ if(pMMSX = mmsx_connect(NULL, NULL, url, 1024))
+ {
+ printf("Connect OK\n");
+ }
+ else
+ {
+ printf("Not connected\n");
+
+ return ERROR;
+ }
+
+ //Open file handler for local media file.
+
+ localFileHandle = fopen(localMediaName, "w");
+
+ if(!localFileHandle)
+ {
+ printf("Cannot open file to write\n");
+ return ERROR;
+ }
+ /*
+ **
+ * mmsx_get_time_length() function will calculate the time
+ * duration of media file.
+ **
+ */
+
+ printf("Time duration of media file = %lf\n",mmsx_get_time_length(pMMSX));
+
+ /*
+ **
+ * This loop will iterate total media length i.e. media size
+ * divided by buffer size. In our case buffer size is 1024.
+ **
+ */
+
+ for(loop = 0; loop < mmsx_get_length(pMMSX)/1024; loop++)
+ {
+ readMediaResult = mmsx_read (NULL, pMMSX, buf,1024);
+ if(!readMediaResult)
+ break;
+
+ //Finally, writing local media file.
+
+ fwrite(buf, 1, readMediaResult, localFileHandle);
+ }
+
+ // For print only
+
+ if(loop > 0)
+ {
+ printf("Reading file successfully and reading the file %d times\n", loop);
+ }
+ else
+ {
+ printf("Failed to read from stream\n");
+ }
+
+ //closed opend handler here.
+
+ fclose(localFileHandle);
+ mmsx_close(pMMSX);
+}
diff --git a/src/teststreamdownload.c b/src/teststreamdownload.c
new file mode 100644
index 0000000..21d2d56
--- /dev/null
+++ b/src/teststreamdownload.c
@@ -0,0 +1,29 @@
+#include <stdio.h>
+#include "mms.h"
+
+const char *url = "mms://od-msn.msn.com/3/mbr/apprentice_bts.wmv";
+
+int main(int argc, char *argv[])
+{
+ mms_t *this = NULL;
+ char buf[1024];
+ int i, res;
+ FILE* f;
+
+ if((this = mms_connect(NULL, NULL, url, 1)))
+ printf("Connect OK\n");
+ f = fopen("/tmp/mmsdownload.test", "w");
+ for(i = 0; i < 10000; i++)
+ {
+ res = mms_read(NULL, this, buf, 1024);
+ if(!res)
+ break;
+ fwrite(buf, 1, res, f);
+ }
+ if(i > 0)
+ printf("OK, read %d times\n", i);
+ else
+ printf("Failed to read from stream\n");
+
+
+}
--
2.39.2

@ -0,0 +1,70 @@
From 67d54003b8075b8ea8102bc4a808df4543ab113a Mon Sep 17 00:00:00 2001
From: John Lindgren <john.lindgren@tds.net>
Date: Thu, 19 Nov 2015 13:39:27 +0100
Subject: [PATCH 3/8] Fix build if strndup() is missing
---
configure.in | 1 +
src/uri.c | 27 +++++++++++++++++++++++++++
2 files changed, 28 insertions(+)
diff --git a/configure.in b/configure.in
index 86b0e08..9209523 100755
--- a/configure.in
+++ b/configure.in
@@ -14,6 +14,7 @@ AC_PROG_INSTALL
dnl Checks for header files.
AC_CHECK_HEADERS([sys/socket.h netinet/in.h netdb.h windows.h winsock2.h])
+AC_CHECK_FUNCS([strndup])
case $host in
*beos*)
diff --git a/src/uri.c b/src/uri.c
index a96b900..ec28f3c 100644
--- a/src/uri.c
+++ b/src/uri.c
@@ -17,6 +17,10 @@
* Boston, MA 02111-1307, USA.
*/
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
@@ -125,6 +129,29 @@ for ($i = 0; $i < 32; $i++)
#define ISSPACE(C) (((C) >= 9 && (C) <= 13) || (C) == ' ')
+/* Implement the strndup function.
+ Copyright (C) 2005 Free Software Foundation, Inc.
+ Written by Kaveh R. Ghazi <ghazi@caip.rutgers.edu>. */
+#ifndef HAVE_STRNDUP
+char *
+strndup (const char *s, size_t n)
+{
+ char *result;
+ size_t len = strlen (s);
+
+ if (n < len)
+ len = n;
+
+ result = (char *) malloc (len + 1);
+ if (!result)
+ return 0;
+
+ result[len] = '\0';
+ return (char *) memcpy (result, s, len);
+}
+#endif
+
+
static int split_user_passwd(const char* in, char** user, char** passwd)
{
char *pass, *tmp = g_strdup(in);
--
2.39.2

@ -0,0 +1,33 @@
From 5cface3df0e0213d8bc593d82a9a7c1e648dd71a Mon Sep 17 00:00:00 2001
From: Mahendra Narvariya <mahendra84@users.sourceforge.net>
Date: Thu, 19 Nov 2015 13:42:30 +0100
Subject: [PATCH 4/8] Patch to remove redundant comparison in file mmsh.c
Variable uri can not be NULL at line no 665 as NULL check is already
applied at line no 625.
---
src/mmsh.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/src/mmsh.c b/src/mmsh.c
index a019f05..dc17c9d 100755
--- a/src/mmsh.c
+++ b/src/mmsh.c
@@ -662,10 +662,10 @@ mmsh_t *mmsh_connect (mms_io_t *io, void *data, const char *url, int bandwidth)
gnet_uri_delete(proxy_uri);
proxy_uri = NULL;
}
- if (uri) {
- gnet_uri_delete(uri);
- uri = NULL;
- }
+
+ gnet_uri_delete(uri);
+ uri = NULL;
+
if (!mms_valid_proto(this->proto)) {
lprintf("unsupported protocol\n");
goto fail;
--
2.39.2

@ -0,0 +1,28 @@
From 8b5e303fc1f01521c727e351270dd68c4f15190b Mon Sep 17 00:00:00 2001
From: Mahendra Narvariya <mahendra84@users.sourceforge.net>
Date: Thu, 19 Nov 2015 13:45:52 +0100
Subject: [PATCH 5/8] Avoid possible overflow in sprintf
Avoid possible overflow in sprintf, better to use snprintf.
---
src/mms.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/mms.c b/src/mms.c
index c1dbc29..579c3f0 100644
--- a/src/mms.c
+++ b/src/mms.c
@@ -772,8 +772,8 @@ mms_t *mms_connect (mms_io_t *io, void *data, const char *url, int bandwidth) {
mms_buffer_init(&command_buffer, this->scmd_body);
mms_buffer_put_32 (&command_buffer, 0x0003001C);
mms_gen_guid(this->guid);
- sprintf(this->str, "NSPlayer/7.0.0.1956; {%s}; Host: %s", this->guid,
- this->connect_host);
+ snprintf(this->str, sizeof(this->str), "NSPlayer/7.0.0.1956; {%s}; Host: %s",
+ this->guid, this->connect_host);
res = mms_utf8_to_utf16le(this->scmd_body + command_buffer.pos,
CMD_BODY_LEN - command_buffer.pos,
this->str);
--
2.39.2

@ -0,0 +1,28 @@
From 03fa0e92467f56028944e04478b19845c03daafd Mon Sep 17 00:00:00 2001
From: Mahendra Narvariya <mahendra84@users.sourceforge.net>
Date: Thu, 19 Nov 2015 14:03:40 +0100
Subject: [PATCH 6/8] Fix possible NULL Pointer deref in mmsh.c
---
src/mmsh.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/src/mmsh.c b/src/mmsh.c
index dc17c9d..918e0a3 100755
--- a/src/mmsh.c
+++ b/src/mmsh.c
@@ -603,6 +603,11 @@ mmsh_t *mmsh_connect (mms_io_t *io, void *data, const char *url, int bandwidth)
*/
this = calloc(1, sizeof(mmsh_t));
+ if (!this) {
+ lprintf("error, calloc failed\n");
+ return NULL;
+ }
+
this->url = strdup(url);
if ((proxy_env = getenv("http_proxy")) != NULL)
this->proxy_url = strdup(proxy_env);
--
2.39.2

@ -0,0 +1,56 @@
From 5d39f692d55c04839be78e470820f49d53e40bcb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fran=C3=A7ois=20Revol?= <revol@free.fr>
Date: Wed, 27 Mar 2019 02:14:03 +0100
Subject: [PATCH 7/8] Add check for <sys/select.h> and use it
POSIX says it's required for 'fd_set', and Haiku needs it.
---
configure.in | 2 +-
src/mms.c | 3 +++
src/mmsh.c | 3 +++
3 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/configure.in b/configure.in
index 9209523..7434885 100755
--- a/configure.in
+++ b/configure.in
@@ -13,7 +13,7 @@ AC_PROG_LIBTOOL
AC_PROG_INSTALL
dnl Checks for header files.
-AC_CHECK_HEADERS([sys/socket.h netinet/in.h netdb.h windows.h winsock2.h])
+AC_CHECK_HEADERS([sys/select.h sys/socket.h netinet/in.h netdb.h windows.h winsock2.h])
AC_CHECK_FUNCS([strndup])
case $host in
diff --git a/src/mms.c b/src/mms.c
index 579c3f0..bbeeb68 100644
--- a/src/mms.c
+++ b/src/mms.c
@@ -52,6 +52,9 @@
#endif
#include <string.h>
#include <sys/types.h>
+#ifdef HAVE_SYS_SELECT_H
+#include <sys/select.h>
+#endif
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
diff --git a/src/mmsh.c b/src/mmsh.c
index 918e0a3..cfaad94 100755
--- a/src/mmsh.c
+++ b/src/mmsh.c
@@ -55,6 +55,9 @@
#endif
#include <string.h>
#include <sys/types.h>
+#ifdef HAVE_SYS_SELECT_H
+#include <sys/select.h>
+#endif
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
--
2.39.2

@ -0,0 +1,55 @@
From a9f692323e597324e6f01263c12b6f4290d5b56f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fran=C3=A7ois=20Revol?= <revol@free.fr>
Date: Wed, 27 Mar 2019 02:14:37 +0100
Subject: [PATCH 8/8] C89 fixes for Haiku
---
src/mms-common-funcs.h | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/mms-common-funcs.h b/src/mms-common-funcs.h
index 9e3c21d..f273756 100644
--- a/src/mms-common-funcs.h
+++ b/src/mms-common-funcs.h
@@ -205,12 +205,14 @@ static void interp_asf_header(TYPE *this)
case GUID_ASF_HEADER_EXTENSION:
{
+ int size;
+ int j = 24 + 18 + 4;
+ int l;
+
if ((24 + 18 + 4) > length)
break;
- int size = LE_32(this->asf_header + i + 24 + 18);
- int j = 24 + 18 + 4;
- int l;
+ size = LE_32(this->asf_header + i + 24 + 18);
lprintf("Extension header data size: %d\n", size);
while ((j + 24) <= length) {
@@ -249,16 +251,18 @@ static void interp_asf_header(TYPE *this)
// Loop through the number of extension system info
for (x = 0; x < ext_count && (ext_j + 22) <= l; x++) {
+ int len;
ext_j += 18;
- int len = LE_16(this->asf_header + i + j + ext_j);
+ len = LE_16(this->asf_header + i + j + ext_j);
ext_j += 4 + len;
}
lprintf("ext_j: %d\n", ext_j);
// Finally, we arrive at the interesting point: The optional Stream Property Object
if ((ext_j + 24) <= l) {
+ int len;
guid = get_guid(this->asf_header, i + j + ext_j);
- int len = LE_64(this->asf_header + i + j + ext_j + 16);
+ len = LE_64(this->asf_header + i + j + ext_j + 16);
if (guid == GUID_ASF_STREAM_PROPERTIES &&
(ext_j + len) <= l) {
interp_stream_properties(this, i + j + ext_j + 24);
--
2.39.2

@ -1,63 +1,103 @@
Name: libmms Name: libmms
Version: 0.6.4 Version: 0.6.4
Release: 17%{?dist} Release: 24%{?dist}
Summary: Library for Microsoft Media Server (MMS) streaming protocol Summary: Library for Microsoft Media Server (MMS) streaming protocol
License: LGPLv2+ License: LGPL-2.1-or-later
URL: http://www.sf.net/projects/libmms URL: https://www.sf.net/projects/libmms
Source0: http://downloads.sourceforge.net/%{name}/%{name}-%{version}.tar.gz Source0: https://downloads.sourceforge.net/%{name}/%{name}-%{version}.tar.gz
# https://sourceforge.net/p/libmms/code/ci/b9bbe17c08e5dcbe3ce841e6bed52ce8d8b10f9e/
Patch1: 0001-Remove-Requires-glib-2.0-since-libmms-no-longer-depe.patch Patch1: 0001-Remove-Requires-glib-2.0-since-libmms-no-longer-depe.patch
# https://sourceforge.net/p/libmms/code/ci/34060b0c0cb13eed323577becf72a13b43654c00/
Patch2: 0002-Add-a-new-testfiledownload.c-example.patch
# https://sourceforge.net/p/libmms/code/ci/67d54003b8075b8ea8102bc4a808df4543ab113a/
Patch3: 0003-Fix-build-if-strndup-is-missing.patch
# https://sourceforge.net/p/libmms/code/ci/5cface3df0e0213d8bc593d82a9a7c1e648dd71a/
Patch4: 0004-Patch-to-remove-redundant-comparison-in-file-mmsh.c.patch
# https://sourceforge.net/p/libmms/code/ci/8b5e303fc1f01521c727e351270dd68c4f15190b/
Patch5: 0005-Avoid-possible-overflow-in-sprintf.patch
# https://sourceforge.net/p/libmms/code/ci/5cface3df0e0213d8bc593d82a9a7c1e648dd71a/
Patch6: 0006-Fix-possible-NULL-Pointer-deref-in-mmsh.c.patch
# https://sourceforge.net/p/libmms/code/ci/5d39f692d55c04839be78e470820f49d53e40bcb/
Patch7: 0007-Add-check-for-sys-select.h-and-use-it.patch
# https://sourceforge.net/p/libmms/code/ci/a9f692323e597324e6f01263c12b6f4290d5b56f/
Patch8: 0008-C89-fixes-for-Haiku.patch
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: gcc BuildRequires: gcc
BuildRequires: libtool
BuildRequires: make
%description %description
MMS is a proprietary streaming protocol used in Microsoft server products, MMS is a streaming protocol used in Microsoft server products, commonly used to
commonly used to stream WMV data. You can encounter mms:// style URLs all over stream WMV data. You can encounter mms:// style URLs all over the net,
the net, especially on news sites and other content-serving sites. Libmms especially on news sites and other content-serving sites. Libmms allows you to
allows you to download content from such sites, making it easy to add MMS download content from such sites, making it easy to add MMS support to your
support to your media applications. media applications.
%package devel %package devel
Summary: Development package for %{name} Summary: Development package for %{name}
Requires: %{name} = %{version}-%{release}, pkgconfig Requires: %{name}%{_isa} = %{version}-%{release}
Requires: pkgconf-pkg-config
%description devel %description devel
This package contains development files for %{name}. This package contains development files for %{name}.
%prep %prep
%setup -q %autosetup -p1
%patch1 -p1 chmod -x ChangeLog src/mmsh.c
%build %build
export CFLAGS="%{optflags} -Wno-pointer-sign" ./autogen.sh
%configure --disable-dependency-tracking --disable-static %configure --disable-static
%make_build %make_build
%install %install
%make_install %make_install
rm $RPM_BUILD_ROOT%{_libdir}/%{name}.la rm %{buildroot}%{_libdir}/%{name}.la
%ldconfig_scriptlets
%files %files
%doc AUTHORS ChangeLog README* %doc AUTHORS ChangeLog README*
%license COPYING.LIB %license COPYING.LIB
%{_libdir}/%{name}.so.* %{_libdir}/%{name}.so.0{,.*}
%files devel %files devel
%{_includedir}/%{name} %{_includedir}/%{name}
%{_libdir}/%{name}.so %{_libdir}/%{name}.so
%{_libdir}/pkgconfig/%{name}.pc %{_libdir}/pkgconfig/%{name}.pc
%changelog %changelog
* Tue Jul 18 2023 Arkady L. Shane <ashejn@msvsphere.ru> - 0.6.4-17 * Fri Aug 25 2023 Dominik Mierzejewski <dominik@greysector.net> - 0.6.4-24
- add explicit build dependencies
- use a modern pkgconf runtime dependency
- annotate upstream patch origin
* Wed Aug 16 2023 Dominik Mierzejewski <dominik@greysector.net> - 0.6.4-23
- fix license field
* Fri Aug 04 2023 Dominik Mierzejewski <dominik@greysector.net> - 0.6.4-22
- adopt for Fedora
- hard-code ABI SONAME to avoid inadvertent breaks
- use SPDX identifier
- fix spurious executable permission
- drop redundant configure flag
* Wed Aug 02 2023 RPM Fusion Release Engineering <sergiomb@rpmfusion.org> - 0.6.4-21
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
* Tue Jul 18 2023 Arkady L. Shane <ashejn@msvsphere.ru> - 0.6.4-20
- Rebuilt for MSVSphere 9.2 - Rebuilt for MSVSphere 9.2
* Sat Feb 25 2023 Sérgio Basto <sergio@serjux.com> - 0.6.4-20
- Remove option Werror was added by mistake
* Sat Feb 25 2023 Sérgio Basto <sergio@serjux.com> - 0.6.4-19
- Add last 8 commits from upstream
* Sun Aug 07 2022 RPM Fusion Release Engineering <sergiomb@rpmfusion.org> - 0.6.4-18
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild and ffmpeg
5.1
* Wed Feb 09 2022 RPM Fusion Release Engineering <sergiomb@rpmfusion.org> - 0.6.4-17 * Wed Feb 09 2022 RPM Fusion Release Engineering <sergiomb@rpmfusion.org> - 0.6.4-17
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild

Loading…
Cancel
Save