apr_file_t *log_fd;
char *condition_var;
#ifdef BUFFERED_LOGS
- int outcnt;
+ apr_ssize_t outcnt;
char outbuf[LOG_BUFSIZE];
#endif
} config_log_state;
static void flush_log(config_log_state *cls)
{
if (cls->outcnt && cls->log_fd != NULL) {
- apr_write(cls->log_fd, cls->outbuf, cls->outcnt);
+ apr_write(cls->log_fd, cls->outbuf, &cls->outcnt);
cls->outcnt = 0;
}
}
flush_log(cls);
}
if (len >= LOG_BUFSIZE) {
+ apr_ssize_t w;
+
str = apr_palloc(r->pool, len + 1);
for (i = 0, s = str; i < format->nelts; ++i) {
memcpy(s, strs[i], strl[i]);
s += strl[i];
}
- apr_write(cls->log_fd, str, len);
+ w = len;
+ apr_write(cls->log_fd, str, &w);
}
else {
for (i = 0, s = &cls->outbuf[cls->outcnt]; i < format->nelts; ++i) {
return NULL;
}
-static void init_config_log(apr_pool_t *pc, apr_pool_t *p, apr_pool_t *pt, server_rec *s)
-{
- /* First, do "physical" server, which gets default log fd and format
- * for the virtual servers, if they don't override...
- */
-
- open_multi_logs(s, p);
-
- /* Then, virtual servers */
-
- for (s = s->next; s; s = s->next) {
- open_multi_logs(s, p);
- }
-#ifdef BUFFERED_LOGS
- /* Now register the last buffer flush with the cleanup engine */
- apr_register_cleanup(p , s, flush_all_logs, flush_all_logs);
-#endif
-}
-
#ifdef BUFFERED_LOGS
-static void flush_all_logs(server_rec *s)
+static apr_status_t flush_all_logs(void *data)
{
+ server_rec *s = data;
multi_log_state *mls;
apr_array_header_t *log_list;
config_log_state *clsarray;
}
}
}
+ return APR_SUCCESS;
}
#endif
+static void init_config_log(apr_pool_t *pc, apr_pool_t *p, apr_pool_t *pt, server_rec *s)
+{
+ /* First, do "physical" server, which gets default log fd and format
+ * for the virtual servers, if they don't override...
+ */
+
+ open_multi_logs(s, p);
+
+ /* Then, virtual servers */
+
+ for (s = s->next; s; s = s->next) {
+ open_multi_logs(s, p);
+ }
+#ifdef BUFFERED_LOGS
+ /* Now register the last buffer flush with the cleanup engine */
+ apr_register_cleanup(p, s, flush_all_logs, flush_all_logs);
+#endif
+}
+
static void register_hooks(void)
{
ap_hook_open_logs(init_config_log,NULL,NULL,AP_HOOK_MIDDLE);