#include <time.h>
static struct swit switches[] = {
-#define EBCDICSW 0
- { "ebcdicsafe", 0 },
-#define NEBCDICSW 1
- { "noebcdicsafe", 0 },
-#define HEADSW 2
+#define HEADSW 0
{ "headers", 0 },
-#define NHEADSW 3
+#define NHEADSW 1
{ "noheaders", 0 },
-#define LISTSW 4
+#define LISTSW 2
{ "list", 0 },
-#define NLISTSW 5
+#define NLISTSW 3
{ "nolist", 0 },
-#define SIZESW 6
- { "realsize", 0 },
-#define NSIZESW 7
- { "norealsize", 0 },
-#define RFC934SW 8
- { "rfc934mode", 0 },
-#define NRFC934SW 9
- { "norfc934mode", 0 },
-#define VERBSW 10
+#define VERBSW 4
{ "verbose", 0 },
-#define NVERBSW 11
+#define NVERBSW 5
{ "noverbose", 0 },
-#define CONTENTIDSW 12
+#define CONTENTIDSW 6
{ "contentid", 0 },
-#define NCONTENTIDSW 13
+#define NCONTENTIDSW 7
{ "nocontentid", 0 },
-#define VERSIONSW 14
+#define VERSIONSW 8
{ "version", 0 },
-#define HELPSW 15
+#define HELPSW 9
{ "help", 0 },
-#define DEBUGSW 16
+#define DEBUGSW 10
{ "debug", -5 },
{ NULL, 0 }
};
int make_intermediates(char *);
void content_error(char *, CT, char *, ...);
-/* ftpsbr.c */
-int ftp_get(char *, char *, char *, char *, char *, char *, int, int);
-
/* mhfree.c */
void free_content(CT);
void free_ctinfo(CT);
int debugsw = 0;
int verbosw = 0;
-int ebcdicsw = 0;
int listsw = 0;
-int rfc934sw = 0;
int contentidsw = 1;
/*
int output_message_fp(CT, FILE *, char*);
/* mhlistsbr.c */
-int list_all_messages(CT *, int, int, int, int);
+int list_all_messages(CT *, int, int, int);
/* mhmisc.c */
void set_endian(void);
int
main(int argc, char **argv)
{
- int sizesw = 1, headsw = 1;
+ int headsw = 1;
char *cp, buf[BUFSIZ];
char buffer[BUFSIZ], *compfile = NULL;
char **argp, **arguments;
print_version(invo_name);
done(1);
- case EBCDICSW:
- ebcdicsw++;
- continue;
- case NEBCDICSW:
- ebcdicsw = 0;
- continue;
-
case HEADSW:
headsw++;
continue;
listsw = 0;
continue;
- case RFC934SW:
- rfc934sw++;
- continue;
- case NRFC934SW:
- rfc934sw = 0;
- continue;
-
- case SIZESW:
- sizesw++;
- continue;
- case NSIZESW:
- sizesw = 0;
- continue;
-
case CONTENTIDSW:
contentidsw = 1;
continue;
** List the message info
*/
if (listsw)
- list_all_messages(cts, headsw, sizesw, verbosw, debugsw);
+ list_all_messages(cts, headsw, verbosw, debugsw);
/* Rename composition draft */
snprintf(buffer, sizeof(buffer), "%s.orig", m_backup(compfile));
}
-static char ebcdicsafe[0x100] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01,
- 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-};
-
-
/*
** Fill out, or expand the various contents in the composition
** draft. Read-in any necessary files. Parse and execute any
return NOTOK;
}
- /*
- ** If the -rfc934mode switch is given, then check all
- ** the subparts of a multipart/digest. If they are all
- ** message/rfc822, then mark this content and all
- ** subparts with the rfc934 compatibility mode flag.
- */
- if (rfc934sw && ct->c_subtype == MULTI_DIGEST) {
- int is934 = 1;
-
- for (part = m->mp_parts; part; part = part->mp_next) {
- CT p = part->mp_part;
-
- if (p->c_subtype != MESSAGE_RFC822) {
- is934 = 0;
- break;
- }
- }
- ct->c_rfc934 = is934;
- for (part = m->mp_parts; part; part = part->mp_next) {
- CT p = part->mp_part;
-
- if ((p->c_rfc934 = is934))
- p->c_end++;
- }
- }
-
if (listsw) {
ct->c_end = (partnum = strlen(prefix) + 2) + 2;
- if (ct->c_rfc934)
- ct->c_end += 1;
-
for (part = m->mp_parts; part; part = part->mp_next)
ct->c_end += part->mp_part->c_end + partnum;
}
int checklinelen = 0, linelen = 0; /* check for long lines */
int checkboundary = 0, boundaryclash = 0; /* check if clashes with multipart boundary */
int checklinespace = 0, linespace = 0; /* check if any line ends with space */
- int checkebcdic = 0, ebcdicunsafe = 0; /* check if contains ebcdic unsafe characters */
unsigned char *cp = NULL, buffer[BUFSIZ];
struct text *t = NULL;
FILE *in = NULL;
check8bit = 1;
checkboundary = 1;
if (ct->c_subtype == TEXT_PLAIN) {
- checkebcdic = 0;
checklinelen = 0;
checklinespace = 0;
} else {
- checkebcdic = ebcdicsw;
checklinelen = 1;
checklinespace = 1;
}
case CT_APPLICATION:
check8bit = 1;
- checkebcdic = ebcdicsw;
checklinelen = 1;
checklinespace = 1;
checkboundary = 1;
case CT_MESSAGE:
check8bit = 0;
- checkebcdic = 0;
checklinelen = 0;
checklinespace = 0;
checkboundary = 1;
** since we are forcing use of base64.
*/
check8bit = 0;
- checkebcdic = 0;
checklinelen = 0;
checklinespace = 0;
checkboundary = 0;
/* no need to keep checking */
check8bit = 0;
}
- /*
- ** Check if character is ebcdic-safe.
- ** We only check this if also checking
- ** for 8bit data.
- */
- if (checkebcdic && !ebcdicsafe[*cp & 0xff]) {
- ebcdicunsafe = 1;
- /* no need to keep checking */
- checkebcdic = 0;
- }
}
}
*ep = cp;
}
- if (contains8bit || ebcdicunsafe || linelen || linespace)
+ if (contains8bit || linelen || linespace)
ct->c_encoding = CE_QUOTED;
else
ct->c_encoding = CE_7BIT;
case CT_APPLICATION:
/* For application type, use base64, except when postscript */
- if (contains8bit || ebcdicunsafe || linelen || linespace)
+ if (contains8bit || linelen || linespace)
ct->c_encoding = (ct->c_subtype ==
APPLICATION_POSTSCRIPT) ?
CE_QUOTED : CE_BASE64;
}
/*
- ** Skip the output of Content-Type, parameters, content
- ** description and disposition, and Content-ID if the
- ** content is of type "message" and the rfc934 compatibility
- ** flag is set (which means we are inside multipart/digest
- ** and the switch -rfc934mode was given).
- */
- if (ct->c_type == CT_MESSAGE && ct->c_rfc934)
- goto skip_headers;
-
- /*
** output the content type and subtype
*/
np = getcpy(TYPE_FIELD);
add_header(ct, np, vp);
}
-skip_headers:
/*
** output the Content-Transfer-Encoding
*/