Compile to nothing in absence of GTK, for the benefit of parent packages
[mgLib] / msg.c
diff --git a/msg.c b/msg.c
index 6c0ca9d..ff317e9 100644 (file)
--- a/msg.c
+++ b/msg.c
@@ -1,6 +1,6 @@
 /* -*-c-*-
  *
- * $Id: msg.c,v 1.1 1998/12/11 09:44:21 mdw Exp $
+ * $Id: msg.c,v 1.3 1999/03/25 23:36:10 mdw Exp $
  *
  * Display a message and get an answer
  *
 /*----- Revision history --------------------------------------------------* 
  *
  * $Log: msg.c,v $
+ * Revision 1.3  1999/03/25 23:36:10  mdw
+ * Compile to nothing in absence of GTK, for the benefit of parent packages
+ * which contain non-GTK-dependent parts.
+ *
+ * Revision 1.2  1998/12/15 23:48:06  mdw
+ * Use `dstr_putf' for formatting, rather than `sprintf'.
+ *
  * Revision 1.1  1998/12/11 09:44:21  mdw
  * Initial version.
  *
  */
 
+#ifdef HAVE_GTK
+
 /*----- Header files ------------------------------------------------------*/
 
 #include <stdarg.h>
@@ -44,6 +53,7 @@
 #include <gtk/gtk.h>
 
 #include <mLib/alloc.h>
+#include <mLib/dstr.h>
 
 #include "cancel.h"
 #include "mdwfocus.h"
@@ -94,21 +104,19 @@ int msg(const char *buttons, const char *msg, ...)
   /* --- Set up the message string --- */
 
   {
-    char buf[1024];
+    dstr d;
     va_list ap;
 
     va_start(ap, msg);
-#ifdef HAVE_VSNPRINTF
-    vsnprintf(buf, sizeof(buf), msg, ap);
-#else
-    vsprintf(buf, sizeof(buf), msg, ap);
-#endif
+    dstr_create(&d);
+    dstr_vputf(&d, msg, ap);
     va_end(ap);
-    w = gtk_label_new(buf);
+    w = gtk_label_new(d.buf);
     gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dbox)->vbox), w, 1, 1, 0);
     gtk_window_position(GTK_WINDOW(dbox), GTK_WIN_POS_MOUSE);
     gtk_widget_show(w);
     gtk_misc_set_padding(GTK_MISC(w), 16, 16);
+    dstr_destroy(&d);
   }
 
   /* --- Set up the buttons --- */
@@ -153,10 +161,14 @@ int msg(const char *buttons, const char *msg, ...)
        cancel(GTK_WINDOW(dbox), w);
       gtk_widget_show(w);
     }
+    free(p);
+
+    /* --- Preflight checklist --- */
 
     gtk_widget_realize(dbox);
     if (f & f_mdwfocus)
       mdwfocus(dbox);
+
   }
 
   /* --- Ready --- */
@@ -170,3 +182,7 @@ int msg(const char *buttons, const char *msg, ...)
 }
 
 /*----- That's all, folks -------------------------------------------------*/
+
+#else
+  int mgLib_msg = 0;
+#endif