/** * address_string_get - Get an Address as a string - Implements ::cst_string_get() */ static int address_string_get(const struct ConfigSet *cs, void *var, const struct ConfigDef *cdef, struct Buffer *result) { if (!cs || !cdef) return CSR_ERR_CODE; /* LCOV_EXCL_LINE */ char tmp[8192] = ""; const char *str = NULL; if (var) { struct Address *a = *(struct Address **) var; if (a) { mutt_addr_write(tmp, sizeof(tmp), a, false); str = tmp; } } else { str = (char *) cdef->initial; } if (!str) return CSR_SUCCESS | CSR_SUC_EMPTY; /* empty string */ mutt_buffer_addstr(result, str); return CSR_SUCCESS; }
/** * alias_format_str - Format a string for the alias list - Implements ::format_t * * | Expando | Description * |:--------|:-------------------------------------------------------- * | \%a | Alias name * | \%f | Flags - currently, a 'd' for an alias marked for deletion * | \%n | Index number * | \%r | Address which alias expands to * | \%t | Character which indicates if the alias is tagged for inclusion */ static const char *alias_format_str(char *buf, size_t buflen, size_t col, int cols, char op, const char *src, const char *prec, const char *if_str, const char *else_str, unsigned long data, MuttFormatFlags flags) { char fmt[128], addr[128]; struct Alias *alias = (struct Alias *) data; switch (op) { case 'a': mutt_format_s(buf, buflen, prec, alias->name); break; case 'f': snprintf(fmt, sizeof(fmt), "%%%ss", prec); snprintf(buf, buflen, fmt, alias->del ? "D" : " "); break; case 'n': snprintf(fmt, sizeof(fmt), "%%%sd", prec); snprintf(buf, buflen, fmt, alias->num + 1); break; case 'r': addr[0] = '\0'; mutt_addr_write(addr, sizeof(addr), alias->addr, true); snprintf(fmt, sizeof(fmt), "%%%ss", prec); snprintf(buf, buflen, fmt, addr); break; case 't': buf[0] = alias->tagged ? '*' : ' '; buf[1] = '\0'; break; } return src; }