]> code.citadel.org Git - citadel.git/blobdiff - webcit/webserver.c
* rename dummy function from foo to templatestrings since xgettext will put it into...
[citadel.git] / webcit / webserver.c
index 50754dff40d86851eb17479d577f0de69bd03a11..5aaf5992fbe9675a7b52f76de2b24b7cab27b0dd 100644 (file)
@@ -253,8 +253,9 @@ int client_read_to(int *sock, StrBuf *Target, StrBuf *Buf, int bytes, int timeou
  */
 void begin_burst(void)
 {
-       if (WC->WBuf == NULL)
+       if (WC->WBuf == NULL) {
                WC->WBuf = NewStrBufPlain(NULL, 32768);
+       }
 }
 
 
@@ -270,13 +271,13 @@ long end_burst(void)
         fd_set wset;
         int fdflags;
 
-#ifdef HAVE_ZLIB
+       //#ifdef HAVE_ZLIB
        /* Perform gzip compression, if enabled and supported by client */
        if (!DisableGzip && (WCC->gzip_ok) && CompressBuffer(WCC->WBuf))
        {
                hprintf("Content-encoding: gzip\r\n");
        }
-#endif /* HAVE_ZLIB */
+       //#endif        /* HAVE_ZLIB */
 
        hprintf("Content-length: %d\r\n\r\n", StrLength(WCC->WBuf));
 
@@ -609,7 +610,10 @@ void spawn_another_worker_thread()
 const char foobuf[32];
 const char *nix(void *vptr) {snprintf(foobuf, 32, "%0x", (long) vptr); return foobuf;}
 #endif 
-extern int analyze_msg;
+extern int dbg_analyze_msg;
+extern int dbg_bactrace_template_errors;
+extern int DumpTemplateI18NStrings;
+extern StrBuf *I18nDump;
 void InitTemplateCache(void);
 extern int LoadTemplates;
 extern void LoadZoneFiles(void);
@@ -638,6 +642,9 @@ int main(int argc, char **argv)
        char *mo = NULL;
 #endif /* ENABLE_NLS */
        char uds_listen_path[PATH_MAX]; /* listen on a unix domain socket? */
+       const char *I18nDumpFile;
+
+       WildFireInitBacktrace(argv[0], 2);
 
        HandlerHash = NewHash(1, NULL);
        PreferenceHooks = NewHash(1, NULL);
@@ -671,9 +678,9 @@ int main(int argc, char **argv)
 
        /* Parse command line */
 #ifdef HAVE_OPENSSL
-       while ((a = getopt(argc, argv, "h:i:p:t:T:x:dD:cfsZ")) != EOF)
+       while ((a = getopt(argc, argv, "h:i:p:t:T:x:dD:G:cfsZ")) != EOF)
 #else
-       while ((a = getopt(argc, argv, "h:i:p:t:T:x:dD:cfZ")) != EOF)
+       while ((a = getopt(argc, argv, "h:i:p:t:T:x:dD:G:cfZ")) != EOF)
 #endif
                switch (a) {
                case 'h':
@@ -712,7 +719,8 @@ int main(int argc, char **argv)
                        break;
                case 'T':
                        LoadTemplates = atoi(optarg);
-                       analyze_msg = (LoadTemplates && 0x2) != 0;
+                       dbg_analyze_msg = (LoadTemplates && (1<<1)) != 0;
+                       dbg_bactrace_template_errors = (LoadTemplates && (1<<2)) != 0;
                        break;
                case 'Z':
                        DisableGzip = 1;
@@ -741,12 +749,17 @@ int main(int argc, char **argv)
                case 's':
                        is_https = 1;
                        break;
+               case 'G':
+                       DumpTemplateI18NStrings = 1;
+                       I18nDump = NewStrBufPlain(HKEY("int templatestrings(void)\n{\n"));
+                       I18nDumpFile = optarg;
+                       break;
                default:
                        fprintf(stderr, "usage: webcit "
                                "[-i ip_addr] [-p http_port] "
                                "[-t tracefile] [-c] [-f] "
                                "[-T Templatedebuglevel] "
-                               "[-d] [-Z] "
+                               "[-d] [-Z] [-G i18ndumpfile] "
 #ifdef HAVE_OPENSSL
                                "[-s] "
 #endif
@@ -761,7 +774,7 @@ int main(int argc, char **argv)
        }
 
        /* daemonize, if we were asked to */
-       if (running_as_daemon) {
+       if (!DumpTemplateI18NStrings && running_as_daemon) {
                start_daemon(pidfile);
        }
        else {
@@ -837,6 +850,18 @@ int main(int argc, char **argv)
        initialize_axdefs();
 
        InitTemplateCache();
+       if (DumpTemplateI18NStrings) {
+               FILE *fd;
+               StrBufAppendBufPlain(I18nDump, HKEY("}\n"), 0);
+               fd = fopen(I18nDumpFile, "w");
+               if (fd == NULL) {
+                       lprintf(1, "unable to open I18N dumpfile [%s]\n", I18nDumpFile);
+                       return -1;
+               }
+               fwrite(ChrPtr(I18nDump), 1, StrLength(I18nDump), fd);
+               fclose(fd);
+               return 0;
+       }
 
        if (!access("static.local/webcit.css", R_OK)) {
                csslocal = NewStrBufPlain(HKEY("<link href=\"static.local/webcit.css\" rel=\"stylesheet\" type=\"text/css\">"));