[vlc-devel] commit: dialog_Login: handle a format string ( Rémi Denis-Courmont )
git version control
git at videolan.org
Sat Mar 7 22:30:37 CET 2009
vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Sat Mar 7 22:17:35 2009 +0200| [da927a1c5dc1bad5ee99be33294a8c3b0bc3d050] | committer: Rémi Denis-Courmont
dialog_Login: handle a format string
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=da927a1c5dc1bad5ee99be33294a8c3b0bc3d050
---
include/vlc_dialog.h | 6 +++---
src/interface/dialog.c | 17 +++++++++++++----
2 files changed, 16 insertions(+), 7 deletions(-)
diff --git a/include/vlc_dialog.h b/include/vlc_dialog.h
index 7f06843..f9db0ad 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 7763b8c..d0ba589 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);
}
More information about the vlc-devel
mailing list