diff options
author | Sergey Poznyakoff <gray@gnu.org.ua> | 2003-09-25 14:06:02 +0000 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2003-09-25 14:06:02 +0000 |
commit | d69363dfe9db311f48086ec61f40af54376009b8 (patch) | |
tree | 574772b9fb2d7f2490bf6856b70451f9ab41a697 | |
parent | 12199989de49cd4a965a545bc1599ad5088f806a (diff) | |
download | mailutils-d69363dfe9db311f48086ec61f40af54376009b8.tar.gz mailutils-d69363dfe9db311f48086ec61f40af54376009b8.tar.bz2 |
Rewritten.
(mail_nounfold,mail_unfold)
(mail_header_is_unfoldable): New functions.
-rw-r--r-- | mail/retain.c | 75 |
1 files changed, 54 insertions, 21 deletions
diff --git a/mail/retain.c b/mail/retain.c index 24b02084d..1d691ad16 100644 --- a/mail/retain.c +++ b/mail/retain.c @@ -19,29 +19,41 @@ static list_t retained_headers = NULL; static list_t ignored_headers = NULL; +static list_t unfolded_headers = NULL; -/* - * ret[ain] [heder-field...] - */ - -int -mail_retain (int argc, char **argv) +static int +process_list (int argc, char **argv, + list_t *list, + void (*fun) (list_t *, char *), + char *msg) { if (argc == 1) { - if (!retained_headers) - fprintf (ofile, _("No fields are currently being retained\n")); + if (list_is_empty (*list)) + fprintf (ofile, _(msg)); else - util_slist_print (retained_headers, 1); + util_slist_print (*list, 1); return 0; } while (--argc) - util_slist_add (&retained_headers, *++argv); + fun (list, *++argv); return 0; } /* + * ret[ain] [heder-field...] + */ + +int +mail_retain (int argc, char **argv) +{ + return process_list (argc, argv, &retained_headers, + util_slist_add, + N_("No fields are currently being retained\n")); +} + +/* * di[scard] [header-field...] * ig[nore] [header-field...] */ @@ -49,20 +61,41 @@ mail_retain (int argc, char **argv) int mail_discard (int argc, char **argv) { - if (argc == 1) - { - if (!ignored_headers) - fprintf (ofile, _("No fields are currently being ignored\n")); - else - util_slist_print (ignored_headers, 1); - return 0; - } - - while (--argc) - util_slist_add (&ignored_headers, *++argv); + return process_list (argc, argv, &ignored_headers, + util_slist_add, + N_("No fields are currently being ignored\n")); return 0; } +/* + * unfold [header-field...] + */ + +int +mail_unfold (int argc, char **argv) +{ + return process_list (argc, argv, &unfolded_headers, + util_slist_add, + N_("No fields are currently being unfolded\n")); +} + +/* + * nounfold [header-field...] + */ + +int +mail_nounfold (int argc, char **argv) +{ + return process_list (argc, argv, &unfolded_headers, + util_slist_remove, + N_("No fields are currently being unfolded\n")); +} + +int +mail_header_is_unfoldable (char *str) +{ + return util_slist_lookup (unfolded_headers, str); +} int mail_header_is_visible (char *str) |