mirror of
https://github.com/bobbimanners/emailler.git
synced 2024-10-03 19:55:02 +00:00
Sanitize MIME filenames for ProDOS
This commit is contained in:
parent
e18aa8680d
commit
8bf4b0e50a
26
apps/email.c
26
apps/email.c
@ -1,7 +1,7 @@
|
|||||||
/////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////
|
||||||
// emai//er - Simple Email User Agent vaguely inspired by Elm
|
// emai//er - Simple Email User Agent vaguely inspired by Elm
|
||||||
// Handles INBOX in the format created by POP65
|
// Handles INBOX in the format created by POP65
|
||||||
// Bobbi June 2020
|
// Bobbi June, July 2020
|
||||||
/////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
// - TODO: Default to starting at end, not beginning (or option to sort backwards...)
|
// - TODO: Default to starting at end, not beginning (or option to sort backwards...)
|
||||||
@ -522,6 +522,25 @@ char prompt_okay_attachment(char *filename) {
|
|||||||
else
|
else
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Sanitize filename for ProDOS
|
||||||
|
* Modifies s in place
|
||||||
|
*/
|
||||||
|
void sanitize_filename(char *s) {
|
||||||
|
uint8_t i = 0, j = 0;
|
||||||
|
char c;
|
||||||
|
while (1) {
|
||||||
|
c = s[i++];
|
||||||
|
if (c == '\r') {
|
||||||
|
s[j] = '\0';
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (isalnum(c) || c == '.' || c == '/')
|
||||||
|
s[j++] = c;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Display email with simple pager functionality
|
* Display email with simple pager functionality
|
||||||
* Includes support for decoding MIME headers
|
* Includes support for decoding MIME headers
|
||||||
@ -604,12 +623,13 @@ restart:
|
|||||||
} else if (strstr(linebuf, "filename=")) {
|
} else if (strstr(linebuf, "filename=")) {
|
||||||
sprintf(filename, "%s/ATTACHMENTS/%s",
|
sprintf(filename, "%s/ATTACHMENTS/%s",
|
||||||
cfg_emaildir, strstr(linebuf, "filename=") + 9);
|
cfg_emaildir, strstr(linebuf, "filename=") + 9);
|
||||||
filename[strlen(filename) - 1] = '\0'; // Remove '\r'
|
//filename[strlen(filename) - 1] = '\0'; // Remove '\r'
|
||||||
|
sanitize_filename(filename);
|
||||||
if (prompt_okay_attachment(filename)) {
|
if (prompt_okay_attachment(filename)) {
|
||||||
printf("** Attachment -> %s ", filename);
|
printf("** Attachment -> %s ", filename);
|
||||||
attachfp = fopen(filename, "wb");
|
attachfp = fopen(filename, "wb");
|
||||||
if (!attachfp)
|
if (!attachfp)
|
||||||
printf("** Can't open %s\n", filename);
|
printf("\n** Can't open %s ", filename);
|
||||||
} else
|
} else
|
||||||
mime = 1;
|
mime = 1;
|
||||||
} else if ((mime == 3) && (!strncmp(linebuf, "\r", 1))) {
|
} else if ((mime == 3) && (!strncmp(linebuf, "\r", 1))) {
|
||||||
|
Loading…
Reference in New Issue
Block a user