GadgetSeed  0.9.6
tprintf.c
[詳解]
1 /** @file
2  @brief 機能限定printf
3 
4  @date 2007.03.10
5  @data 2002.03.02
6  @author Takashi SHUDO
7 */
8 
9 #include "console.h"
10 #include "vtprintf.h"
11 #include "tprintf.h"
12 
13 static char *sp;
14 
15 static int str_puts(unsigned char *data, unsigned int len)
16 {
17  unsigned int i;
18 
19  for(i=0; i<len; i++) {
20  *sp = (char)*data;
21  sp ++;
22  data ++;
23  }
24 
25  return (int)len;
26 }
27 
28 /**
29  @brief 簡易sprintf
30 
31  @param[out] str 出力文字列ポインタ
32  @param[in] fmt 出力フォーマット文字列
33 
34  @return 出力文字列バイト数
35 */
36 int tsprintf(char *str, const char *fmt, ...)
37 {
38  va_list args;
39  int len = 0;
40  sp = str;
41 
42  va_start(args, fmt);
43  len += vtprintf(str_puts, fmt, 0, args);
44  va_end(args);
45 
46  *sp = 0;
47 
48  return len;
49 }
50 
51 /**
52  @brief 簡易snprintf
53 
54  @param[out] str 出力文字列ポインタ
55  @param[in] str 出力文字列バイト数
56  @param[in] fmt 出力フォーマット文字列
57 
58  @return 出力文字列バイト数
59 */
60 int tsnprintf(char *str, unsigned int size, const char *fmt, ...)
61 {
62  va_list args;
63  int len = 0;
64  sp = str;
65  size --;
66 
67  va_start(args, fmt);
68  len += vtprintf(str_puts, fmt, size, args);
69  size -= len;
70  va_end(args);
71 
72  *sp = 0;
73  len ++;
74 
75  return len;
76 }
77 
78 /**
79  @brief 簡易printf
80 
81  @param[in] fmt 出力フォーマット文字列
82 
83  @return 出力文字列バイト数
84 */
85 int tprintf(const char *fmt, ...)
86 {
87  va_list args;
88  int len = 0;
89 
90  va_start(args, fmt);
91  len += vtprintf(cputs, fmt, 0, args);
92  va_end(args);
93 
94  return len;
95 }
96 
97 /**
98  @brief エラー出力用簡易printf
99 
100  @param[in] fmt 出力フォーマット文字列
101 
102  @return 出力文字列バイト数
103 */
104 int eprintf(const char *fmt, ...)
105 {
106  va_list args;
107  int len = 0;
108 
109  va_start(args, fmt);
110  len += vtprintf(eputs, fmt, 0, args);
111  va_end(args);
112 
113  return len;
114 }
115 
116 void xdump(unsigned char *data, unsigned int len)
117 {
118  vxdump(0, data, len, XDUMP_ADDR_ANY_WORD, XDUMP_DATA_BYTE, tprintf);
119 }
120 
121 void xadump(unsigned int addr, unsigned char *data, unsigned int len)
122 {
123  vxdump(addr, data, len, XDUMP_ADDR_ANY_WORD, XDUMP_DATA_BYTE, tprintf);
124 }
int cputs(unsigned char *str, unsigned int count)
標準出力より文字列を出力する
Definition: console.c:137
機能限定printf
int tsprintf(char *str, const char *fmt,...)
簡易sprintf
Definition: tprintf.c:36
int eprintf(const char *fmt,...)
エラー出力用簡易printf
Definition: tprintf.c:104
int tprintf(const char *fmt,...)
簡易printf
Definition: tprintf.c:85
int vtprintf(io_write write, const char *fmt, unsigned int size, va_list args)
簡易printf、float,doubleは使えない
Definition: vtprintf.c:55
コンソールI/O
int eputs(unsigned char *str, unsigned int len)
エラー出力より文字列を出力する
Definition: console.c:267
機能限定printf
int tsnprintf(char *str, unsigned int size, const char *fmt,...)
簡易snprintf
Definition: tprintf.c:60