From eff412fcea904b9e7fb6be80c5d5af64d8cb9c27 Mon Sep 17 00:00:00 2001
From: Jonathan Wilkes <jon.w.wilkes@gmail.com>
Date: Thu, 24 May 2018 17:58:39 -0700
Subject: [PATCH] add case for [print] under -nogui as we can't print links
 there

---
 pd/src/x_interface.c | 97 ++++++++++++++++++++++++++++++--------------
 1 file changed, 67 insertions(+), 30 deletions(-)

diff --git a/pd/src/x_interface.c b/pd/src/x_interface.c
index 0282cd560..84fc47876 100644
--- a/pd/src/x_interface.c
+++ b/pd/src/x_interface.c
@@ -56,55 +56,92 @@ static void *print_new(t_symbol *sel, int argc, t_atom *argv)
 
 static void print_bang(t_print *x)
 {
-    gui_start_vmess("gui_print", "xs", x, x->x_sym->s_name);
-    gui_start_array();
-    gui_s(s_bang.s_name);
-    gui_end_array();
-    gui_end_vmess();
+    if (sys_nogui)
+        post("%s%sbang", x->x_sym->s_name, (*x->x_sym->s_name ? ": " : ""));
+    else
+    {
+        gui_start_vmess("gui_print", "xs", x, x->x_sym->s_name);
+        gui_start_array();
+        gui_s(s_bang.s_name);
+        gui_end_array();
+        gui_end_vmess();
+    }
 }
 
 static void print_pointer(t_print *x, t_gpointer *gp)
 {
-    gui_start_vmess("gui_print", "xs", x, x->x_sym->s_name);
-    gui_start_array();
-    gui_s("(gpointer)");
-    gui_end_array();
-    gui_end_vmess();
+    if (sys_nogui)
+        post("%s%s(gpointer)", x->x_sym->s_name,
+            (*x->x_sym->s_name ? ": " : ""));
+    else
+    {
+        gui_start_vmess("gui_print", "xs", x, x->x_sym->s_name);
+        gui_start_array();
+        gui_s("(gpointer)");
+        gui_end_array();
+        gui_end_vmess();
+    }
 }
 
 static void print_float(t_print *x, t_floatarg f)
 {
-    gui_start_vmess("gui_print", "xs", x, x->x_sym->s_name);
-    gui_start_array();
-    gui_f(f);
-    gui_end_array();
-    gui_end_vmess();
+    if (sys_nogui)
+        post("%s%s%g", x->x_sym->s_name, (*x->x_sym->s_name ? ": " : ""), f);
+    else
+    {
+        gui_start_vmess("gui_print", "xs", x, x->x_sym->s_name);
+        gui_start_array();
+        gui_f(f);
+        gui_end_array();
+        gui_end_vmess();
+    }
 }
 
 static void print_symbol(t_print *x, t_symbol *s)
 {
-    gui_start_vmess("gui_print", "xs", x, x->x_sym->s_name);
-    gui_start_array();
-    gui_s(s_symbol.s_name);
-    gui_s(s->s_name);
-    gui_end_array();
-    gui_end_vmess();
+    if (sys_nogui)
+        post("%s%s%s", x->x_sym->s_name, (*x->x_sym->s_name ? ": " : ""),
+            s->s_name);
+    else
+    {
+        gui_start_vmess("gui_print", "xs", x, x->x_sym->s_name);
+        gui_start_array();
+        gui_s(s_symbol.s_name);
+        gui_s(s->s_name);
+        gui_end_array();
+        gui_end_vmess();
+    }
 }
 
 static void print_anything(t_print *x, t_symbol *s, int argc, t_atom *argv)
 {
     char buf[MAXPDSTRING];
-    gui_start_vmess("gui_print", "xs", x, x->x_sym->s_name);
-    gui_start_array();
-    if (s && (s != &s_list || (argc && argv->a_type != A_FLOAT)))
-        gui_s(s->s_name);
-    for(; argc; argv++, argc--)
+    t_atom at;
+    if (sys_nogui)
     {
-        atom_string(argv, buf, MAXPDSTRING);
-        gui_s(buf);
+        startpost("%s%s", x->x_sym->s_name, (*x->x_sym->s_name ? ":" : ""));
+        if (s && (s != &s_list || (argc && argv->a_type != A_FLOAT)))
+        {
+            SETSYMBOL(&at, s);
+            postatom(1, &at);
+        }
+        postatom(argc, argv);
+        endpost();
+    }
+    else
+    {
+        gui_start_vmess("gui_print", "xs", x, x->x_sym->s_name);
+        gui_start_array();
+        if (s && (s != &s_list || (argc && argv->a_type != A_FLOAT)))
+            gui_s(s->s_name);
+        for(; argc; argv++, argc--)
+        {
+            atom_string(argv, buf, MAXPDSTRING);
+            gui_s(buf);
+        }
+        gui_end_array();
+        gui_end_vmess();
     }
-    gui_end_array();
-    gui_end_vmess();
 }
 
 static void print_setup(void)
-- 
GitLab