X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=dialogs.c;h=f39199771fcfd1145501c5708a6ecb1e03a373da;hb=f6e0ba4110818a2785aa480eaa05836b742e9992;hp=104f6c2ef8888e57e431905c42007da284178247;hpb=f0b5373846f3809d6f04b5492e82c130182820ae;p=xboard.git diff --git a/dialogs.c b/dialogs.c index 104f6c2..f391997 100644 --- a/dialogs.c +++ b/dialogs.c @@ -1259,7 +1259,7 @@ NewTagsPopup (char *text, char *msg, char *ttl) if(tagsText) free(tagsText); tagsText = strdup(text); tagsOptions[0].name = msg; MarkMenu("View.Tags", TagsDlg); - GenericPopUp(tagsOptions, title, TagsDlg, BoardWindow, NONMODAL, appData.topLevel); + GenericPopUp(tagsOptions + (msg == NULL), title, TagsDlg, BoardWindow, NONMODAL, appData.topLevel); } void @@ -1310,10 +1310,12 @@ char *icsText; #define HISTORY_SIZE 64 static char *history[HISTORY_SIZE]; static int histIn = 0, histP = 0; +static Boolean noEcho; static void SaveInHistory (char *cmd) { + if(noEcho) return; // do not save password! if (history[histIn] != NULL) { free(history[histIn]); history[histIn] = NULL; @@ -2156,8 +2158,6 @@ ConsoleAutoPopUp (char *buf) } else PopUpMoveDialog(*buf); } -static Boolean noEcho; - void EchoOn () { @@ -2458,16 +2458,17 @@ ReadLine (FILE *f) void GetHelpText (FILE *f, char *name) { - char *line, buf[MSG_SIZ], text[10000], *p = text, *q = text; + char *line, buf[MSG_SIZ], title[MSG_SIZ], text[10000], *p = text, *q = text; 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++); buf[len] = NULLCHAR; while(buf[--len] == ' ') buf[len] = NULLCHAR; + snprintf(title, MSG_SIZ, "Help on '%s'", buf+3); while((line = ReadLine(f))) { - if(!strncmp(line, buf, len) && (strncmp(line, ".SS ", 4) || strncmp(line+4, buf+3, len-3))) { - while((line = ReadLine(f)) && (cnt == 0 || strncmp(line, ".B ", 3))) { + if(!strncmp(line, buf, len) || !strncmp(line, ".SS ", 4) && !strncmp(line+4, buf+3, len-3)) { + while((line = ReadLine(f)) && (cnt == 0 || strncmp(line, ".B ", 3) && strncmp(line, ".SS ", 4))) { if(!*line) { *p++ = '\n'; *p++ = '\n'; q = p; continue; } if(*line == '.') continue; *p++ = ' '; cnt++; @@ -2479,7 +2480,7 @@ GetHelpText (FILE *f, char *name) if(p - text > 9900) break; } *p = NULLCHAR; - DisplayNote(text); + ErrorPopUp(title, text, FALSE); return; } } @@ -2490,8 +2491,17 @@ GetHelpText (FILE *f, char *name) void DisplayHelp (char *name) { - char *manFile = DATADIR "/../../man/man6/xboard.6"; - FILE *f = fopen(manFile, "r"); + char buf[MSG_SIZ], tidy[MSG_SIZ]; + FILE *f; + if(currentCps) { + TidyProgramName(currentCps == &first ? appData.firstChessProgram : appData.secondChessProgram, "localhost", tidy); + snprintf(buf, MSG_SIZ, "/usr/local/share/man/man6/%s.6", tidy); + } else snprintf(buf, MSG_SIZ, "%s/man6/xboard.6", MANDIR); + f = fopen(buf, "r"); + if(!f && currentCps) { // engine manual could be in two places + snprintf(buf, MSG_SIZ, "/usr/share/man/man6/%s.6", tidy); + f = fopen(buf, "r"); + } if(f) { GetHelpText(f, name); fclose(f); @@ -2892,6 +2902,7 @@ static char *Extensions[] = { ".trn", ".bin", ".wav", +".png", ".ini", ".log", "",