notmuch/status.c
David Bremner 0211272843 status: add print_status_gzbytes
This is in the client code, rather than libnotmuch_util, because it
prints to stderr. Also it in pretends to generate notmuch status
codes.
2020-04-13 17:14:50 -03:00

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;
}
}