From: John Schmitz <schmitz@scd.hp.com>
Date: Tue, 01 Feb 1994 11:22:42 -0800

Here's a patch to the lock scrolling that people around here like.
You can use it or not as you wish.

*** /tmp/,RCSt1a04289	Mon Jan 31 14:13:54 1994
--- config.c	Mon Jan 31 14:07:40 1994
***************
*** 170,175
  			continue;
  		}
  #endif
  		if (match_boolean (buf, "slow_speed_terminal=", &slow_speed_terminal)) {
  			continue;
  		}

--- 170,178 -----
  			continue;
  		}
  #endif
+ 		if (match_boolean (buf, "scroll=", &lock_scroll)) {
+ 			continue;
+ 		}
  		if (match_boolean (buf, "slow_speed_terminal=", &slow_speed_terminal)) {
  			continue;
  		}
***************
*** 277,282
  #endif
  	}
  	fclose (fp);
  /*
  printf ("select_header=[%d] select_global=[%s] select_expire=[%s]\n",
  	default_filter_select_header,

--- 280,286 -----
  #endif
  	}
  	fclose (fp);
+ 	if (lock_scroll) beginner_level = 0;
  /*
  printf ("select_header=[%d] select_global=[%s] select_expire=[%s]\n",
  	default_filter_select_header,
***************
*** 410,415
  	fprintf (fp, "# If ON enable scroll keys on terminals that support it\n");
  	fprintf (fp, "use_keypad=%s\n\n", print_boolean (use_keypad));
  #endif
  	fprintf (fp, "# If ON strip blanks from end of lines to speedup display on slow terminals\n");
  	fprintf (fp, "slow_speed_terminal=%s\n\n", print_boolean (slow_speed_terminal));
  	fprintf (fp, "# Maximum length of the names of newsgroups displayed\n");

--- 414,424 -----
  	fprintf (fp, "# If ON enable scroll keys on terminals that support it\n");
  	fprintf (fp, "use_keypad=%s\n\n", print_boolean (use_keypad));
  #endif
+ 
+  	fprintf (fp, "# if ON enable scrolling with screen memory lock if possible\n");
+  	fprintf (fp, "# NOTE: beginner_level will be forced off if you set this!!!\n");
+  	fprintf (fp, "# (Alas, memory lock only works above a line, not below)\n");
+  	fprintf (fp, "scroll=%s\n\n", (lock_scroll ? "ON" : "OFF"));
  	fprintf (fp, "# If ON strip blanks from end of lines to speedup display on slow terminals\n");
  	fprintf (fp, "slow_speed_terminal=%s\n\n", print_boolean (slow_speed_terminal));
  	fprintf (fp, "# Maximum length of the names of newsgroups displayed\n");
*** /tmp/,RCSt1a04292	Mon Jan 31 14:13:55 1994
--- curses.c	Mon Jan 31 09:32:19 1994
***************
*** 104,110
  static char *_clearscreen, *_moveto, *_cleartoeoln, *_cleartoeos,
  			*_setinverse, *_clearinverse, *_setunderline, *_clearunderline,
  			*_xclickinit, *_xclickend,
! 			*_terminalinit, *_terminalend, *_keypadlocal, *_keypadxmit;
  
  static int _columns, _line, _lines;
  

--- 104,112 -----
  static char *_clearscreen, *_moveto, *_cleartoeoln, *_cleartoeos,
  			*_setinverse, *_clearinverse, *_setunderline, *_clearunderline,
  			*_xclickinit, *_xclickend,
! 			*_terminalinit, *_terminalend, *_keypadlocal, *_keypadxmit,
! 			*_memunlock;
! char *_memlock = NULL;
  
  static int _columns, _line, _lines;
  
***************
*** 188,193
  	_terminalend    = "";
  	_keypadlocal    = "";
  	_keypadxmit     = "";
  #else
  	_terminalinit   = tgetstr ("ti", &ptr);
  	_terminalend    = tgetstr ("te", &ptr);

--- 190,197 -----
  	_terminalend    = "";
  	_keypadlocal    = "";
  	_keypadxmit     = "";
+ 	_memlock        = "";
+ 	_memunlock      = "";
  #else
  	_terminalinit   = tgetstr ("ti", &ptr);
  	_terminalend    = tgetstr ("te", &ptr);
***************
*** 193,198
  	_terminalend    = tgetstr ("te", &ptr);
  	_keypadlocal    = tgetstr ("ke", &ptr);
  	_keypadxmit     = tgetstr ("ks", &ptr);
  #endif
  	if (STRCMPEQ(termname, "xterm")) {
  		xclicks = TRUE;

--- 197,205 -----
  	_terminalend    = tgetstr ("te", &ptr);
  	_keypadlocal    = tgetstr ("ke", &ptr);
  	_keypadxmit     = tgetstr ("ks", &ptr);
+ 
+ 	_memlock        = tgetstr ("ml", &ptr);
+ 	_memunlock      = tgetstr ("mu", &ptr);
  #endif
  	if (STRCMPEQ(termname, "xterm")) {
  		xclicks = TRUE;
***************
*** 391,396
  
  	*num_lines = _lines - 1;		/* assume index from zero*/
  	*num_columns = _columns;		/* assume index from one */
  
  #endif /* INDEX_DAEMON */
  }

