00001 /* 00002 * TOPPERS Software 00003 * Toyohashi Open Platform for Embedded Real-Time Systems 00004 * 00005 * Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory 00006 * Toyohashi Univ. of Technology, JAPAN 00007 * Copyright (C) 2004-2008 by Embedded and Real-Time Systems Laboratory 00008 * Graduate School of Information Science, Nagoya Univ., JAPAN 00009 * 00010 * 上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ 00011 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 00012 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 00013 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 00014 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 00015 * スコード中に含まれていること. 00016 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 00017 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 00018 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 00019 * の無保証規定を掲載すること. 00020 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 00021 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 00022 * と. 00023 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 00024 * 作権表示,この利用条件および下記の無保証規定を掲載すること. 00025 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 00026 * 報告すること. 00027 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 00028 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 00029 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 00030 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 00031 * 免責すること. 00032 * 00033 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 00034 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 00035 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 00036 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 00037 * の責任を負わない. 00038 * 00039 * @(#) $Id: vasyslog.c 755 2008-03-07 17:42:37Z hiro $ 00040 */ 00041 00042 /* 00043 * 可変数引数のシステムログライブラリ 00044 */ 00045 00046 #include <t_stddef.h> 00047 #include <t_syslog.h> 00048 #include <stdarg.h> 00049 00050 void 00051 syslog(uint_t prio, const char *format, ...) 00052 { 00053 SYSLOG syslog; 00054 va_list ap; 00055 uint_t i; 00056 char c; 00057 bool_t lflag; 00058 00059 syslog.logtype = LOG_TYPE_COMMENT; 00060 syslog.loginfo[0] = (intptr_t) format; 00061 i = 1U; 00062 va_start(ap, format); 00063 00064 while ((c = *format++) != '\0' && i < TMAX_LOGINFO) { 00065 if (c != '%') { 00066 continue; 00067 } 00068 00069 lflag = false; 00070 c = *format++; 00071 while ('0' <= c && c <= '9') { 00072 c = *format++; 00073 } 00074 if (c == 'l') { 00075 lflag = true; 00076 c = *format++; 00077 } 00078 switch (c) { 00079 case 'd': 00080 syslog.loginfo[i++] = lflag ? (intptr_t) va_arg(ap, long_t) 00081 : (intptr_t) va_arg(ap, int_t); 00082 break; 00083 case 'u': 00084 case 'x': 00085 case 'X': 00086 syslog.loginfo[i++] = lflag ? (intptr_t) va_arg(ap, ulong_t) 00087 : (intptr_t) va_arg(ap, uint_t); 00088 break; 00089 case 'p': 00090 syslog.loginfo[i++] = (intptr_t) va_arg(ap, void *); 00091 break; 00092 case 'c': 00093 syslog.loginfo[i++] = (intptr_t) va_arg(ap, int); 00094 break; 00095 case 's': 00096 syslog.loginfo[i++] = (intptr_t) va_arg(ap, const char *); 00097 break; 00098 case '\0': 00099 format--; 00100 break; 00101 default: 00102 break; 00103 } 00104 } 00105 va_end(ap); 00106 (void) syslog_wri_log(prio, &syslog); 00107 }
Copyright © 2008 by Kijineko Inc.