mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-21 18:38:08 +01:00
0211272843
This is in the client code, rather than libnotmuch_util, because it prints to stderr. Also it in pretends to generate notmuch status codes.
88 lines
1.9 KiB
C
88 lines
1.9 KiB
C
#include "notmuch-client.h"
|
|
|
|
notmuch_status_t
|
|
print_status_query (const char *loc,
|
|
const notmuch_query_t *query,
|
|
notmuch_status_t status)
|
|
{
|
|
if (status) {
|
|
const char *msg;
|
|
notmuch_database_t *notmuch;
|
|
|
|
fprintf (stderr, "%s: %s\n", loc,
|
|
notmuch_status_to_string (status));
|
|
|
|
notmuch = notmuch_query_get_database (query);
|
|
msg = notmuch_database_status_string (notmuch);
|
|
if (msg)
|
|
fputs (msg, stderr);
|
|
}
|
|
return status;
|
|
}
|
|
|
|
notmuch_status_t
|
|
print_status_message (const char *loc,
|
|
const notmuch_message_t *message,
|
|
notmuch_status_t status)
|
|
{
|
|
if (status) {
|
|
const char *msg;
|
|
notmuch_database_t *notmuch;
|
|
|
|
fprintf (stderr, "%s: %s\n", loc,
|
|
notmuch_status_to_string (status));
|
|
|
|
notmuch = notmuch_message_get_database (message);
|
|
msg = notmuch_database_status_string (notmuch);
|
|
if (msg)
|
|
fputs (msg, stderr);
|
|
}
|
|
return status;
|
|
}
|
|
|
|
notmuch_status_t
|
|
print_status_database (const char *loc,
|
|
const notmuch_database_t *notmuch,
|
|
notmuch_status_t status)
|
|
{
|
|
if (status) {
|
|
const char *msg;
|
|
|
|
fprintf (stderr, "%s: %s\n", loc,
|
|
notmuch_status_to_string (status));
|
|
msg = notmuch_database_status_string (notmuch);
|
|
if (msg)
|
|
fputs (msg, stderr);
|
|
}
|
|
return status;
|
|
}
|
|
|
|
int
|
|
status_to_exit (notmuch_status_t status)
|
|
{
|
|
switch (status) {
|
|
case NOTMUCH_STATUS_SUCCESS:
|
|
return EXIT_SUCCESS;
|
|
case NOTMUCH_STATUS_OUT_OF_MEMORY:
|
|
case NOTMUCH_STATUS_XAPIAN_EXCEPTION:
|
|
case NOTMUCH_STATUS_DUPLICATE_MESSAGE_ID:
|
|
case NOTMUCH_STATUS_FILE_ERROR:
|
|
return EX_TEMPFAIL;
|
|
default:
|
|
return EXIT_FAILURE;
|
|
}
|
|
}
|
|
|
|
notmuch_status_t
|
|
print_status_gzbytes (const char *loc, gzFile file, int bytes)
|
|
{
|
|
if (bytes <= 0) {
|
|
int errnum;
|
|
const char *errstr = gzerror (file, &errnum);
|
|
fprintf (stderr, "%s: zlib error %s (%d)\n", loc, errstr, errnum);
|
|
return NOTMUCH_STATUS_FILE_ERROR;
|
|
} else {
|
|
return NOTMUCH_STATUS_SUCCESS;
|
|
}
|
|
}
|
|
|