void output_message(char *msgid, int mode, int headers_only)
{
long msg_num;
- int a,och,len;
+ int a;
CIT_UBYTE ch, rch;
CIT_UBYTE format_type,anon_flag;
char buf[1024];
if (headers_only) {
/* give 'em a length */
msg_len = 0L;
- while(och=ch, ch = *mptr++, ch>0) {
+ while(ch = *mptr++, ch>0) {
++msg_len;
}
cprintf("mlen=%ld\n", msg_len);
* what message transfer format is in use.
*/
if (format_type == 1) {
- och = 0;
- len = 0;
- while(och=ch, ch = *mptr++, ch>0) {
+ strcpy(buf, "");
+ while(ch = *mptr++, ch>0) {
if (ch == 13) ch = 10;
- ++len;
- /* if ((ch!=10)||(och!=10)) { */
- cprintf("%c", ch);
- if (ch==10) len = 0;
- /* } */
- if (len>=250) {
- len = 0;
- /* cprintf("%c", ch); */
- cprintf("%c", 10);
+ if ( (ch == 10) || (strlen(buf)>250) ) {
+ cprintf("%s\n", buf);
+ strcpy(buf, "");
+ }
+ else {
+ buf[strlen(buf)+1] = 0;
+ buf[strlen(buf)] = ch;
}
}
- if (len!=0) cprintf("%c", 10);
+ if (strlen(buf)>0) cprintf("%s\n", buf);
}
/* If the message on disk is format 0 (Citadel vari-format), we
* output using the formatter at 80 columns. This is the final output
/*
* Build a binary message to be saved on disk.
*/
-void make_message(char *filename, struct usersupp *author, char *recipient, char *room, int type, int net_type, int format_type, char *fake_name)
- /* temporary file name */
- /* author's usersupp structure */
- /* NULL if it's not mail */
- /* room where it's going */
- /* see MES_ types in header file */
- /* local or remote type, see citadel.h */
- /* format type (see citadel.h) */
-{
+void make_message(
+ char *filename, /* temporary file name */
+ struct usersupp *author, /* author's usersupp structure */
+ char *recipient, /* NULL if it's not mail */
+ char *room, /* room where it's going */
+ int type, /* see MES_ types in header file */
+ int net_type, /* see MES_ types in header file */
+ int format_type, /* local or remote (see citadel.h) */
+ char *fake_name, /* who we're masquerading as */
+ char *separator) { /* separator (if exist attachments) */
+
FILE *fp;
int a;
long now;
fprintf(fp,"N%s%c",NODENAME,0); /* nodename */
fprintf(fp,"H%s%c",HUMANNODE,0); /* human nodename */
- if (recipient[0]!=0) fprintf(fp,"R%s%c",recipient,0);
- if (dest_node[0]!=0) fprintf(fp,"D%s%c",dest_node,0);
+ if (recipient[0]!=0) fprintf(fp, "R%s%c", recipient, 0);
+ if (dest_node[0]!=0) fprintf(fp, "D%s%c", dest_node, 0);
+ if (separator[0]!=0) fprintf(fp, "Z%s%c", separator, 0);
putc('M',fp);
int anon_flag = 0;
int format_type = 0;
char newusername[256]; /* <bc> */
+ char separator[256];
int a,b,e;
int mtsflag = 0;
extract(recipient,entargs,1);
anon_flag = extract_int(entargs,2);
format_type = extract_int(entargs,3);
+ extract(separator, entargs, 4);
/* first check to make sure the request is valid. */
cprintf("%d send message\n",SEND_LISTING);
if (CC->fake_postname[0])
- make_message(CC->temp,&CC->usersupp,buf,CC->quickroom.QRname,b,e,format_type, CC->fake_postname);
+ make_message(CC->temp,&CC->usersupp,buf,CC->quickroom.QRname,b,e,format_type, CC->fake_postname, separator);
else
if (CC->fake_username[0])
- make_message(CC->temp,&CC->usersupp,buf,CC->quickroom.QRname,b,e,format_type, CC->fake_username);
+ make_message(CC->temp,&CC->usersupp,buf,CC->quickroom.QRname,b,e,format_type, CC->fake_username, separator);
else
- make_message(CC->temp,&CC->usersupp,buf,CC->quickroom.QRname,b,e,format_type, "");
+ make_message(CC->temp,&CC->usersupp,buf,CC->quickroom.QRname,b,e,format_type, "", separator);
save_message(CC->temp,buf,mtsflag,e,1);
CC->fake_postname[0]='\0';
return;
BYTE Mnemonic Comments
-T Date/Time A 32-bit integer containing the date and time of
- the message in standard UNIX format (the number
- of seconds since January 1, 1970 GMT).
-P Path Complete path of message, as in the UseNet news
- standard. A user should be able to send UUCP mail to
- this path. (Note that your system name will not be
- tacked onto this until you're sending the message to
- someone else)
-I Original ID A 32-bit integer containing the message ID on the
- system the message *originated* on.
# Local ID A 32-bit integer containing the message ID on the
system the message is *currently* on (obviously this
is meaningless for a message being transmitted over
a network).
A Author Name of originator of message.
-R Recipient Only present in Mail messages.
-O Room Room of origin.
-N Nodename Contains node name of system message originated on.
-H HumanNodeName Human-readable name of system message originated on.
-D Destination Contains name of the system this message should
- be sent to, for mail routing (private mail only).
-U Subject Optional. Developers may choose whether they wish to
- generate or display subject fields. Citadel/UX does
- not generate them, but it does print them when found.
B Phone number The dialup number of the system this message
originated on. This is optional, and is only
defined for helping implement C86Net gateways.
+D Destination Contains name of the system this message should
+ be sent to, for mail routing (private mail only).
G Gateway domain This field is provided solely for the implementation
of C86Net gateways, and holds the C86Net domain of
the system this message originated on. Unless you're
implementing such a gateway, there's no need to even
bother with this field.
+H HumanNodeName Human-readable name of system message originated on.
+I Original ID A 32-bit integer containing the message ID on the
+ system the message *originated* on.
+M Message Text Normal ASCII, newlines seperated by CR's or LF's,
+ null terminated as always.
+N Nodename Contains node name of system message originated on.
+O Room Room of origin.
+P Path Complete path of message, as in the UseNet news
+ standard. A user should be able to send UUCP mail to
+ this path. (Note that your system name will not be
+ tacked onto this until you're sending the message to
+ someone else)
+R Recipient Only present in Mail messages.
S Special field Only meaningful for messages being spooled over a
network. Usually means that the message isn't really
a message, but rather some other network function:
-> "S" followed by "FILE" (followed by a null, of
course) means that the message text is actually an
IGnet/Open file transfer.
-M Message Text Normal ASCII, newlines seperated by CR's or LF's,
- null terminated as always.
+T Date/Time A 32-bit integer containing the date and time of
+ the message in standard UNIX format (the number
+ of seconds since January 1, 1970 GMT).
+U Subject Optional. Developers may choose whether they wish to
+ generate or display subject fields. Citadel/UX does
+ not generate them, but it does print them when found.
X eXtension field Extension fields are used to carry additional RFC822
type lines. X fields contain the X byte followed by
the RFC822 field name, a colon, a space, and the value.
+Z Separator If there are MIME attachments following the message
+ text, the Z field specifies the separator string.
EXAMPLE