--- /dev/null
+/* IPCop setup program.
+ *
+ * This program is distributed under the terms of the GNU General Public
+ * Licence. See the file COPYING for details.
+ *
+ * $Id: domainname.c
+ *
+ */
+
+#include "setup.h"
+
+extern FILE *flog;
+extern char *mylog;
+
+extern char **ctr;
+
+extern int automode;
+
+int handledomainname(void)
+{
+ char domainname[STRING_SIZE] = "localdomain";
+ struct keyvalue *kv = initkeyvalues();
+ char *values[] = { domainname, NULL }; /* pointers for the values. */
+ struct newtWinEntry entries[] =
+ { { "", &values[0], 0,}, { NULL, NULL, 0 } };
+ int rc;
+ int result;
+
+ if (!(readkeyvalues(kv, CONFIG_ROOT "/main/settings")))
+ {
+ freekeyvalues(kv);
+ errorbox(ctr[TR_UNABLE_TO_OPEN_SETTINGS_FILE]);
+ return 0;
+ }
+
+ findkey(kv, "DOMAINNAME", domainname);
+
+ for (;;)
+ {
+ rc = newtWinEntries(ctr[TR_DOMAINNAME], ctr[TR_ENTER_DOMAINNAME],
+ 50, 5, 5, 40, entries, ctr[TR_OK], ctr[TR_CANCEL], NULL);
+
+ if (rc == 1)
+ {
+ strcpy(domainname, values[0]);
+ if (!(strlen(domainname)))
+ errorbox(ctr[TR_DOMAINNAME_CANNOT_BE_EMPTY]);
+ else if (strchr(domainname, ' '))
+ errorbox(ctr[TR_DOMAINNAME_CANNOT_CONTAIN_SPACES]);
+ else if (strlen(domainname) != strspn(domainname,
+ "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-."))
+ errorbox(ctr[TR_DOMAINNAME_NOT_VALID_CHARS]);
+ else
+ {
+ replacekeyvalue(kv, "DOMAINNAME", domainname);
+ writekeyvalues(kv, CONFIG_ROOT "/main/settings");
+ writehostsfiles();
+ result = 1;
+ break;
+ }
+ }
+ else
+ {
+ result = 0;
+ break;
+ }
+ }
+ free(values[0]);
+ freekeyvalues(kv);
+
+ return result;
+}