summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2003-09-25 14:06:02 +0000
committerSergey Poznyakoff <gray@gnu.org.ua>2003-09-25 14:06:02 +0000
commitd69363dfe9db311f48086ec61f40af54376009b8 (patch)
tree574772b9fb2d7f2490bf6856b70451f9ab41a697
parent12199989de49cd4a965a545bc1599ad5088f806a (diff)
downloadmailutils-d69363dfe9db311f48086ec61f40af54376009b8.tar.gz
mailutils-d69363dfe9db311f48086ec61f40af54376009b8.tar.bz2
Rewritten.
(mail_nounfold,mail_unfold) (mail_header_is_unfoldable): New functions.
-rw-r--r--mail/retain.c75
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)

Return to:

Send suggestions and report system problems to the System administrator.