]> git.sesse.net Git - vlc/commitdiff
dialog_Login: handle a format string
authorRémi Denis-Courmont <remi@remlab.net>
Sat, 7 Mar 2009 20:17:35 +0000 (22:17 +0200)
committerRémi Denis-Courmont <remi@remlab.net>
Sat, 7 Mar 2009 20:17:35 +0000 (22:17 +0200)
include/vlc_dialog.h
src/interface/dialog.c

index 7f06843aa1b38608d9d0803f2931129e32435a3e..f9db0adf4697d716b76a6f8511079d1512223b61 100644 (file)
@@ -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 *) );
index 7763b8c4e604f0450da5637b0f58acd93ee1b547..d0ba589070863945e020c8285f0d3a6487c46981 100644 (file)
@@ -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);
 }