Lines Matching refs:stream

268 		struct zlog_stream *stream, int flags, size_t capacity, int fd);
273 struct zlog_stream stream; in zlog_msg_ex() local
277 zlog_stream_init_internal(&stream, flags, msg_len + prefix_len, 0); in zlog_msg_ex()
278 zlog_stream_prefix_ex(&stream, function, line); in zlog_msg_ex()
279 zlog_stream_str(&stream, prefix, prefix_len); in zlog_msg_ex()
280 zlog_stream_str(&stream, msg, msg_len); in zlog_msg_ex()
281 zlog_stream_finish(&stream); in zlog_msg_ex()
282 zlog_stream_destroy(&stream); in zlog_msg_ex()
288 static zlog_bool zlog_stream_buf_alloc_ex(struct zlog_stream *stream, size_t needed) /* {{{ */ in zlog_stream_buf_alloc_ex() argument
291 size_t size = stream->buf.size ?: stream->buf_init_size; in zlog_stream_buf_alloc_ex()
292 size = MIN(zlog_limit, MAX((stream->buf.data ? (size << 1) : size), needed)); in zlog_stream_buf_alloc_ex()
293 buf = realloc(stream->buf.data, size); in zlog_stream_buf_alloc_ex()
299 stream->buf.data = buf; in zlog_stream_buf_alloc_ex()
300 stream->buf.size = size; in zlog_stream_buf_alloc_ex()
306 inline static zlog_bool zlog_stream_buf_alloc(struct zlog_stream *stream) /* {{{ */ in zlog_stream_buf_alloc() argument
309 if (stream->buf.data && stream->buf.size >= MIN(zlog_limit, stream->buf_init_size)) { in zlog_stream_buf_alloc()
312 return zlog_stream_buf_alloc_ex(stream, 0); in zlog_stream_buf_alloc()
317 struct zlog_stream *stream, const char *buf, size_t len, in zlog_stream_direct_write_ex() argument
320 if (stream->use_fd) { in zlog_stream_direct_write_ex()
321 zend_quiet_write(stream->fd, buf, len); in zlog_stream_direct_write_ex()
323 zend_quiet_write(stream->fd, append, append_len); in zlog_stream_direct_write_ex()
327 if (stream->use_stderr) { in zlog_stream_direct_write_ex()
339 struct zlog_stream *stream, const char *buf, size_t len) /* {{{ */ in zlog_stream_direct_write() argument
341 return zlog_stream_direct_write_ex(stream, buf, len, NULL, 0); in zlog_stream_direct_write()
346 struct zlog_stream *stream, const char *buf, size_t len) /* {{{ */ in zlog_stream_unbuffered_write() argument
352 if (stream->len == 0) { in zlog_stream_unbuffered_write()
353 stream->len = zlog_stream_prefix_ex(stream, stream->function, stream->line); in zlog_stream_unbuffered_write()
357 reserved_len = stream->len + stream->msg_suffix_len + stream->msg_quote; in zlog_stream_unbuffered_write()
360 if (stream->wrap) { in zlog_stream_unbuffered_write()
370 zlog_stream_direct_write(stream, buf, available_len); in zlog_stream_unbuffered_write()
372 if (stream->msg_quote) { in zlog_stream_unbuffered_write()
373 zlog_stream_direct_write(stream, "\"", 1); in zlog_stream_unbuffered_write()
375 if (stream->msg_suffix) { in zlog_stream_unbuffered_write()
376 zlog_stream_direct_write(stream, stream->msg_suffix, stream->msg_suffix_len); in zlog_stream_unbuffered_write()
378 zlog_stream_direct_write(stream, append, append_len); in zlog_stream_unbuffered_write()
380 stream->len = 0; in zlog_stream_unbuffered_write()
382 stream, buf + available_len, len - available_len); in zlog_stream_unbuffered_write()
390 stream->full = 1; in zlog_stream_unbuffered_write()
396 len = zlog_limit - stream->len - append_len; in zlog_stream_unbuffered_write()
400 written = zlog_stream_direct_write_ex(stream, buf, len, append, append_len); in zlog_stream_unbuffered_write()
404 stream->len += written; in zlog_stream_unbuffered_write()
412 struct zlog_stream *stream, const char *str, size_t str_len) /* {{{ */ in zlog_stream_buf_copy_cstr() argument
414 if (stream->buf.size - stream->len <= str_len && in zlog_stream_buf_copy_cstr()
415 !zlog_stream_buf_alloc_ex(stream, str_len + stream->len)) { in zlog_stream_buf_copy_cstr()
419 memcpy(stream->buf.data + stream->len, str, str_len); in zlog_stream_buf_copy_cstr()
420 stream->len += str_len; in zlog_stream_buf_copy_cstr()
426 static inline ssize_t zlog_stream_buf_copy_char(struct zlog_stream *stream, char c) /* {{{ */ in zlog_stream_buf_copy_char() argument
428 if (stream->buf.size - stream->len < 1 && !zlog_stream_buf_alloc_ex(stream, 1)) { in zlog_stream_buf_copy_char()
432 stream->buf.data[stream->len++] = c; in zlog_stream_buf_copy_char()
438 static ssize_t zlog_stream_buf_flush(struct zlog_stream *stream) /* {{{ */ in zlog_stream_buf_flush() argument
443 if (stream->use_syslog) { in zlog_stream_buf_flush()
444 zlog_stream_buf_copy_char(stream, '\0'); in zlog_stream_buf_flush()
445 php_syslog(syslog_priorities[zlog_level], "%s", stream->buf.data); in zlog_stream_buf_flush()
446 --stream->len; in zlog_stream_buf_flush()
451 external_logger(stream->flags & ZLOG_LEVEL_MASK, in zlog_stream_buf_flush()
452 stream->buf.data + stream->prefix_len, stream->len - stream->prefix_len); in zlog_stream_buf_flush()
454 zlog_stream_buf_copy_char(stream, '\n'); in zlog_stream_buf_flush()
455 written = zlog_stream_direct_write(stream, stream->buf.data, stream->len); in zlog_stream_buf_flush()
456 stream->len = 0; in zlog_stream_buf_flush()
463 struct zlog_stream *stream, const char *str, size_t str_len) /* {{{ */ in zlog_stream_buf_append() argument
468 if (stream->len == 0) { in zlog_stream_buf_append()
469 stream->len = zlog_stream_prefix_ex(stream, stream->function, stream->line); in zlog_stream_buf_append()
473 reserved_len = stream->len + stream->msg_suffix_len + stream->msg_quote; in zlog_stream_buf_append()
482 if (zlog_stream_buf_copy_cstr(stream, str, available_len) < 0) { in zlog_stream_buf_append()
490 if (stream->wrap) { in zlog_stream_buf_append()
491 if (stream->msg_quote) { in zlog_stream_buf_append()
492 zlog_stream_buf_copy_char(stream, '"'); in zlog_stream_buf_append()
494 if (stream->msg_suffix != NULL) { in zlog_stream_buf_append()
495 zlog_stream_buf_copy_cstr(stream, stream->msg_suffix, stream->msg_suffix_len); in zlog_stream_buf_append()
497 zlog_stream_buf_flush(stream); in zlog_stream_buf_append()
498 zlog_stream_prefix_ex(stream, stream->function, stream->line); in zlog_stream_buf_append()
500 stream, str + available_len, str_len - available_len); in zlog_stream_buf_append()
503 stream->len = zlog_truncate_buf(stream->buf.data, stream->len, 0); in zlog_stream_buf_append()
504 stream->full = 1; in zlog_stream_buf_append()
510 struct zlog_stream *stream, int flags, size_t capacity, int fd) /* {{{ */ in zlog_stream_init_internal() argument
516 memset(stream, 0, sizeof(struct zlog_stream)); in zlog_stream_init_internal()
517 stream->flags = flags; in zlog_stream_init_internal()
518 stream->use_syslog = fd == ZLOG_SYSLOG; in zlog_stream_init_internal()
519 stream->use_fd = fd > 0; in zlog_stream_init_internal()
520 stream->use_buffer = zlog_buffering || external_logger != NULL || stream->use_syslog; in zlog_stream_init_internal()
521 stream->buf_init_size = capacity; in zlog_stream_init_internal()
522 stream->use_stderr = fd < 0 || in zlog_stream_init_internal()
527 stream->prefix_buffer = (flags & ZLOG_LEVEL_MASK) >= zlog_level && in zlog_stream_init_internal()
528 (stream->use_fd || stream->use_stderr || stream->use_syslog); in zlog_stream_init_internal()
529 stream->fd = fd > -1 ? fd : STDERR_FILENO; in zlog_stream_init_internal()
533 void zlog_stream_init(struct zlog_stream *stream, int flags) /* {{{ */ in zlog_stream_init() argument
535 zlog_stream_init_internal(stream, flags, 1024, 0); in zlog_stream_init()
539 void zlog_stream_init_ex(struct zlog_stream *stream, int flags, int fd) /* {{{ */ in zlog_stream_init_ex() argument
541 zlog_stream_init_internal(stream, flags, 1024, fd); in zlog_stream_init_ex()
542 stream->wrap = 1; in zlog_stream_init_ex()
546 void zlog_stream_set_decorating(struct zlog_stream *stream, zlog_bool decorate) /* {{{ */ in zlog_stream_set_decorating() argument
549 stream->decorate = 1; in zlog_stream_set_decorating()
551 stream->decorate = 0; in zlog_stream_set_decorating()
552 stream->msg_quote = 0; in zlog_stream_set_decorating()
553 stream->prefix_buffer = 0; in zlog_stream_set_decorating()
558 void zlog_stream_set_wrapping(struct zlog_stream *stream, zlog_bool wrap) /* {{{ */ in zlog_stream_set_wrapping() argument
560 stream->wrap = wrap ? 1 : 0; in zlog_stream_set_wrapping()
564 void zlog_stream_set_is_stdout(struct zlog_stream *stream, zlog_bool is_stdout) /* {{{ */ in zlog_stream_set_is_stdout() argument
566 stream->is_stdout = is_stdout ? 1 : 0; in zlog_stream_set_is_stdout()
570 void zlog_stream_set_child_pid(struct zlog_stream *stream, int child_pid) /* {{{ */ in zlog_stream_set_child_pid() argument
572 stream->child_pid = child_pid; in zlog_stream_set_child_pid()
576 void zlog_stream_set_msg_quoting(struct zlog_stream *stream, zlog_bool quote) /* {{{ */ in zlog_stream_set_msg_quoting() argument
578 stream->msg_quote = quote && stream->decorate ? 1 : 0; in zlog_stream_set_msg_quoting()
582 zlog_bool zlog_stream_set_msg_prefix(struct zlog_stream *stream, const char *fmt, ...) /* {{{ */ in zlog_stream_set_msg_prefix() argument
588 if (!stream->decorate) { in zlog_stream_set_msg_prefix()
596 if (stream->msg_prefix_len < len) { in zlog_stream_set_msg_prefix()
597stream->msg_prefix = stream->msg_prefix_len ? realloc(stream->msg_prefix, len + 1) : malloc(len + … in zlog_stream_set_msg_prefix()
598 if (stream->msg_prefix == NULL) { in zlog_stream_set_msg_prefix()
602 memcpy(stream->msg_prefix, buf, len); in zlog_stream_set_msg_prefix()
603 stream->msg_prefix[len] = 0; in zlog_stream_set_msg_prefix()
604 stream->msg_prefix_len = len; in zlog_stream_set_msg_prefix()
611 struct zlog_stream *stream, const char *suffix, const char *final_suffix) /* {{{ */ in zlog_stream_set_msg_suffix() argument
614 if (!stream->wrap || !stream->decorate) { in zlog_stream_set_msg_suffix()
619 stream->msg_suffix_len = strlen(suffix); in zlog_stream_set_msg_suffix()
620 stream->msg_final_suffix_len = strlen(final_suffix); in zlog_stream_set_msg_suffix()
621 len = stream->msg_suffix_len + stream->msg_final_suffix_len + 2; in zlog_stream_set_msg_suffix()
622 if (stream->msg_suffix != NULL) { in zlog_stream_set_msg_suffix()
623 free(stream->msg_suffix); in zlog_stream_set_msg_suffix()
625 stream->msg_suffix = malloc(len); in zlog_stream_set_msg_suffix()
626 if (stream->msg_suffix == NULL) { in zlog_stream_set_msg_suffix()
629 stream->msg_final_suffix = stream->msg_suffix + stream->msg_suffix_len + 1; in zlog_stream_set_msg_suffix()
630 memcpy(stream->msg_suffix, suffix, stream->msg_suffix_len + 1); in zlog_stream_set_msg_suffix()
631 memcpy(stream->msg_final_suffix, final_suffix, stream->msg_final_suffix_len + 1); in zlog_stream_set_msg_suffix()
635 stream->msg_suffix_len = strlen(suffix); in zlog_stream_set_msg_suffix()
636 len = stream->msg_suffix_len + 1; in zlog_stream_set_msg_suffix()
637 if (stream->msg_suffix != NULL) { in zlog_stream_set_msg_suffix()
638 free(stream->msg_suffix); in zlog_stream_set_msg_suffix()
640 stream->msg_suffix = malloc(len); in zlog_stream_set_msg_suffix()
641 if (stream->msg_suffix == NULL) { in zlog_stream_set_msg_suffix()
644 memcpy(stream->msg_suffix, suffix, len); in zlog_stream_set_msg_suffix()
648 stream->msg_final_suffix_len = strlen(final_suffix); in zlog_stream_set_msg_suffix()
649 len = stream->msg_final_suffix_len + 1; in zlog_stream_set_msg_suffix()
650 if (stream->msg_final_suffix != NULL) { in zlog_stream_set_msg_suffix()
651 free(stream->msg_final_suffix); in zlog_stream_set_msg_suffix()
653 stream->msg_final_suffix = malloc(len); in zlog_stream_set_msg_suffix()
654 if (stream->msg_final_suffix == NULL) { in zlog_stream_set_msg_suffix()
657 memcpy(stream->msg_final_suffix, final_suffix, len); in zlog_stream_set_msg_suffix()
665 ssize_t zlog_stream_prefix_ex(struct zlog_stream *stream, const char *function, int line) /* {{{ */ in zlog_stream_prefix_ex() argument
669 if (!stream->prefix_buffer) { in zlog_stream_prefix_ex()
672 if (stream->wrap && stream->function == NULL) { in zlog_stream_prefix_ex()
673 stream->function = function; in zlog_stream_prefix_ex()
674 stream->line = line; in zlog_stream_prefix_ex()
677 if (stream->use_buffer) { in zlog_stream_prefix_ex()
678 if (!zlog_stream_buf_alloc(stream)) { in zlog_stream_prefix_ex()
682 function, line, stream->flags, in zlog_stream_prefix_ex()
683 stream->buf.data, stream->buf.size, stream->use_syslog); in zlog_stream_prefix_ex()
684 stream->len = stream->prefix_len = len; in zlog_stream_prefix_ex()
685 if (stream->msg_prefix != NULL) { in zlog_stream_prefix_ex()
686 zlog_stream_buf_copy_cstr(stream, stream->msg_prefix, stream->msg_prefix_len); in zlog_stream_prefix_ex()
688 if (stream->msg_quote) { in zlog_stream_prefix_ex()
689 zlog_stream_buf_copy_char(stream, '"'); in zlog_stream_prefix_ex()
691 return stream->len; in zlog_stream_prefix_ex()
695 len = zlog_buf_prefix(function, line, stream->flags, sbuf, 1024, stream->use_syslog); in zlog_stream_prefix_ex()
696 written = zlog_stream_direct_write(stream, sbuf, len); in zlog_stream_prefix_ex()
697 if (stream->msg_prefix != NULL) { in zlog_stream_prefix_ex()
699 stream, stream->msg_prefix, stream->msg_prefix_len); in zlog_stream_prefix_ex()
701 if (stream->msg_quote) { in zlog_stream_prefix_ex()
702 written += zlog_stream_direct_write(stream, "\"", 1); in zlog_stream_prefix_ex()
709 ssize_t zlog_stream_vformat(struct zlog_stream *stream, const char *fmt, va_list args) /* {{{ */ in zlog_stream_vformat() argument
716 return zlog_stream_str(stream, sbuf, len); in zlog_stream_vformat()
720 ssize_t zlog_stream_format(struct zlog_stream *stream, const char *fmt, ...) /* {{{ */ in zlog_stream_format() argument
726 len = zlog_stream_vformat(stream, fmt, args); in zlog_stream_format()
733 ssize_t zlog_stream_str(struct zlog_stream *stream, const char *str, size_t str_len) /* {{{ */ in zlog_stream_str() argument
736 if (str_len == 0 || stream->full) { in zlog_stream_str()
741 if (stream->finished) { in zlog_stream_str()
742 stream->finished = 0; in zlog_stream_str()
743 stream->len = 0; in zlog_stream_str()
744 stream->full = 0; in zlog_stream_str()
747 if (stream->use_buffer) { in zlog_stream_str()
748 return zlog_stream_buf_append(stream, str, str_len); in zlog_stream_str()
751 return zlog_stream_unbuffered_write(stream, str, str_len); in zlog_stream_str()
755 static inline void zlog_stream_finish_buffer_suffix(struct zlog_stream *stream) /* {{{ */ in zlog_stream_finish_buffer_suffix() argument
757 if (stream->msg_quote) { in zlog_stream_finish_buffer_suffix()
758 zlog_stream_buf_copy_char(stream, '"'); in zlog_stream_finish_buffer_suffix()
760 if (stream->msg_suffix != NULL) { in zlog_stream_finish_buffer_suffix()
761 zlog_stream_buf_copy_cstr(stream, stream->msg_suffix, stream->msg_suffix_len); in zlog_stream_finish_buffer_suffix()
763 if (stream->msg_final_suffix != NULL) { in zlog_stream_finish_buffer_suffix()
764 if (stream->len + stream->msg_final_suffix_len >= zlog_limit) { in zlog_stream_finish_buffer_suffix()
765 zlog_bool quoting = stream->msg_quote; in zlog_stream_finish_buffer_suffix()
766 size_t final_suffix_wrap = stream->len + stream->msg_final_suffix_len + 1 - zlog_limit; in zlog_stream_finish_buffer_suffix()
768 stream, stream->msg_final_suffix, in zlog_stream_finish_buffer_suffix()
769 stream->msg_final_suffix_len - final_suffix_wrap); in zlog_stream_finish_buffer_suffix()
770 zlog_stream_buf_copy_char(stream, '\n'); in zlog_stream_finish_buffer_suffix()
771 zlog_stream_buf_flush(stream); in zlog_stream_finish_buffer_suffix()
772 stream->msg_quote = 0; in zlog_stream_finish_buffer_suffix()
773 zlog_stream_prefix_ex(stream, stream->function, stream->line); in zlog_stream_finish_buffer_suffix()
774 stream->msg_quote = quoting; in zlog_stream_finish_buffer_suffix()
776 stream, in zlog_stream_finish_buffer_suffix()
777 stream->msg_final_suffix + (stream->msg_final_suffix_len - final_suffix_wrap), in zlog_stream_finish_buffer_suffix()
779 zlog_stream_buf_copy_char(stream, '\n'); in zlog_stream_finish_buffer_suffix()
782 stream, stream->msg_final_suffix, stream->msg_final_suffix_len); in zlog_stream_finish_buffer_suffix()
788 static inline void zlog_stream_finish_direct_suffix(struct zlog_stream *stream) /* {{{ */ in zlog_stream_finish_direct_suffix() argument
790 if (stream->msg_quote) { in zlog_stream_finish_direct_suffix()
791 zlog_stream_direct_write(stream, "\"", 1); in zlog_stream_finish_direct_suffix()
792 ++stream->len; in zlog_stream_finish_direct_suffix()
794 if (stream->msg_suffix != NULL) { in zlog_stream_finish_direct_suffix()
796 zlog_stream_direct_write(stream, stream->msg_suffix, stream->msg_suffix_len); in zlog_stream_finish_direct_suffix()
797 stream->len += stream->msg_suffix_len; in zlog_stream_finish_direct_suffix()
799 if (stream->msg_final_suffix != NULL) { in zlog_stream_finish_direct_suffix()
800 if (stream->len + stream->msg_final_suffix_len >= zlog_limit) { in zlog_stream_finish_direct_suffix()
801 zlog_bool quoting = stream->msg_quote; in zlog_stream_finish_direct_suffix()
802 size_t final_suffix_wrap = stream->len + stream->msg_final_suffix_len + 1 - zlog_limit; in zlog_stream_finish_direct_suffix()
804 stream, stream->msg_final_suffix, in zlog_stream_finish_direct_suffix()
805 stream->msg_final_suffix_len - final_suffix_wrap, "\n", 1); in zlog_stream_finish_direct_suffix()
806 stream->msg_quote = 0; in zlog_stream_finish_direct_suffix()
807 zlog_stream_prefix_ex(stream, stream->function, stream->line); in zlog_stream_finish_direct_suffix()
808 stream->msg_quote = quoting; in zlog_stream_finish_direct_suffix()
810 stream, in zlog_stream_finish_direct_suffix()
811 stream->msg_final_suffix + (stream->msg_final_suffix_len - final_suffix_wrap), in zlog_stream_finish_direct_suffix()
815 stream, stream->msg_final_suffix, stream->msg_final_suffix_len, "\n", 1); in zlog_stream_finish_direct_suffix()
818 zlog_stream_direct_write(stream, "\n", 1); in zlog_stream_finish_direct_suffix()
823 zlog_bool zlog_stream_finish(struct zlog_stream *stream) /* {{{ */ in zlog_stream_finish() argument
825 if (stream->finished || stream->len == 0) { in zlog_stream_finish()
829 if (stream->use_buffer) { in zlog_stream_finish()
830 if (stream->decorate) { in zlog_stream_finish()
831 zlog_stream_finish_buffer_suffix(stream); in zlog_stream_finish()
833 zlog_stream_buf_flush(stream); in zlog_stream_finish()
835 if (stream->decorate) { in zlog_stream_finish()
836 zlog_stream_finish_direct_suffix(stream); in zlog_stream_finish()
838 zlog_stream_direct_write(stream, "\n", 1); in zlog_stream_finish()
841 stream->finished = 1; in zlog_stream_finish()
847 void zlog_stream_destroy(struct zlog_stream *stream) /* {{{ */ in zlog_stream_destroy() argument
849 if (stream->buf.data != NULL) { in zlog_stream_destroy()
850 free(stream->buf.data); in zlog_stream_destroy()
852 if (stream->msg_prefix != NULL) { in zlog_stream_destroy()
853 free(stream->msg_prefix); in zlog_stream_destroy()
855 if (stream->msg_suffix != NULL) { in zlog_stream_destroy()
856 free(stream->msg_suffix); in zlog_stream_destroy()
857 } else if (stream->msg_final_suffix != NULL) { in zlog_stream_destroy()
858 free(stream->msg_final_suffix); in zlog_stream_destroy()
863 zlog_bool zlog_stream_close(struct zlog_stream *stream) /* {{{ */ in zlog_stream_close() argument
865 zlog_bool finished = zlog_stream_finish(stream); in zlog_stream_close()
866 zlog_stream_destroy(stream); in zlog_stream_close()