MCPcopy Create free account
hub / github.com/GJDuck/e9patch / e9write_format

Function e9write_format

src/e9patch/e9loader.cpp:99–152  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

97 return str;
98}
99static NO_INLINE char *e9write_format(char *str, const char *msg, va_list ap)
100{
101 char c;
102 while ((c = *msg++) != '\0')
103 {
104 if (c == '%')
105 {
106 c = *msg++;
107 const char *s;
108 const wchar_t *S;
109 uint64_t x;
110 int64_t i;
111 switch (c)
112 {
113 case '%':
114 str = e9write_char(str, '%');
115 break;
116 case 'c':
117 c = (char)va_arg(ap, int);
118 str = e9write_char(str, c);
119 break;
120 case 's':
121 s = va_arg(ap, const char *);
122 str = e9write_str(str, s);
123 break;
124 case 'S':
125 S = va_arg(ap, const wchar_t *);
126 for (; *S != L'\0'; S++)
127 str = e9write_char(str, (*S < L'~'? (char)*S: '?'));
128 break;
129 case 'p':
130 str = e9write_str(str, "0x");
131 // Fallthrough
132 case 'x': case 'X':
133 x = (c == 'x'? va_arg(ap, unsigned): va_arg(ap, uint64_t));
134 str = e9write_hex(str, x);
135 break;
136 case 'u': case 'U':
137 x = (c == 'u'? va_arg(ap, unsigned): va_arg(ap, uint64_t));
138 str = e9write_num(str, x);
139 break;
140 case 'd': case 'D':
141 i = (c == 'd'? va_arg(ap, unsigned): va_arg(ap, uint64_t));
142 if (i < 0)
143 str = e9write_char(str, '-');
144 str = e9write_num(str, (uint64_t)(i < 0? -i: i));
145 break;
146 }
147 continue;
148 }
149 str = e9write_char(str, c);
150 }
151 return str;
152}
153static char *e9write_format(char *str, const char *msg, ...)
154{
155 va_list ap;

Callers 5

e9error_implFunction · 0.85
e9debug_implFunction · 0.85
e9panicFunction · 0.85
e9debugFunction · 0.85
e9initFunction · 0.85

Calls 4

e9write_charFunction · 0.85
e9write_strFunction · 0.85
e9write_hexFunction · 0.85
e9write_numFunction · 0.85

Tested by

no test coverage detected