mirror of
https://git.busybox.net/buildroot.git
synced 2024-12-14 15:53:29 +08:00
74097fd659
UPnP media streamer. Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
207 lines
5.4 KiB
Diff
207 lines
5.4 KiB
Diff
Patch nixed from OpenWRT svn to fix build breakage.
|
|
|
|
Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
|
|
|
|
--- a/src/cds.c
|
|
+++ b/src/cds.c
|
|
@@ -20,6 +20,8 @@
|
|
*/
|
|
|
|
#include <stdlib.h>
|
|
+#include <stdio.h>
|
|
+#include <string.h>
|
|
#include <upnp/upnp.h>
|
|
#include <upnp/upnptools.h>
|
|
|
|
--- a/src/http.c
|
|
+++ b/src/http.c
|
|
@@ -25,6 +25,7 @@
|
|
#include <errno.h>
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
+#include <string.h>
|
|
#include <unistd.h>
|
|
#include <errno.h>
|
|
|
|
@@ -77,8 +78,7 @@ set_info_file (struct File_Info *info, c
|
|
info->content_type = ixmlCloneDOMString (content_type);
|
|
}
|
|
|
|
-static int
|
|
-http_get_info (const char *filename, struct File_Info *info)
|
|
+int http_get_info (const char *filename, struct File_Info *info)
|
|
{
|
|
extern struct ushare_t *ut;
|
|
struct upnp_entry_t *entry = NULL;
|
|
@@ -197,8 +197,7 @@ get_file_memory (const char *fullpath, c
|
|
return ((UpnpWebFileHandle) file);
|
|
}
|
|
|
|
-static UpnpWebFileHandle
|
|
-http_open (const char *filename, enum UpnpOpenFileMode mode)
|
|
+UpnpWebFileHandle http_open (const char *filename, enum UpnpOpenFileMode mode)
|
|
{
|
|
extern struct ushare_t *ut;
|
|
struct upnp_entry_t *entry = NULL;
|
|
@@ -251,8 +250,7 @@ http_open (const char *filename, enum Up
|
|
return ((UpnpWebFileHandle) file);
|
|
}
|
|
|
|
-static int
|
|
-http_read (UpnpWebFileHandle fh, char *buf, size_t buflen)
|
|
+int http_read (UpnpWebFileHandle fh, char *buf, size_t buflen)
|
|
{
|
|
struct web_file_t *file = (struct web_file_t *) fh;
|
|
ssize_t len = -1;
|
|
@@ -286,8 +284,7 @@ http_read (UpnpWebFileHandle fh, char *b
|
|
return len;
|
|
}
|
|
|
|
-static int
|
|
-http_write (UpnpWebFileHandle fh __attribute__((unused)),
|
|
+int http_write (UpnpWebFileHandle fh __attribute__((unused)),
|
|
char *buf __attribute__((unused)),
|
|
size_t buflen __attribute__((unused)))
|
|
{
|
|
@@ -296,8 +293,7 @@ http_write (UpnpWebFileHandle fh __attri
|
|
return 0;
|
|
}
|
|
|
|
-static int
|
|
-http_seek (UpnpWebFileHandle fh, off_t offset, int origin)
|
|
+int http_seek (UpnpWebFileHandle fh, off_t offset, int origin)
|
|
{
|
|
struct web_file_t *file = (struct web_file_t *) fh;
|
|
off_t newpos = -1;
|
|
@@ -371,8 +367,7 @@ http_seek (UpnpWebFileHandle fh, off_t o
|
|
return 0;
|
|
}
|
|
|
|
-static int
|
|
-http_close (UpnpWebFileHandle fh)
|
|
+int http_close (UpnpWebFileHandle fh)
|
|
{
|
|
struct web_file_t *file = (struct web_file_t *) fh;
|
|
|
|
@@ -402,13 +397,3 @@ http_close (UpnpWebFileHandle fh)
|
|
|
|
return 0;
|
|
}
|
|
-
|
|
-struct UpnpVirtualDirCallbacks virtual_dir_callbacks =
|
|
- {
|
|
- http_get_info,
|
|
- http_open,
|
|
- http_read,
|
|
- http_write,
|
|
- http_seek,
|
|
- http_close
|
|
- };
|
|
--- a/src/http.h
|
|
+++ b/src/http.h
|
|
@@ -25,6 +25,18 @@
|
|
#include <upnp/upnp.h>
|
|
#include <upnp/upnptools.h>
|
|
|
|
-struct UpnpVirtualDirCallbacks virtual_dir_callbacks;
|
|
+int http_get_info (const char *filename, struct File_Info *info);
|
|
+
|
|
+UpnpWebFileHandle http_open (const char *filename, enum UpnpOpenFileMode mode);
|
|
+
|
|
+int http_read (UpnpWebFileHandle fh, char *buf, size_t buflen);
|
|
+
|
|
+int http_seek (UpnpWebFileHandle fh, off_t offset, int origin);
|
|
+
|
|
+int http_write (UpnpWebFileHandle fh __attribute__((unused)),
|
|
+ char *buf __attribute__((unused)),
|
|
+ size_t buflen __attribute__((unused)));
|
|
+
|
|
+int http_close (UpnpWebFileHandle fh);
|
|
|
|
#endif /* _HTTP_H_ */
|
|
--- a/src/ushare.c
|
|
+++ b/src/ushare.c
|
|
@@ -188,7 +188,7 @@ handle_action_request (struct Upnp_Actio
|
|
if (strcmp (request->DevUDN + 5, ut->udn))
|
|
return;
|
|
|
|
- ip = request->CtrlPtIPAddr.s_addr;
|
|
+ ip = (*(struct sockaddr_in *)&request->CtrlPtIPAddr).sin_addr.s_addr;
|
|
ip = ntohl (ip);
|
|
sprintf (val, "%d.%d.%d.%d",
|
|
(ip >> 24) & 0xFF, (ip >> 16) & 0xFF, (ip >> 8) & 0xFF, ip & 0xFF);
|
|
@@ -348,13 +348,23 @@ init_upnp (struct ushare_t *ut)
|
|
|
|
UpnpEnableWebserver (TRUE);
|
|
|
|
- res = UpnpSetVirtualDirCallbacks (&virtual_dir_callbacks);
|
|
- if (res != UPNP_E_SUCCESS)
|
|
- {
|
|
- log_error (_("Cannot set virtual directory callbacks\n"));
|
|
- free (description);
|
|
- return -1;
|
|
- }
|
|
+#define upnp_set_callback(cb, func) \
|
|
+ do { \
|
|
+ res = UpnpVirtualDir_set_##cb##Callback(func); \
|
|
+ if (res != UPNP_E_SUCCESS) \
|
|
+ { \
|
|
+ log_error (_("Cannot set virtual directory callbacks\n")); \
|
|
+ free (description); \
|
|
+ return -1; \
|
|
+ } \
|
|
+ } while(0)
|
|
+
|
|
+ upnp_set_callback(GetInfo, http_get_info);
|
|
+ upnp_set_callback(Open, http_open);
|
|
+ upnp_set_callback(Read, http_read);
|
|
+ upnp_set_callback(Seek, http_seek);
|
|
+ upnp_set_callback(Write, http_write);
|
|
+ upnp_set_callback(Close, http_close);
|
|
|
|
res = UpnpAddVirtualDir (VIRTUAL_DIR);
|
|
if (res != UPNP_E_SUCCESS)
|
|
--- a/src/cms.c
|
|
+++ b/src/cms.c
|
|
@@ -20,6 +20,8 @@
|
|
*/
|
|
|
|
#include <stdlib.h>
|
|
+#include <stdio.h>
|
|
+#include <string.h>
|
|
#include <upnp/upnp.h>
|
|
#include <upnp/upnptools.h>
|
|
|
|
--- a/src/mime.c
|
|
+++ b/src/mime.c
|
|
@@ -20,6 +20,7 @@
|
|
*/
|
|
|
|
#include <stdlib.h>
|
|
+#include <stdio.h>
|
|
#include <string.h>
|
|
|
|
#include "mime.h"
|
|
--- a/src/presentation.c
|
|
+++ b/src/presentation.c
|
|
@@ -19,6 +19,8 @@
|
|
*/
|
|
|
|
#include <stdlib.h>
|
|
+#include <stdio.h>
|
|
+#include <string.h>
|
|
|
|
#if HAVE_LANGINFO_CODESET
|
|
# include <langinfo.h>
|
|
--- a/src/services.c
|
|
+++ b/src/services.c
|
|
@@ -20,6 +20,8 @@
|
|
*/
|
|
|
|
#include <stdlib.h>
|
|
+#include <stdio.h>
|
|
+#include <string.h>
|
|
#include <upnp/upnp.h>
|
|
#include <upnp/upnptools.h>
|
|
|