log_output.h

#include <t_syslog.h>

ソースコードを見る。

関数

void syslog_printf (const char *format, intptr_t *p_args, void(*putc)(char_t)) throw ()
void syslog_print (SYSLOG *p_syslog, void(*putc)(char_t)) throw ()
void syslog_lostmsg (uint_t lost, void(*putc)(char_t)) throw ()


関数

void syslog_lostmsg ( uint_t  lost,
void(*)(char_t putc 
) throw ()

log_output.c187 行で定義されています。

参照先 syslog_printf().

参照元 logtask_main(), と logtask_terminate().

00188 {
00189     intptr_t    lostinfo[1];
00190 
00191     lostinfo[0] = (intptr_t) lost;
00192     syslog_printf("%d messages are lost.", lostinfo, putc);
00193     (*putc)('\n');
00194 }

void syslog_print ( SYSLOG p_syslog,
void(*)(char_t putc 
) throw ()

log_output.c169 行で定義されています。

参照先 LOG_TYPE_ASSERT, LOG_TYPE_COMMENT, SYSLOG::loginfo, SYSLOG::logtype, と syslog_printf().

参照元 logtask_main(), logtask_terminate(), と syslog_wri_log().

00170 {
00171     switch (p_syslog->logtype) {
00172     case LOG_TYPE_COMMENT:
00173         syslog_printf((const char *)(p_syslog->loginfo[0]),
00174                                 &(p_syslog->loginfo[1]), putc);
00175         break;
00176     case LOG_TYPE_ASSERT:
00177         syslog_printf("%s:%u: Assertion `%s' failed.",
00178                                 &(p_syslog->loginfo[0]), putc);
00179         break;
00180     }
00181 }

void syslog_printf ( const char *  format,
intptr_t *  p_args,
void(*)(char_t putc 
) throw ()

log_output.c92 行で定義されています。

参照先 convert().

参照元 syslog_lostmsg(), syslog_print(), と trace_print().

00093 {
00094     char        c;
00095     uint_t      width;
00096     bool_t      padzero;
00097     intptr_t    val;
00098     const char  *str;
00099 
00100     while ((c = *format++) != '\0') {
00101         if (c != '%') {
00102             (*putc)(c);
00103             continue;
00104         }
00105 
00106         width = 0U;
00107         padzero = false;
00108         if ((c = *format++) == '0') {
00109             padzero = true;
00110             c = *format++;
00111         }
00112         while ('0' <= c && c <= '9') {
00113             width = width * 10U + c - '0';
00114             c = *format++;
00115         }
00116         if (c == 'l') {
00117             c = *format++;
00118         }
00119         switch (c) {
00120         case 'd':
00121             val = (intptr_t)(*p_args++);
00122             if (val >= 0) {
00123                 convert((uintptr_t) val, 10U, raddec,
00124                                         width, false, padzero, putc);
00125             }
00126             else {
00127                 convert((uintptr_t)(-val), 10U, raddec,
00128                                         width, true, padzero, putc);
00129             }
00130             break;
00131         case 'u':
00132             val = (intptr_t)(*p_args++);
00133             convert((uintptr_t) val, 10U, raddec, width, false, padzero, putc);
00134             break;
00135         case 'x':
00136         case 'p':
00137             val = (intptr_t)(*p_args++);
00138             convert((uintptr_t) val, 16U, radhex, width, false, padzero, putc);
00139             break;
00140         case 'X':
00141             val = (intptr_t)(*p_args++);
00142             convert((uintptr_t) val, 16U, radHEX, width, false, padzero, putc);
00143             break;
00144         case 'c':
00145             (*putc)((char_t)(intptr_t)(*p_args++));
00146             break;
00147         case 's':
00148             str = (const char *)(*p_args++);
00149             while ((c = *str++) != '\0') {
00150                 (*putc)(c);
00151             }
00152             break;
00153         case '%':
00154             (*putc)('%');
00155             break;
00156         case '\0':
00157             format--;
00158             break;
00159         default:
00160             break;
00161         }
00162     }
00163 }


Copyright © 2008 by Kijineko Inc.

ホームページ制作