示例#1
0
文件: trace.c 项目: aosm/distcc
/* Heart of the matter */
static void
rs_log_va(int flags, char const *caller_fn_name, char const *fmt, va_list va)


{
    int level = flags & RS_LOG_PRIMASK;
    struct rs_logger_list *l;

    rs_lazy_default();

    if (level > rs_trace_level)
        return;

    for (l = logger_list; l; l = l->next)
        if (level <= l->max_level)
            l->fn(flags, caller_fn_name, fmt, va, l->private_ptr, l->private_int);
}
示例#2
0
/* Heart of the matter */
static void
rs_log_va(int flags, char const *caller_fn_name, char const *fmt, va_list va)


{
    int level = flags & RS_LOG_PRIMASK;
    struct rs_logger_list *l;

    rs_lazy_default();

    if (level <= rs_trace_level)
      for (l = logger_list; l; l = l->next)
          if (level <= l->max_level) {
              /* We need to use va_copy() here, because functions like vsprintf
               * may destructively modify their va_list argument, but we need
               * to ensure that it's still valid next time around the loop. */
              va_list copied_va;
              VA_COPY(copied_va, va);
              l->fn(flags, caller_fn_name,
                    fmt, copied_va, l->private_ptr, l->private_int);
              VA_COPY_END(copied_va);
          }
}