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