EDIT/EMAIL: Modified so OA-E will open message READ-ONLY in EDIT.SYSTEM

This commit is contained in:
Bobbi Webber-Manners 2020-09-16 16:57:15 -04:00
parent d584319aee
commit 11ae65fa08
3 changed files with 56 additions and 17 deletions

View File

@ -1581,6 +1581,10 @@ void name_file(void); // Forward declaration
void save(void) {
uint8_t rc;
FILE *fp;
if (email_mode == 1) {
show_error("Read-only file");
return;
}
if (strlen(filename) == 0) {
status[1] = 1; // Prompt if save will overwrite existing file
name_file();
@ -2521,6 +2525,8 @@ int edit(char *fname) {
case 0x80 + 'N': // OA-N "Name"
case 0x80 + 'n': // OA-n
name_file();
if (email_mode == 1)
email_mode = 3;
break;
case 0x80 + 'Q': // OA-Q "Quit"
case 0x80 + 'q': // OA-q
@ -2531,6 +2537,7 @@ int edit(char *fname) {
load_attacher();
// Fall through
case 1:
case 3:
if (prompt_okay("Return to EMAIL") == 0)
load_email();
break;
@ -2751,11 +2758,18 @@ donehelp:
*/
void usage(void) {
printf("Usage: -EDIT.SYSTEM [filename.txt]");
printf(" or -EDIT.SYSTEM [-reademail|-compose] filename.txt");
printf(" or -EDIT.SYSTEM [-reademail|-email|-news] filename.txt");
reconnect_ramdisk();
exit(1);
}
/*
* Command line arguments:
* -reademail - Open file read-only. Load EMAIL.SYSTEM on quit.
* -email - Prompt for attachments, load ATTACHER.SYSTEM
* or EMAIL.SYSTEM on quit
* -news - Load EMAIL.SYSTEM on quit
*/
void main(int argc, char *argv[]) {
uint8_t *pp = (uint8_t*)0xbf98;
if (!(*pp & 0x02)) {
@ -2775,8 +2789,10 @@ void main(int argc, char *argv[]) {
case 3:
if (strcmp(argv[1], "-reademail") == 0)
email_mode = 1;
else if (strcmp(argv[1], "-compose") == 0)
else if (strcmp(argv[1], "-email") == 0)
email_mode = 2;
else if (strcmp(argv[1], "-news") == 0)
email_mode = 3;
else
usage();
edit(argv[2]);

View File

@ -6,7 +6,6 @@
// TODO: Scrunch memory
// TODO: Some way to abort an email that has been created already - final verification to send
// TODO: No MIME attachments for Usenet posts
#include <stdio.h>
#include <stdlib.h>
@ -50,6 +49,8 @@
char closedapple[] = "\x0f\x1b""@\x18\x0e";
char openapple[] = "\x0f\x1b""A\x18\x0e";
char email[] = "EMAIL";
char email_cfg[] = "EMAIL.CFG";
char email_prefs[] = "EMAIL.PREFS";
char email_db[] = "%s/%s/EMAIL.DB";
char email_db_new[] = "%s/%s/EMAIL.DB.NEW";
@ -101,46 +102,70 @@ unsigned char buf[READSZ];
#define ERR_NONFATAL 0
#define ERR_FATAL 1
/*
* Load and run EDIT.SYSTEM
* compose - Controls the arguments passed to EDIT.SYSTEM
* 0: Email reading (-reademail)
* 1: Email composition (-email)
* 2: News composition (-news)
*/
#pragma code-name (push, "LC")
void load_editor(uint8_t compose) {
snprintf(userentry, 80, "%s %s", (compose ? "-compose" : "-reademail"), filename);
snprintf(userentry, 80, "%s %s",
(compose == 0 ? "-reademail" : (compose == 1 ? "-email" : "-news")),
filename);
snprintf(filename, 80, "%s/EDIT.SYSTEM", cfg_instdir);
exec(filename, userentry);
}
#pragma code-name (pop)
/*
* Load and run NNTP65.SYSTEM
*/
#pragma code-name (push, "LC")
void load_nntp65(void) {
snprintf(filename, 80, "%s/NNTP65.SYSTEM", cfg_instdir);
exec(filename, "EMAIL");
exec(filename, email);
}
#pragma code-name (pop)
/*
* Load and run NNTP65UP.SYSTEM
*/
#pragma code-name (push, "LC")
void load_nntp65up(void) {
snprintf(filename, 80, "%s/NNTP65UP.SYSTEM", cfg_instdir);
exec(filename, "EMAIL");
exec(filename, email);
}
#pragma code-name (pop)
/*
* Load and run POP65.SYSTEM
*/
#pragma code-name (push, "LC")
void load_pop65(void) {
snprintf(filename, 80, "%s/POP65.SYSTEM", cfg_instdir);
exec(filename, "EMAIL");
exec(filename, email);
}
#pragma code-name (pop)
/*
* Load and run SMTP65.SYSTEM
*/
#pragma code-name (push, "LC")
void load_smtp65(void) {
snprintf(filename, 80, "%s/SMTP65.SYSTEM", cfg_instdir);
exec(filename, "EMAIL");
exec(filename, email);
}
#pragma code-name (pop)
/*
* Load and run DATE65.SYSTEM
*/
#pragma code-name (push, "LC")
void load_date65(void) {
snprintf(filename, 80, "%s/DATE65.SYSTEM", cfg_instdir);
exec(filename, "EMAIL");
exec(filename, email);
}
#pragma code-name (pop)
@ -272,9 +297,9 @@ void spinner(void) {
*/
#pragma code-name (push, "LC")
void readconfigfile(void) {
fp = fopen("EMAIL.CFG", "r");
fp = fopen(email_cfg, "r");
if (!fp)
error(ERR_FATAL, cant_open, "EMAIL.CFG");
error(ERR_FATAL, cant_open, email_cfg);
fscanf(fp, "%s", cfg_server);
fscanf(fp, "%s", cfg_user);
fscanf(fp, "%s", cfg_pass);
@ -1537,11 +1562,9 @@ esc_pressed:
* s - Subject text
* Adds 'Re: ' to subject line unless it is already there
*/
#pragma code-name (push, "LC")
void subject_response(FILE *f, char *s) {
fprintf(f, "Subject: %s%s\r", (strncmp(s, "Re: ", 3) ? "Re: " : ""), s);
}
#pragma code-name (pop)
/*
* Write subject line to file
@ -1957,7 +1980,7 @@ void copy_to_mailbox(struct emailhdrs *h, uint16_t idx,
if (mode != ' ') {
snprintf(filename, 80, email_file, cfg_emaildir, mbox, num);
load_editor(1);
load_editor(mode == 'N' ? 0 : 1);
}
}

View File

@ -11,9 +11,9 @@
T Tag current message | {-D Set date using DATE65 (NTP)
A Archive current/tagged message | {-R Receive email using POP65
C Copy current/tagged message | {-S Send OUTBOX using SMTP65
M Move current/tagged message | }-R Receive news using NNTP65
D Mark current message deleted | }-S Sent NEWS.OUTBOX with NNTP65UP
U Remove deletion mark |
M Move current/tagged message | {-E Open current message in EDIT
D Mark current message deleted | }-R Receive news using NNTP65
U Remove deletion mark | }-S Sent NEWS.OUTBOX with NNTP65UP
P Purge messages marked as deleted |
------------------------------------------+-------------------------------------
Email Composition | News Composition