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));
}
-int ClientGetLine(int *sock, StrBuf *Target, StrBuf *CLineBuf)
+int ClientGetLine(int *sock, StrBuf *Target, StrBuf *CLineBuf, const char **Pos)
{
const char *Error, *pch, *pchs;
int rlen, len, retval = 0;
+#ifdef HAVE_OPENSSL
if (is_https) {
int ntries = 0;
if (StrLength(CLineBuf) > 0) {
return -1;
}
else
- return StrBufTCP_read_buffered_line(Target,
- CLineBuf,
- sock,
- 5,
- 1,
- &Error);
+#endif
+ return StrBufTCP_read_buffered_line_fast(Target,
+ CLineBuf,
+ Pos,
+ sock,
+ 5,
+ 1,
+ &Error);
}
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);
char *mo = NULL;
#endif /* ENABLE_NLS */
char uds_listen_path[PATH_MAX]; /* listen on a unix domain socket? */
+ const char *I18nDumpFile = NULL;
+
+ WildFireInitBacktrace(argv[0], 2);
HandlerHash = NewHash(1, NULL);
PreferenceHooks = NewHash(1, NULL);
/* 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':
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;
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
}
/* daemonize, if we were asked to */
- if (running_as_daemon) {
+ if (!DumpTemplateI18NStrings && running_as_daemon) {
start_daemon(pidfile);
}
else {
#ifdef ENABLE_NLS
initialize_locales();
+
locale = setlocale(LC_ALL, "");
mo = malloc(strlen(webcitdir) + 20);
free(mo);
lprintf(9, "Text domain: %s\n", textdomain("webcit"));
lprintf(9, "Text domain Charset: %s\n", bind_textdomain_codeset("webcit","UTF8"));
- preset_locale();
#endif
initialize_axdefs();
InitTemplateCache();
+ if (DumpTemplateI18NStrings) {
+ FILE *fd;
+ StrBufAppendBufPlain(I18nDump, HKEY("}\n"), 0);
+ if (StrLength(I18nDump) < 50) {
+ lprintf(1, "********************************************************************************\n");
+ lprintf(1, "* No strings found in templates! are you shure they're there? *\n");
+ lprintf(1, "********************************************************************************\n");
+ return -1;
+ }
+ fd = fopen(I18nDumpFile, "w");
+ if (fd == NULL) {
+ lprintf(1, "********************************************************************************\n");
+ lprintf(1, "* unable to open I18N dumpfile [%s] *\n", I18nDumpFile);
+ lprintf(1, "********************************************************************************\n");
+ 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\">"));