]> git.ipfire.org Git - people/teissler/ipfire-2.x.git/blame - src/install+setup/setup/domainname.c
Setup weiter ausgebaut.
[people/teissler/ipfire-2.x.git] / src / install+setup / setup / domainname.c
CommitLineData
cd1a2927
MT
1/* IPCop setup program.\r
2 *\r
3 * This program is distributed under the terms of the GNU General Public\r
4 * Licence. See the file COPYING for details.\r
5 *\r
6 * $Id: domainname.c\r
7 * \r
8 */\r
9 \r
10#include "setup.h"\r
11 \r
12extern FILE *flog;\r
13extern char *mylog;\r
14\r
15extern char **ctr;\r
16\r
17extern int automode;\r
18\r
19int handledomainname(void)\r
20{\r
21 char domainname[STRING_SIZE] = "localdomain";\r
22 struct keyvalue *kv = initkeyvalues();\r
23 char *values[] = { domainname, NULL }; /* pointers for the values. */\r
24 struct newtWinEntry entries[] =\r
25 { { "", &values[0], 0,}, { NULL, NULL, 0 } };\r
26 int rc;\r
27 int result;\r
28 \r
29 if (!(readkeyvalues(kv, CONFIG_ROOT "/main/settings")))\r
30 {\r
31 freekeyvalues(kv);\r
32 errorbox(ctr[TR_UNABLE_TO_OPEN_SETTINGS_FILE]);\r
33 return 0;\r
34 } \r
35 \r
36 findkey(kv, "DOMAINNAME", domainname);\r
37 \r
38 for (;;)\r
39 { \r
40 rc = newtWinEntries(ctr[TR_DOMAINNAME], ctr[TR_ENTER_DOMAINNAME],\r
41 50, 5, 5, 40, entries, ctr[TR_OK], ctr[TR_CANCEL], NULL); \r
42 \r
43 if (rc == 1)\r
44 {\r
45 strcpy(domainname, values[0]);\r
46 if (!(strlen(domainname)))\r
47 errorbox(ctr[TR_DOMAINNAME_CANNOT_BE_EMPTY]);\r
48 else if (strchr(domainname, ' '))\r
49 errorbox(ctr[TR_DOMAINNAME_CANNOT_CONTAIN_SPACES]);\r
50 else if (strlen(domainname) != strspn(domainname,\r
51 "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-."))\r
52 errorbox(ctr[TR_DOMAINNAME_NOT_VALID_CHARS]);\r
53 else\r
54 {\r
55 replacekeyvalue(kv, "DOMAINNAME", domainname);\r
56 writekeyvalues(kv, CONFIG_ROOT "/main/settings");\r
57 writehostsfiles();\r
58 result = 1;\r
59 break;\r
60 }\r
61 }\r
62 else\r
63 {\r
64 result = 0;\r
65 break;\r
66 }\r
67 }\r
68 free(values[0]);\r
69 freekeyvalues(kv);\r
70 \r
71 return result;\r
72} \r