1 /* GNU Mailutils -- a suite of utilities for electronic mail
2 Copyright (C) 1999-2021 Free Software Foundation, Inc.
3
4 GNU Mailutils is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation; either version 3, or (at your option)
7 any later version.
8
9 GNU Mailutils is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
13
14 You should have received a copy of the GNU General Public License
15 along with GNU Mailutils. If not, see <http://www.gnu.org/licenses/>. */
16
17 #include "mail.h"
18
19 /*
20 * se[t] [name[=[string]] ...] [name=number ...] [noname ...]
21 */
22
23 int
mail_set(int argc,char ** argv)24 mail_set (int argc, char **argv)
25 {
26 int flags = MOPTF_OVERWRITE | ((strcmp (argv[0], "setq") == 0) ? MOPTF_QUIET : 0);
27
28 if (argc < 2)
29 {
30 mailvar_print (1);
31 return 0;
32 }
33 else
34 {
35 int i = 0;
36
37 for (i = 1; i < argc; i++)
38 {
39 char *value = strchr (argv[i], '=');
40 if (value)
41 *value++ = 0;
42
43 if (!strncmp ("no", argv[i], 2) && !value)
44 {
45 mailvar_set (&argv[i][2], NULL, mailvar_type_boolean,
46 flags | MOPTF_UNSET);
47 }
48 else if (value)
49 {
50 int nval;
51 char *p;
52
53 nval = strtoul (value, &p, 0);
54 if (*p == 0)
55 mailvar_set (argv[i], &nval, mailvar_type_number, flags);
56 else
57 mailvar_set (argv[i], value, mailvar_type_string, flags);
58 }
59 else
60 {
61 int dummy = 1;
62 mailvar_set (argv[i], &dummy, mailvar_type_boolean, flags);
63 }
64 }
65 return 0;
66 }
67 return 1;
68 }
69