85c81c58a5
1) Use editline [optional]: Most of this code was borrowed from src/usr.bin/ftp. It does the appropriate editing, history, and completion for all mail commands (from cmdtab[]) and also does editing on header strings ('~h' inside the mail editor). 2) '-B' flag: This will suppress the "To:" line passed to sendmail. In most configurations it will lead to sendmail adding "To: undisclosed recipients;". Currently, AFAIK mail requires at least one exposed recipient address. 3) Comments in rcfile: Currently, comments in .mailrc are only supported if the first (non-white) character on a line is '#' followed by white space, i.e., '#' is a 'nop' command. This (trivial) patch allows the more normal/expected use of '#' as a comment character. It does not respect quoting, so that might be an objection which I should fix. 4) Sendmail option editing: This adds the sendmail option string to the strings editable by the '~h' command within the mail editor. Currently, you can only set this string from the command-line, which is particularly annoying when replying to mail. 5) Reply from: When replying to a message, grab the "To:" address from the message and, if there is only one such address and it does not match a list of allowed addresses (set in the "ReplyFrom" variable), pass it to sendmail as the "From:" address for the reply (with the '-f' option). I often make aliases for myself so that my primary address is not given out; if the alias gets out, I know who to blame. Unfortunately, a reply to such a message would normally use the primary address without this patch. A warning is displayed when this is going to happen so that it can be modified with '~h'. 6) CC and BCC lists: Allow '-c' and '-b' to accept white-space or ',' delimited lists. Currently, a white-space delimited list of addresses work, but a list of aliases will not get expanded. For example, currently: mail -c "foo bar" christos will fail to send mail to 'foo' and 'bar' if these are mail aliases (in ~/.mailrc); sendmail aliases (in /etc/aliases) do work. 7) pipe command: This pipes the current message into a shell command. I use this for quick decoding of uuencoded mail, but I can imagine it might be useful for decrypting encrypted mail, too. 8) show command: This command takes a list of variables and shows their values. It is probably stupid as the 'set' command without any argument displays all variable values. Of course, if there are a lot of variables you have to sift through the list for the one(s) you want.
105 lines
4.7 KiB
C
105 lines
4.7 KiB
C
/* $NetBSD: glob.h,v 1.7 2006/09/18 19:46:21 christos Exp $ */
|
|
|
|
/*
|
|
* Copyright (c) 1980, 1993
|
|
* The Regents of the University of California. All rights reserved.
|
|
*
|
|
* Redistribution and use in source and binary forms, with or without
|
|
* modification, are permitted provided that the following conditions
|
|
* are met:
|
|
* 1. Redistributions of source code must retain the above copyright
|
|
* notice, this list of conditions and the following disclaimer.
|
|
* 2. Redistributions in binary form must reproduce the above copyright
|
|
* notice, this list of conditions and the following disclaimer in the
|
|
* documentation and/or other materials provided with the distribution.
|
|
* 3. Neither the name of the University nor the names of its contributors
|
|
* may be used to endorse or promote products derived from this software
|
|
* without specific prior written permission.
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
|
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
|
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
* SUCH DAMAGE.
|
|
*
|
|
* from: @(#)glob.h 8.1 (Berkeley) 6/6/93
|
|
* $NetBSD: glob.h,v 1.7 2006/09/18 19:46:21 christos Exp $
|
|
*/
|
|
|
|
/*
|
|
* A bunch of global variable declarations lie herein.
|
|
* def.h must be included first.
|
|
*/
|
|
|
|
#ifndef EXTERN
|
|
#define EXTERN extern
|
|
#endif
|
|
|
|
EXTERN int msgCount; /* Count of messages read in */
|
|
EXTERN int rcvmode; /* True if receiving mail */
|
|
EXTERN int sawcom; /* Set after first command */
|
|
EXTERN int Bflag; /* -B do not output a To: line */
|
|
EXTERN char *Tflag; /* -T temp file for netnews */
|
|
EXTERN int senderr; /* An error while checking */
|
|
EXTERN int edit; /* Indicates editing a file */
|
|
EXTERN int readonly; /* Will be unable to rewrite file */
|
|
EXTERN int noreset; /* String resets suspended */
|
|
EXTERN int sourcing; /* Currently reading variant file */
|
|
EXTERN int loading; /* Loading user definitions */
|
|
EXTERN int cond; /* Current state of conditional exc. */
|
|
EXTERN FILE *itf; /* Input temp file buffer */
|
|
EXTERN FILE *otf; /* Output temp file buffer */
|
|
EXTERN int image; /* File descriptor for image of msg */
|
|
EXTERN FILE *input; /* Current command input file */
|
|
EXTERN char mailname[PATHSIZE]; /* Name of current file */
|
|
EXTERN char prevfile[PATHSIZE]; /* Name of previous file */
|
|
EXTERN char *homedir; /* Path name of home directory */
|
|
EXTERN char *myname; /* My login name */
|
|
EXTERN off_t mailsize; /* Size of system mailbox */
|
|
EXTERN int lexnumber; /* Number of TNUMBER from scan() */
|
|
EXTERN char lexstring[STRINGLEN]; /* String from TSTRING, scan() */
|
|
EXTERN int regretp; /* Pointer to TOS of regret tokens */
|
|
EXTERN int regretstack[REGDEP]; /* Stack of regretted tokens */
|
|
EXTERN char *string_stack[REGDEP]; /* Stack of regretted strings */
|
|
EXTERN int numberstack[REGDEP]; /* Stack of regretted numbers */
|
|
EXTERN struct message *dot; /* Pointer to current message */
|
|
EXTERN struct message *message; /* The actual message structure */
|
|
EXTERN struct var *variables[HSHSIZE]; /* Pointer to active var list */
|
|
EXTERN struct grouphead *groups[HSHSIZE];/* Pointer to active groups */
|
|
EXTERN struct ignoretab ignore[2]; /* ignored and retained fields
|
|
0 is ignore, 1 is retain */
|
|
EXTERN struct ignoretab saveignore[2]; /* ignored and retained fields
|
|
on save to folder */
|
|
EXTERN struct ignoretab ignoreall[2]; /* special, ignore all headers */
|
|
EXTERN char **altnames; /* List of alternate names for user */
|
|
EXTERN int debug; /* Debug flag set */
|
|
EXTERN int screenwidth; /* Screen width, or best guess */
|
|
EXTERN int screenheight; /* Screen height, or best guess,
|
|
for "header" command */
|
|
EXTERN int realscreenheight; /* the real screen height */
|
|
|
|
#include <setjmp.h>
|
|
|
|
EXTERN jmp_buf srbuf;
|
|
|
|
|
|
/*
|
|
* The pointers for the string allocation routines,
|
|
* there are NSPACE independent areas.
|
|
* The first holds STRINGSIZE bytes, the next
|
|
* twice as much, and so on.
|
|
*/
|
|
|
|
#define NSPACE 25 /* Total number of string spaces */
|
|
EXTERN struct strings {
|
|
char *s_topFree; /* Beginning of this area */
|
|
char *s_nextFree; /* Next alloctable place here */
|
|
unsigned s_nleft; /* Number of bytes left here */
|
|
} stringdope[NSPACE];
|