diff --git a/src/help.c b/src/help.c index f7d52f056c5a4a881dd0948a9a198e1c7b8abaaa..90a23c820c6e99f8fe41de7f031fb99cb6e37010 100644 --- a/src/help.c +++ b/src/help.c @@ -32,7 +32,7 @@ static char *help_text = NULL; /* The text displayed in the help window. */ -static const char *start_of_text = NULL; +static const char *start_of_body = NULL; /* The point in the help text just after the title. */ static char *end_of_intro = NULL; @@ -50,7 +50,7 @@ char *tempfilename = NULL; void display_the_help_text(bool redisplaying) { int line_size, sum = 0; - const char *ptr = start_of_text; + const char *ptr = start_of_body; FILE *fp = fopen(tempfilename, "w+b"); if (fp == NULL) { @@ -97,31 +97,29 @@ void display_the_help_text(bool redisplaying) void do_help(void) { int kbinput = ERR; - int oldmenu = currmenu; - /* The menu we were called from. */ - const char *ptr; - /* The current line of the help text. */ functionptrtype func; /* The function of the key the user typed in. */ - FILE *fp; - filestruct *line; - int line_size; - int saved_margin = margin; - /* For avoiding the line numbers on the help screen. */ + int oldmenu = currmenu; + /* The menu we were called from. */ +#ifdef ENABLE_LINENUMBERS + int was_margin = margin; +#endif ssize_t was_tabsize = tabsize; #ifndef DISABLE_COLOR char *was_syntax = syntaxstr; #endif char *saved_answer = (answer != NULL) ? strdup(answer) : NULL; - /* Store current answer when user invokes help at the prompt. */ + /* The current answer when the user invokes help at the prompt. */ unsigned stash[sizeof(flags) / sizeof(flags[0])]; /* A storage place for the current flag settings. */ + filestruct *line; + int length; + FILE *fp; blank_statusbar(); + /* Get a temporary file for the help text. If it fails, give up. */ tempfilename = safe_tempfile(&fp); - - /* If we can't get a temporary file for the help text, give up. */ if (tempfilename == NULL) { statusline(ALERT, _("Error writing temp file: %s"), strerror(errno)); free(saved_answer); @@ -145,37 +143,35 @@ void do_help(void) window_init(); } - UNSET(WHITESPACE_DISPLAY); - UNSET(NOREAD_MODE); - SET(MULTIBUFFER); - /* When searching, do it forward, case insensitive, and without regexes. */ UNSET(BACKWARDS_SEARCH); UNSET(CASE_SENSITIVE); UNSET(USE_REGEXP); - bottombars(MHELP); - wnoutrefresh(bottomwin); + UNSET(WHITESPACE_DISPLAY); + UNSET(NOREAD_MODE); + SET(MULTIBUFFER); #ifdef ENABLE_LINENUMBERS UNSET(LINE_NUMBERS); margin = 0; #endif + bottombars(MHELP); + wnoutrefresh(bottomwin); + /* Extract the title from the head of the help text. */ - ptr = help_text; - line_size = break_line(ptr, MAX_BUF_SIZE, TRUE); - title = charalloc(line_size * sizeof(char) + 1); - strncpy(title, ptr, line_size); - title[line_size] = '\0'; + length = break_line(help_text, MAX_BUF_SIZE, TRUE); + title = charalloc(length * sizeof(char) + 1); + strncpy(title, help_text, length); + title[length] = '\0'; titlebar(title); /* Skip over the title to point at the start of the body text. */ - ptr += line_size; - while (*ptr == '\n') - ++ptr; - start_of_text = ptr; + start_of_body = help_text + length; + while (*start_of_body == '\n') + start_of_body++; #ifndef DISABLE_COLOR syntaxstr = "nanohelp"; @@ -252,7 +248,7 @@ void do_help(void) memcpy(flags, stash, sizeof(flags)); #ifdef ENABLE_LINENUMBERS - margin = saved_margin; + margin = was_margin; #endif if (ISSET(NO_HELP)) {