mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-25 12:28:09 +01:00
notmuch show: Add body of message as well.
This is just the raw message body for now, (so any MIME parsing will be up to the consumer). And this will likely change in the future.
This commit is contained in:
parent
bf78a89196
commit
90a0ef4ac4
5 changed files with 50 additions and 4 deletions
|
@ -343,8 +343,8 @@ notmuch_message_file_get_header (notmuch_message_file_t *message,
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static size_t
|
size_t
|
||||||
_notmuch_message_file_get_header_size (notmuch_message_file_t *message)
|
notmuch_message_file_get_header_size (notmuch_message_file_t *message)
|
||||||
{
|
{
|
||||||
if (! message->parsing_finished)
|
if (! message->parsing_finished)
|
||||||
notmuch_message_file_get_header (message, NULL);
|
notmuch_message_file_get_header (message, NULL);
|
||||||
|
@ -359,7 +359,7 @@ const char *
|
||||||
notmuch_message_file_get_all_headers (notmuch_message_file_t *message)
|
notmuch_message_file_get_all_headers (notmuch_message_file_t *message)
|
||||||
{
|
{
|
||||||
char *headers = NULL;
|
char *headers = NULL;
|
||||||
size_t header_size = _notmuch_message_file_get_header_size (message);
|
size_t header_size = notmuch_message_file_get_header_size (message);
|
||||||
|
|
||||||
if (header_size == 0)
|
if (header_size == 0)
|
||||||
return "";
|
return "";
|
||||||
|
|
11
message.cc
11
message.cc
|
@ -267,6 +267,17 @@ notmuch_message_get_all_headers (notmuch_message_t *message)
|
||||||
return notmuch_message_file_get_all_headers (message->message_file);
|
return notmuch_message_file_get_all_headers (message->message_file);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
size_t
|
||||||
|
notmuch_message_get_header_size (notmuch_message_t *message)
|
||||||
|
{
|
||||||
|
_notmuch_message_ensure_message_file (message);
|
||||||
|
if (message->message_file == NULL)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
return notmuch_message_file_get_header_size (message->message_file);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
const char *
|
const char *
|
||||||
notmuch_message_get_thread_id (notmuch_message_t *message)
|
notmuch_message_get_thread_id (notmuch_message_t *message)
|
||||||
{
|
{
|
||||||
|
|
|
@ -291,6 +291,13 @@ notmuch_message_file_get_header (notmuch_message_file_t *message,
|
||||||
const char *
|
const char *
|
||||||
notmuch_message_file_get_all_headers (notmuch_message_file_t *message);
|
notmuch_message_file_get_all_headers (notmuch_message_file_t *message);
|
||||||
|
|
||||||
|
/* Get the size in bytes of the full header section of 'message'.
|
||||||
|
*
|
||||||
|
* Returns 0 in the case of any error.
|
||||||
|
*/
|
||||||
|
size_t
|
||||||
|
notmuch_message_file_get_header_size (notmuch_message_file_t *message);
|
||||||
|
|
||||||
/* date.c */
|
/* date.c */
|
||||||
|
|
||||||
/* Parse an RFC 8222 date string to a time_t value.
|
/* Parse an RFC 8222 date string to a time_t value.
|
||||||
|
|
20
notmuch.c
20
notmuch.c
|
@ -806,7 +806,10 @@ show_command (unused (int argc), unused (char *argv[]))
|
||||||
notmuch_query_t *query = NULL;
|
notmuch_query_t *query = NULL;
|
||||||
notmuch_message_results_t *messages;
|
notmuch_message_results_t *messages;
|
||||||
notmuch_message_t *message;
|
notmuch_message_t *message;
|
||||||
|
const char *filename;
|
||||||
|
FILE *file;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
int c;
|
||||||
|
|
||||||
if (argc != 1) {
|
if (argc != 1) {
|
||||||
fprintf (stderr, "Error: \"notmuch show\" requires exactly one thread-ID argument.\n");
|
fprintf (stderr, "Error: \"notmuch show\" requires exactly one thread-ID argument.\n");
|
||||||
|
@ -847,6 +850,22 @@ show_command (unused (int argc), unused (char *argv[]))
|
||||||
printf ("%s", notmuch_message_get_all_headers (message));
|
printf ("%s", notmuch_message_get_all_headers (message));
|
||||||
|
|
||||||
printf ("%%header}\n");
|
printf ("%%header}\n");
|
||||||
|
|
||||||
|
filename = notmuch_message_get_filename (message);
|
||||||
|
|
||||||
|
file = fopen (filename, "r");
|
||||||
|
if (file) {
|
||||||
|
size_t header_size = notmuch_message_get_header_size (message);
|
||||||
|
fseek (file, header_size + 1, SEEK_SET);
|
||||||
|
while (1) {
|
||||||
|
c = fgetc (file);
|
||||||
|
if (c == EOF)
|
||||||
|
break;
|
||||||
|
putchar (c);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fclose (file);
|
||||||
|
|
||||||
printf ("%%message}\n");
|
printf ("%%message}\n");
|
||||||
|
|
||||||
notmuch_message_destroy (message);
|
notmuch_message_destroy (message);
|
||||||
|
@ -1206,7 +1225,6 @@ command_t commands[] = {
|
||||||
"\t\tmarks around any parenthesized expression)." },
|
"\t\tmarks around any parenthesized expression)." },
|
||||||
{ "show", show_command,
|
{ "show", show_command,
|
||||||
"<thread-id>\n\n"
|
"<thread-id>\n\n"
|
||||||
"\t\tNote: The \"notmuch show\" command is not implemented yet.\n\n"
|
|
||||||
"\t\tShow the thread with the given thread ID (see 'search').",
|
"\t\tShow the thread with the given thread ID (see 'search').",
|
||||||
"\t\tThread ID values are given as the first column in the\n"
|
"\t\tThread ID values are given as the first column in the\n"
|
||||||
"\t\toutput of the \"notmuch search\" command. These are the\n"
|
"\t\toutput of the \"notmuch search\" command. These are the\n"
|
||||||
|
|
10
notmuch.h
10
notmuch.h
|
@ -617,6 +617,16 @@ notmuch_message_get_thread_id (notmuch_message_t *message);
|
||||||
const char *
|
const char *
|
||||||
notmuch_message_get_filename (notmuch_message_t *message);
|
notmuch_message_get_filename (notmuch_message_t *message);
|
||||||
|
|
||||||
|
/* Get the size in bytes of the full header section of 'message'.
|
||||||
|
*
|
||||||
|
* This is useful in conjunction with notmuch_message_get_filename
|
||||||
|
* for separately parsing the message header and content.
|
||||||
|
*
|
||||||
|
* Returns 0 in the case of any error.
|
||||||
|
*/
|
||||||
|
size_t
|
||||||
|
notmuch_message_get_header_size (notmuch_message_t *message);
|
||||||
|
|
||||||
/* Get the value of the specified header from 'message'.
|
/* Get the value of the specified header from 'message'.
|
||||||
*
|
*
|
||||||
* The value will be read from the actual message file, not from the
|
* The value will be read from the actual message file, not from the
|
||||||
|
|
Loading…
Reference in a new issue