Ilya Zakharevich on Fri, 02 Jun 2006 12:01:26 +0200 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
[PATCH] "Extended help available" bogus |
The patch below removes the bogus test for the presence of external help system. In most situations it gives a wrong answer. [*] Much simplified system is used instead: default(help) is checked to be non-empty; so a user can restore the "old behaviour" (whatever it was) by appropriate definition of `help'. Enjoy, Ilya [*] On DOSISH systems the test is wrong since it removes backslashes. In general it gives false negatives since it does not look on $PATH. In general it gives false positives since much more components must be present (and found!) than a simple script. --- ./src/gp/gp.c~ Sat Apr 8 05:07:52 2006 +++ ./src/gp/gp.c Fri Jun 2 01:29:14 2006 @@ -188,19 +188,8 @@ jump_to_given_buffer(Buffer *buf) static int has_ext_help(void) { - if (GP_DATA->help) - { - char *buf = pari_strdup(GP_DATA->help), *s, *t; - FILE *file; - - for (t = s = buf; *s; *t++ = *s++) - { - if (*s == '\\') s++; else if (*s == ' ') break; - } - *t = 0; file = fopen(buf,"r"); - free(buf); - if (file) { fclose(file); return 1; } - } + if (GP_DATA->help && *(GP_DATA->help)) + return 1; return 0; } @@ -376,7 +365,7 @@ Also:\n\ ?\\ (keyboard shortcuts)\n\ ?. (member functions)\n"); if (has_ext_help()) pariputs("\ -Extended help looks available:\n\ +Extended help (if available):\n\ ?? (opens the full user's manual in a dvi previewer)\n\ ?? tutorial / refcard / libpari (tutorial/reference card/libpari manual)\n\ ?? keyword (long help text about \"keyword\" from the user's manual)\n\ @@ -507,7 +496,8 @@ external_help(char *s, int num) pariFILE *z; FILE *f; - if (!GP_DATA->help) pari_err(talker,"no external help program"); + if (!GP_DATA->help || !*(GP_DATA->help)) + pari_err(talker,"no external help program"); s = filter_quotes(s); str = gpmalloc(strlen(GP_DATA->help) + strlen(s) + 64); *ar = 0; @@ -750,7 +740,7 @@ print_version(void) center(buf); ver = what_readline(); buf = stackmalloc(strlen(ver) + 64); - (void)sprintf(buf, "(readline %s, extended help%s available)", ver, + (void)sprintf(buf, "(readline %s, extended help%s enabled)", ver, has_ext_help()? "": " not"); center(buf); avma = av; }