--- 398,427 -----
  
  	*num_lines = _lines - 1;		/* assume index from zero*/
  	*num_columns = _columns;		/* assume index from one */
+ 
+ #endif /* INDEX_DAEMON */
+ }
+ 
+ void MemLock ()
+ {
+ #ifndef INDEX_DAEMON
+ 
+         if (_memlock) {
+                 tputs (_memlock, 1, outchar);
+                 fflush (stdout);
+         }
+ 
+ #endif /* INDEX_DAEMON */
+ }
+ 
+ void MemUnLock ()
+ {
+ #ifndef INDEX_DAEMON
+ 
+         if (_memunlock) {
+                 tputs (_memunlock, 1, outchar);
+                 fflush (stdout);
+         }
  
  #endif /* INDEX_DAEMON */
  }
*** /tmp/,RCSt1a04295	Mon Jan 31 14:13:56 1994
--- init.c	Mon Jan 31 13:19:15 1994
***************
*** 133,138
  int groupname_max_length;	/* max len of group names to display on screen */
  int use_keypad;			/* enables/disables scroll keys on supported terminals */
  int auto_cc;                    /* add your name to cc automatically */
  int filtered_articles;		/* killed / auto-selected articles */
  int mark_saved_read;		/* mark saved article/thread as read */
  int newsrc_active;

--- 133,139 -----
  int groupname_max_length;	/* max len of group names to display on screen */
  int use_keypad;			/* enables/disables scroll keys on supported terminals */
  int auto_cc;                    /* add your name to cc automatically */
+ int lock_scroll;		/* scrolling instead of wrapping */
  int filtered_articles;		/* killed / auto-selected articles */
  int mark_saved_read;		/* mark saved article/thread as read */
  int newsrc_active;
***************
*** 343,348
  	use_builtin_inews = TRUE;
  	use_keypad = FALSE;
  	auto_cc = FALSE;
  
  	index_maildir[0] = '\0';
  	index_newsdir[0] = '\0';

--- 344,350 -----
  	use_builtin_inews = TRUE;
  	use_keypad = FALSE;
  	auto_cc = FALSE;
+  	lock_scroll = FALSE;
  
  	index_maildir[0] = '\0';
  	index_newsdir[0] = '\0';
*** /tmp/,RCSt1a04298	Mon Jan 31 14:13:56 1994
--- page.c	Mon Jan 31 13:20:18 1994
***************
*** 40,45
  int rotate;						/* 0=normal, 13=rot13 decode */
  int this_resp;
  int doing_pgdn;
  
  long note_mark[MAX_PAGES];		/* ftells on beginnings of pages */
  long note_size;					/* stat size in bytes of article */

--- 40,46 -----
  int rotate;						/* 0=normal, 13=rot13 decode */
  int this_resp;
  int doing_pgdn;
+ static int redrawing;
  
  long note_mark[MAX_PAGES];		/* ftells on beginnings of pages */
  long note_size;					/* stat size in bytes of article */
***************
*** 92,97
  		} else {
  			wait_message (msg);
  		}
  		return (GRP_NOREDRAW);	/* special retcode to stop redrawing screen */
  	} else {
  		show_note_page (group->name, respnum);

--- 93,99 -----
  		} else {
  			wait_message (msg);
  		}
