static const char* display_field (MuMsg *msg, MuMsgFieldId mfid) { gint64 val; switch (mu_msg_field_type(mfid)) { case MU_MSG_FIELD_TYPE_STRING: { const gchar *str; str = mu_msg_get_field_string (msg, mfid); return str ? str : ""; } case MU_MSG_FIELD_TYPE_INT: if (mfid == MU_MSG_FIELD_ID_PRIO) { val = mu_msg_get_field_numeric (msg, mfid); return mu_msg_prio_name ((MuMsgPrio)val); } else if (mfid == MU_MSG_FIELD_ID_FLAGS) { val = mu_msg_get_field_numeric (msg, mfid); return mu_str_flags_s ((MuFlags)val); } else /* as string */ return mu_msg_get_field_string (msg, mfid); case MU_MSG_FIELD_TYPE_TIME_T: val = mu_msg_get_field_numeric (msg, mfid); return mu_date_str_s ("%c", (time_t)val); case MU_MSG_FIELD_TYPE_BYTESIZE: val = mu_msg_get_field_numeric (msg, mfid); return mu_str_size_s ((unsigned)val); default: g_return_val_if_reached (NULL); } }
static void ansi_color_maybe (MuMsgFieldId mfid, gboolean color) { const char* ansi; if (!color) return; /* nothing to do */ switch (mfid) { case MU_MSG_FIELD_ID_FROM: ansi = MU_COLOR_CYAN; break; case MU_MSG_FIELD_ID_TO: case MU_MSG_FIELD_ID_CC: case MU_MSG_FIELD_ID_BCC: ansi = MU_COLOR_BLUE; break; case MU_MSG_FIELD_ID_SUBJECT: ansi = MU_COLOR_GREEN; break; case MU_MSG_FIELD_ID_DATE: ansi = MU_COLOR_MAGENTA; break; default: if (mu_msg_field_type(mfid) == MU_MSG_FIELD_TYPE_STRING) ansi = MU_COLOR_YELLOW; else ansi = MU_COLOR_RED; } fputs (ansi, stdout); }
gboolean mu_msg_field_is_numeric (MuMsgFieldId mfid) { MuMsgFieldType type; g_return_val_if_fail (mu_msg_field_id_is_valid(mfid),FALSE); type = mu_msg_field_type (mfid); return type == MU_MSG_FIELD_TYPE_BYTESIZE || type == MU_MSG_FIELD_TYPE_TIME_T || type == MU_MSG_FIELD_TYPE_INT; }