Annotation of researchv10no/lbin/mailx/init.c, revision 1.1.1.1

1.1       root        1: #ident "@(#)init.c     1.4 'attmail mail(1) command'"
                      2: #ident "@(#)mailx:init.c       1.1"
                      3: /*     Copyright (c) 1984 AT&T */
                      4: /*       All Rights Reserved   */
                      5: 
                      6: /*     THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF AT&T     */
                      7: /*     The copyright notice above does not evidence any        */
                      8: /*     actual or intended publication of such source code.     */
                      9: 
                     10: #ident "@(#)init.c     2.24 'attmail mail(1) command'"
                     11: 
                     12: /*
                     13:  * mailx -- a modified version of a University of California at Berkeley
                     14:  *     mail program
                     15:  *
                     16:  * A bunch of global variable declarations lie herein.
                     17:  *
                     18:  * All global externs are declared in def.h. All variables are initialized
                     19:  * here!
                     20:  *
                     21:  * !!!!!IF YOU CHANGE (OR ADD) IT HERE, DO IT THERE ALSO !!!!!!!!
                     22:  *
                     23:  */
                     24: 
                     25: #include       "rcv.h"
                     26: #include       <grp.h>
                     27: #include       <pwd.h>
                     28: #include       <utmp.h>
                     29: 
                     30: struct hdr header[] = {
                     31:                "",                             FALSE,
                     32:                "Auto-Forward-Count:",          FALSE,
                     33:                "Auto-Forwarded-From:",         FALSE,
                     34:                "Content-Length:",              TRUE,
                     35:                "Content-Type:",                FALSE,
                     36:                "Date:",                        TRUE,
                     37:                "Default-Options:",             FALSE,
                     38:                "End-of-Header:",               FALSE,
                     39:                "From ",                        TRUE,
                     40:                ">From ",                       TRUE,
                     41:                "From:",                        TRUE,
                     42:                "MTS-Message-ID:",              FALSE,
                     43:                "Message-Type:",                FALSE,
                     44:                "Message-Version:",             FALSE,
                     45:                "Message-Service:",             TRUE,
                     46:                "Received:",                    FALSE,
                     47:                "Report-Version:",              FALSE,
                     48:                "Status:",                      FALSE,
                     49:                "Subject:",                     TRUE,
                     50:                "To:",                          TRUE,
                     51:                ">To:",                         FALSE,
                     52:                "Transport-Options:",           FALSE,
                     53:                "UA-Content-ID:",               FALSE,
                     54:                /*Dummy place holders for H_DAFWDFROM,*/
                     55:                /*H_DTCOPY and H_RECEIVED. Should */
                     56:                /* match above first...*/
                     57:                "Auto-Forwarded-From:",         FALSE,
                     58:                ">To:",                         FALSE,
                     59:                "Received:",                    FALSE,
                     60: };
                     61: 
                     62: char   binmsg[] = "*** Message content is not printable: delete, write or save it to a file ***";
                     63: 
                     64: NODE   *fplist = NOFP;
                     65: NODE   *curptr = NOFP;
                     66: gid_t  myrgid;
                     67: gid_t  myegid;
                     68: uid_t  myruid;
                     69: uid_t  myeuid;
                     70: int    msgCount;                       /* Count of messages read in */
                     71: pid_t  mypid;                          /* Current process id */
                     72: int    rcvmode;                        /* True if receiving mail */
                     73: int    sawcom;                         /* Set after first command */
                     74: int    Fflag = 0;                      /* -F option (followup) */
                     75: int    hflag;                          /* Sequence number for network -h */
                     76: int    Hflag = 0;                      /* print headers and exit */
                     77: char   *rflag;                         /* -r address for network */
                     78: char   *Tflag;                         /* -T temp file for netnews */
                     79: int    UnUUCP = 0;                     /* -U flag */
                     80: int    exitflg = 0;                    /* -e for mail test */
                     81: int    newsflg = 0;                    /* -I option for netnews */
                     82: char   nosrc;                          /* Don't source /etc/mail/mailx.rc */
                     83: char   noheader;                       /* Suprress initial header listing */
                     84: int    selfsent;                       /* User sent self something */
                     85: int    senderr;                        /* An error while checking */
                     86: int    edit;                           /* Indicates editing a file */
                     87: int    readonly;                       /* Will be unable to rewrite file */
                     88: int    noreset;                        /* String resets suspended */
                     89: int    sourcing;                       /* Currently reading variant file */
                     90: int    loading;                        /* Loading user definitions */
                     91: int    cond;                           /* Current state of conditional exc. */
                     92: FILE   *itf;                           /* Input temp file buffer */
                     93: FILE   *otf;                           /* Output temp file buffer */
                     94: FILE   *pipef;                         /* Pipe file we have opened */
                     95: int    image;                          /* File descriptor for image of msg */
                     96: FILE   *input;                         /* Current command input file */
                     97: char   *editfile;                      /* Name of file being edited */
                     98: char   *sflag;                         /* Subject given from non tty */
                     99: int    outtty;                         /* True if standard output a tty */
                    100: int    intty;                          /* True if standard input a tty */
                    101: int    baud;                           /* Output baud rate */
                    102: char   homedir[PATHSIZE];              /* Name of home directory */
                    103: char   mailname[PATHSIZE];             /* Name of system mailbox */
                    104: char   origname[PATHSIZE];             /* Name of mailfile before expansion */
                    105: uid_t  uid;                            /* The invoker's user id */
                    106: char   myname[PATHSIZE];                       /* My login id */
                    107: off_t  mailsize;                       /* Size of system mailbox */
                    108: int    lexnumber;                      /* Number of TNUMBER from scan() */
                    109: char   lexstring[STRINGLEN];           /* String from TSTRING, scan() */
                    110: int    regretp;                        /* Pointer to TOS of regret tokens */
                    111: int    regretstack[REGDEP];            /* Stack of regretted tokens */
                    112: char   *stringstack[REGDEP];           /* Stack of regretted strings */
                    113: int    numberstack[REGDEP];            /* Stack of regretted numbers */
                    114: struct message *dot;                   /* Pointer to current message */
                    115: struct message *message;               /* The actual message structure */
                    116: struct var     *variables[HSHSIZE];    /* Pointer to active var list */
                    117: struct grouphead       *groups[HSHSIZE];/* Pointer to active groups */
                    118: struct ignore          *ignore[HSHSIZE];/* Pointer to ignored fields */
                    119: char   **altnames;                     /* List of alternate names for user */
                    120: int    debug;                          /* Debug flag set */
                    121: int    rmail;                          /* Being called as rmail */
                    122: char   *prompt = NOSTR;                /* prompt string */
                    123: int    space;                          /* Current maximum number of messages */
                    124: int    maxfiles;                       /* Maximum number of open files */
                    125: 
                    126: jmp_buf        srbuf;
                    127: int    ismail = TRUE;          /* default to program=mail */
                    128: 
                    129: #ifdef USR_SPOOL_MAIL
                    130: char   maildir[] = "/usr/spool/mail/"; /* directory for mail files */
                    131: #else
                    132: # ifdef preSVr4
                    133: char   maildir[] = "/usr/mail/";       /* directory for mail files */
                    134: # else
                    135: char   maildir[] = "/var/mail/";       /* directory for mail files */
                    136: # endif
                    137: #endif
                    138: 
                    139: char   *progname;      /* program name (argv[0]) */
                    140: int    sending;        /* TRUE==>sending mail; FALSE==>printing mail */
                    141: int    askme;
                    142: char   tempMail[14];
                    143: char   tempQuit[14];
                    144: char   tempEdit[14];
                    145: char   tempSet[14];
                    146: char   tempResid[PATHSIZE];            /* temp file in :saved || adb: put it back in /tmp */
                    147: char   tempMesg[14];
                    148: char   tempZedit[14];
                    149: static struct utimbuf  utimeb;
                    150: struct utimbuf *utimep = &utimeb;
                    151: 
                    152: /*
                    153:  * The pointers for the string allocation routines,
                    154:  * there are NSPACE independent areas.
                    155:  * The first holds STRINGSIZE bytes, the next
                    156:  * twice as much, and so on.
                    157:  */
                    158: 
                    159: struct strings stringdope[NSPACE];

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.