home *** CD-ROM | disk | FTP | other *** search
Text File | 1988-07-06 | 55.8 KB | 1,801 lines |
- ! * message list if we hit the end. otherwise, stop at the end of the list.
- */
- next_msg()
- {
- --- 23,31 ----
- }
-
- /*
- ! * loop thru all msgs starting with current_msg and find next undeleted and
- ! * unsaved message. If the variable "wrap" is set, wrap to the beginning of
- ! * the message list if we hit the end. otherwise, stop at the end of the list.
- */
- next_msg()
- {
- ***************
- *** 40,46 ****
- return current_msg = msg_cnt - 1;
- else
- n = -1; /* increments to 0 in loop */
- ! else if (isoff(msg[n].m_flags, DELETE))
- return current_msg = n;
- return current_msg = 0;
- }
- --- 40,47 ----
- return current_msg = msg_cnt - 1;
- else
- n = -1; /* increments to 0 in loop */
- ! else if (isoff(msg[n].m_flags, DELETE) &&
- ! isoff(msg[n].m_flags, SAVED))
- return current_msg = n;
- return current_msg = 0;
- }
- ***************
- *** 286,291 ****
- --- 287,293 ----
- case 'n' : turnon(newflag, UNREAD), turnoff(newflag, OLD);
- when 'd' : turnon(newflag, DELETE);
- when 'p' : turnon(newflag, PRESERVE);
- + when 's' : turnon(newflag, SAVED);
- when 'u' : turnon(newflag, UNREAD); /* fall thru! */
- case 'o' : turnon(newflag, OLD);
- when 'r' :
- ***************
- *** 313,318 ****
- --- 315,322 ----
- wprint(" PRESERVE");
- if (ison(msg[i].m_flags, REPLIED))
- wprint(" REPLIED");
- + if (ison(msg[i].m_flags, SAVED))
- + wprint(" SAVED");
- if (ison(msg[i].m_flags, UPDATE_STATUS))
- wprint(" UPDATE_STATUS");
- wprint("\n");
- ***************
- *** 342,347 ****
- --- 346,352 ----
- {
- static FILE *pp;
- static int cnt;
- + static u_long save_echo_flag;
-
- #ifdef SUNTOOL
- if (istool) {
- ***************
- *** 352,360 ****
- #endif /* SUNTOOL */
- if (start_pager) {
- turnon(glob_flags, IGN_SIGS);
- ! if (!buf)
- pp = stdout;
- ! else {
- echo_on();
- if (!(pp = popen(buf, "w")))
- error(buf);
- --- 357,371 ----
- #endif /* SUNTOOL */
- if (start_pager) {
- turnon(glob_flags, IGN_SIGS);
- ! if (!buf) {
- ! /* internal pager */
- ! save_echo_flag = ison(glob_flags, ECHO_FLAG);
- pp = stdout;
- ! if (save_echo_flag) {
- ! turnoff(glob_flags, ECHO_FLAG);
- ! echo_off();
- ! }
- ! } else {
- echo_on();
- if (!(pp = popen(buf, "w")))
- error(buf);
- ***************
- *** 364,370 ****
- if (pp && pp != stdout)
- pclose(pp);
- pp = NULL_FILE;
- ! echo_off();
- turnoff(glob_flags, IGN_SIGS);
- } else if (pp != stdout)
- return fputs(buf, pp); /* returns EOF if user exited pager */
- --- 375,385 ----
- if (pp && pp != stdout)
- pclose(pp);
- pp = NULL_FILE;
- ! if (save_echo_flag) {
- ! echo_on();
- ! turnon(glob_flags, ECHO_FLAG);
- ! } else
- ! echo_off();
- turnoff(glob_flags, IGN_SIGS);
- } else if (pp != stdout)
- return fputs(buf, pp); /* returns EOF if user exited pager */
- *** OLD/msgs.c Sat May 21 10:27:30 1988
- --- msgs.c Tue Jul 5 22:53:26 1988
- ***************
- *** 1,23 ****
- /* @(#)msgs.c (c) copyright 10/18/86 (Dan Heller) */
-
- ! #include "mush.h"
- ! #ifdef SYSV
- ! #ifndef USG
- ! #include <sys/locking.h>
- ! #else /* USG */
- #include <unistd.h>
- #endif /* USG */
- ! #endif /* SYSV */
-
- ! lock_file(filename, fd)
- char *filename;
- {
- #ifdef SYSV
- #ifndef USG
- ! (void) locking(fd, LK_LOCK, 0); /* xenix */
- #else
- /* if unable to lock, tell them */
- ! if (Access(filename, W_OK) || lockf(fd, F_TLOCK, 0)) /* system-v */
- return -1;
- #endif /* USG */
- #else
- --- 1,63 ----
- /* @(#)msgs.c (c) copyright 10/18/86 (Dan Heller) */
-
- ! #ifdef USG
- #include <unistd.h>
- #endif /* USG */
- ! #include "mush.h"
- ! #if defined(SYSV) && !defined(USG)
- ! #include <sys/locking.h>
- ! #endif /* SYSV && !USG */
-
- ! extern int sgid;
- !
- ! #ifdef DOT_LOCK
- ! dot_lock(filename)
- char *filename;
- {
- + char buf[MAXPATHLEN];
- + int lockfd, cnt = 0;
- + SIGRET (*oldint)(), (*oldquit)();
- +
- + setgid(sgid);
- + (void) sprintf(buf, "%s.lock", filename);
- + on_intr();
- + while ((lockfd = open(buf, O_CREAT|O_WRONLY|O_EXCL, 0600)) == -1) {
- + if (errno != EEXIST) {
- + error("unable to lock %s", filename);
- + break;
- + }
- + if (cnt++ == 0)
- + print("%s already locked, waiting", filename);
- + else
- + print_more(".");
- + sleep(1);
- + if (ison(glob_flags, WAS_INTR)) {
- + print_more("\nAborted.\n");
- + break;
- + }
- + }
- + off_intr();
- + if (lockfd != -1) {
- + if (cnt)
- + print("done.\n");
- + (void) close(lockfd);
- + }
- + setgid(getgid());
- + return lockfd == -1? -1 : 0;
- + }
- + #endif /* DOT_LOCK */
- +
- + lock_file(filename, fp)
- + char *filename;
- + FILE *fp;
- + {
- + int fd = fileno(fp);
- #ifdef SYSV
- #ifndef USG
- ! (void) locking(fd, LK_LOCK, 0); /* old xenix (sys III) */
- #else
- /* if unable to lock, tell them */
- ! if (Access(filename, W_OK) || lockf(fd, F_LOCK, 0L)) /* system-v */
- return -1;
- #endif /* USG */
- #else
- ***************
- *** 31,39 ****
- return 0;
- }
-
- ! close_lock(fp)
- FILE *fp;
- {
- #ifdef SYSV
- #ifndef USG
- locking(fileno(fp), LK_UNLCK, 0);
- --- 71,87 ----
- return 0;
- }
-
- ! void
- ! close_lock(filename, fp)
- ! char *filename;
- FILE *fp;
- {
- + #ifdef DOT_LOCK
- + char buf[MAXPATHLEN];
- + setgid(sgid);
- + (void) unlink(sprintf(buf, "%s.lock", filename));
- + setgid(getgid());
- + #endif /* DOT_LOCK */
- #ifdef SYSV
- #ifndef USG
- locking(fileno(fp), LK_UNLCK, 0);
- ***************
- *** 65,77 ****
- return;
- }
- set_isread(n);
- ! if (ison(flg, TOP)) {
- turnon(flg, NO_HEADER);
- print("Top of "), turnon(glob_flags, CONT_PRNT);
- }
-
- if (!istool && isoff(flg, NO_PAGE) &&
- ! crt < msg[n].m_lines && isoff(flg, TOP)) {
- char buf[32], *pager = do_set(set_options, "pager");
- if (!pager)
- pager = DEF_PAGER;
- --- 113,125 ----
- return;
- }
- set_isread(n);
- ! if (ison(flg, M_TOP)) {
- turnon(flg, NO_HEADER);
- print("Top of "), turnon(glob_flags, CONT_PRNT);
- }
-
- if (!istool && isoff(flg, NO_PAGE) &&
- ! crt < msg[n].m_lines && isoff(flg, M_TOP)) {
- char buf[32], *pager = do_set(set_options, "pager");
- if (!pager)
- pager = DEF_PAGER;
- ***************
- *** 105,111 ****
- char line[BUFSIZ], *show_hdrs = NULL;
-
- still_more = 0;
- ! if (ison(flags, TOP)) {
- register char *p = do_set(set_options, "toplines");
- top = (p)? atoi(p) : crt;
- }
- --- 153,159 ----
- char line[BUFSIZ], *show_hdrs = NULL;
-
- still_more = 0;
- ! if (ison(flags, M_TOP)) {
- register char *p = do_set(set_options, "toplines");
- top = (p)? atoi(p) : crt;
- }
- ***************
- *** 184,189 ****
- --- 232,239 ----
- if (isoff(msg[n].m_flags, UNREAD) &&
- isoff(msg[n].m_flags, PRESERVE))
- *p++ = 'R';
- + if (ison(msg[n].m_flags, SAVED))
- + *p++ = 'S';
- if (ison(msg[n].m_flags, REPLIED))
- *p++ = 'r';
- *p++ = '\n', *p = 0;
- ***************
- *** 222,228 ****
- }
- }
- }
- ! if (!on_hdr && ison(flags, TOP) && !--top)
- break;
- if (isoff(flags, NO_HEADER)) {
- /* note that function returns the number of lines */
- --- 272,278 ----
- }
- }
- }
- ! if (!on_hdr && ison(flags, M_TOP) && !--top)
- break;
- if (isoff(flags, NO_HEADER)) {
- /* note that function returns the number of lines */
- ***************
- *** 261,268 ****
- }
-
- /* get mail from whatever the mailfile points to. open a tempfile for
- ! * appending, then close it and reopen it for read-only. some systems
- ! * have flakey read/write access.
- */
- void
- getmail()
- --- 311,317 ----
- }
-
- /* get mail from whatever the mailfile points to. open a tempfile for
- ! * appending, then close it and reopen it for read-only.
- */
- void
- getmail()
- ***************
- *** 272,286 ****
- long ftell(), bytes;
- char line[BUFSIZ];
-
- ! #ifdef SYSV
- ! /* for SVID systems to lock, the file must be open for read/write */
- ! if (isoff(glob_flags, READ_ONLY))
- ! mail_fp = fopen(mailfile, "r+");
- ! else
- ! #endif /* SYSV */
- ! mail_fp = fopen(mailfile, "r");
- !
- ! if (!mail_fp) {
- error("Unable to open %s", mailfile);
- return;
- }
- --- 321,327 ----
- long ftell(), bytes;
- char line[BUFSIZ];
-
- ! if (!(mail_fp = fopen(mailfile, "r"))) {
- error("Unable to open %s", mailfile);
- return;
- }
- ***************
- *** 305,313 ****
- } else if (msg_cnt)
- (void) fseek(tmpf, msg[msg_cnt-1].m_offset+msg[msg_cnt-1].m_size,L_SET);
-
- - if (isoff(glob_flags, READ_ONLY) && lock_file(mailfile, fileno(mail_fp)))
- - error("WARNING: unable to lock %s", mailfile);
- -
- (void) fseek(mail_fp, ftell(tmpf), L_SET);
-
- #ifdef MSG_SEPARATOR
- --- 346,351 ----
- ***************
- *** 345,351 ****
- if (isoff(glob_flags, READ_ONLY)) {
- fputs(line, tmpf);
- if (errno == ENOSPC)
- ! fs_error();
- }
- /* we've read the "From " line, now read the rest of
- * the message headers till we get to a blank line.
- --- 383,389 ----
- if (isoff(glob_flags, READ_ONLY)) {
- fputs(line, tmpf);
- if (errno == ENOSPC)
- ! fs_error(mailfile, mail_fp);
- }
- /* we've read the "From " line, now read the rest of
- * the message headers till we get to a blank line.
- ***************
- *** 358,363 ****
- --- 396,402 ----
- switch(*p) {
- when 'R': turnoff(msg[msg_cnt].m_flags, UNREAD);
- when 'P': turnon(msg[msg_cnt].m_flags, UNREAD);
- + when 'S': turnon(msg[msg_cnt].m_flags, SAVED);
- when 'r': turnon(msg[msg_cnt].m_flags, REPLIED);
- otherwise :
- if (ison(glob_flags, WARNING))
- ***************
- *** 368,374 ****
- if (isoff(glob_flags, READ_ONLY)) {
- fputs(line, tmpf);
- if (errno == ENOSPC)
- ! fs_error();
- }
- }
- msg_cnt++, get_status = 1;
- --- 407,413 ----
- if (isoff(glob_flags, READ_ONLY)) {
- fputs(line, tmpf);
- if (errno == ENOSPC)
- ! fs_error(mailfile, mail_fp);
- }
- }
- msg_cnt++, get_status = 1;
- ***************
- *** 377,383 ****
- if (isoff(glob_flags, READ_ONLY)) {
- fputs(line, tmpf);
- if (errno == ENOSPC)
- ! fs_error();
- } else
- (void) fseek(tmpf, ftell(mail_fp), L_SET);
- }
- --- 416,422 ----
- if (isoff(glob_flags, READ_ONLY)) {
- fputs(line, tmpf);
- if (errno == ENOSPC)
- ! fs_error(mailfile, mail_fp);
- } else
- (void) fseek(tmpf, ftell(mail_fp), L_SET);
- }
- ***************
- *** 387,409 ****
- msg[msg_cnt-1].m_lines = lines;
- }
-
- - close_lock(mail_fp);
- -
- - /* I've had problems with sys-v opening a file for read/write. I'd
- - * try fgets after a seek to an arbitrary place and get NULL. "w+"
- - * could be broken (XENIX), so play it safe anyway.
- - */
- if (isoff(glob_flags, READ_ONLY)) {
- fclose(tmpf);
- if (!(tmpf = fopen(tempfile, "r")))
- error("unable to open %s for reading", tempfile);
- }
- }
-
- ! fs_error()
- {
- error("WARNING: unable to write to \"%s\"", tempfile);
- print("Read the manual on what to do on full file systems.\n");
- cleanup(0);
- }
-
- --- 426,447 ----
- msg[msg_cnt-1].m_lines = lines;
- }
-
- if (isoff(glob_flags, READ_ONLY)) {
- fclose(tmpf);
- if (!(tmpf = fopen(tempfile, "r")))
- error("unable to open %s for reading", tempfile);
- }
- + fclose(mail_fp);
- }
-
- ! void
- ! fs_error(mailfile, mail_fp)
- ! char *mailfile;
- ! FILE *mail_fp;
- {
- error("WARNING: unable to write to \"%s\"", tempfile);
- print("Read the manual on what to do on full file systems.\n");
- + close_lock(mailfile, mail_fp);
- cleanup(0);
- }
-
- ***************
- *** 413,423 ****
- */
- copyback()
- {
- ! register int new = 0, i, j=0, k=0;
- register long flg = 0;
- ! register FILE *mbox = NULL_FILE, *mail_fp;
- char *mbox_file, action = 0;
- ! int hold = 0, delete_it = 0, dont_unlink = FALSE;
-
- #ifdef SUNTOOL
- if (istool) {
- --- 451,461 ----
- */
- copyback()
- {
- ! register int new = 0, i=0, j=0, k=0;
- register long flg = 0;
- ! register FILE *mbox = NULL_FILE, *mail_fp = NULL_FILE;
- char *mbox_file, action = 0;
- ! int hold = 0, delete_it = 0, dont_unlink = FALSE, keepsave;
-
- #ifdef SUNTOOL
- if (istool) {
- ***************
- *** 467,472 ****
- --- 505,513 ----
- error("Unable to write to %s", mbox_file);
- }
- }
- + #ifdef DOT_LOCK
- + if ((i = dot_lock(mailfile)) == 0)
- + #endif /* DOT_LOCK */
- /* reopen the mailfile; set umask accordingly */
- {
- int omask = umask(077);
- ***************
- *** 474,491 ****
- (void) umask(omask);
- if (!mail_fp) {
- error("Unable to rewrite %s", mailfile);
- return 0;
- }
- }
- ! turnon(glob_flags, IGN_SIGS);
- ! print("Updating \"%s\"", mailfile);
- !
- ! if (lock_file(mailfile, fileno(mail_fp)))
- error("WARNING: unable to lock %s", mailfile);
-
- turnon(flg, UPDATE_STATUS);
- turnon(flg, NO_IGNORE);
-
- for (i = 0; i < msg_cnt; i++)
- /* check to see if message is marked for deletion or, if read and not
- * preserved, delete it if autodelete is set. Otherwise, save the
- --- 515,544 ----
- (void) umask(omask);
- if (!mail_fp) {
- error("Unable to rewrite %s", mailfile);
- + if (mbox)
- + fclose(mbox);
- return 0;
- }
- }
- ! if (i != 0 || lock_file(mailfile, mail_fp) == -1) {
- ! #ifndef DOT_LOCK
- error("WARNING: unable to lock %s", mailfile);
- + #endif /* DOT_LOCK */
- + if (mail_fp)
- + close_lock(mailfile, mail_fp);
- + if (mbox)
- + fclose(mbox);
- + return 0;
- + }
-
- + print("Updating \"%s\"", mailfile);
- +
- turnon(flg, UPDATE_STATUS);
- turnon(flg, NO_IGNORE);
- + turnon(glob_flags, IGN_SIGS);
-
- + keepsave = !!do_set(set_options, "keepsave");
- +
- for (i = 0; i < msg_cnt; i++)
- /* check to see if message is marked for deletion or, if read and not
- * preserved, delete it if autodelete is set. Otherwise, save the
- ***************
- *** 492,498 ****
- * message in the spool file if hold is set. If all fails, save in mbox.
- */
- if (ison(msg[i].m_flags, DELETE)
- ! || isoff(msg[i].m_flags, UNREAD) && isoff(msg[i].m_flags, PRESERVE)
- && delete_it) {
- Debug("%s %d",
- (action!='d')? "\ndeleting message:" : "", i+1), action = 'd';
- --- 545,553 ----
- * message in the spool file if hold is set. If all fails, save in mbox.
- */
- if (ison(msg[i].m_flags, DELETE)
- ! || ison(msg[i].m_flags, SAVED) && !keepsave &&
- ! isoff(msg[i].m_flags, PRESERVE)
- ! || isoff(msg[i].m_flags, UNREAD) && isoff(msg[i].m_flags, PRESERVE)
- && delete_it) {
- Debug("%s %d",
- (action!='d')? "\ndeleting message:" : "", i+1), action = 'd';
- ***************
- *** 524,531 ****
- }
- Debug("\n%s", mailfile);
-
- ! close_lock(mail_fp);
-
- if (mbox)
- fclose(mbox);
- if (j) {
- --- 579,594 ----
- }
- Debug("\n%s", mailfile);
-
- ! close_lock(mailfile, mail_fp);
-
- + #ifdef SUNTOOL
- + if (istool) {
- + mail_timer.it_value.tv_sec = time_out;
- + setitimer(ITIMER_REAL, &mail_timer, NULL);
- + }
- + #endif /* SUNTOOL */
- +
- + /* some users like to have zero length folders for frequent usage */
- if (mbox)
- fclose(mbox);
- if (j) {
- ***************
- *** 534,540 ****
- if (!strcmp(mailfile, spoolfile) && utime(mailfile, times))
- error("utime");
- print_more(": saved %d message%s\n", j, (j==1)? NO_STRING: "s");
- ! } else if (strcmp(mailfile, spoolfile) && !dont_unlink && !new)
- if (unlink(mailfile))
- turnon(glob_flags, CONT_PRNT), error(": cannot remove");
- else
- --- 597,604 ----
- if (!strcmp(mailfile, spoolfile) && utime(mailfile, times))
- error("utime");
- print_more(": saved %d message%s\n", j, (j==1)? NO_STRING: "s");
- ! } else if (strcmp(mailfile, spoolfile) && !dont_unlink && !new &&
- ! !do_set(set_options, "save_empty"))
- if (unlink(mailfile))
- turnon(glob_flags, CONT_PRNT), error(": cannot remove");
- else
- ***************
- *** 542,557 ****
- else
- print_more(": empty\n");
- if (k)
- ! print("saved %d message%s in %s\n",k,(k==1)? NO_STRING: "s",mbox_file);
- if (new && !istool)
- print("New mail has arrived.\n");
- turnoff(glob_flags, IGN_SIGS);
- ! #ifdef SUNTOOL
- ! if (istool) {
- ! mail_timer.it_value.tv_sec = time_out;
- ! setitimer(ITIMER_REAL, &mail_timer, NULL);
- ! }
- ! #endif /* SUNTOOL */
- return 1;
- }
-
- --- 606,617 ----
- else
- print_more(": empty\n");
- if (k)
- ! print("saved %d message%s in %s\n",k,(k==1)? NO_STRING:"s", mbox_file);
- if (new && !istool)
- print("New mail has arrived.\n");
- +
- turnoff(glob_flags, IGN_SIGS);
- !
- return 1;
- }
-
- *** OLD/mush.1 Thu May 12 21:14:45 1988
- --- mush.1 Tue Jun 28 21:38:26 1988
- ***************
- *** 167,178 ****
- a database of electronic mail messages under the
- .I UNIX
- environment.
- ! There are three user interfaces which allow the user to interact with
- .I Mush.
- The default interface is the conventional tty-based line mode
- similar to command line interpreters such as
- .I csh
- ! as well as other mailers, such as University of California, Berkeley's,
- .I Mail
- and Bell Lab's System V
- .I mailx
- --- 167,178 ----
- a database of electronic mail messages under the
- .I UNIX
- environment.
- ! There are three user interfaces that allow the user to interact with
- .I Mush.
- The default interface is the conventional tty-based line mode
- similar to command line interpreters such as
- .I csh
- ! as well as other mailers, such as University of California, Berkeley's
- .I Mail
- and Bell Lab's System V
- .I mailx
- ***************
- *** 204,210 ****
- See the corresponding sections for more information on the user
- interface desired.
- Most of this manual deals with commands, variables
- ! and actions which are common to all three interfaces although
- some attention is paid to individual characteristics of each interface.
- .PP
- The following command line arguments are understood by
- --- 204,210 ----
- See the corresponding sections for more information on the user
- interface desired.
- Most of this manual deals with commands, variables
- ! and actions that are common to all three interfaces although
- some attention is paid to individual characteristics of each interface.
- .PP
- The following command line arguments are understood by
- ***************
- *** 215,221 ****
- .TP
- \-c cc-list
- The list of Carbon Copy recipients is set on the command line.
- ! If more than one address is specified, the entire list should be encased in
- quotes.
- This applies when sending mail only.
- If you are entering the shell, curses mode, or the tool mode, this option is
- --- 215,221 ----
- .TP
- \-c cc-list
- The list of Carbon Copy recipients is set on the command line.
- ! If more than one address is specified, the entire list should be enclosed in
- quotes.
- This applies when sending mail only.
- If you are entering the shell, curses mode, or the tool mode, this option is
- ***************
- *** 229,239 ****
- .TP
- \-F[!] filename
- This file is the same type as the initialization file read on startup
- ! (see INITIALIZATION) with the exception that commands which manipulate
- or search messages may be given. Normally, such commands may not exist
- in the initialization file since that file is read before the folder
- is scanned. This file is read after the folder is scanned, so commands
- ! which change folders are allowed.
- The optional `!' argument prevents the shell from running after the file
- has been sourced. Otherwise,
- .I Mush
- --- 229,239 ----
- .TP
- \-F[!] filename
- This file is the same type as the initialization file read on startup
- ! (see INITIALIZATION) with the exception that commands that manipulate
- or search messages may be given. Normally, such commands may not exist
- in the initialization file since that file is read before the folder
- is scanned. This file is read after the folder is scanned, so commands
- ! that change folders are allowed.
- The optional `!' argument prevents the shell from running after the file
- has been sourced. Otherwise,
- .I Mush
- ***************
- *** 269,275 ****
- .I Mush
- commands.
- See the INITIALIZATION section for information on how to
- ! write scripts which deal with mail.
- Note that this flag is different from the \*Qignore\*U flag of UCB Mail.
- .TP
- \-N
- --- 269,275 ----
- .I Mush
- commands.
- See the INITIALIZATION section for information on how to
- ! write scripts that deal with mail.
- Note that this flag is different from the \*Qignore\*U flag of UCB Mail.
- .TP
- \-N
- ***************
- *** 304,310 ****
- \-s subject
- The subject is set on the command line using this flag.
- If the subject has
- ! any spaces or tabs, the entire subject should be encased in quotes.
- This applies when sending mail only.
- If you are entering the shell,
- curses mode, or the tool mode, this option is ignored.
- --- 304,310 ----
- \-s subject
- The subject is set on the command line using this flag.
- If the subject has
- ! any spaces or tabs, the entire subject should be enclosed in quotes.
- This applies when sending mail only.
- If you are entering the shell,
- curses mode, or the tool mode, this option is ignored.
- ***************
- *** 395,401 ****
- .I Mush
- has command line history reminiscent of
- .IR csh ,
- ! commands which use UUCP's `!' character for user-host and host-host
- separation should be escaped (preceded by a backslash).
- This is not necessary in the initialization file (.mushrc) because history
- referencing is ignored while these files are being sourced.
- --- 395,401 ----
- .I Mush
- has command line history reminiscent of
- .IR csh ,
- ! commands that use UUCP's `!' character for user-host and host-host
- separation should be escaped (preceded by a backslash).
- This is not necessary in the initialization file (.mushrc) because history
- referencing is ignored while these files are being sourced.
- ***************
- *** 415,421 ****
- .PP
- .BR "Command Line Aliases" .
- .PP
- ! Command aliases are different than mail aliases in that they are used
- to expand to commands.
- The usage of command line aliases is similar to that supplied by
- .IR csh .
- --- 415,421 ----
- .PP
- .BR "Command Line Aliases" .
- .PP
- ! Command aliases are different from mail aliases in that they are used
- to expand to commands.
- The usage of command line aliases is similar to that supplied by
- .IR csh .
- ***************
- *** 428,434 ****
- one command to be used as input to the next command in the pipeline.
- However, the output of commands is not the \*Qtext\*U that is returned
- (as it is in
- ! .IR csh ),
- but the messages that are affected.
- .PP
- .BR Help .
- --- 428,434 ----
- one command to be used as input to the next command in the pipeline.
- However, the output of commands is not the \*Qtext\*U that is returned
- (as it is in
- ! .IR csh )
- but the messages that are affected.
- .PP
- .BR Help .
- ***************
- *** 489,495 ****
- The default system initialization file is read first and then the
- user's personal initialization file is read.
- The system default file
- ! is set up by the system administrator and may contain commands which
- should be set system-wide.
- .PP
- The user's file is determined by first looking for the environment variable
- --- 489,495 ----
- The default system initialization file is read first and then the
- user's personal initialization file is read.
- The system default file
- ! is set up by the system administrator and may contain commands that
- should be set system-wide.
- .PP
- The user's file is determined by first looking for the environment variable
- ***************
- *** 497,503 ****
- If that file isn't found, then the file
- .I .mushrc
- is searched for in the home directory of the user.
- ! If that file cannot be found, it will attempt to read the file,
- .I .mailrc
- from the same directory.
- Finally, if that file cannot be read, no initialization is done
- --- 497,503 ----
- If that file isn't found, then the file
- .I .mushrc
- is searched for in the home directory of the user.
- ! If that file cannot be found, it will attempt to read the file
- .I .mailrc
- from the same directory.
- Finally, if that file cannot be read, no initialization is done
- ***************
- *** 550,556 ****
- It may be anywhere on a line in the file.
- When that character is encountered,
- processing of that line is discontinued to the end of the line.
- ! If the `#' is encased in quotes (single or double), then it is not
- considered a comment.
- Examples:
- .sp
- --- 550,556 ----
- It may be anywhere on a line in the file.
- When that character is encountered,
- processing of that line is discontinued to the end of the line.
- ! If the `#' is enclosed in quotes (single or double), then it is not
- considered a comment.
- Examples:
- .sp
- ***************
- *** 580,586 ****
- The statements associated with an \*Qif\*U expression are never on the same
- line with the conditional.
- .PP
- ! Conditional expressions understood include the internal variables,
- .IR istool ,
- .IR iscurses ,
- .IR hdrs_only ,
- --- 580,586 ----
- The statements associated with an \*Qif\*U expression are never on the same
- line with the conditional.
- .PP
- ! Conditional expressions understood include the internal variables
- .IR istool ,
- .IR iscurses ,
- .IR hdrs_only ,
- ***************
- *** 613,619 ****
- If \-i is specified, the value for
- .I redirect
- will be set to false.
- ! These are internal variables whose values can not be referenced using the
- \*Q$variable\*U method of variable expansion.
- .PP
- The `!' operator may be used to negate expressions, thus,
- --- 613,619 ----
- If \-i is specified, the value for
- .I redirect
- will be set to false.
- ! These are internal variables whose values cannot be referenced using the
- \*Q$variable\*U method of variable expansion.
- .PP
- The `!' operator may be used to negate expressions, thus,
- ***************
- *** 666,673 ****
- Like other interactive commands, the
- .B curses
- command itself should never be called from an initialization file.
- ! Doing so will cause terminal settings to be set incorrectly and unpredictable
- ! results from there.
- See the CURSES INTERFACE section for configuring your
- environment so you enter curses mode each time you run the shell.
- .PP
- --- 666,673 ----
- Like other interactive commands, the
- .B curses
- command itself should never be called from an initialization file.
- ! Doing so will cause terminal settings to be set incorrectly and cause
- ! unpredictable results from there.
- See the CURSES INTERFACE section for configuring your
- environment so you enter curses mode each time you run the shell.
- .PP
- ***************
- *** 698,703 ****
- --- 698,731 ----
- .I less
- normally fails to function correctly
- for the terminal type \*Qadm3a\*U so we don't use it.
- + .sp
- + Also supported in \*Qif\*U expressions are the test flags \*Q-e\*U
- + and \*Q-z\*U. These flags test to see if a file exists (\*Q-e\*U) or
- + if it is zero-length (\*Q-z\*U).
- + .sp
- + .nf
- + .in +2
- + set mbox = ~/Mail/mbox
- + set newfolder = /usr/spool/mail/$USER
- + if -z $newfolder
- + .ti +4
- + set newfolder = $mbox
- + endif
- + if -e $newfolder
- + .ti +4
- + folder $newfolder
- + else
- + .ti +4
- + quit
- + endif
- + .fi
- + .sp
- + This sets a new variable called \fBnewfolder\fR to the the user's spool
- + mailbox (the system mailbox). It then tests to see if it is zero length,
- + and if it is, resets the variable to the value of the user's \fBmbox\fR
- + variable (mbox must be set here). It then tests to see if the new folder
- + exists. If it does, it changes folders to the new folder. If it doesn't
- + exist, the program exits (via \fBquit\fR).
- .PP
- After sourcing the initialization file,
- .I Mush
- ***************
- *** 712,718 ****
- variable set, then when the current folder's messages have all been read,
- the messages are sorted according to the value of the
- variable (see the sort entry under the VARIABLES heading for more information).
- ! Each message has a number of message header lines which contain information
- about whom the mail is from, the subject of the message, the date it was
- received, and other information about the letter.
- This information is then compiled into a one-line summary for
- --- 740,746 ----
- variable set, then when the current folder's messages have all been read,
- the messages are sorted according to the value of the
- variable (see the sort entry under the VARIABLES heading for more information).
- ! Each message has a number of message header lines that contain information
- about whom the mail is from, the subject of the message, the date it was
- received, and other information about the letter.
- This information is then compiled into a one-line summary for
- ***************
- *** 747,753 ****
- the group \*Qunix-wizards\*U (of which the user is an elite
- member) and save them in the file $folder/wizmail.
- Last, the folder will be updated, removing all deleted mail
- ! (saved mail may be marked as deleted),
- and the folder is reread and sorted according to the date of the messages.
- .SH "GENERAL USAGE"
- Because there are three different interfaces available to the user,
- --- 775,781 ----
- the group \*Qunix-wizards\*U (of which the user is an elite
- member) and save them in the file $folder/wizmail.
- Last, the folder will be updated, removing all deleted mail
- ! (saved mail may be marked as deleted)
- and the folder is reread and sorted according to the date of the messages.
- .SH "GENERAL USAGE"
- Because there are three different interfaces available to the user,
- ***************
- *** 754,760 ****
- the tty characteristics (backspace, kill-word, kill-line, redraw line)
- are simulated identically in all interfaces.
- When the user has to type something, the 4.2BSD style of tty driver interface
- ! is simulated whether you're in the window system, the curses mode, the tty-line
- mode, and even on System-V machines.
- This means that backspacing causes a
- backspace-space-backspace effect (erasing the character backspaced over).
- --- 782,789 ----
- the tty characteristics (backspace, kill-word, kill-line, redraw line)
- are simulated identically in all interfaces.
- When the user has to type something, the 4.2BSD style of tty driver interface
- ! is simulated whether you're in the window system, the curses mode, or
- ! the tty-line
- mode, and even on System-V machines.
- This means that backspacing causes a
- backspace-space-backspace effect (erasing the character backspaced over).
- ***************
- *** 767,788 ****
- If the message is marked as deleted, then use the
- .B undelete
- command supplied by the interface you are using.
- ! To display a message in line mode, specify a message to be displayed using
- .BR print ,
- .BR type ,
- .BR p ,
- .BR t ,
- ! or by typing the message number, that message will be printed on the screen.
- .PP
- In curses mode, move the cursor over the message you want and type
- a `t' or `p' to read the message.
- ! The user may \*Qbind\*U other keys to call
- ! the function which displays messages if `t' and `p' are uncomfortable.
- .PP
- In the graphics mode, move the mouse over the message you wish to
- be displayed and select the LEFT mouse button.
- ! If the message you want is not visible (in the header subwindow), you may type
- ! in the message subwindow the number of the message and hit return.
- That message number will be displayed.
- .PP
- In the line or curses mode, if the message has more lines than the variable
- --- 796,817 ----
- If the message is marked as deleted, then use the
- .B undelete
- command supplied by the interface you are using.
- ! To display a message in line mode, specify the message using
- .BR print ,
- .BR type ,
- .BR p ,
- .BR t ,
- ! or type a message number to display that message on the screen.
- .PP
- In curses mode, move the cursor over the message you want and type
- a `t' or `p' to read the message.
- ! You may \*Qbind\*U other keys to call
- ! the function that displays messages if `t' and `p' are uncomfortable.
- .PP
- In the graphics mode, move the mouse over the message you wish to
- be displayed and select the LEFT mouse button.
- ! If the message you want is not visible (in the header subwindow), you may type,
- ! in the message subwindow, the number of the message and hit return.
- That message number will be displayed.
- .PP
- In the line or curses mode, if the message has more lines than the variable
- ***************
- *** 842,848 ****
- For instance, typing \*Q~i\*U (alone on a line) will place a copy
- of the \*Qcurrent message\*U into your message body.
- It will not include the message headers of the message, just the body of text
- ! which composes the message.
- .PP
- Available
- .BR "tilde escapes" :
- --- 871,877 ----
- For instance, typing \*Q~i\*U (alone on a line) will place a copy
- of the \*Qcurrent message\*U into your message body.
- It will not include the message headers of the message, just the body of text
- ! that comprises the message.
- .PP
- Available
- .BR "tilde escapes" :
- ***************
- *** 862,868 ****
- Save the contents of the letter to \*Qdead.letter\*U
- (unless the `!' is specified) and then clear the message buffer; the user
- remains in editing mode.
- ! If the variable,
- .B nosave
- is set, then `!' need not be specified.
- .TP
- --- 891,897 ----
- Save the contents of the letter to \*Qdead.letter\*U
- (unless the `!' is specified) and then clear the message buffer; the user
- remains in editing mode.
- ! If the variable
- .B nosave
- is set, then `!' need not be specified.
- .TP
- ***************
- *** 913,923 ****
- .TP
- ~S[!]
- Include [don't include] signature at end of message.
- ! The variables,
- .B autosign
- and
- .B autosign2
- ! describes the file or string to append to the message.
- See the VARIABLES section for more information on these variables.
- .TP
- ~s [subject]
- --- 942,952 ----
- .TP
- ~S[!]
- Include [don't include] signature at end of message.
- ! The variables
- .B autosign
- and
- .B autosign2
- ! describe the file or string to append to the message.
- See the VARIABLES section for more information on these variables.
- .TP
- ~s [subject]
- ***************
- *** 974,980 ****
- Run the
- .I Mush
- command specified by \*Qcommand\*U.
- ! You may not run any command which sends mail.
- It is inadvisable to change folders at this time
- since the current message list may be corrupted, but the action is
- allowed nonetheless to provide flexibility for experienced users.
- --- 1003,1009 ----
- Run the
- .I Mush
- command specified by \*Qcommand\*U.
- ! You may not run any command that sends mail.
- It is inadvisable to change folders at this time
- since the current message list may be corrupted, but the action is
- allowed nonetheless to provide flexibility for experienced users.
- ***************
- *** 993,999 ****
- .SH "LINE-MODE INTERFACE"
- In the line-mode, the user is given a prompt to which commands are issued
- and arguments are passed to commands.
- ! When the user types at the prompt, each line is parsed and words (or,
- arguments) are separated into an array of strings.
- This array, also called an
- .IR "argument vector" ,
- --- 1022,1028 ----
- .SH "LINE-MODE INTERFACE"
- In the line-mode, the user is given a prompt to which commands are issued
- and arguments are passed to commands.
- ! When the user types at the prompt, each line is parsed and words (or
- arguments) are separated into an array of strings.
- This array, also called an
- .IR "argument vector" ,
- ***************
- *** 1036,1042 ****
- is used in the same manner as in
- .IR csh .
- There is a limited implementation of history modification;
- ! supported are the argument selectors which reference
- command line arguments and \*Q:p\*U (echo, but don't execute the command).
- .sp
- Examples:
- --- 1065,1071 ----
- is used in the same manner as in
- .IR csh .
- There is a limited implementation of history modification;
- ! supported are the argument selectors that reference
- command line arguments and \*Q:p\*U (echo, but don't execute the command).
- .sp
- Examples:
- ***************
- *** 1104,1110 ****
- in a message.
- A
- .B "message list"
- ! is defined as the set of messages which the user specifies in a command or
- the messages a command affects after it is through executing.
- When one command is piped to another, the effect is that the second command
- will consider only those messages affected by first command.
- --- 1133,1139 ----
- in a message.
- A
- .B "message list"
- ! is defined as the set of messages that the user specifies in a command or
- the messages a command affects after it is through executing.
- When one command is piped to another, the effect is that the second command
- will consider only those messages affected by first command.
- ***************
- *** 1129,1135 ****
- .ti +2
- headers :o | delete
- .sp
- ! Delete's all old (already read) mail.
- .PP
- Because action is taken on mail messages, not files,
- metacharacters such as `*' and `?' are not expanded to file names as
- --- 1158,1164 ----
- .ti +2
- headers :o | delete
- .sp
- ! Deletes all old (already read) mail.
- .PP
- Because action is taken on mail messages, not files,
- metacharacters such as `*' and `?' are not expanded to file names as
- ***************
- *** 1140,1146 ****
- commands take
- .I "message lists"
- as arguments (a list references one or messages) to take action upon.
- ! To reference message numbers,
- .I Mush
- understands the following special syntax:
- .sp
- --- 1169,1175 ----
- commands take
- .I "message lists"
- as arguments (a list references one or messages) to take action upon.
- ! When referencing message numbers,
- .I Mush
- understands the following special syntax:
- .sp
- ***************
- *** 1200,1206 ****
- .PP
- If
- .I unix
- ! it is not set, or if the command could not be found in the user's PATH
- environment, a message will be printed indicating that the command was
- not found.
- .PP
- --- 1229,1235 ----
- .PP
- If
- .I unix
- ! is not set, or if the command could not be found in the user's PATH
- environment, a message will be printed indicating that the command was
- not found.
- .PP
- ***************
- *** 1209,1216 ****
- commands, piping is disallowed either to or from such commands.
- If the user wishes to execute
- .I UNIX
- ! commands which are to be piped to one another (or use any sort of redirection),
- ! the command,
- .B sh
- is provided for such purposes.
- Since
- --- 1238,1245 ----
- commands, piping is disallowed either to or from such commands.
- If the user wishes to execute
- .I UNIX
- ! commands that are to be piped to one another (or use any sort of redirection),
- ! the command
- .B sh
- is provided for such purposes.
- Since
- ***************
- *** 1256,1262 ****
- If you want to enter curses mode even if
- you don't have mail, use the \-S option on the command line.
- .PP
- ! In curses mode, the user's terminal has it's \*Qecho\*U turned off so commands
- that are issued are not echoed on the screen.
- Certain commands cause the mode
- to return to normal for typing purposes (sending mail, for example).
- --- 1285,1291 ----
- If you want to enter curses mode even if
- you don't have mail, use the \-S option on the command line.
- .PP
- ! In curses mode, the user's terminal has its \*Qecho\*U turned off so commands
- that are issued are not echoed on the screen.
- Certain commands cause the mode
- to return to normal for typing purposes (sending mail, for example).
- ***************
- *** 1273,1279 ****
- Note that the top line is reserved for \*Qstatus\*U and the bottom line is
- for user interaction should it be required.
- .PP
- ! The user may now type commands via key sequences which are not echoed
- to the screen.
- Thus, function keys may be bound to \*Qcommands\*U by using the
- .B bind
- --- 1302,1308 ----
- Note that the top line is reserved for \*Qstatus\*U and the bottom line is
- for user interaction should it be required.
- .PP
- ! The user may now type commands via key sequences that are not echoed
- to the screen.
- Thus, function keys may be bound to \*Qcommands\*U by using the
- .B bind
- ***************
- *** 1334,1340 ****
- lines of a message.
- Next will print the next message.
- If the current message is deleted, the next undeleted message is found.
- ! You might notice this is different than the line mode, which will return
- an error message that the current message is marked as deleted.
- .TP
- +, j, J, RETURN
- --- 1363,1369 ----
- lines of a message.
- Next will print the next message.
- If the current message is deleted, the next undeleted message is found.
- ! You might notice this is different from the line mode, which will return
- an error message that the current message is marked as deleted.
- .TP
- +, j, J, RETURN
- ***************
- *** 1367,1373 ****
- When the \*Qgoto\*U command
- is selected, a prompt at the bottom of the window prompts for a
- .BR "message list" .
- ! Anything which describes a message list may be used.
- Since
- .I Mush
- commands return message lists, a legal
- --- 1396,1402 ----
- When the \*Qgoto\*U command
- is selected, a prompt at the bottom of the window prompts for a
- .BR "message list" .
- ! Anything that describes a message list may be used.
- Since
- .I Mush
- commands return message lists, a legal
- ***************
- *** 1504,1510 ****
- .PP
- To specify control characters in ascii format for the bind command, the
- sequence \*Q\\Cc\*U is used where `c' is the
- ! character which the control key will translate to and must be in upper case.
- The sequence \*Q\\CP\*U would map to control-P.
- If the user wishes to indicate the RETURN key, this is specified
- with the string \*Q\\n\*U and
- --- 1533,1539 ----
- .PP
- To specify control characters in ascii format for the bind command, the
- sequence \*Q\\Cc\*U is used where `c' is the
- ! character that the control key will translate to and must be in upper case.
- The sequence \*Q\\CP\*U would map to control-P.
- If the user wishes to indicate the RETURN key, this is specified
- with the string \*Q\\n\*U and
- ***************
- *** 1513,1521 ****
- outputs the three characters: control-A, H, line-feed.
- To map this function key to a command, the
- user would have to enter the sequence \*Q\\CAH\\n\*U as the key sequence,
- ! then follow up with a valid curses command.
- ! From then on, if the user presses that function key,
- ! then the command mapped to it will be executed.
- .PP
- The ESCAPE key is signified by the sequence, \*Q\\E\*U.
- On a Sun-3 workstation,
- --- 1542,1550 ----
- outputs the three characters: control-A, H, line-feed.
- To map this function key to a command, the
- user would have to enter the sequence \*Q\\CAH\\n\*U as the key sequence,
- ! then follow up with a valid curses command. From then on, if the user
- ! presses that function key,
- ! the command mapped to it will be executed.
- .PP
- The ESCAPE key is signified by the sequence, \*Q\\E\*U.
- On a Sun-3 workstation,
- ***************
- *** 1527,1534 ****
- unless bound in line mode, and can never begin with a digit.
- .PP
- Whenever a command is entered, other than `^L'
- ! .RB ( redraw ),
- ! that causes the screen to scroll or be refreshed in any way,
- .I Mush
- is left in the
- .I continue
- --- 1556,1563 ----
- unless bound in line mode, and can never begin with a digit.
- .PP
- Whenever a command is entered, other than `^L'
- ! .RB ( redraw )
- ! which causes the screen to scroll or be refreshed in any way,
- .I Mush
- is left in the
- .I continue
- ***************
- *** 1577,1583 ****
- .PP
- At the end of each list of menu entries for panel items is an item
- labelled \*Qhelp\*U.
- ! When this item is chosen, help with that command
- is displayed in the center of the console.
- .PP
- When composing letters, the interface is the same for the tool mode,
- --- 1606,1612 ----
- .PP
- At the end of each list of menu entries for panel items is an item
- labelled \*Qhelp\*U.
- ! When this item is chosen, help for that command
- is displayed in the center of the console.
- .PP
- When composing letters, the interface is the same for the tool mode,
- ***************
- *** 1609,1615 ****
- facility allows users to customize
- .I Mush
- to resemble other mailers.
- ! However, efforts have already been made to include commands which are backwards
- compatible with other line-mode mailers.
- Users of the graphics tool mode of
- .I Mush
- --- 1638,1644 ----
- facility allows users to customize
- .I Mush
- to resemble other mailers.
- ! However, efforts have already been made to include commands that are backwards
- compatible with other line-mode mailers.
- Users of the graphics tool mode of
- .I Mush
- ***************
- *** 1656,1672 ****
- control the program makes while executing.
- The intent of the debug level is for tracking down
- bugs with the program at specific locations.
- ! Periodically, the program may segmentation fault and core dump.
- When this happens, the user can reenter the program,
- set the debugging level and recreate the problem.
- .sp
- If the user suspects memory allocation problems, a debugging
- ! level of 2 or higher will prevent memory from being freed causing no
- ! overwriting of memory bounds.
- .sp
- If the user suspects sendmail errors,
- a debugging level of 3 or higher will prevent sendmail from starting
- ! and outgoing mail is sent to the standard output instead of actually
- being sent.
- .TP
- .BR delete / undelete
- --- 1685,1701 ----
- control the program makes while executing.
- The intent of the debug level is for tracking down
- bugs with the program at specific locations.
- ! Occasionally, the program may segmentation fault and core dump.
- When this happens, the user can reenter the program,
- set the debugging level and recreate the problem.
- .sp
- If the user suspects memory allocation problems, a debugging
- ! level of 2 or higher will prevent memory from being freed so that
- ! memory bounds won't get overwritten.
- .sp
- If the user suspects sendmail errors,
- a debugging level of 3 or higher will prevent sendmail from starting
- ! and outgoing mail is directed to the standard output instead of actually
- being sent.
- .TP
- .BR delete / undelete
- ***************
- *** 1688,1694 ****
- .TP
- .B exit
- .RB ( x )
- ! Effects an immediate return to the login shell without
- modifying the current folder or system spool directory.
- .TP
- .B expand
- --- 1717,1723 ----
- .TP
- .B exit
- .RB ( x )
- ! Returns immediately to the login shell without
- modifying the current folder or system spool directory.
- .TP
- .B expand
- ***************
- *** 1704,1710 ****
- command, but the whole process is automated by using the function key
- interface provided by the graphics mode.
- By default, the last key in each function key pad displays
- ! the values of all the function keys in that set of function keys.
- There are the left, right and top set of keys.
- .TP
- .BR folder " [\-N] [\-r] [!] [ %[user] | # | & | file ]"
- --- 1733,1739 ----
- command, but the whole process is automated by using the function key
- interface provided by the graphics mode.
- By default, the last key in each function key pad displays
- ! the values of all the function keys in that set.
- There are the left, right and top set of keys.
- .TP
- .BR folder " [\-N] [\-r] [!] [ %[user] | # | & | file ]"
- ***************
- *** 1736,1748 ****
- .TP
- .BR from " [ + | \- ]"
- .RB ( f )
- ! With no arguments, from will print the current message's header.
- If given a message list, from will print the headers of those
- ! messages which are in the list.
- .sp
- The special arguments `\-' and `+' can be given to move the
- ! current message pointer to the previous or next message
- ! respectively while also printing that message's header.
- If a message list was given in addition to `\-' or `+', then
- the current message pointer will be set to the first or last
- message, respectively, in the message list given.
- --- 1765,1779 ----
- .TP
- .BR from " [ + | \- ]"
- .RB ( f )
- ! With no arguments,
- ! .I from
- ! will print the current message's header.
- If given a message list, from will print the headers of those
- ! messages that are in the list.
- .sp
- The special arguments `\-' and `+' can be given to move the
- ! current message pointer to the previous or next message,
- ! respectively, while also printing that message's header.
- If a message list was given in addition to `\-' or `+', then
- the current message pointer will be set to the first or last
- message, respectively, in the message list given.
- ***************
- *** 1802,1808 ****
- The next two positions indicate the message status.
- The first
- may be one of, \*QN\*U (new and unread), \*QU\*U (old, but still
- ! unread), \*Q*\*U (deleted), \*QO\*U (old and read), \*QP\*U (preserved),
- or \*Q \*U (read).
- The second position may have an \*Qr\*U if the message
- has been replied to.
- --- 1833,1839 ----
- The next two positions indicate the message status.
- The first
- may be one of, \*QN\*U (new and unread), \*QU\*U (old, but still
- ! unread), \*Q*\*U (deleted), \*QS\*U (saved), \*QP\*U (preserved),
- or \*Q \*U (read).
- The second position may have an \*Qr\*U if the message
- has been replied to.
- ***************
- *** 1817,1823 ****
- .I 278
- and the subject of the message is
- .IR Test .
- ! The format of the message header exemplified here is described by
- the string variable
- .BR hdr_format .
- The example given above has a hdr_format of
- --- 1848,1854 ----
- .I 278
- and the subject of the message is
- .IR Test .
- ! The format of the message header shown here is described by
- the string variable
- .BR hdr_format .
- The example given above has a hdr_format of
- ***************
- *** 1835,1846 ****
- .nf
- .in +2
- .ta 1i
- ! n new messages
- ! d deleted messages
- ! u unread messages
- ! o old messages
- ! r replied to messages
- ! a all messages
- .fi
- .in -2
- .sp
- --- 1866,1879 ----
- .nf
- .in +2
- .ta 1i
- ! .if t .ta 1.5i
- ! n new messages
- ! d deleted messages
- ! u unread messages
- ! o old messages
- ! r replied to messages
- ! s saved messages
- ! a all messages
- .fi
- .in -2
- .sp
- ***************
- *** 1854,1860 ****
- The
- .B z
- command can also be used; `z' alone will print the next
- ! screenful (thus, the `+' is optional),
- and \*Qz \-\*U is equivalent to \*Qh \-\*U.
- .sp
- Headers affects all the messages it displays, so piping may be done
- --- 1887,1893 ----
- The
- .B z
- command can also be used; `z' alone will print the next
- ! screenful (thus, the `+' is optional)
- and \*Qz \-\*U is equivalent to \*Qh \-\*U.
- .sp
- Headers affects all the messages it displays, so piping may be done
- ***************
- *** 1961,1967 ****
- Mailing to programs is indicated by the pipe `|' character preceding the
- program name.
- Since the user's path is searched, full pathnames are not required for
- ! programs which lie in the user's PATH environment variable.
- Example:
- .sp
- .ti +2
- --- 1994,2000 ----
- Mailing to programs is indicated by the pipe `|' character preceding the
- program name.
- Since the user's path is searched, full pathnames are not required for
- ! programs that lie in the user's PATH environment variable.
- Example:
- .sp
- .ti +2
- ***************
- *** 1993,2003 ****
- The included message is indented by
- the string \*Q> \*U or by the string described by the variables
- .BR indent_str ,
- ! .BR pre_indent-str ,
- and
- .BR post_indent_str .
- See the VARIABLES section for more information on these string values.
- ! If a message list is given after the \-i option, then the message
- described by that list are included.
- The \-h option is identical to the \-i option except that the headers of
- the message are also included.
- --- 2026,2036 ----
- The included message is indented by
- the string \*Q> \*U or by the string described by the variables
- .BR indent_str ,
- ! .BR pre_indent_str ,
- and
- .BR post_indent_str .
- See the VARIABLES section for more information on these string values.
- ! If a message list is given after the \-i option, then the messages
- described by that list are included.
- The \-h option is identical to the \-i option except that the headers of
- the message are also included.
- ***************
- *** 2025,2037 ****
- The forward option does not allow you to edit the message(s) being forwarded
- unless the -e flag is also specified.
- The subject of the message (if available) is the same as the \fIcurrent\f
- ! message; it not necessarily the message of the message being forwarded.
- The subject of forwarded mail cannot be changed.
- However, using the \-e flag
- will allow the user to change the subject once in editing mode using the
- escape sequence, \*Q~s\*U.
- .sp
- ! Forwarded mail that has not been edited by the user will contains special
- headers such as
- .sp
- .ti +2
- --- 2058,2070 ----
- The forward option does not allow you to edit the message(s) being forwarded
- unless the -e flag is also specified.
- The subject of the message (if available) is the same as the \fIcurrent\f
- ! message; it is not necessarily the subject of the message being forwarded.
- The subject of forwarded mail cannot be changed.
- However, using the \-e flag
- will allow the user to change the subject once in editing mode using the
- escape sequence, \*Q~s\*U.
- .sp
- ! Forwarded mail that has not been edited by the user will contain special
- headers such as
- .sp
- .ti +2
- ***************
- *** 2039,2045 ****
- .ti +2
- Resent-From:
- .sp
- ! and perhaps other depending on your mail transport agent.
- Sendmail, for example, will add a number of other \*QResent-*\*U headers.
- .TP
- .BR my_hdr / un_hdr
- --- 2072,2078 ----
- .ti +2
- Resent-From:
- .sp
- ! and perhaps others, depending on your mail transport agent.
- Sendmail, for example, will add a number of other \*QResent-*\*U headers.
- .TP
- .BR my_hdr / un_hdr
- ***************
- *** 2090,2103 ****
- Options:
- .ta 1.5i
- .in +2
- - \-d [+-]date messages sent on or [+ after] [`\-' before] date.
- \-ago <format> search for messages relative to today's date.
- \-f search for pattern in \*QFrom\*U field only.
- \-i ignore case of letters when searching.
- \-r msg_list search only the listed messages.
- \-s search for pattern in \*QSubject\*U field only.
- \-t search for pattern in \*QTo\*U field only.
- - \-h header search for pattern in specified header only.
- \-x select messages not containing the pattern.
- .in -2
- .fi
- --- 2123,2136 ----
- Options:
- .ta 1.5i
- .in +2
- \-ago <format> search for messages relative to today's date.
- + \-d [+-]date messages sent on or [+ after] [`\-' before] date.
- \-f search for pattern in \*QFrom\*U field only.
- + \-h header search for pattern in specified header only.
- \-i ignore case of letters when searching.
- \-r msg_list search only the listed messages.
- \-s search for pattern in \*QSubject\*U field only.
- \-t search for pattern in \*QTo\*U field only.
- \-x select messages not containing the pattern.
- .in -2
- .fi
- ***************
- *** 2149,2155 ****
- required, use the \-d option and specify specific dates.
- .sp
- Also note that the -ago option allows the \*Qbefore\*U (-) and \*Qafter\*U (+)
- ! arguments. Thus, you may pick for all messages older than 1 week with:
- .sp
- .ti +2
- pick -ago -1 week
- --- 2182,2188 ----
- required, use the \-d option and specify specific dates.
- .sp
- Also note that the -ago option allows the \*Qbefore\*U (-) and \*Qafter\*U (+)
- ! arguments. Thus, you may pick all messages older than 1 week with:
- .sp
- .ti +2
- pick -ago -1 week
- ***************
- *** 2160,2167 ****
- .ti +2
- pick \-d 2/5/86 | pick \-d \-2/5/87 | pick \-s "mail stuff" | lpr
- .sp
- ! will find all the messages between the dates February 5, 1986 and
- ! February 5, 1987 that contain the subject "mail stuff" and send them
- to the printer.
- .sp
- .ti +2
- --- 2193,2200 ----
- .ti +2
- pick \-d 2/5/86 | pick \-d \-2/5/87 | pick \-s "mail stuff" | lpr
- .sp
- ! will find all the messages between the dates February 5, 1986, and
- ! February 5, 1987, that contain the subject "mail stuff" and send them
- to the printer.
- .sp
- .ti +2
- ***************
- *** 2201,2210 ****
- .BR type ,
- .BR t )
- Takes a message list and displays each message on the user's terminal.
- ! If the first letter of the command is a capital letter (`P' or `T'),
- then \*Qignored\*U headers are not ignored
- .I provided
- ! that the variable,
- .B alwaysignore
- is not set.
- If the variable is set, the ignored headers will be
- --- 2234,2243 ----
- .BR type ,
- .BR t )
- Takes a message list and displays each message on the user's terminal.
- ! If the first letter of the command is a capital letter (`P' or `T')
- then \*Qignored\*U headers are not ignored
- .I provided
- ! that the variable
- .B alwaysignore
- is not set.
- If the variable is set, the ignored headers will be
- ***************
- *** 2227,2233 ****
- .IR Mush .
- If the variable \*Qhold\*U is set, all messages not marked for deletion are
- saved in the spool directory.
- ! Otherwise, messages which have been read are saved to
- .I ~/mbox
- or to the file described by the string variable
- .BR mbox .
- --- 2260,2266 ----
- .IR Mush .
- If the variable \*Qhold\*U is set, all messages not marked for deletion are
- saved in the spool directory.
- ! Otherwise, messages that have been read are saved to
- .I ~/mbox
- or to the file described by the string variable
- .BR mbox .
- ***************
- *** 2252,2258 ****
-