4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License, Version 1.0 only
6 * (the "License"). You may not use this file except in compliance
9 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10 * or http://www.opensolaris.org/os/licensing.
11 * See the License for the specific language governing permissions
12 * and limitations under the License.
14 * When distributing Covered Code, include this CDDL HEADER in each
15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16 * If applicable, add the following below this CDDL HEADER, with the
17 * fields enclosed by brackets "[]" replaced with your own identifying
18 * information: Portions Copyright [yyyy] [name of copyright owner]
22 /* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */
23 /* All Rights Reserved */
27 * Copyright (c) 1998 by Sun Microsystems, Inc.
28 * All rights reserved.
32 * University Copyright- Copyright (c) 1982, 1986, 1988
33 * The Regents of the University of California
36 * University Acknowledgment- Portions of this document are derived from
37 * software developed by the University of California, Berkeley, and its
41 #pragma ident "%Z%%M% %I% %E% SMI"
44 * mailx -- a modified version of a University of California at Berkeley
47 * A bunch of global variable declarations lie herein.
49 * All global externs are declared in def.h. All variables are initialized
52 * !!!!!IF YOU CHANGE (OR ADD) IT HERE, DO IT THERE ALSO !!!!!!!!
59 #include <sys/utsname.h>
61 int Fflag
= 0; /* -F option (followup) */
62 int Hflag
= 0; /* print headers and exit */
63 char *Tflag
; /* -T temp file for netnews */
64 int UnUUCP
= 0; /* -U flag */
65 char **altnames
; /* List of alternate names for user */
67 int baud
; /* Output baud rate */
68 char *bflag
; /* Bcc given from non tty */
69 char *binmsg
= "*** Message content is not printable: pipe to command or save to a file ***";
70 char *cflag
; /* Cc given from non tty */
71 int cond
; /* Current state of conditional exc. */
73 int debug
; /* Debug flag set */
74 struct message
*dot
; /* Pointer to current message */
75 int edit
; /* Indicates editing a file */
76 char *editfile
; /* Name of file being edited */
77 int exitflg
= 0; /* -e for mail test */
79 struct grouphead
*groups
[HSHSIZE
];/* Pointer to active groups */
80 int hflag
; /* Sequence number for network -h */
81 char homedir
[PATHSIZE
]; /* Name of home directory */
82 struct ignore
*ignore
[HSHSIZE
];/* Pointer to ignored fields */
83 int image
; /* File descriptor for image of msg */
84 FILE *input
; /* Current command input file */
85 int intty
; /* True if standard input a tty */
86 int issysmbox
; /* mailname is a system mailbox */
87 FILE *itf
; /* Input temp file buffer */
88 int lexnumber
; /* Number of TNUMBER from scan() */
89 char lexstring
[STRINGLEN
]; /* String from TSTRING, scan() */
90 int loading
; /* Loading user definitions */
91 char *lockname
; /* named used for locking in /var/mail */
93 char *maildir
= "/usr/spool/mail/"; /* directory for mail files */
96 char *maildir
= "/usr/mail/"; /* directory for mail files */
98 char *maildir
= "/var/mail/"; /* directory for mail files */
101 char mailname
[PATHSIZE
]; /* Name of /var/mail system mailbox */
102 off_t mailsize
; /* Size of system mailbox */
103 int maxfiles
; /* Maximum number of open files */
104 struct message
*message
; /* The actual message structure */
105 int msgCount
; /* Count of messages read in */
108 char myname
[PATHSIZE
]; /* My login id */
109 pid_t mypid
; /* Current process id */
112 int newsflg
= 0; /* -I option for netnews */
113 char noheader
; /* Suprress initial header listing */
114 int noreset
; /* String resets suspended */
115 char nosrc
; /* Don't source /etc/mail/mailx.rc */
116 int nretained
; /* Number of retained fields */
117 int numberstack
[REGDEP
]; /* Stack of regretted numbers */
118 char origname
[PATHSIZE
]; /* Name of mailfile before expansion */
119 FILE *otf
; /* Output temp file buffer */
120 int outtty
; /* True if standard output a tty */
121 FILE *pipef
; /* Pipe file we have opened */
122 char *progname
; /* program name (argv[0]) */
123 char *prompt
= NOSTR
; /* prompt string */
124 int rcvmode
; /* True if receiving mail */
125 int readonly
; /* Will be unable to rewrite file */
126 int regretp
; /* Pointer to TOS of regret tokens */
127 int regretstack
[REGDEP
]; /* Stack of regretted tokens */
128 struct ignore
*retain
[HSHSIZE
];/* Pointer to retained fields */
129 char *rflag
; /* -r address for network */
130 int rmail
; /* Being called as rmail */
131 int sawcom
; /* Set after first command */
132 int selfsent
; /* User sent self something */
133 int senderr
; /* An error while checking */
134 int rpterr
; /* An error msg was sent to stderr */
135 char *sflag
; /* Subject given from non tty */
136 int sourcing
; /* Currently reading variant file */
137 int space
; /* Current maximum number of messages */
139 int tflag
; /* Read headers from text */
141 * The pointers for the string allocation routines,
142 * there are NSPACE independent areas.
143 * The first holds STRINGSIZE bytes, the next
144 * twice as much, and so on.
146 struct strings stringdope
[NSPACE
];
147 char *stringstack
[REGDEP
]; /* Stack of regretted strings */
148 char tempEdit
[TMPSIZ
];
149 char tempMail
[TMPSIZ
];
150 char tempMesg
[TMPSIZ
];
151 char tempQuit
[TMPSIZ
];
152 char tempResid
[PATHSIZE
]; /* temp file in :saved */
153 char tempZedit
[TMPSIZ
];
154 uid_t uid
; /* The invoker's user id */
155 static struct utimbuf utimeb
;
156 struct utimbuf
*utimep
= &utimeb
;
157 struct var
*variables
[HSHSIZE
]; /* Pointer to active var list */
158 int receipt_flg
= 0; /* Flag for return receipt */