X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=webcit%2Fsetup.c;h=ebac8d2ca193ba5dae5a07c0cd99456a0a397fbe;hb=ada8144bf852768101effe5657d13c36b1ed1f6f;hp=10ab46113e0ea870e9a1276e4711df5de4a3e4e6;hpb=4020369931fbaa03708026b3dd510a49d145d8b5;p=citadel.git diff --git a/webcit/setup.c b/webcit/setup.c index 10ab46113..ebac8d2ca 100644 --- a/webcit/setup.c +++ b/webcit/setup.c @@ -1,10 +1,7 @@ /* - * $Id$ - * * WebCit setup utility * * (This is basically just an install wizard. It's not required.) - * */ #include "sysdep.h" @@ -21,17 +18,23 @@ char setup_directory[SIZ]; int using_web_installer = 0; char suggested_url[SIZ]; -/* some copies... */ -int lprintf(int loglevel, const char *format, ...){return 0;} +/* 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 StrBufAppendTemplateStr(StrBuf *Target, + WCTemplputParams *TP, + const char *Source, + int FormatTypeIndex){} +void RegisterHeaderHandler(const char *Name, long Len, Header_Evaluator F){} pthread_key_t MyConKey; -#include "wc_gettext.h" - #ifdef ENABLE_NLS #ifdef HAVE_USELOCALE @@ -162,7 +165,7 @@ int yesno(char *question, int default_value) { int i = 0; int answer = 0; - char buf[SIZ]; + char buf[SIZ] = ""; switch (setup_type) { @@ -172,14 +175,17 @@ int yesno(char *question, int default_value) 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; @@ -206,7 +212,7 @@ int yesno(char *question, int default_value) void set_value(char *prompt, char str[]) { - char buf[SIZ]; + char buf[SIZ] = ""; char dialog_result[PATH_MAX]; char setupmsg[SIZ]; FILE *fp; @@ -219,12 +225,12 @@ void set_value(char *prompt, char str[]) 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", @@ -235,9 +241,10 @@ void set_value(char *prompt, char str[]) 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); @@ -248,9 +255,10 @@ void set_value(char *prompt, char str[]) } - +extern const char *AvailLang[]; int GetLocalePrefs(void) { + int nLocales; StrBuf *Buf; char buf[SIZ]; char dialog_result[PATH_MAX]; @@ -258,6 +266,9 @@ int GetLocalePrefs(void) int i = 0; int offs = 0; + nLocales = 0; + while (!IsEmptyStr(AvailLang[nLocales])) + nLocales++; Buf = NewStrBuf(); @@ -266,7 +277,7 @@ int GetLocalePrefs(void) StrBufAppendBufPlain(Buf, HKEY(" 0 Let the user select it at the login prompt (default)\n"), 0); offs ++; #endif - for (i = 0; i < NUM_LANGS; i++) { + for (i = 0; i < nLocales; i++) { StrBufAppendPrintf(Buf, " %ld: %s\n", i + offs, AvailLang[i]); } @@ -277,8 +288,8 @@ int GetLocalePrefs(void) 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"); - fgets(buf, sizeof buf, stdin); - return atoi(buf); + if (fgets(buf, sizeof buf, stdin)) + return atoi(buf); break; case UI_DIALOG: @@ -292,9 +303,10 @@ int GetLocalePrefs(void) fp = fopen(dialog_result, "r"); if (fp != NULL) { char *str = &buf[0]; - 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); @@ -316,7 +328,7 @@ void important_message(char *title, char *msgtext) 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: @@ -423,7 +435,7 @@ void install_init_scripts(void) 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); @@ -432,8 +444,8 @@ void install_init_scripts(void) /* 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; @@ -491,20 +503,20 @@ void install_init_scripts(void) /* 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 @@ -515,7 +527,7 @@ void install_init_scripts(void) } 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"); @@ -525,9 +537,9 @@ void install_init_scripts(void) 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); } } @@ -535,7 +547,10 @@ void install_init_scripts(void) 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 @@ -550,11 +565,11 @@ void install_init_scripts(void) #ifdef HAVE_USELOCALE fprintf(fp, "unset LANG\n"); #else - fprintf(fp, "export LANG=c\n"); + fprintf(fp, "export WEBCIT_LANG=c\n"); #endif } else { - fprintf(fp, "export LANG=%s\n", AvailLang[localechoice - localeoffset]); + fprintf(fp, "export WEBCIT_LANG=%s\n", AvailLang[localechoice - localeoffset]); } #else @@ -651,6 +666,7 @@ int main(int argc, char *argv[]) int a; char aaa[256]; int info_only = 0; + strcpy(suggested_url, "http://:/"); /* set an invalid setup type */