mail.h revision ace1a5f11236a072fca1b5e0ea1416a083a9f2aa
/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License, Version 1.0 only
* (the "License"). You may not use this file except in compliance
* with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
* Copyright 2005 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */
/* All Rights Reserved */
#ifndef _MAIL_H
#define _MAIL_H
#pragma ident "%Z%%M% %I% %E% SMI"
/*
* All global externs defined here. All variables are initialized
* in init.c
*
* !!!!!IF YOU CHANGE (OR ADD) IT HERE, DO IT THERE ALSO !!!!!!!!
*
*/
#include <errno.h>
#include <fcntl.h>
#include <stdio.h>
#include <ctype.h>
#include <errno.h>
#include <pwd.h>
#include <signal.h>
#include <string.h>
#include <grp.h>
/* The following is a kludge to allow for inconsistent header files in SVR4 */
#define _CLOCK_T
#include <time.h>
#include <setjmp.h>
#include <limits.h>
#ifdef SVR3
struct utimbuf {
};
#else
# include <utime.h>
#endif
#include "libmail.h"
/* The following typedefs must be used in SVR4 */
#ifdef SVR3
# ifndef sun
typedef int gid_t;
typedef int uid_t;
# endif
typedef int pid_t;
#endif
#define CHILD 0
#define SAME 0
#define BELL 07
#define CERROR -1
#define CSUCCESS 0
#define TRUE 1
#define FALSE 0
#define HEAD 1
#define TAIL 0
#define REAL 1
#define DEFAULT 0
/* findSurg() return values */
#define NOMATCH -1
#define DELIVER 0
#define POSTDELIVER 1
#define DENY 2
#define TRANSLATE 3
/* sendsurg() return values */
#define FAILURE 0
#define CONTINUE 1
#define SUCCESS 2
/* TRANSLATE 3 */
/* MTA Transport Options */
#define DELIVERY 001
#define NODELIVERY 002
#define REPORT 010
#define RETURN 020
#define IGNORE 040
/*
copylet flags
*/
#define ORDINARY 2
#define FORWARD 4
#ifdef FILENAME_MAX
#else
#endif
#ifndef MFMODE
#endif
#define A_OK 0 /* return value for access */
#define A_EXECUTE 1
#define A_EXIST 0 /* access check for existence */
struct hdr {
char *tag;
int default_display;
};
struct hdrs {
};
struct hdrlines {
};
typedef struct recip {
char *name;
} recip;
typedef struct reciplist {
} reciplist;
struct let {
long adr; /* offset in mailfile of letter n */
char change; /* disposition status of letter n */
char text; /* 1 ==> text content, 0 ==> binary content.
* This is determined INDEPENDENTLY of what
* the Content-type, if present, says...
*/
};
typedef enum t_surrtype
{
} t_surrtype;
typedef struct t_surrfile
{
/* originator's regular expression */
char *orig_regex;
int orig_reglen;
int orig_nbra;
/* recipient's regular expression */
char *recip_regex;
int recip_reglen;
int recip_nbra;
/* the type of the command string */
int batchsize; /* transport translate postprocess */
char *statlist; /* transport */
int fullyresolved; /* translate */
} t_surrfile;
#include <stdlib.h>
#include <unistd.h>
extern int areforwarding(char *mailfile);
extern void cat(char*, char*, char*);
extern void clr_hinfo(void);
extern void cmdexpand(int letnum, string *instr, string *outstr, char **lbraslist, char **lbraelist);
extern void copyback(void);
extern void delete(int);
extern void doFopt(void);
extern void done(int) __NORETURN;
extern void sig_done(int);
extern int findSurg(int letnum, string *execbuf, int flag, int *psurr_num, int *paccept, string *lorig, string *lrecipname);
extern int getcomment(char *s, char *q);
extern int getnumbr(char *s);
extern int init(void);
extern void initsurrfile(void);
extern void mkdead(void);
extern void mktmp(void);
extern int pckaffspot(void);
extern int pckrcvspot(void);
extern void printmail(void);
extern void savdead(void);
extern void (*setsig(int i, void(*f)()))();
extern char **setup_exec(char*);
extern void stamp(void);
extern int systm(char *s);
extern void tmperr(void);
extern void unlock(void);
extern int validmsg(int);
extern int ac; /* argument list count */
extern char **av; /* argument list */
extern int affbytecnt; /* Total bytes of Auto-Fwd. info in msg. */
extern int affcnt; /* Number of Auto-Fwd.-From: lines in msg. */
extern int Daffbytecnt; /* Hold affbytecnt when sending Deliv. Notif. */
extern int Daffcnt; /* Hold affcnt when sending Deliv. Notif. */
extern char binmsg[];
extern int changed; /* > 0 says mailfile has changed */
extern char datestring[60];
extern char dead[]; /* name of dead.letter */
extern int debug; /* Controls debugging level. 0 ==> no debugging */
extern int delflg;
extern int dflag; /* 1 says returning unsendable mail */
extern char *errlist[];
extern int error; /* Local value for error */
extern char *failsafe; /* $FAILSAFE */
extern int file_size;
extern int flge; /* 1 ==> 'e' option specified */
extern int flgE; /* 1 ==> 'E' option specified */
extern int flgF; /* 1 ==> Installing/Removing Forwarding */
extern int flgf; /* 1 ==> 'f' option specified */
extern int flgh; /* 1 ==> 'h' option specified */
extern int flgm;
extern int flgp; /* 1 ==> 'p' option specified */
extern int flgP; /* 1 ==> 'P' option specified */
extern int flgr; /* 1 ==> 'r' option -- print in fifo order */
extern int flgt; /* 1 ==> 't' option -- add To: line to letter */
extern int flgT; /* 1 ==> 'T' option specified */
extern int flgw; /* 1 ==> 'w' option specified */
extern int fnuhdrtype; /* type of first non-UNIX header line */
extern char forwmsg[]; /* " forwarded by %s" */
extern char frwlmsg[]; /* "Forwarding loop detected in mailfile" */
extern char frwrd[]; /* forwarding sentinel */
extern char fwdFrom[1024];
extern int goerr; /* counts parsing errors */
extern char *help[];
extern char *hmdead; /* pointer to $HOME/dead.letter */
extern char *home; /* pointer to $HOME */
extern int interactive; /* 1 says user is interactive */
extern int ismail; /* default to program=mail */
extern int deliverflag; /* -d flag, bypass sendmail and go to mbox */
extern int fromflag; /* -f from_user while sending */
extern int keepdbgfile; /* does debug file get deleted at end? */
extern char *lettmp; /* pointer to tmp filename */
extern char lfil[MAXFILENAME];
extern char *mailfile; /* pointer to mailfile */
extern char maildir[]; /* directory for mail files */
extern char mailsave[]; /* dir for save files */
extern char *mailsurr; /* surrogate file name */
extern int maxerr; /* largest value of error */
extern char mbox[]; /* name for mbox */
extern char *msgtype;
extern int nlet; /* current number of letters in mailfile */
extern int onlet; /* number of letters in mailfile at startup*/
extern int optcnt; /* Number of options specified */
extern int orig_aff; /* orig. msg. contained H_AFWDFROM lines */
extern int orig_dbglvl; /* argument to -x invocation option */
extern int orig_rcv; /* orig. msg. contained H_RECEIVED lines */
extern int orig_tcopy; /* orig. msg. contained H_TCOPY lines */
extern int pflg; /* binary message display override flag */
extern int Pflg; /* Selective display flag; 1 ==> display all */
extern char *program; /* program name */
extern int rcvbytecnt; /* Total bytes of Received: info in msg. */
extern int Drcvbytecnt; /* Hold rcvbytecnt when sending Del. Notif. */
extern int replying; /* 1 says we are replying to a letter */
extern char rmtmsg[]; /* "remote from %s" */
extern char rtrnmsg[]; /* "UNDELIVERABLE MAIL being returned by %s" */
extern int sav_errno;
extern void (*saveint)(int);
extern char *seldisp[];
extern int sending; /* TRUE==>sending mail; FALSE==>printing mail */
extern char m_sendto[1024];
extern int surg_rc; /* exit code of surrogate command */
extern int surr_len; /* # entries in surrogate file */
extern char *SURRcmdstr; /* save in case of FAILURE */
extern char *thissys; /* Holds name of the system we are on */
extern char uval[1024];
#ifdef NOTDEF
#ifdef sun
#define _NFILE getdtablesize()
#endif
#endif /* NOTDEF */
#endif /* _MAIL_H */