void SetTitles(void)
{
- char *locale;
int have_run_dir;
#ifndef HAVE_RUN_DIR
have_run_dir = 1;
have_run_dir = 0;
#endif
- locale = setlocale(LC_MESSAGES, getenv("LANG"));
+ setlocale(LC_MESSAGES, getenv("LANG"));
bindtextdomain("citadel-setup", LOCALEDIR"/locale");
textdomain("citadel-setup");
setup_text[eIP_ADDR] = _(
"Please specify the IP address which the server should be listening to. "
"You can name a specific IPv4 or IPv6 address, or you can specify\n"
-"'*' for 'any address', '::' for 'any IPv6 address', or '0.0.0.0'\n"
-"for 'any IPv4 address'. If you leave this blank, Citadel will\n"
+"\"*\" for \"any address\", \"::\" for \"any IPv6 address\", or \"0.0.0.0\"\n"
+"for \"any IPv4 address\". If you leave this blank, Citadel will\n"
"listen on all addresses. "
"This can usually be left to the default unless multiple instances of Citadel "
"are running on the same computer.");
struct config config;
-
-struct config config;
int direction;
getenv("CTDL_DIALOG"),
msgtext);
rv = system(buf);
+ if (rv != 0)
+ fprintf(stderr, _("failed to run the dialog command\n"));
break;
case UI_SILENT:
fprintf(stderr, "%s\n", msgtext);
while (fgets(buf, sizeof buf, infp) != NULL) {
if (strstr(buf, looking_for) != NULL) {
rv = fwrite("#", 1, 1, outfp);
+ if (rv == -1)
+ {
+ display_error("%s %s\n",
+ _("failed to modify inittab"),
+ strerror(errno));
+ }
++changes_made;
}
rv = fwrite(buf, strlen(buf), 1, outfp);
+ if (rv == -1)
+ {
+ display_error("%s %s\n",
+ _("failed to modify inittab"),
+ strerror(errno));
+ }
}
fclose(infp);
/* Set up the run levels. */
rv = system("/bin/rm -f /etc/rc?.d/[SK]??citadel 2>/dev/null");
+ if (rv != 0)
+ display_error(_("failed to remove system V init links \n"));
+
snprintf(command, sizeof(command), "for x in 2 3 4 5 ; do [ -d /etc/rc$x.d ] && ln -s %s /etc/rc$x.d/S79citadel ; done 2>/dev/null", initfile);
rv = system(command);
+ if (rv != 0)
+ display_error(_("failed to set system V init links \n"));
+
snprintf(command, sizeof(command),"for x in 0 6 S; do [ -d /etc/rc$x.d ] && ln -s %s /etc/rc$x.d/K30citadel ; done 2>/dev/null", initfile);
rv = system(command);
-
+ if (rv != 0)
+ display_error(_("failed to set system V init links \n"));
}
/* Now try to restart the service */
rv = system("/etc/init.d/xinetd restart >/dev/null 2>&1");
+ if (rv != 0)
+ display_error(_("failed to restart xinetd.\n"));
}
sprintf(buf, "for x in /etc/rc*.d/S*%s; do mv $x `echo $x |sed s/S/K/g`; done >/dev/null 2>&1", mta);
rv = system(buf);
+ if (rv != 0)
+ display_error("%s %s.\n", _("failed to disable other mta"), mta);
+
sprintf(buf, "/etc/init.d/%s stop >/dev/null 2>&1", mta);
rv = system(buf);
+ if (rv != 0)
+ display_error(" %s.\n", _("failed to disable other mta"), mta);
}
const char *other_mtas[] = {
Target,
dialog_result);
rv = system(buf);
+ if (rv != 0)
+ fprintf(stderr, "failed to run Dialog.\n");
+
fp = fopen(dialog_result, "r");
if (fp != NULL) {
if (fgets(Target, sizeof buf, fp)) {
if (fp == NULL) {
display_error("%s citadel.config [%s][%s]\n", _("setup: cannot open"), file_citadel_config, strerror(errno));
cleanup(1);
+ return;
}
rv = fwrite((char *) &config, sizeof(struct config), 1, fp);
+
+ if (rv == -1)
+ display_error("%s citadel.config [%s][%s]\n", _("setup: cannot write"), file_citadel_config, strerror(errno));
+
fclose(fp);
}
{
int rv;
rv = system("exec /bin/rm -fr ./rooms ./chatpipes ./expressmsgs ./sessions 2>/dev/null");
+ if (rv != 0)
+ fprintf(stderr, _("failed to remove old style directories.\n"));
unlink("citadel.log");
unlink("weekly");
}
char buf_nc[256];
char question[512];
int i;
- int changed = 0;
int file_changed = 0;
char new_filename[64];
int rv;
}
while (fgets(buf, sizeof buf, fp_read) != NULL) {
- changed = 0;
strcpy(buf_nc, buf);
for (i=0; i<strlen(buf_nc); ++i) {
if (buf_nc[i] == '#') {
if (!strncasecmp(&buf_nc[i], "db", 2)) {
if (i > 0) {
if ((isspace(buf_nc[i+2])) || (buf_nc[i+2]==0)) {
- changed = 1;
file_changed = 1;
strcpy(&buf_nc[i], &buf_nc[i+2]);
strcpy(&buf[i], &buf[i+2]);
if (yesno(question, 1)) {
sprintf(buf, "/bin/mv -f %s %s", new_filename, NSSCONF);
rv = system(buf);
+ if (rv != 0)
+ fprintf(stderr, "failed to edit %s.\n", NSSCONF);
+
chmod(NSSCONF, 0644);
}
unlink(new_filename);
if (!access("/etc/init.d/citadel", X_OK)) {
rv = system("/etc/init.d/citadel start");
+ if (rv != 0)
+ fprintf(stderr, "failed to call our initscript.");
sleep(3);
}
}
}
+
+
+#define GetDefaultVALINT(CFGNAME, DEFL) GetDefaultValInt(&config.CFGNAME, "CITADEL_"#CFGNAME, DEFL)
+void GetDefaultValInt(int *WhereTo, const char *VarName, int DefVal)
+{
+ const char *ch;
+ if (*WhereTo == 0) *WhereTo = DefVal;
+
+ if ((setup_type == UI_SILENT) &&
+ (ch = getenv(VarName), ch != NULL))
+ {
+ *WhereTo = atoi(ch);
+ }
+}
+#define GetDefaultVALCHAR(CFGNAME, DEFL) GetDefaultValChar(&config.CFGNAME, "CITADEL_"#CFGNAME, DEFL)
+void GetDefaultValChar(char *WhereTo, const char *VarName, char DefVal)
+{
+ const char *ch;
+ if (*WhereTo == 0) *WhereTo = DefVal;
+
+ if ((setup_type == UI_SILENT) &&
+ (ch = getenv(VarName), ch != NULL))
+ {
+ *WhereTo = atoi(ch);
+ }
+}
+#define GetDefaultVALSTR(CFGNAME, DEFL) GetDefaultValStr(&config.CFGNAME[0], sizeof(config.CFGNAME), "CITADEL_"#CFGNAME, DEFL)
+void GetDefaultValStr(char *WhereTo, size_t nMax, const char *VarName, const char *DefVal)
+{
+ const char *ch;
+ if (*WhereTo == '\0')
+ safestrncpy(WhereTo, DefVal, nMax);
+
+ if ((setup_type == UI_SILENT) &&
+ (ch = getenv(VarName), ch != NULL))
+ {
+ safestrncpy(WhereTo, ch, nMax);
+ }
+}
+
+
void set_default_values(void)
{
struct passwd *pw;
uname(&my_utsname);
/* set some sample/default values in place of blanks... */
- if (IsEmptyStr(config.c_nodename))
- safestrncpy(config.c_nodename, my_utsname.nodename,
- sizeof config.c_nodename);
+ GetDefaultVALSTR(c_nodename, my_utsname.nodename);
strtok(config.c_nodename, ".");
if (IsEmptyStr(config.c_fqdn) ) {
if ((he = gethostbyname(my_utsname.nodename)) != NULL) {
safestrncpy(config.c_fqdn, my_utsname.nodename, sizeof config.c_fqdn);
}
}
- if (IsEmptyStr(config.c_humannode)) {
- strcpy(config.c_humannode, _("My System"));
- }
- if (IsEmptyStr(config.c_phonenum)) {
- strcpy(config.c_phonenum, _("US 800 555 1212"));
- }
- if (config.c_initax == 0) {
- config.c_initax = 4;
- }
- if (IsEmptyStr(config.c_moreprompt)) strcpy(config.c_moreprompt, "<more>");
- if (IsEmptyStr(config.c_twitroom)) strcpy(config.c_twitroom, "Trashcan");
- if (IsEmptyStr(config.c_baseroom)) strcpy(config.c_baseroom, BASEROOM);
- if (IsEmptyStr(config.c_aideroom)) strcpy(config.c_aideroom, "Aide");
- if (config.c_port_number == 0) {
- config.c_port_number = 504;
- }
- if (config.c_sleeping == 0) {
- config.c_sleeping = 900;
- }
+ GetDefaultVALSTR(c_humannode, _("My System"));
+ GetDefaultVALSTR(c_phonenum, _("US 800 555 1212"));
+
+ GetDefaultVALCHAR(c_initax, 4);
+
+ GetDefaultVALSTR(c_moreprompt, "<more>");
+ GetDefaultVALSTR(c_twitroom, "Trashcan");
+ GetDefaultVALSTR(c_baseroom, BASEROOM);
+ GetDefaultVALSTR(c_aideroom, "Aide");
+ GetDefaultVALINT(c_port_number, 504);
+
+ GetDefaultVALINT(c_sleeping, 900);
+
if (config.c_ctdluid == 0) {
pw = getpwnam("citadel");
if (pw != NULL) {
/*
* Default port numbers for various services
*/
- if (config.c_smtp_port == 0) config.c_smtp_port = 25;
- if (config.c_pop3_port == 0) config.c_pop3_port = 110;
- if (config.c_imap_port == 0) config.c_imap_port = 143;
- if (config.c_msa_port == 0) config.c_msa_port = 587;
- if (config.c_smtps_port == 0) config.c_smtps_port = 465;
- if (config.c_pop3s_port == 0) config.c_pop3s_port = 995;
- if (config.c_imaps_port == 0) config.c_imaps_port = 993;
- if (config.c_pftcpdict_port == 0) config.c_pftcpdict_port = -1;
- if (config.c_managesieve_port == 0) config.c_managesieve_port = 2020;
- if (config.c_xmpp_c2s_port == 0) config.c_xmpp_c2s_port = 5222;
- if (config.c_xmpp_s2s_port == 0) config.c_xmpp_s2s_port = 5269;
+ GetDefaultVALINT(c_smtp_port, 25);
+ GetDefaultVALINT(c_pop3_port, 110);
+ GetDefaultVALINT(c_imap_port, 143);
+ GetDefaultVALINT(c_msa_port, 587);
+ GetDefaultVALINT(c_smtps_port, 465);
+ GetDefaultVALINT(c_pop3s_port, 995);
+ GetDefaultVALINT(c_imaps_port, 993);
+ GetDefaultVALINT(c_pftcpdict_port, -1);
+ GetDefaultVALINT(c_managesieve_port, 2020);
+ GetDefaultVALINT(c_xmpp_c2s_port, 5222);
+ GetDefaultVALINT(c_xmpp_s2s_port, 5269);
}
if (fp == NULL) {
display_error("%s citadel.config [%s][%s]\n", _("setup: cannot open"), file_citadel_config, strerror(errno));
cleanup(errno);
+ return;
}
rv = fread((char *) &config, sizeof(struct config), 1, fp);
+ if (rv == -1)
+ display_error("%s citadel.config [%s][%s]\n", _("setup: cannot write"), file_citadel_config, strerror(errno));
fclose(fp);
}
/* Try to stop Citadel if we can */
if (!access("/etc/init.d/citadel", X_OK)) {
rv = system("/etc/init.d/citadel stop");
+ if (rv != 0)
+ fprintf(stderr, _("failed to stop us using the initscript.\n"));
}
/* Make sure Citadel is not running. */