verson 1.4.54b
[polyglot.git] / util.c
diff --git a/util.c b/util.c
index 28e56b5..a3fb3ba 100644 (file)
--- a/util.c
+++ b/util.c
@@ -24,6 +24,7 @@
 \r
 #include "main.h"\r
 #include "util.h"\r
+#include "gui.h"\r
 \r
 // macros\r
 \r
@@ -197,16 +198,19 @@ void my_fatal(const char format[], ...) {
 \r
     CONSTRUCT_ARG_STRING(format,string);\r
     \r
-    fprintf(stderr,"%s",string);\r
     my_log("POLYGLOT %s",string);\r
+    // This should be gui_send but this does not work.\r
+    // Why?\r
+\r
+    fprintf(stderr,"tellusererror POLYGLOT: %s",string);\r
 \r
     if (Error) { // recursive error\r
         my_log("POLYGLOT *** RECURSIVE ERROR ***\n");\r
         exit(EXIT_FAILURE);\r
             // abort();\r
     } else {\r
-        Error = TRUE;\r
-        quit();\r
+      Error = TRUE;\r
+      quit();\r
     }\r
 }\r
 \r
@@ -474,4 +478,39 @@ double my_timer_elapsed_real(const my_timer_t * timer) {
 }\r
 \r
 \r
+void my_dequote(char *out, const char *in, const char *special){\r
+  const char *p; \r
+  char *q;\r
+  char c;\r
+  p=in;\r
+  q=out;\r
+  while((c=*(p++))){\r
+    if(c=='\\' && strchr(special,*p)){\r
+      *(q++)=*(p++);\r
+    }else{\r
+      *(q++)=c;\r
+    }\r
+  }\r
+  *q='\0';\r
+}\r
+\r
+void my_quote(char *out, const char *in, const char *special){\r
+  const char *p;\r
+  char *q;\r
+  char c;\r
+  p=in;\r
+  q=out;\r
+  while(q-out< StringSize-2 && (c=*(p++))){\r
+    if(c=='\\'){\r
+      if(*p!=0 && strchr(special,*p)){\r
+       *(q++)='\\';\r
+      }\r
+    }else if(strchr(special,c)){\r
+      *(q++)='\\';\r
+    }\r
+    *(q++)=c;\r
+  }\r
+  *q='\0';\r
+}\r
+\r
 \r