From: RĂ©mi Denis-Courmont Date: Sat, 7 Mar 2009 20:17:35 +0000 (+0200) Subject: dialog_Login: handle a format string X-Git-Tag: 1.0.0-pre1~235 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=da927a1c5dc1bad5ee99be33294a8c3b0bc3d050;p=vlc dialog_Login: handle a format string --- diff --git a/include/vlc_dialog.h b/include/vlc_dialog.h index 7f06843aa1..f9db0adf46 100644 --- a/include/vlc_dialog.h +++ b/include/vlc_dialog.h @@ -75,9 +75,9 @@ typedef struct dialog_login_t char **password; } dialog_login_t; -VLC_EXPORT( void, dialog_Login, (vlc_object_t *, char **, char **, const char *, const char *) ); -#define dialog_Login(o, u, p, t, m) \ - dialog_Login(VLC_OBJECT(o), u, p, t, m) +VLC_EXPORT( void, dialog_Login, (vlc_object_t *, char **, char **, const char *, const char *, ...) ) LIBVLC_FORMAT (5, 6); +#define dialog_Login(o, u, p, t, ...) \ + dialog_Login(VLC_OBJECT(o), u, p, t, __VA_ARGS__) VLC_EXPORT( int, dialog_Register, (vlc_object_t *) ); VLC_EXPORT( int, dialog_Unregister, (vlc_object_t *) ); diff --git a/src/interface/dialog.c b/src/interface/dialog.c index 7763b8c4e6..d0ba589070 100644 --- a/src/interface/dialog.c +++ b/src/interface/dialog.c @@ -133,14 +133,14 @@ void dialog_VFatal (vlc_object_t *obj, bool modal, const char *title, * @param username a pointer to the specified username [OUT] * @param password a pointer to the specified password [OUT] * @param title title for the dialog - * @param text text for the dialog + * @param text format string for the message in the dialog * @return Nothing. If a user name resp. a password was specified, * it will be returned as a heap-allocated character array * into the username resp password pointer. Those must be freed with free(). * Otherwise *username resp *password will be NULL. */ void dialog_Login (vlc_object_t *obj, char **username, char **password, - const char *title, const char *text) + const char *title, const char *fmt, ...) { assert ((username != NULL) && (password != NULL)); @@ -152,7 +152,16 @@ void dialog_Login (vlc_object_t *obj, char **username, char **password, if (provider == NULL) return; - dialog_login_t dialog = { title, text, username, password, }; - var_SetAddress (provider, "dialog-login", &dialog); + char *text; + va_list ap; + + va_start (ap, fmt); + if (vasprintf (&text, fmt, ap) != -1) + { + dialog_login_t dialog = { title, text, username, password, }; + var_SetAddress (provider, "dialog-login", &dialog); + free (text); + } + va_end (ap); vlc_object_release (provider); }