/*
- * $Id$
- *
* WebCit setup utility
*
* (This is basically just an install wizard. It's not required.)
- *
*/
#include "sysdep.h"
int using_web_installer = 0;
char suggested_url[SIZ];
+/* some copies...
+int syslog(int loglevel, const char *format, ...){return 0;} */
+void wc_printf(const char *format,...){}
+
+void RegisterNS(const char *NSName, long len,
+ int nMinArgs,
+ int nMaxArgs,
+ WCHandlerFunc HandlerFunc,
+ WCPreevalFunc PreEvalFunc,
+ int ContextRequired){}
+void RegisterHeaderHandler(const char *Name, long Len, Header_Evaluator F){}
+pthread_key_t MyConKey;
+
+#ifdef ENABLE_NLS
+
+#ifdef HAVE_USELOCALE
+int localeoffset = 1;
+#else
+int localeoffset = 0;
+#endif
+
+#endif
/*
* Delete an entry from /etc/inittab
*/
{
int i = 0;
int answer = 0;
- char buf[SIZ];
+ char buf[SIZ] = "";
switch (setup_type) {
question,
( default_value ? "Yes" : "No" )
);
- fgets(buf, sizeof buf, stdin);
- answer = tolower(buf[0]);
- if ((buf[0]==0) || (buf[0]==13) || (buf[0]==10))
- answer = default_value;
- else if (answer == 'y')
- answer = 1;
- else if (answer == 'n')
- answer = 0;
+ if (fgets(buf, sizeof buf, stdin))
+ {
+ answer = tolower(buf[0]);
+ if ((buf[0]==0) || (buf[0]==13) || (buf[0]==10))
+ answer = default_value;
+ else if (answer == 'y')
+ answer = 1;
+ else if (answer == 'n')
+ answer = 0;
+ }
+
} while ((answer < 0) || (answer > 1));
break;
void set_value(char *prompt, char str[])
{
- char buf[SIZ];
+ char buf[SIZ] = "";
char dialog_result[PATH_MAX];
char setupmsg[SIZ];
FILE *fp;
printf("\n%s\n", prompt);
printf("This is currently set to:\n%s\n", str);
printf("Enter new value or press return to leave unchanged:\n");
- fgets(buf, sizeof buf, stdin);
- buf[strlen(buf) - 1] = 0;
+ if (fgets(buf, sizeof buf, stdin)) {
+ buf[strlen(buf) - 1] = 0;
+ }
if (strlen(buf) != 0)
strcpy(str, buf);
break;
-
case UI_DIALOG:
CtdlMakeTempFileName(dialog_result, sizeof dialog_result);
sprintf(buf, "exec %s --inputbox '%s' 19 72 '%s' 2>%s",
system(buf);
fp = fopen(dialog_result, "r");
if (fp != NULL) {
- fgets(str, sizeof buf, fp);
- if (str[strlen(str)-1] == 10) {
- str[strlen(str)-1] = 0;
+ if (fgets(str, sizeof buf, fp)){
+ if (str[strlen(str)-1] == 10) {
+ str[strlen(str)-1] = 0;
+ }
}
fclose(fp);
unlink(dialog_result);
}
+extern const char *AvailLang[];
+int GetLocalePrefs(void)
+{
+ int nLocales;
+ StrBuf *Buf;
+ char buf[SIZ];
+ char dialog_result[PATH_MAX];
+ FILE *fp;
+ int i = 0;
+ int offs = 0;
+
+ nLocales = 0;
+ while (!IsEmptyStr(AvailLang[nLocales]))
+ nLocales++;
+
+ Buf = NewStrBuf();
+
+ StrBufAppendBufPlain(Buf, HKEY("Select the locale webcit should use : \n"), 0);
+#ifdef HAVE_USELOCALE
+ StrBufAppendBufPlain(Buf, HKEY(" 0 Let the user select it at the login prompt (default)\n"), 0);
+ offs ++;
+#endif
+ for (i = 0; i < nLocales; i++) {
+ StrBufAppendPrintf(Buf, " %ld: %s\n", i + offs, AvailLang[i]);
+
+ }
+
+ switch (setup_type) {
+ case UI_TEXT:
+ title("WebCit setup");
+ printf("\n%s\n", ChrPtr(Buf));
+ printf("This is currently set to:\n%ld\n", 0L);
+ printf("Enter new value or press return to leave unchanged:\n");
+ if (fgets(buf, sizeof buf, stdin))
+ return atoi(buf);
+ break;
+
+ case UI_DIALOG:
+ CtdlMakeTempFileName(dialog_result, sizeof dialog_result);
+ sprintf(buf, "exec %s --inputbox '%s' 19 72 '%ld' 2>%s",
+ getenv("CTDL_DIALOG"),
+ ChrPtr(Buf),
+ 0L,
+ dialog_result);
+ system(buf);
+ fp = fopen(dialog_result, "r");
+ if (fp != NULL) {
+ char *str = &buf[0];
+ if (fgets(str, sizeof buf, fp)){
+ if (str[strlen(str)-1] == 10) {
+ str[strlen(str)-1] = 0;
+ }
+ }
+ fclose(fp);
+ unlink(dialog_result);
+ return atoi(buf);
+ }
+ break;
+
+ }
+ return 0;
+}
+
void important_message(char *title, char *msgtext)
{
char buf[SIZ];
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
printf(" %s \n\n%s\n\n", title, msgtext);
printf("Press return to continue...");
- fgets(buf, sizeof buf, stdin);
+ if (fgets(buf, sizeof buf, stdin));
break;
case UI_DIALOG:
*/
void install_init_scripts(void)
{
+#ifdef ENABLE_NLS
+ int localechoice;
+#endif
char question[1024];
char buf[256];
char http_port[128];
fp = fopen(initfile, "r");
if (fp != NULL) {
if (yesno("WebCit already appears to be configured to start at boot.\n"
- "Would you like to keep your boot configuration as is?\n", 1) == 1) {
+ "Would you like to keep your boot configuration as is?\n", 1) == 1) {
return;
}
fclose(fp);
/* Otherwise, prompt the user to create an entry. */
snprintf(question, sizeof question,
- "Would you like to automatically start WebCit at boot?"
- );
+ "Would you like to automatically start WebCit at boot?"
+ );
if (yesno(question, 1) == 0)
return;
+
+#ifdef ENABLE_NLS
+
+ localechoice = GetLocalePrefs();
+
+#endif
/* Defaults */
sprintf(http_port, "2000");
#ifdef HAVE_OPENSSL
/* Now ask for the port numbers */
snprintf(question, sizeof question,
- "On which port do you want WebCit to listen for HTTP "
- "requests?\n\nYou can use the standard port (80) if you are "
- "not running another\nweb server (such as Apache), otherwise "
- "select another port.");
+ "On which port do you want WebCit to listen for HTTP "
+ "requests?\n\nYou can use the standard port (80) if you are "
+ "not running another\nweb server (such as Apache), otherwise "
+ "select another port.");
set_value(question, http_port);
uname(&my_utsname);
sprintf(suggested_url, "http://%s:%s/", my_utsname.nodename, http_port);
#ifdef HAVE_OPENSSL
snprintf(question, sizeof question,
- "On which port do you want WebCit to listen for HTTPS "
- "requests?\n\nYou can use the standard port (443) if you are "
- "not running another\nweb server (such as Apache), otherwise "
- "select another port.");
+ "On which port do you want WebCit to listen for HTTPS "
+ "requests?\n\nYou can use the standard port (443) if you are "
+ "not running another\nweb server (such as Apache), otherwise "
+ "select another port.");
set_value(question, https_port);
#endif
}
else {
snprintf(question, sizeof question,
- "Is the Citadel service running on the same host as WebCit?");
+ "Is the Citadel service running on the same host as WebCit?");
if (yesno(question, ((!strcasecmp(hostname, "uds")) ? 1 : 0))) {
strcpy(hostname, "uds");
if (atoi(portname) != 0) strcpy(portname, "/usr/local/citadel");
if (!strcasecmp(hostname, "uds")) strcpy(hostname, "127.0.0.1");
if (atoi(portname) == 0) strcpy(portname, "504");
set_value("Enter the host name or IP address of your "
- "Citadel server.", hostname);
+ "Citadel server.", hostname);
set_value("Enter the port number on which Citadel is "
- "running (usually 504)", portname);
+ "running (usually 504)", portname);
}
}
fp = fopen(initfile, "w");
fprintf(fp, "#!/bin/sh\n"
- "\n"
+ "\n"
+ "# uncomment this to create coredumps as described in\n"
+ "# http://www.citadel.org/doku.php/faq:mastering_your_os:gdb#how.do.i.make.my.system.produce.core-files\n"
+ "# ulimit -c unlimited\n"
"WEBCIT_DIR=%s\n", setup_directory);
fprintf(fp, "HTTP_PORT=%s\n", http_port);
#ifdef HAVE_OPENSSL
#endif
fprintf(fp, "CTDL_HOSTNAME=%s\n", hostname);
fprintf(fp, "CTDL_PORTNAME=%s\n", portname);
+
+#ifdef ENABLE_NLS
+
+ if (localechoice == 0) {
+#ifdef HAVE_USELOCALE
+ fprintf(fp, "unset LANG\n");
+#else
+ fprintf(fp, "export WEBCIT_LANG=c\n");
+#endif
+ }
+ else {
+ fprintf(fp, "export WEBCIT_LANG=%s\n", AvailLang[localechoice - localeoffset]);
+
+ }
+#else
+ fprintf(fp, "# your system doesn't support locales\n");
+#endif
fprintf(fp, "\n"
"\n"
"case \"$1\" in\n"
int a;
char aaa[256];
int info_only = 0;
+
strcpy(suggested_url, "http://<your_host_name>:<port>/");
/* set an invalid setup type */