From 7f9b7d3e31101f97831b2e62ca25dc671de14c6b Mon Sep 17 00:00:00 2001 From: =?utf8?q?R=C3=A9mi=20Denis-Courmont?= Date: Thu, 8 Jul 2010 22:45:43 +0300 Subject: [PATCH] Add a proper API to set the user agent --- bin/vlc.c | 2 ++ include/vlc/libvlc.h | 13 +++++++++++++ src/control/core.c | 12 ++++++++++++ src/libvlc.c | 4 +++- src/libvlc.sym | 1 + 5 files changed, 31 insertions(+), 1 deletion(-) diff --git a/bin/vlc.c b/bin/vlc.c index ef3a4b511e..40fa96fbca 100644 --- a/bin/vlc.c +++ b/bin/vlc.c @@ -198,6 +198,8 @@ int main( int i_argc, const char *ppsz_argv[] ) if (vlc == NULL) goto out; + libvlc_set_user_agent (vlc, "VLC media player", NULL); + #if !defined (HAVE_MAEMO) && !defined __APPLE__ libvlc_add_intf (vlc, "globalhotkeys,none"); #endif diff --git a/include/vlc/libvlc.h b/include/vlc/libvlc.h index d4151eb0f5..36b263feef 100644 --- a/include/vlc/libvlc.h +++ b/include/vlc/libvlc.h @@ -171,6 +171,19 @@ void libvlc_set_exit_handler( libvlc_instance_t *p_instance, VLC_PUBLIC_API void libvlc_wait( libvlc_instance_t *p_instance ); +/** + * Sets the application name. LibVLC passes this as the user agent string + * when a protocol requires it. + * + * \param p_instance LibVLC instance + * \param name human-readable application name, e.g. "FooBar player 1.2.3" + * \param http HTTP User Agent, e.g. "FooBar/1.2.3 Python/2.6.0" + * \version LibVLC 1.1.1 or later + */ +VLC_PUBLIC_API +void libvlc_set_user_agent( libvlc_instance_t *p_instance, + const char *name, const char *http ); + /** * Retrieve libvlc version. * diff --git a/src/control/core.c b/src/control/core.c index 54e2fd0380..942212db77 100644 --- a/src/control/core.c +++ b/src/control/core.c @@ -69,6 +69,8 @@ libvlc_instance_t * libvlc_new( int argc, const char *const *argv ) p_new->verbosity = 1; p_new->p_callback_list = NULL; vlc_mutex_init(&p_new->instance_lock); + var_Create( p_libvlc_int, "http-user-agent", + VLC_VAR_STRING|VLC_VAR_DOINHERIT ); return p_new; error: @@ -127,6 +129,16 @@ void libvlc_wait( libvlc_instance_t *p_i ) libvlc_InternalWait( p_libvlc ); } +void libvlc_set_user_agent (libvlc_instance_t *p_i, + const char *name, const char *http) +{ + libvlc_int_t *p_libvlc = p_i->p_libvlc_int; + + var_SetString (p_libvlc, "user-agent", name); + if (http != NULL) + var_SetString (p_libvlc, "http-user-agent", http); +} + const char * libvlc_get_version(void) { return VLC_Version(); diff --git a/src/libvlc.c b/src/libvlc.c index 2f4a6a9bc4..1349eb67ae 100644 --- a/src/libvlc.c +++ b/src/libvlc.c @@ -761,8 +761,10 @@ int libvlc_InternalInit( libvlc_int_t *p_libvlc, int i_argc, var_Create( p_libvlc, "snapshot-file", VLC_VAR_STRING ); var_Create( p_libvlc, "record-file", VLC_VAR_STRING ); - /* vout window provider */ + /* some default internal settings */ var_Create( p_libvlc, "window", VLC_VAR_STRING ); + var_Create( p_libvlc, "user-agent", VLC_VAR_STRING ); + var_SetString( p_libvlc, "user-agent", "(LibVLC "VERSION")" ); /* Initialize playlist and get commandline files */ p_playlist = playlist_Create( VLC_OBJECT(p_libvlc) ); diff --git a/src/libvlc.sym b/src/libvlc.sym index fa92d462db..0148c11e05 100644 --- a/src/libvlc.sym +++ b/src/libvlc.sym @@ -160,6 +160,7 @@ libvlc_release libvlc_retain libvlc_set_fullscreen libvlc_set_log_verbosity +libvlc_set_user_agent libvlc_toggle_fullscreen libvlc_toggle_teletext libvlc_track_description_release -- 2.39.2