+ 		if (lock_scroll && _memlock) MemUnLock ();
  		return (GRP_NOREDRAW);	/* special retcode to stop redrawing screen */
  	} else {
  		show_note_page (group->name, respnum);
***************
*** 147,152
  
  #ifndef NO_SHELL_ESCAPE
  			case '!':
  				shell_escape ();
  				redraw_page (group->name, respnum);
  				break;

--- 149,155 -----
  
  #ifndef NO_SHELL_ESCAPE
  			case '!':
+ 				if (lock_scroll && _memlock) MemUnLock ();
  				shell_escape ();
  				redraw_page (group->name, respnum);
  				break;
***************
*** 218,223
  				if (note_page == ART_UNAVAILABLE) {
  					n = next_response (respnum);
  					if (n == -1) {
  						return (which_thread (respnum));
  					}
  					respnum = n;

--- 221,227 -----
  				if (note_page == ART_UNAVAILABLE) {
  					n = next_response (respnum);
  					if (n == -1) {
+ 						if (lock_scroll && _memlock) MemUnLock();
  						return (which_thread (respnum));
  					}
  					respnum = n;
***************
*** 226,231
  					art_close ();
  					n = next_response (respnum);
  					if (n == -1) {
  						return (which_thread (respnum));
  					}
  					respnum = n;

--- 230,236 -----
  					art_close ();
  					n = next_response (respnum);
  					if (n == -1) {
+ 						if (lock_scroll && _memlock) MemUnLock();
  						return (which_thread (respnum));
  					}
  					respnum = n;
***************
*** 251,256
  					if (note_page == ART_UNAVAILABLE) {
  						n = next_unread (next_response (respnum));
  						if (n == -1) {
  							return (which_thread (respnum));
  						}
  						respnum = n;

--- 256,262 -----
  					if (note_page == ART_UNAVAILABLE) {
  						n = next_unread (next_response (respnum));
  						if (n == -1) {
+ 							if (lock_scroll && _memlock) MemUnLock();
  							return (which_thread (respnum));
  						}
  						respnum = n;
***************
*** 259,264
  						art_close ();
  						n = next_unread (next_response (respnum));
  						if (n == -1) {
  							return (which_thread (respnum));
  						}
  						respnum = n;

--- 265,271 -----
  						art_close ();
  						n = next_unread (next_response (respnum));
  						if (n == -1) {
+ 							if (lock_scroll && _memlock) MemUnLock();
  							return (which_thread (respnum));
  						}
  						respnum = n;
***************
*** 272,277
  					}
  					n = next_unread (next_response (respnum));
  					if (n == -1) {
  						return (which_thread (respnum));
  					}
  					respnum = n;

--- 279,285 -----
  					}
  					n = next_unread (next_response (respnum));
  					if (n == -1) {
+ 						if (lock_scroll && _memlock) MemUnLock();
  						return (which_thread (respnum));
  					}
  					respnum = n;
***************
*** 282,288
  			case ctrl('H'):	/* show article headers */
  				if (note_page == ART_UNAVAILABLE) {
  					n = next_response (respnum);
! 					if (n == -1)
  						return (which_thread (respnum));
  					respnum = n;
  					goto restart;

--- 290,297 -----
  			case ctrl('H'):	/* show article headers */
  				if (note_page == ART_UNAVAILABLE) {
  					n = next_response (respnum);
! 					if (n == -1) {
! 						if (lock_scroll && _memlock) MemUnLock();
  						return (which_thread (respnum));
  					}
  					respnum = n;
***************
*** 284,289
  					n = next_response (respnum);
  					if (n == -1)
  						return (which_thread (respnum));
  					respnum = n;
  					goto restart;
  				} else {

--- 293,299 -----
  					if (n == -1) {
  						if (lock_scroll && _memlock) MemUnLock();
  						return (which_thread (respnum));
+ 					}
  					respnum = n;
  					goto restart;
  				} else {
***************
*** 366,372
  				if (note_page == ART_UNAVAILABLE) {
  					art_close ();
  					n = prev_response (respnum);
! 					if (n == -1)
  						return (which_response (respnum));
  					respnum = n;
  					goto restart;

--- 376,383 -----
  				if (note_page == ART_UNAVAILABLE) {
  					art_close ();
  					n = prev_response (respnum);
! 					if (n == -1) {
! 						if (lock_scroll && _memlock) MemUnLock();
  						return (which_response (respnum));
  					}
  					respnum = n;
***************
*** 368,373
  					n = prev_response (respnum);
  					if (n == -1)
  						return (which_response (respnum));
  					respnum = n;
  					goto restart;
  

--- 379,385 -----
  					if (n == -1) {
  						if (lock_scroll && _memlock) MemUnLock();
  						return (which_response (respnum));
+ 					}
  					respnum = n;
  					goto restart;
  
***************
*** 395,400
  					}
  					art_close ();
  					space_mode = TRUE;
  					return ret_code;
  				}
  				break;

--- 407,413 -----
  					}
  					art_close ();
  					space_mode = TRUE;
+ 					if (lock_scroll && _memlock) MemUnLock();
  					return ret_code;
  				}
  				break;
***************
*** 417,422
  					info_message (txt_cannot_post);
  					break;
  				}
  				copy_text = (ch == 'f' ? TRUE : FALSE);
  				(void) post_response (group->name, respnum, copy_text);
  				redraw_page (group->name, respnum);

--- 430,436 -----
  					info_message (txt_cannot_post);
  					break;
  				}
+ 				if (lock_scroll && _memlock) MemUnLock ();
  				copy_text = (ch == 'f' ? TRUE : FALSE);
  				(void) post_response (group->name, respnum, copy_text);
  				redraw_page (group->name, respnum);
***************
*** 435,440
  			case 'q':	/* return to index page */
  return_to_index:
  				art_close ();
  				if (filter_state == NO_FILTERING &&
  					default_sort_art_type != old_sort_art_type) {
  					make_threads (group, TRUE);

--- 449,455 -----
  			case 'q':	/* return to index page */
  return_to_index:
  				art_close ();
+ 				if (lock_scroll && _memlock) MemUnLock ();
  				if (filter_state == NO_FILTERING &&
  					default_sort_art_type != old_sort_art_type) {
  					make_threads (group, TRUE);
***************
*** 460,466
  			case 'k':
  				if (note_page == ART_UNAVAILABLE) {
  					n = next_unread (next_response(respnum));
! 					if (n == -1)
  						return (which_thread (respnum));
  				} else {
  					art_close ();

--- 475,482 -----
  			case 'k':
  				if (note_page == ART_UNAVAILABLE) {
  					n = next_unread (next_response(respnum));
! 					if (n == -1) {
! 						if (lock_scroll && _memlock) MemUnLock ();
  						return (which_thread (respnum));
  					}
  				} else {
***************
*** 462,467
  					n = next_unread (next_response(respnum));
  					if (n == -1)
  						return (which_thread (respnum));
  				} else {
  					art_close ();
  					n = next_unread (next_response (respnum));

--- 478,484 -----
  					if (n == -1) {
  						if (lock_scroll && _memlock) MemUnLock ();
  						return (which_thread (respnum));
+ 					}
  				} else {
  					art_close ();
  					n = next_unread (next_response (respnum));
***************
*** 465,471
  				} else {
  					art_close ();
  					n = next_unread (next_response (respnum));
! 					if (n == -1)
  						return (which_thread (respnum));
  				}
  				respnum = n;

--- 482,489 -----
  				} else {
  					art_close ();
  					n = next_unread (next_response (respnum));
! 					if (n == -1) {
! 						if (lock_scroll && _memlock) MemUnLock ();
  						return (which_thread (respnum));
  					}
  				}
***************
*** 467,472
  					n = next_unread (next_response (respnum));
  					if (n == -1)
  						return (which_thread (respnum));
  				}
  				respnum = n;
  				goto restart;

--- 485,491 -----
  					if (n == -1) {
  						if (lock_scroll && _memlock) MemUnLock ();
  						return (which_thread (respnum));
+ 					}
  				}
  				respnum = n;
  				goto restart;
***************
*** 483,488
  				/* NOTREACHED */
  
  			case 'm':	/* mail article/thread/tagged articles to somebody */
  				feed_articles (FEED_MAIL, PAGE_LEVEL, group, respnum);
  				break;
  

--- 502,508 -----
  				/* NOTREACHED */
  
  			case 'm':	/* mail article/thread/tagged articles to somebody */
+ 				if (lock_scroll && _memlock) MemUnLock ();
  				feed_articles (FEED_MAIL, PAGE_LEVEL, group, respnum);
  				break;
  
***************
*** 497,503
  			case 'n':	/* skip to next article */
  				art_close ();
  				n = next_response (respnum);
! 				if (n == -1)
  					return (which_thread(respnum));
  				respnum = n;
  				goto restart;

--- 517,524 -----
  			case 'n':	/* skip to next article */
  				art_close ();
  				n = next_response (respnum);
! 				if (n == -1) {
! 					if (lock_scroll && _memlock) MemUnLock ();
  					return (which_thread(respnum));
  				}
  				respnum = n;
***************
*** 499,504
  				n = next_response (respnum);
  				if (n == -1)
  					return (which_thread(respnum));
  				respnum = n;
  				goto restart;
  				/* NOTREACHED */

--- 520,526 -----
  				if (n == -1) {
  					if (lock_scroll && _memlock) MemUnLock ();
  					return (which_thread(respnum));
+ 				}
  				respnum = n;
  				goto restart;
  				/* NOTREACHED */
***************
*** 521,527
  			case 'p':	/* previous article */
  				art_close ();
  				n = prev_response (respnum);
! 				if (n == -1)
  					return (which_response (respnum));
  				respnum = n;
  				goto restart;

--- 543,550 -----
  			case 'p':	/* previous article */
  				art_close ();
  				n = prev_response (respnum);
! 				if (n == -1) {
! 					if (lock_scroll && _memlock) MemUnLock ();
  					return (which_response (respnum));
  				}
  				respnum = n;
***************
*** 523,528
  				n = prev_response (respnum);
  				if (n == -1)
  					return (which_response (respnum));
  				respnum = n;
  				goto restart;
  

--- 546,552 -----
  				if (n == -1) {
  					if (lock_scroll && _memlock) MemUnLock ();
  					return (which_response (respnum));
+ 				}
  				respnum = n;
  				goto restart;
  
***************
*** 528,534
  
  			case 'P':	/* previous unread article */
  				n = prev_unread (prev_response (respnum));
! 				if (n == -1)
  				    info_message (txt_no_prev_unread_art);
  				else {
  					art_close ();

--- 552,559 -----
  
  			case 'P':	/* previous unread article */
  				n = prev_unread (prev_response (respnum));
! 				if (n == -1) {
! 					if (lock_scroll && _memlock) MemUnLock ();
  				    info_message (txt_no_prev_unread_art);
  				}
  				else {
***************
*** 530,535
  				n = prev_unread (prev_response (respnum));
  				if (n == -1)
  				    info_message (txt_no_prev_unread_art);
  				else {
  					art_close ();
  					respnum = n;

--- 555,561 -----
  				if (n == -1) {
  					if (lock_scroll && _memlock) MemUnLock ();
  				    info_message (txt_no_prev_unread_art);
+ 				}
  				else {
  					art_close ();
  					respnum = n;
***************
*** 538,543
  				break;
  
  			case 'Q':	/* quit */
  				return GRP_QUIT;
  	
  			case 'r':	/* reply to author through mail */

--- 564,570 -----
  				break;
  
  			case 'Q':	/* quit */
+ 				if (lock_scroll && _memlock) MemUnLock ();
  				return GRP_QUIT;
  	
  			case 'r':	/* reply to author through mail */
***************
*** 543,548
  			case 'r':	/* reply to author through mail */
  			case 'R':
  				copy_text = (ch == 'r' ? TRUE : FALSE);
  				mail_to_author (group->name, respnum, copy_text);
  				redraw_page (group->name, respnum);
  				break;

--- 570,576 -----
  			case 'r':	/* reply to author through mail */
  			case 'R':
  				copy_text = (ch == 'r' ? TRUE : FALSE);
+ 				if (lock_scroll && _memlock) MemUnLock ();
  				mail_to_author (group->name, respnum, copy_text);
  				redraw_page (group->name, respnum);
  				break;
***************
*** 563,568
  
  			case 'T':	/* return to group selection page */
  				art_close ();
  				if (filter_state == FILTERING) {
  					filter_articles (group);
  					make_threads (group, FALSE);

--- 591,597 -----
  
  			case 'T':	/* return to group selection page */
  				art_close ();
+ 				if (lock_scroll && _memlock) MemUnLock ();
  				if (filter_state == FILTERING) {
  					filter_articles (group);
  					make_threads (group, FALSE);
***************
*** 616,621
  	} else if (note_page > 0) {
  		note_page--;
  		fseek (note_fp, note_mark[note_page], 0);
  		show_note_page (group, respnum);
  	}
  }

--- 645,651 -----
  	} else if (note_page > 0) {
  		note_page--;
  		fseek (note_fp, note_mark[note_page], 0);
+ 		redrawing = TRUE;
  		show_note_page (group, respnum);
  	}
  }
***************
*** 633,639
  	int i, j;
  	int ctrl_L;		/* form feed character detected */
  	int first  = TRUE;
! 	int lines;
  	long tmp_pos;
  	static char buf[LEN];
  

--- 663,669 -----
  	int i, j;
  	int ctrl_L;		/* form feed character detected */
  	int first  = TRUE;
! 	int lines, nlines;
  	long tmp_pos;
  	static char buf[LEN];
  
***************
*** 643,650
  		lines = cLINES;
  	}
  	
- 	ClearScreen ();
- 
  	note_line = 1;
  
  	if (note_size == 0L) {

--- 673,678 -----
  		lines = cLINES;
  	}
  	
  	note_line = 1;
  
  	if (note_size == 0L) {
***************
*** 653,659
  		note_size = ftell (note_fp);
  		fseek (note_fp, tmp_pos, 0);	/* goto old position */
  	}
! 	
  	if (note_page == 0) {
  		buf2[0] = '\0';
  		doing_pgdn = FALSE;

--- 681,687 -----
  		note_size = ftell (note_fp);
  		fseek (note_fp, tmp_pos, 0);	/* goto old position */
  	}
! 
  	if (note_page == 0) {
  		buf2[0] = '\0';
  		doing_pgdn = FALSE;
***************
*** 658,664
  		buf2[0] = '\0';
  		doing_pgdn = FALSE;
  		show_first_header (respnum, group);
! 	} else {
  		show_cont_header (respnum);
  	}
  	

--- 686,710 -----
  		buf2[0] = '\0';
  		doing_pgdn = FALSE;
  		show_first_header (respnum, group);
! 		if (lock_scroll && _memlock) MemLock ();
! 		if (redrawing) redrawing = FALSE;
! 	}
! 	else if (lock_scroll && _memlock) {
! 		if (redrawing) {
! 			buf2[0] = '\0';
! 			doing_pgdn = FALSE;
! 			ClearScreen ();
! 			show_first_header (respnum, group);
! 			MemLock ();
! 			redrawing = FALSE;
! 		}
! 		else {
! 			note_line = 5;
! 			CleartoEOLN ();
! 		}
! 	}
! 	else {
! 		ClearScreen ();
  		show_cont_header (respnum);
  	}
  	
***************
*** 676,683
  #endif
  
  	ctrl_L = FALSE;
! 	while (note_line < lines) {
! 		if (show_last_line_prev_page) {
  			note_mark[note_page+1] = ftell (note_fp);
  			if (doing_pgdn && first && buf2[0]) {
  				goto print_a_line;

--- 722,743 -----
  #endif
  
  	ctrl_L = FALSE;
! 	if (lock_scroll && _memlock) {
! 		nlines = cLINES + 1;
! 	}
! 	else {
! 		nlines = lines;
! 	}
! 
! 	while (note_line < nlines) {
! 		if (lock_scroll && _memlock) {
! 			if (show_last_line_prev_page) {
! 				note_mark[note_page+1] = ftell (note_fp);
! 				if (doing_pgdn && first && buf2[0]) {
! 					note_line++;
! 				}
! 			}
! 		} else if (show_last_line_prev_page) {
  			note_mark[note_page+1] = ftell (note_fp);
  			if (doing_pgdn && first && buf2[0]) {
  				goto print_a_line;
***************
*** 739,745
  
  print_a_line:
  		if (first) {
! 			StartInverse ();
  		}	
  		strip_line (buf2, strlen (buf2));
  		printf("%s\r\n", buf2);

--- 799,805 -----
  
  print_a_line:
  		if (first) {
! 			if (! (lock_scroll && _memlock)) StartInverse ();
  		}	
  		strip_line (buf2, strlen (buf2));
  		printf("%s\r\n", buf2);
*** /tmp/,RCSt1a04301	Mon Jan 31 14:13:57 1994
--- signal.c	Mon Jan 31 13:19:23 1994
***************
*** 425,430
  	set_xclick_off ();
  	Raw (FALSE);
  	wait_message (txt_suspended_message);
  
  	kill (0, SIGSTOP);
  

--- 425,433 -----
  	set_xclick_off ();
  	Raw (FALSE);
  	wait_message (txt_suspended_message);
+ #ifndef INDEX_DAEMON
+ 	if (lock_scroll && _memlock) MemUnLock();
+ #endif
  
  	kill (0, SIGSTOP);
  
***************
*** 535,540
  	set_xclick_off ();
  	Raw (FALSE);
  	wait_message (txt_suspended_message);
  
  	kill (0, SIGSTOP);
  

--- 538,546 -----
  	set_xclick_off ();
  	Raw (FALSE);
  	wait_message (txt_suspended_message);
+ #ifndef INDEX_DAEMON
+ 	if (lock_scroll && _memlock) MemUnLock();
+ #endif
  
  	kill (0, SIGSTOP);
  

