summaryrefslogtreecommitdiff
path: root/usr/src/cmd/mailx/hdr
diff options
context:
space:
mode:
authoras145665 <none@none>2006-10-16 17:00:43 -0700
committeras145665 <none@none>2006-10-16 17:00:43 -0700
commiteb2b0a6162b47bdee86cc3d2e844dc8f89d95371 (patch)
tree3851e6b70fdcd650c0371e22742f1a6b498c906b /usr/src/cmd/mailx/hdr
parentd33d82f2b6ab8328bfc542feecd2c3935051f51a (diff)
downloadillumos-joyent-eb2b0a6162b47bdee86cc3d2e844dc8f89d95371.tar.gz
6460901 UNIX03: *vsc* mailx(1) "next" command does not handle message lists properly
Diffstat (limited to 'usr/src/cmd/mailx/hdr')
-rw-r--r--usr/src/cmd/mailx/hdr/def.h318
1 files changed, 164 insertions, 154 deletions
diff --git a/usr/src/cmd/mailx/hdr/def.h b/usr/src/cmd/mailx/hdr/def.h
index f78a53648e..53a9fe9842 100644
--- a/usr/src/cmd/mailx/hdr/def.h
+++ b/usr/src/cmd/mailx/hdr/def.h
@@ -2,9 +2,8 @@
* 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.
+ * Common Development and Distribution License (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
* or http://www.opensolaris.org/os/licensing.
@@ -19,15 +18,15 @@
*
* CDDL HEADER END
*/
+
/*
- * Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T
- * All Rights Reserved
- *
- *
- * Copyright (c) 1985-2001 by Sun Microsystems, Inc.
- * All rights reserved.
+ * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
*/
+/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */
+/* All Rights Reserved */
+
/*
* University Copyright- Copyright (c) 1982, 1986, 1988
* The Regents of the University of California
@@ -60,10 +59,10 @@ extern "C" {
#include <ctype.h>
#include <errno.h>
#ifndef preSVr4
-# include <unistd.h>
-# include <stdlib.h>
-# include <ulimit.h>
-# include <wait.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <ulimit.h>
+#include <wait.h>
#endif
#ifdef VMUNIX
#include <sys/wait.h>
@@ -82,16 +81,21 @@ extern "C" {
#define HSHSIZE 59 /* Hash size for aliases and vars */
#define HDRFIELDS 3 /* Number of header fields */
#define LINESIZE 5120 /* max readable line width */
-#define STRINGSIZE ((unsigned) 128)/* Dynamic allocation units */
+#define STRINGSIZE ((unsigned)128) /* Dynamic allocation units */
#define MAXARGC 1024 /* Maximum list of raw strings */
-#define NOSTR ((char *) 0) /* Nill string pointer */
-#define NOSTRPTR ((char **) 0) /* Nill pointer to string pointer */
-#define NOINTPTR ((int *) 0) /* Nill pointer */
+#define NOSTR ((char *)0) /* Nill string pointer */
+#define NOSTRPTR ((char **)0) /* Nill pointer to string pointer */
+#define NOINTPTR ((int *)0) /* Nill pointer */
#define MAXEXP 25 /* Maximum expansion of aliases */
-#define equal(a, b) (strcmp(a,b)==0)/* A nice function to string compare */
-#define fopen(s,t) my_fopen(s,t) /* Keep a list of all opened files */
-#define fclose(s) my_fclose(s) /* delete closed file from the list*/
+/* A nice function to string compare */
+#define equal(a, b) (strcmp(a, b) == 0)
+
+/* Keep a list of all opened files */
+#define fopen(s, t) my_fopen(s, t)
+
+/* Delete closed file from the list */
+#define fclose(s) my_fclose(s)
struct message {
off_t m_offset; /* offset in block of message */
@@ -127,31 +131,32 @@ typedef struct fplst {
#define H_AFWDCNT 1 /* "Auto-Forward-Count:" */
#define H_AFWDFROM 2 /* "Auto-Forwarded-From:" */
-#define H_CLEN 3 /* "Content-Length:" */
-#define H_CTYPE 4 /* "Content-Type:" */
-#define H_DATE 5 /* "Date:" */
-#define H_DEFOPTS 6 /* "Default-Options:" */
-#define H_EOH 7 /* "End-of-Header:" */
-#define H_FROM 8 /* "From " */
-#define H_FROM1 9 /* ">From " */
-#define H_FROM2 10 /* "From: " */
-#define H_MTSID 11 /* "MTS-Message-ID:" */
-#define H_MTYPE 12 /* "Message-Type:" */
-#define H_MVERS 13 /* "Message-Version:" */
-#define H_MSVC 14 /* "Message-Service:" */
-#define H_RECEIVED 15 /* "Received:" */
-#define H_RVERS 16 /* "Report-Version:" */
-#define H_STATUS 17 /* "Status:" */
-#define H_SUBJ 18 /* "Subject:" */
-#define H_TO 19 /* "To:" */
-#define H_TCOPY 20 /* ">To:" */
+#define H_CLEN 3 /* "Content-Length:" */
+#define H_CTYPE 4 /* "Content-Type:" */
+#define H_DATE 5 /* "Date:" */
+#define H_DEFOPTS 6 /* "Default-Options:" */
+#define H_EOH 7 /* "End-of-Header:" */
+#define H_FROM 8 /* "From " */
+#define H_FROM1 9 /* ">From " */
+#define H_FROM2 10 /* "From: " */
+#define H_MTSID 11 /* "MTS-Message-ID:" */
+#define H_MTYPE 12 /* "Message-Type:" */
+#define H_MVERS 13 /* "Message-Version:" */
+#define H_MSVC 14 /* "Message-Service:" */
+#define H_RECEIVED 15 /* "Received:" */
+#define H_RVERS 16 /* "Report-Version:" */
+#define H_STATUS 17 /* "Status:" */
+#define H_SUBJ 18 /* "Subject:" */
+#define H_TO 19 /* "To:" */
+#define H_TCOPY 20 /* ">To:" */
#define H_TROPTS 21 /* "Transport-Options:" */
#define H_UAID 22 /* "UA-Content-ID:" */
-#define H_DAFWDFROM 23 /* Hold A-F-F when sending Del. Notf. */
-#define H_DTCOPY 24 /* Hold ">To:" when sending Del. Notf.*/
-#define H_DRECEIVED 25 /* Hold Rcvd: when sending Del. Notf.*/
-#define H_CONT 26 /* Continuation of previous line */
-#define H_NAMEVALUE 27 /* unrecognized "name: value" hdr line*/
+
+#define H_DAFWDFROM 23 /* Hold A-F-F when sending Del. Notf. */
+#define H_DTCOPY 24 /* Hold ">To:" when sending Del. Notf. */
+#define H_DRECEIVED 25 /* Hold Rcvd: when sending Del. Notf. */
+#define H_CONT 26 /* Continuation of previous line */
+#define H_NAMEVALUE 27 /* unrecognized "name: value" hdr line */
/*
* Format of the command description table.
@@ -194,8 +199,8 @@ struct cmd {
* Oft-used mask values
*/
-#define MMNORM (MDELETED|MSAVED)/* Look at both save and delete bits */
-#define MMNDEL MDELETED /* Look only at deleted bit */
+#define MMNORM (MDELETED|MSAVED) /* Look at both save and delete bits */
+#define MMNDEL MDELETED /* Look only at deleted bit */
/*
* Structure used to return a break down of a head
@@ -214,7 +219,7 @@ struct headline {
#define GBCC 8 /* And also the Bcc: line */
#define GDEFOPT 16 /* And the Default-Options: lines */
#define GNL 32 /* Print blank line after */
-#define GOTHER 64 /* Other header lines */
+#define GOTHER 64 /* Other header lines */
#define GMASK (GTO|GSUBJECT|GCC|GBCC|GDEFOPT|GNL|GOTHER)
/* Mask of all header lines */
#define GDEL 128 /* Entity removed from list */
@@ -272,22 +277,22 @@ struct grouphead {
struct mgroup *g_list; /* Users in group. */
};
-#define NIL ((struct name *) 0) /* The nil pointer for namelists */
-#define NONE ((struct cmd *) 0) /* The nil pointer to command tab */
-#define NOVAR ((struct var *) 0) /* The nil pointer to variables */
-#define NOGRP ((struct grouphead *) 0)/* The nil grouphead pointer */
-#define NOGE ((struct mgroup *) 0) /* The nil group pointer */
-#define NOFP ((struct fplst *) 0) /* The nil file pointer */
+#define NIL ((struct name *)0) /* The nil pointer for namelists */
+#define NONE ((struct cmd *)0) /* The nil pointer to command tab */
+#define NOVAR ((struct var *)0) /* The nil pointer to variables */
+#define NOGRP ((struct grouphead *)0) /* The nil grouphead pointer */
+#define NOGE ((struct mgroup *)0) /* The nil group pointer */
+#define NOFP ((struct fplst *)0) /* The nil file pointer */
-#define TRUE 1
-#define FALSE 0
+#define TRUE 1
+#define FALSE 0
-#define DEADPERM 0600 /* permissions of dead.letter */
-#define TEMPPERM 0600 /* permissions of temp files */
-#define MBOXPERM 0600 /* permissions of ~/mbox */
+#define DEADPERM 0600 /* permissions of dead.letter */
+#define TEMPPERM 0600 /* permissions of temp files */
+#define MBOXPERM 0600 /* permissions of ~/mbox */
#ifndef MFMODE
-# define MFMODE 0600 /* create mode for `/var/mail' files */
+#define MFMODE 0600 /* create mode for `/var/mail' files */
#endif
/*
@@ -304,7 +309,7 @@ struct utimbuf {
time_t modtime;
};
#else
-# include <utime.h>
+#include <utime.h>
#endif
/*
@@ -322,7 +327,7 @@ struct utimbuf {
#define TSTAR 7 /* A "*" */
#define TOPEN 8 /* An '(' */
#define TCLOSE 9 /* A ')' */
-#define TPLUS 10 /* A '+' */
+#define TPLUS 10 /* A '+' */
#define REGDEP 2 /* Maximum regret depth. */
#define STRINGLEN 1024 /* Maximum length of string token */
@@ -381,7 +386,7 @@ struct utimbuf {
* useful just before closing an old file that was opened
* for read/write.
*/
-#define trunc(stream) ftruncate(fileno(stream), (long) ftell(stream))
+#define trunc(stream) ftruncate(fileno(stream), (long)ftell(stream))
/*
* The pointers for the string allocation routines,
@@ -468,100 +473,105 @@ extern int followup(int *msgvec);
extern int from(int *msgvec);
extern off_t fsize(FILE *iob);
extern int getfold(char *name);
-extern int gethfield(register FILE *f, char linebuf[], register long rem);
-extern int getline(char *line, int size, FILE *f, int *hasnulls);
-extern int getmsglist(char *buf, int *vector, int flags);
-extern int getname(uid_t uid, char namebuf[]);
-extern int getrawlist(char line[], char **argv, int argc);
-extern void getrecf(char *buf, char *recfile, int useauthor, int sz_recfile);
-extern uid_t getuserid(char name[]);
-extern int grabh(register struct header *hp, int gflags, int subjtop);
-extern int group(char **argv);
-extern void hangup(int);
-extern int hash(char name[]);
-extern char *hcontents(char hfield[]);
-extern int headerp(register char *line);
-extern int headers(int *msgvec);
-extern int help(void);
-extern char *helppath(char *file);
-extern char *hfield(char field[], struct message *mp, char *(*add)(char *, char *));
-extern void holdsigs(void);
-extern int icequal(register char *s1, register char *s2);
-extern int ifcmd(char **argv);
-extern int igfield(char *list[]);
-extern int inc(void);
-extern void inithost(void);
-extern int isdir(char name[]);
-extern int ishead(char linebuf[]);
-extern int ishfield(char linebuf[], char field[]);
-extern int ishost(char *sys, char *rest);
-extern int isign(char *field, int saving);
-extern void istrcpy(char *dest, int dstsize, char *src);
-extern void lcwrite(char *fn, FILE *fi, FILE *fo, int addnl);
-extern void load(char *name);
-extern int loadmsg(char str[]);
-extern int lock(FILE *fp, char *mode, int blk);
-extern void lockmail(void);
-extern int mail(char **people);
-extern void mail1(struct header *hp, int use_to, char *orig_to);
-extern void mapf(register struct name *np, char *from);
-extern int mboxit(int msgvec[]);
-extern void mechk(struct name *names);
-extern int member(register char *realfield, register struct ignore **table);
-extern int messize(int *msgvec);
-extern void minit(void);
-extern int more(int *msgvec);
-extern long msend(struct message *mailp, FILE *obuf, int flag, int (*fp)(const char *, FILE *));
-extern int my_fclose(register FILE *iop);
-extern FILE *my_fopen(char *file, char *mode);
-extern char *nameof(register struct message *mp);
-extern char *netmap(char name[], char from[]);
-extern int newfileinfo(int start);
-extern int next(int *msgvec);
-extern int npclose(FILE *ptr);
-extern FILE *npopen(char *cmd, char *mode);
-extern char *nstrcpy(char *dst, int dstsize, char *src);
-extern char *nstrcat(char *dst, int dstsize, char *src);
-extern int null(char *e);
-extern int outof(struct name *names, FILE *fo);
+extern int gethfield(register FILE *f, char linebuf[], register long rem);
+extern int getline(char *line, int size, FILE *f, int *hasnulls);
+extern int getmessage(char *buf, int *vector, int flags);
+extern int getmsglist(char *buf, int *vector, int flags);
+extern int getname(uid_t uid, char namebuf[]);
+extern int getrawlist(char line[], char **argv, int argc);
+extern void getrecf(char *buf, char *recfile,
+ int useauthor, int sz_recfile);
+extern uid_t getuserid(char name[]);
+extern int grabh(register struct header *hp, int gflags, int subjtop);
+extern int group(char **argv);
+extern void hangup(int);
+extern int hash(char name[]);
+extern char *hcontents(char hfield[]);
+extern int headerp(register char *line);
+extern int headers(int *msgvec);
+extern int help(void);
+extern char *helppath(char *file);
+extern char *hfield(char field[], struct message *mp,
+ char *(*add)(char *, char *));
+extern void holdsigs(void);
+extern int icequal(register char *s1, register char *s2);
+extern int ifcmd(char **argv);
+extern int igfield(char *list[]);
+extern int inc(void);
+extern void inithost(void);
+extern int isdir(char name[]);
+extern int ishead(char linebuf[]);
+extern int ishfield(char linebuf[], char field[]);
+extern int ishost(char *sys, char *rest);
+extern int isign(char *field, int saving);
+extern void istrcpy(char *dest, int dstsize, char *src);
+extern void lcwrite(char *fn, FILE *fi, FILE *fo, int addnl);
+extern void load(char *name);
+extern int loadmsg(char str[]);
+extern int lock(FILE *fp, char *mode, int blk);
+extern void lockmail(void);
+extern int mail(char **people);
+extern void mail1(struct header *hp, int use_to, char *orig_to);
+extern void mapf(register struct name *np, char *from);
+extern int mboxit(int msgvec[]);
+extern void mechk(struct name *names);
+extern int member(register char *realfield,
+ register struct ignore **table);
+extern int messize(int *msgvec);
+extern void minit(void);
+extern int more(int *msgvec);
+extern long msend(struct message *mailp, FILE *obuf,
+ int flag, int (*fp)(const char *, FILE *));
+extern int my_fclose(register FILE *iop);
+extern FILE *my_fopen(char *file, char *mode);
+extern char *nameof(register struct message *mp);
+extern char *netmap(char name[], char from[]);
+extern int newfileinfo(int start);
+extern int next(int *msgvec);
+extern int npclose(FILE *ptr);
+extern FILE *npopen(char *cmd, char *mode);
+extern char *nstrcpy(char *dst, int dstsize, char *src);
+extern char *nstrcat(char *dst, int dstsize, char *src);
+extern int null(char *e);
+extern int outof(struct name *names, FILE *fo);
extern struct name *outpre(struct name *to);
-extern void panic(char *str);
-extern void parse(char line[], struct headline *hl, char pbuf[]);
-extern int pcmdlist(void);
-extern int pdot(void);
-extern int preserve(int *msgvec);
-extern void printgroup(char name[]);
-extern void printhead(int mesg);
-extern int puthead(struct header *hp, FILE *fo, int w, long clen);
-extern int pversion(char *e);
-extern void quit(int noremove);
-extern int readline(FILE *ibuf, char *linebuf);
-extern void receipt(struct message *mp);
-extern void relsesigs(void);
-extern int removefile(char name[]);
-extern int replyall(int *msgvec);
-extern int replysender(int *msgvec);
-extern int respond(int *msgvec);
-extern int retfield(char *list[]);
-extern int rexit(int e);
-extern char *safeexpand(char name[]);
-extern void *salloc(unsigned size);
-extern void *srealloc(void *optr, unsigned size);
-extern int samebody(register char *user, register char *addr,
- int fuzzy);
-extern int save(char str[]);
-extern void savedead(int s);
-extern char *savestr(char *str);
-extern int schdir(char *str);
-extern int screensize(void);
-extern int scroll(char arg[]);
-extern int sendm(char *str);
-extern int set(char **arglist);
-extern void setclen(register struct message *mp);
-extern int setfile(char *name, int isedit);
-extern FILE *setinput(register struct message *mp);
-extern void setptr(register FILE *ibuf);
-extern int shell(char *str);
+extern void panic(char *str);
+extern void parse(char line[], struct headline *hl, char pbuf[]);
+extern int pcmdlist(void);
+extern int pdot(void);
+extern int preserve(int *msgvec);
+extern void printgroup(char name[]);
+extern void printhead(int mesg);
+extern int puthead(struct header *hp, FILE *fo, int w, long clen);
+extern int pversion(char *e);
+extern void quit(int noremove);
+extern int readline(FILE *ibuf, char *linebuf);
+extern void receipt(struct message *mp);
+extern void relsesigs(void);
+extern int removefile(char name[]);
+extern int replyall(int *msgvec);
+extern int replysender(int *msgvec);
+extern int respond(int *msgvec);
+extern int retfield(char *list[]);
+extern int rexit(int e);
+extern char *safeexpand(char name[]);
+extern void *salloc(unsigned size);
+extern void *srealloc(void *optr, unsigned size);
+extern int samebody(register char *user, register char *addr,
+ int fuzzy);
+extern int save(char str[]);
+extern void savedead(int s);
+extern char *savestr(char *str);
+extern int schdir(char *str);
+extern int screensize(void);
+extern int scroll(char arg[]);
+extern int sendm(char *str);
+extern int set(char **arglist);
+extern void setclen(register struct message *mp);
+extern int setfile(char *name, int isedit);
+extern FILE *setinput(register struct message *mp);
+extern void setptr(register FILE *ibuf);
+extern int shell(char *str);
#ifndef sigchild
extern void sigchild(void);
#endif