[comp.sources.misc] v20i016: mush - Mail User's Shell, Patch03

schaefer@cse.ogc.edu (Bart Schaefer) (05/23/91)

Submitted-by: Bart Schaefer <schaefer@cse.ogc.edu>
Posting-number: Volume 20, Issue 16
Archive-name: mush/patch03
Patch-To: mush: Volume 18, Issue 58-79

@OFF

This is Official Patch #3 for Mush 7.2.  As usual, complete sources for
Mush (already including the changes in this patch) can be obtained via
anonymous ftp from:

                  cse.ogi.edu:pub/mush/mush-7.2.tar.Z

Mush 7.2 was recently posted to comp.sources.misc at patchlevel 2.
This patch and any future patches will be made available for ftp from
cse.ogi.edu, or you can send E-mail to me:

                         schaefer@cse.ogi.edu

Include in your message a line of the form

@PATCH patch-number path-from-ogicse-to-you

where patch-number is the number of the patch you need (digit, 1 or 2)
and path-from-ogicse-to-you is either your Internet domain address or
a UUCP path from site ogicse to you at your site.  There continue to
be sendmail configuration problems at ogicse so please do not use mixed
UUCP and Internet addresses and do not use domain names (with `.'s) in
UUCP paths.  Ogicse does do UUCP map lookups now, so user@site.UUCP will
often work if your site is registered.  If you don't get your patches
in 2 or 3 days, try again, but use a different path.

You may include one @PATCH line for each patch you need.

You can also recieve a complete set of sources by E-mail by including
a line of the form

@MUSH path-from-ogicse-to-you

where path-from-ogicse-to-you is as above.  You need not request both
source and patches; the source you receive will include all current
patches.  Sources are shipped as a 10-part compressed tar file, encoded
for mailing with the "btoa" utility.  You will receive instructions
explaining how to unpack the tar file in a separate message.

CSNet also operates an E-mail server that accesses anonymous ftp.  It
may or may not be functional at this time.  To find out, and to get
instructions for using the server, send a message to info-server@cs.net
with the following lines in the text:

request: info
topic: help-ftp
request: end

Other information, plus questions and answers, on mush and mush patches
is available from the mush-users mailing list, which is gatewayed in
both directions with newsgroup comp.mail.mush.  The list currently
resides at mush-users@apple.com.  Requests to be added to or deleted
from the list should be sent to mush-users-request@apple.com

Bug fixes in this patch:

  * The user's real name ($realname) is no longer left empty.

  * REGCMP users (mostly SysV) no longer get core dumps when using pick.

  * Attempts to send mail (e.g. via Fcc: headers) to the same file or
    folder more than once *silently* sends only one copy to the file.
    (Before, it complained about not being able to write to the file
    for the second and later attempts.)

  * SCO UNIX 3.2 users who are having problems with "submit" can now
    define M_EXECMAIL to use execmail as their interface to MMDF.  This
    has the pleasant side-effect of making the MTA invocation compatible
    with sendmail, so resetting the variable "sendmail" works cleanly.

  * Problems with file locking and lock.c typos for SCO UNIX have been
    corrected (we hope).

  * SCO UNIX correctly includes <sys/select.h> (we hope).

  * Attempts to load folders containing more than the defined maximum
    number of messages work a bit better.  You still can't load all the
    messages, but the results are less strange.

  * Some <curses.h> macro name clashes for unusual UNIXen have been
    forcibly suppressed.

  * An amazingly old string overflow bug in toolmode has been fixed.

Prereq: "4/12/91"
*** /tmp/,RCSt1014785	Wed May 22 23:31:39 1991
--- version.h	Wed May 22 19:08:55 1991
***************
*** 1,7 ****
  /* @(#)version.h	(c) Copyright 1989, 1990, 1991 (Dan Heller) */
  
  #define MUSHNAME	"Mail User's Shell"
! #define RELEASE_DATE	"4/12/91"
  #define RELEASE		7
  #define REVISION	"2"
! #define PATCHLEVEL	2
--- 1,7 ----
  /* @(#)version.h	(c) Copyright 1989, 1990, 1991 (Dan Heller) */
  
  #define MUSHNAME	"Mail User's Shell"
! #define RELEASE_DATE	"5/22/91"
  #define RELEASE		7
  #define REVISION	"2"
! #define PATCHLEVEL	3
*** /tmp/,RCSt1015666	Wed May 22 23:51:21 1991
--- README	Wed May 22 23:50:58 1991
***************
*** 83,88 ****
--- 83,90 ----
      SUN_4_0, or SUN_4_1 depending on your SunOS version.  If SUNTOOL is
      the only thing defined, SUN_4_1 will be used.  If your version of
      SunOS is older than 3.5, you can't use SUNTOOL, so go to makefile.bsd.
+     NOTE: Even though SUN_4_1 is the default, NO_COMMAS is not defined
+     unless you explicitly define SUN_4_1 or (NO_COMMAS itself).
  
      You may also choose to define NO_WALK_MENUS to disable walking menus
      for file names selectable from the "folder" and "save" command items.
***************
*** 220,225 ****
--- 222,231 ----
      appropriate library to the LIBS list in your makefile.
  
      MMDF sites should probably NOT define PICKY_MAILER (see below).
+ 
+     If you are using SCO UNIX 3.2 and the MMDF "submit" program gives you
+     trouble because of file permissions, define M_EXECMAIL to use the
+     execmail program instead.
  
  All others:
      Chances are, your MTA uses the "From " format to separate messges in
*** /tmp/,RCSt1015666	Wed May 22 23:51:32 1991
--- config.h-dist	Thu May 16 19:51:35 1991
***************
*** 77,82 ****
--- 77,86 ----
   * If you are using MMDF, define MMDF here.
   */
  /* #define MMDF /**/
+ #if defined(M_UNIX) && defined(M_XENIX)
+ #define MMDF
+ /* #define M_EXECMAIL	/* Define if you haven't fixed submit permissions */
+ #endif /* M_UNIX && M_XENIX */
  #ifdef MMDF
  /*
   * If MMDF delivers mail the user's home directory, define HOMEMAIL.
***************
*** 83,91 ****
--- 87,101 ----
   * Also check the definition of the delivery file name MAILFILE, below.
   */
  /* #define HOMEMAIL /**/
+ #ifdef M_EXECMAIL
+ #define MAIL_DELIVERY	"/usr/lib/mail/execmail"
+ # define VERBOSE_ARG	"-v"
+ # define METOO_ARG	"-m"
+ #else /* M_EXECMAIL */
  #define MAIL_DELIVERY	"exec /usr/mmdf/bin/submit -mlnr"
  #define VERBOSE_ARG	"Ww"
  #define MTA_EXIT	9	/* exit status for successful submit */
+ #endif /* M_EXECMAIL */
  #else /* MMDF */
  /*
   * If you are not using MMDF, check these definitions.
*** /tmp/,RCSt1015666	Wed May 22 23:51:38 1991
--- file.c	Wed May 22 18:18:27 1991
***************
*** 317,323 ****
  		    error("Can't execute %s\n", tmp);
  	    } else if (lockit) {
  		/* Lock on open */
! 		if (!(newfile = lock_fopen(tmp, mode)))
  		    error("Can't write to %s", tmp);
  	    } else {
  		/* Ordinary open */
--- 317,323 ----
  		    error("Can't execute %s\n", tmp);
  	    } else if (lockit) {
  		/* Lock on open */
! 		if (!(newfile = lock_fopen(tmp, mode)) && errno != EWOULDBLOCK)
  		    error("Can't write to %s", tmp);
  	    } else {
  		/* Ordinary open */
*** /tmp/,RCSt1015666	Wed May 22 23:51:42 1991
--- init.c	Wed May 22 21:57:16 1991
***************
*** 72,78 ****
  	argv[2] = home;
  	(void) add_option(&set_options, argv);
      }
!     if (realname && *realname) {
  	/* realname has already been copied to buf */
  	argv[0] = "realname";
  	argv[2] = buf;
--- 72,78 ----
  	argv[2] = home;
  	(void) add_option(&set_options, argv);
      }
!     if (realname && *buf) {
  	/* realname has already been copied to buf */
  	argv[0] = "realname";
  	argv[2] = buf;
*** /tmp/,RCSt1015666	Wed May 22 23:51:43 1991
--- lock.c	Thu May 16 20:13:28 1991
***************
*** 95,105 ****
  #ifdef EWOULDBLOCK
  #undef EWOULDBLOCK
  #endif /* EWOULDBLOCK */
- #ifdef M_UNIX
- #define EWOULDBLOCK	EACCESS	/* SCO bug that may eventually be fixed */
- #else /* !M_UNIX */
  #define EWOULDBLOCK	EAGAIN
- #endif /* M_UNIX */
  
  #ifndef F_SETLKW
  #define F_SETLKW F_SETLK
--- 95,101 ----
***************
*** 234,240 ****
  #ifdef LCKDFLDIR
  	if (Access(filename, any(mode, "aw+") ? W_OK : R_OK) == 0)
  #else /* !LCKDFLDIR */
! 	if (errno == EWOULDBLOCK)
  #endif /* LCKDFLDIR */
  	{
  	    if (isoff(glob_flags, REDIRECT))
--- 230,240 ----
  #ifdef LCKDFLDIR
  	if (Access(filename, any(mode, "aw+") ? W_OK : R_OK) == 0)
  #else /* !LCKDFLDIR */
! 	if (errno == EWOULDBLOCK
! #ifdef M_UNIX
! 	    || errno == EACCES
! #endif /* M_UNIX */
! 				)
  #endif /* LCKDFLDIR */
  	{
  	    if (isoff(glob_flags, REDIRECT))
*** /tmp/,RCSt1015666	Wed May 22 23:51:46 1991
--- mail.c	Thu May 16 20:06:11 1991
***************
*** 1110,1120 ****
      if (!istool && (ison(flags, VERBOSE) || do_set(set_options, "verbose"))) {
  	turnon(flags, VERBOSE); /* prevent fork when "verbose" has changed */
  	oldchld = signal(SIGCHLD, SIG_DFL); /* let pclose() do the wait() */
! #ifdef MMDF
  	b = &buf[strlen(sprintf(buf, "%s%s", p, VERBOSE_ARG))];
  #else /* MMDF */
  	b = &buf[strlen(sprintf(buf, "%s %s", p, VERBOSE_ARG))];
! #endif /* MMDF */
      } else
  #endif /* VERBOSE_ARG */
  	b = buf + Strcpy(buf, p);
--- 1110,1120 ----
      if (!istool && (ison(flags, VERBOSE) || do_set(set_options, "verbose"))) {
  	turnon(flags, VERBOSE); /* prevent fork when "verbose" has changed */
  	oldchld = signal(SIGCHLD, SIG_DFL); /* let pclose() do the wait() */
! #if defined(MMDF) && !defined(M_EXECMAIL)
  	b = &buf[strlen(sprintf(buf, "%s%s", p, VERBOSE_ARG))];
  #else /* MMDF */
  	b = &buf[strlen(sprintf(buf, "%s %s", p, VERBOSE_ARG))];
! #endif /* MMDF && !M_EXECMAIL */
      } else
  #endif /* VERBOSE_ARG */
  	b = buf + Strcpy(buf, p);
***************
*** 1294,1302 ****
  		return fork_pid;
  	}
  
! #ifdef MMDF
      *(addr_list-1) = '\0';
! #endif /* MMDF */
      if (debug > 2) {
  	files[0] = stdout;
  	if (!*addr_list)
--- 1294,1302 ----
  		return fork_pid;
  	}
  
! #if defined(MMDF) && !defined(M_EXECMAIL)
      *(addr_list-1) = '\0';
! #endif /* MMDF && !M_EXECMAIL */
      if (debug > 2) {
  	files[0] = stdout;
  	if (!*addr_list)
***************
*** 1314,1320 ****
  
      if (ison(flags, VERBOSE))
  	wprint("Sending letter ... "), (void) fflush(stdout);
! #ifdef MMDF
      /* give address list to submit */
      for (p = addr_list; *p && (p = any(p, ",<")); p++)
  	if (*p == ',')
--- 1314,1320 ----
  
      if (ison(flags, VERBOSE))
  	wprint("Sending letter ... "), (void) fflush(stdout);
! #if defined(MMDF) && !defined(M_EXECMAIL)
      /* give address list to submit */
      for (p = addr_list; *p && (p = any(p, ",<")); p++)
  	if (*p == ',')
***************
*** 1323,1329 ****
  	    p = index(p, '>');
      if (*addr_list)
  	(void) fprintf(files[0], "%s\n\n", addr_list);
! #endif /* MMDF */
  
      /* see if log is set.  This is just to add message headers. No msg body. */
      if (p = do_set(set_options, "logfile")) {
--- 1323,1329 ----
  	    p = index(p, '>');
      if (*addr_list)
  	(void) fprintf(files[0], "%s\n\n", addr_list);
! #endif /* MMDF && !M_EXECMAIL */
  
      /* see if log is set.  This is just to add message headers. No msg body. */
      if (p = do_set(set_options, "logfile")) {
*** /tmp/,RCSt1015666	Wed May 22 23:51:53 1991
--- msgs.c	Wed May 22 18:27:30 1991
***************
*** 977,987 ****
      if (had_error) {
  	if (!append)
  	    msg[cnt] = old;
- 	else if (msg_found && append == 1 && cnt == MAXMSGS-append) {
- 	    /* reset fp to the beginning of the not-loaded message */
- 	    bytes = ftell(fp) - strlen(buf);
- 	    (void) fseek(fp, bytes, L_SET);
- 	}
  	if (!msg_found) {
  	    if (!append)
  		print("File not left in correct message format.\n");
--- 977,982 ----
***************
*** 1004,1011 ****
  	if (append)
  	    cnt++;
      }
!     if (append == 1) /* merge_folders takes care of this for append == 2 */
! 	msg[cnt].m_offset = ftell(fp);
      close_lock(file, fp);
      if (isoff(glob_flags, READ_ONLY)) {
  	if (had_error && msg_found && append == 1 && cnt == MAXMSGS-append) {
--- 999,1008 ----
  	if (append)
  	    cnt++;
      }
!     if (append == 1) { /* merge_folders takes care of this for append == 2 */
! 	(void) fseek(fp, 0L, 2); /* Position at end of file */
! 	msg[msg_cnt].m_offset = ftell(fp);
!     }
      close_lock(file, fp);
      if (isoff(glob_flags, READ_ONLY)) {
  	if (had_error && msg_found && append == 1 && cnt == MAXMSGS-append) {
*** /tmp/,RCSt1015666	Wed May 22 23:51:57 1991
--- mush.1	Wed May 22 23:30:05 1991
***************
*** 10,16 ****
  .if n .ds - --
  .if t .ds - \(em
  .nh
! .TH MUSH 1 "March 17, 1991" "Version 7.2.2"
  .SH NAME
  The Mail User's Shell \- Shell for electronic mail.
  .SH SYNOPSIS
--- 10,16 ----
  .if n .ds - --
  .if t .ds - \(em
  .nh
! .TH MUSH 1 "May 22, 1991" "Version 7.2.3"
  .SH NAME
  The Mail User's Shell \- Shell for electronic mail.
  .SH SYNOPSIS
***************
*** 160,166 ****
  that file is read before the folder is scanned.
  The file specified by \-F is read after the folder is scanned, so
  commands that affect messages are allowed.
! The optional `!' argument prevents the shell from running after the
  file has been sourced.
  Otherwise,
  .I Mush
--- 160,166 ----
  that file is read before the folder is scanned.
  The file specified by \-F is read after the folder is scanned, so
  commands that affect messages are allowed.
! The optional `!' prevents the shell from running after the
  file has been sourced.
  Otherwise,
  .I Mush
***************
*** 347,353 ****
  session, new mail arrives for you, it is automatically incorporated into
  your system mailbox and you are told that new mail has arrived.
  .PP
! In the default line mode, new mail is checked between each command
  issued.
  In the curses mode, new mail is checked on each
  command and is displayed in the bottom line of the screen.
--- 347,353 ----
  session, new mail arrives for you, it is automatically incorporated into
  your system mailbox and you are told that new mail has arrived.
  .PP
! In the default line mode, new mail is checked after each command
  issued.
  In the curses mode, new mail is checked on each
  command and is displayed in the bottom line of the screen.
***************
*** 362,368 ****
  displayed, to tell you whom the mail is from:
  .sp
  .ti +2
! New mail: (#15) argv@zipcode.com (Dan Heller)
  .sp
  If you are not in your system mailbox, then the new mail is not added
  to your list of messages, but you are instead informed of the new arrival.
--- 362,368 ----
  displayed, to tell you whom the mail is from:
  .sp
  .ti +2
! New mail (#15) argv@zipcode.com (Dan Heller)
  .sp
  If you are not in your system mailbox, then the new mail is not added
  to your list of messages, but you are instead informed of the new arrival.
***************
*** 2003,2009 ****
  .BR undelete .
  .TP
  .B dp
! .R (also
  .BR dt )
  Deletes the current message and prints (types) the next message.
  .TP
--- 2003,2009 ----
  .BR undelete .
  .TP
  .B dp
! (also
  .BR dt )
  Deletes the current message and prints (types) the next message.
  .TP
***************
*** 2126,2132 ****
  prevent its interpretation as part of a message range, or it may be given
  \fIafter\fR the list of bits for the same reason.
  .sp
! Message lists can be piped to the
  .B flags
  command; for example, you may use
  .sp
--- 2126,2132 ----
  prevent its interpretation as part of a message range, or it may be given
  \fIafter\fR the list of bits for the same reason.
  .sp
! Message lists can be piped to or from the
  .B flags
  command; for example, you may use
  .sp
***************
*** 2300,2315 ****
  .in +2
  .ta 1i
  .if t .ta 1.5i
! a       all messages
! d       deleted messages
  f	forwarded messages
  m	marked messages
! n       new messages
! o       old messages
  p	preserved messages
! r       replied to messages
! s       saved messages
! u       unread messages
  .fi
  .in -2
  Note that the \-H is not required; \*Qheaders :c\*U is valid.
--- 2300,2315 ----
  .in +2
  .ta 1i
  .if t .ta 1.5i
! a	all messages
! d	deleted messages
  f	forwarded messages
  m	marked messages
! n	new messages
! o	old messages
  p	preserved messages
! r	replied to messages
! s	saved messages
! u	unread messages
  .fi
  .in -2
  Note that the \-H is not required; \*Qheaders :c\*U is valid.
***************
*** 2934,2939 ****
--- 2934,2940 ----
  The pattern may also be of the form
  .ti +4
  .I /pattern1/,/pattern2/
+ .br
  in which case printing begins with the line containing
  .I pattern1
  and end with the line containing
***************
*** 3056,3063 ****
  If it is set, but has no value, the first \*QFrom\ \*U line is used
  regardless of what headers the author's message contains.
  The \*QFrom\ \*U line may be specified explicitly as an item in the
! list of reply-to headers by specifying the header
! .RB \*Q From_ \*U.
  See the VARIABLES section for more information about
  .B reply_to_hdr.
  .sp
--- 3057,3063 ----
  If it is set, but has no value, the first \*QFrom\ \*U line is used
  regardless of what headers the author's message contains.
  The \*QFrom\ \*U line may be specified explicitly as an item in the
! list of reply-to headers by specifying the header \*Q\fBFrom_\fB\*U.
  See the VARIABLES section for more information about
  .B reply_to_hdr.
  .sp
***************
*** 3144,3149 ****
--- 3144,3155 ----
  except that messages are never marked for deletion, whether or not
  .B keepsave
  is set.
+ .sp
+ .IR Note :
+ The permission mode of files created by these commands allow read and
+ write only by the owner of the file.
+ The permissions of existing files are not changed when messages are
+ saved or written to those files.
  .TP
  .BR saveopts " [file]"
  The complement of
***************
*** 4532,4540 ****
  If this isn't set, then the default value for pager (set up
  by the system manager) is used.
  This may or may not be the internal pager.
! To use the internal pager, you may set the variable pager to
! .RI \*Q internal \*U
! or to a null string.
  .TP
  .B pre_indent_str
  (String)
--- 4538,4545 ----
  If this isn't set, then the default value for pager (set up
  by the system manager) is used.
  This may or may not be the internal pager.
! To use the internal pager, you may set the variable pager
! to \*Q\fIinternal\fR\*U or to a null string.
  .TP
  .B pre_indent_str
  (String)
***************
*** 5845,5851 ****
  ~/.mushXXXXXX	Temporary mail file (copy of current folder)
  .fi
  .PP
! Temporary files that are created by the program are always
  created with read/write access to the owner only; group and other
  permissions are never set.
  This is also true for the /usr/spool/mail/* files.
--- 5850,5858 ----
  ~/.mushXXXXXX	Temporary mail file (copy of current folder)
  .fi
  .PP
! Temporary files that are created by the program, and folders written with
! .B save
! and related commands, are always
  created with read/write access to the owner only; group and other
  permissions are never set.
  This is also true for the /usr/spool/mail/* files.
*** /tmp/,RCSt1015666	Wed May 22 23:52:18 1991
--- mush.h	Wed May 22 18:16:11 1991
***************
*** 13,18 ****
--- 13,26 ----
  #    undef SYSV
  #endif /* SYSV */
  #include <curses.h>
+ 
+ #ifdef timeout
+ #undef timeout
+ #endif
+ #ifdef overwrite
+ #undef overwrite
+ #endif
+ 
  #if !defined(USG) && defined(_USG)
  #    define USG
  #endif /* USG */
***************
*** 85,90 ****
--- 93,104 ----
  #	include <sys/ioctl.h>   /* for ltchars */
  #    else
  #	include <time.h>
+ #	ifdef M_UNIX
+ #	    ifndef SELECT
+ #		define SELECT
+ #	    endif
+ #	    include <sys/select.h>
+ #	endif /* M_UNIX */
  #	include <fcntl.h>
  #    endif /* SYSV */
  #endif /* SUNTOOL */
*** /tmp/,RCSt1015666	Wed May 22 23:52:21 1991
--- pick.c	Sun May 19 19:59:48 1991
***************
*** 1,4 ****
! /* @(#)pick.c	2.4	(c) copyright 10/18/86 (Dan Heller) */
  
  #include "mush.h"
  
--- 1,4 ----
! /* @(#)pick.c	7.2	(c) copyright 5/19/91 (Dan Heller) */
  
  #include "mush.h"
  
***************
*** 290,296 ****
      int matches = 0;
      long bytes = 0;
      char buf[HDRSIZ];
!     static char *err = (char *)-1;
  #ifdef REGCMP
      char *regcmp(), *regex();
  #else /* REGCMP */
--- 290,296 ----
      int matches = 0;
      long bytes = 0;
      char buf[HDRSIZ];
!     char *err = NULL;
  #ifdef REGCMP
      char *regcmp(), *regex();
  #else /* REGCMP */
***************
*** 305,312 ****
  	if (icase)
  	    p = lcase_strcpy(buf, p);
  #ifdef REGCMP
- 	if (err && p)
- 	    xfree(err);
  	if (p && !(err = regcmp(p, NULL))) {
  	    print("regcmp error: %s\n", p);
  	    clear_msg_list(ret_list);
--- 305,310 ----
***************
*** 319,325 ****
  	    return -1;
  	}
  #endif /* REGCMP */
!     } else if (err == (char *)-1 && mdy[1] <= 0 && match_priority == 0) {
  	print("No previous regular expression\n");
  	clear_msg_list(ret_list);  /* doesn't matter really */
  	return -1;
--- 317,323 ----
  	    return -1;
  	}
  #endif /* REGCMP */
!     } else if (err == NULL && mdy[1] <= 0 && match_priority == 0) {
  	print("No previous regular expression\n");
  	clear_msg_list(ret_list);  /* doesn't matter really */
  	return -1;
***************
*** 417,422 ****
--- 415,424 ----
  		    bytes += strlen(p);
  	    }
  	}
+ #ifdef REGCMP
+     if (err)
+ 	free(err);
+ #endif /* REGCMP */
      return matches;
  }
  
***************
*** 456,462 ****
  	else
  	    direction = !flags;
  #ifdef REGCMP
!     if (err && *pattern)
  	xfree(err);
      else if (err == (char *)-1 && !*pattern) {
  	print("No previous regular expression.");
--- 458,464 ----
  	else
  	    direction = !flags;
  #ifdef REGCMP
!     if (err != (char *)-1 && *pattern)
  	xfree(err);
      else if (err == (char *)-1 && !*pattern) {
  	print("No previous regular expression.");
*** /tmp/,RCSt1015810	Wed May 22 23:52:36 1991
--- tool.c	Wed May 22 18:20:45 1991
***************
*** 145,151 ****
      (void) notify_interpose_event_func(pager_textsw,
  	scroll_textwin, NOTIFY_SAFE);
  
!     (void) sprintf(blank, "%128c", ' ');
      mrect = *(Rect *)window_get(hdr_sw, WIN_RECT);
      pw_writebackground(hdr_win, 0,0, mrect.r_width, mrect.r_height, PIX_CLR);
      istool = 2;
--- 145,151 ----
      (void) notify_interpose_event_func(pager_textsw,
  	scroll_textwin, NOTIFY_SAFE);
  
!     (void) sprintf(blank, "%*c", sizeof blank - 1, ' ');
      mrect = *(Rect *)window_get(hdr_sw, WIN_RECT);
      pw_writebackground(hdr_win, 0,0, mrect.r_width, mrect.r_height, PIX_CLR);
      istool = 2;

-- 
Bart Schaefer                                           schaefer@zipcode.com
Z-Code Software Corporation                             schaefer@cse.ogi.edu

exit 0 # Just in case...
-- 
Kent Landfield                   INTERNET: kent@sparky.IMD.Sterling.COM
Sterling Software, IMD           UUCP:     uunet!sparky!kent
Phone:    (402) 291-8300         FAX:      (402) 291-4362
Please send comp.sources.misc-related mail to kent@uunet.uu.net.