Move dataDir definition to args.h so WB can also use it
[xboard.git] / dialogs.c
index e9a1718..772e310 100644 (file)
--- a/dialogs.c
+++ b/dialogs.c
@@ -66,7 +66,6 @@ extern char *getenv();
 
 int values[MAX_OPTIONS];
 ChessProgramState *currentCps;
-char dataDir[MSG_SIZ] = DATADIR, manDir[MSG_SIZ] = MANDIR;
 
 //----------------------------Generic dialog --------------------------------------------
 
@@ -2447,6 +2446,7 @@ DisplayTitle (char *text)
 }
 
 char *textPtr;
+char *texEscapes[] = { "s-1", "s0", "&", "*(L", "*(R", NULL };
 
 int
 GetNext(FILE *f)
@@ -2472,7 +2472,7 @@ GetHelpText (FILE *f, char *name)
     int len, cnt = 0;
     snprintf(buf, MSG_SIZ, ".B %s", name);
     len = strlen(buf);
-    for(len=1; buf[len] == ' ' || buf[len] == '-' || isalpha(buf[len]) || isdigit(buf[len]); len++);
+    for(len=3; buf[len] && buf[len] != '(' && buf[len] != ':' && buf[len] != '.' && buf[len] != '?'; len++);
     buf[len] = NULLCHAR;
     while(buf[--len] == ' ') buf[len] = NULLCHAR;
     snprintf(title, MSG_SIZ, "Help on '%s'", buf+3);
@@ -2485,6 +2485,18 @@ GetHelpText (FILE *f, char *name)
                *p++ = ' '; cnt++;
                while(*line) {
                    if(*line < ' ') { line++; continue;}
+                   if(*line == '\\') {
+                       char **esc;
+                       line++;
+                       for(esc = texEscapes; *esc; esc++) {
+                           len = strlen(*esc);
+                           if(!strncmp(*esc, line, len)) {
+                               line += len;
+                               break;
+                           }
+                       }
+                       continue;
+                   }
                    if(*line == ' ' && p - q > 80) *line = '\n', q = p;
                    *p++ = *line++;
                }