diff options
Diffstat (limited to '')
-rw-r--r-- | src/lj_strfmt.c | 66 |
1 files changed, 33 insertions, 33 deletions
diff --git a/src/lj_strfmt.c b/src/lj_strfmt.c index b1c74f88..bde3ec0e 100644 --- a/src/lj_strfmt.c +++ b/src/lj_strfmt.c | |||
@@ -169,7 +169,7 @@ const char *lj_strfmt_wstrnum(lua_State *L, cTValue *o, MSize *lenp) | |||
169 | return NULL; | 169 | return NULL; |
170 | } | 170 | } |
171 | *lenp = sbuflen(sb); | 171 | *lenp = sbuflen(sb); |
172 | return sbufB(sb); | 172 | return sb->b; |
173 | } | 173 | } |
174 | 174 | ||
175 | /* -- Unformatted conversions to buffer ----------------------------------- */ | 175 | /* -- Unformatted conversions to buffer ----------------------------------- */ |
@@ -177,7 +177,7 @@ const char *lj_strfmt_wstrnum(lua_State *L, cTValue *o, MSize *lenp) | |||
177 | /* Add integer to buffer. */ | 177 | /* Add integer to buffer. */ |
178 | SBuf * LJ_FASTCALL lj_strfmt_putint(SBuf *sb, int32_t k) | 178 | SBuf * LJ_FASTCALL lj_strfmt_putint(SBuf *sb, int32_t k) |
179 | { | 179 | { |
180 | setsbufP(sb, lj_strfmt_wint(lj_buf_more(sb, STRFMT_MAXBUF_INT), k)); | 180 | sb->w = lj_strfmt_wint(lj_buf_more(sb, STRFMT_MAXBUF_INT), k); |
181 | return sb; | 181 | return sb; |
182 | } | 182 | } |
183 | 183 | ||
@@ -191,7 +191,7 @@ SBuf * LJ_FASTCALL lj_strfmt_putnum(SBuf *sb, cTValue *o) | |||
191 | 191 | ||
192 | SBuf * LJ_FASTCALL lj_strfmt_putptr(SBuf *sb, const void *v) | 192 | SBuf * LJ_FASTCALL lj_strfmt_putptr(SBuf *sb, const void *v) |
193 | { | 193 | { |
194 | setsbufP(sb, lj_strfmt_wptr(lj_buf_more(sb, STRFMT_MAXBUF_PTR), v)); | 194 | sb->w = lj_strfmt_wptr(lj_buf_more(sb, STRFMT_MAXBUF_PTR), v); |
195 | return sb; | 195 | return sb; |
196 | } | 196 | } |
197 | 197 | ||
@@ -203,23 +203,23 @@ SBuf * LJ_FASTCALL lj_strfmt_putquoted(SBuf *sb, GCstr *str) | |||
203 | lj_buf_putb(sb, '"'); | 203 | lj_buf_putb(sb, '"'); |
204 | while (len--) { | 204 | while (len--) { |
205 | uint32_t c = (uint32_t)(uint8_t)*s++; | 205 | uint32_t c = (uint32_t)(uint8_t)*s++; |
206 | char *p = lj_buf_more(sb, 4); | 206 | char *w = lj_buf_more(sb, 4); |
207 | if (c == '"' || c == '\\' || c == '\n') { | 207 | if (c == '"' || c == '\\' || c == '\n') { |
208 | *p++ = '\\'; | 208 | *w++ = '\\'; |
209 | } else if (lj_char_iscntrl(c)) { /* This can only be 0-31 or 127. */ | 209 | } else if (lj_char_iscntrl(c)) { /* This can only be 0-31 or 127. */ |
210 | uint32_t d; | 210 | uint32_t d; |
211 | *p++ = '\\'; | 211 | *w++ = '\\'; |
212 | if (c >= 100 || lj_char_isdigit((uint8_t)*s)) { | 212 | if (c >= 100 || lj_char_isdigit((uint8_t)*s)) { |
213 | *p++ = (char)('0'+(c >= 100)); if (c >= 100) c -= 100; | 213 | *w++ = (char)('0'+(c >= 100)); if (c >= 100) c -= 100; |
214 | goto tens; | 214 | goto tens; |
215 | } else if (c >= 10) { | 215 | } else if (c >= 10) { |
216 | tens: | 216 | tens: |
217 | d = (c * 205) >> 11; c -= d * 10; *p++ = (char)('0'+d); | 217 | d = (c * 205) >> 11; c -= d * 10; *w++ = (char)('0'+d); |
218 | } | 218 | } |
219 | c += '0'; | 219 | c += '0'; |
220 | } | 220 | } |
221 | *p++ = (char)c; | 221 | *w++ = (char)c; |
222 | setsbufP(sb, p); | 222 | sb->w = w; |
223 | } | 223 | } |
224 | lj_buf_putb(sb, '"'); | 224 | lj_buf_putb(sb, '"'); |
225 | return sb; | 225 | return sb; |
@@ -231,11 +231,11 @@ SBuf * LJ_FASTCALL lj_strfmt_putquoted(SBuf *sb, GCstr *str) | |||
231 | SBuf *lj_strfmt_putfchar(SBuf *sb, SFormat sf, int32_t c) | 231 | SBuf *lj_strfmt_putfchar(SBuf *sb, SFormat sf, int32_t c) |
232 | { | 232 | { |
233 | MSize width = STRFMT_WIDTH(sf); | 233 | MSize width = STRFMT_WIDTH(sf); |
234 | char *p = lj_buf_more(sb, width > 1 ? width : 1); | 234 | char *w = lj_buf_more(sb, width > 1 ? width : 1); |
235 | if ((sf & STRFMT_F_LEFT)) *p++ = (char)c; | 235 | if ((sf & STRFMT_F_LEFT)) *w++ = (char)c; |
236 | while (width-- > 1) *p++ = ' '; | 236 | while (width-- > 1) *w++ = ' '; |
237 | if (!(sf & STRFMT_F_LEFT)) *p++ = (char)c; | 237 | if (!(sf & STRFMT_F_LEFT)) *w++ = (char)c; |
238 | setsbufP(sb, p); | 238 | sb->w = w; |
239 | return sb; | 239 | return sb; |
240 | } | 240 | } |
241 | 241 | ||
@@ -244,20 +244,20 @@ SBuf *lj_strfmt_putfstr(SBuf *sb, SFormat sf, GCstr *str) | |||
244 | { | 244 | { |
245 | MSize len = str->len <= STRFMT_PREC(sf) ? str->len : STRFMT_PREC(sf); | 245 | MSize len = str->len <= STRFMT_PREC(sf) ? str->len : STRFMT_PREC(sf); |
246 | MSize width = STRFMT_WIDTH(sf); | 246 | MSize width = STRFMT_WIDTH(sf); |
247 | char *p = lj_buf_more(sb, width > len ? width : len); | 247 | char *w = lj_buf_more(sb, width > len ? width : len); |
248 | if ((sf & STRFMT_F_LEFT)) p = lj_buf_wmem(p, strdata(str), len); | 248 | if ((sf & STRFMT_F_LEFT)) w = lj_buf_wmem(w, strdata(str), len); |
249 | while (width-- > len) *p++ = ' '; | 249 | while (width-- > len) *w++ = ' '; |
250 | if (!(sf & STRFMT_F_LEFT)) p = lj_buf_wmem(p, strdata(str), len); | 250 | if (!(sf & STRFMT_F_LEFT)) w = lj_buf_wmem(w, strdata(str), len); |
251 | setsbufP(sb, p); | 251 | sb->w = w; |
252 | return sb; | 252 | return sb; |
253 | } | 253 | } |
254 | 254 | ||
255 | /* Add formatted signed/unsigned integer to buffer. */ | 255 | /* Add formatted signed/unsigned integer to buffer. */ |
256 | SBuf *lj_strfmt_putfxint(SBuf *sb, SFormat sf, uint64_t k) | 256 | SBuf *lj_strfmt_putfxint(SBuf *sb, SFormat sf, uint64_t k) |
257 | { | 257 | { |
258 | char buf[STRFMT_MAXBUF_XINT], *q = buf + sizeof(buf), *p; | 258 | char buf[STRFMT_MAXBUF_XINT], *q = buf + sizeof(buf), *w; |
259 | #ifdef LUA_USE_ASSERT | 259 | #ifdef LUA_USE_ASSERT |
260 | char *ps; | 260 | char *ws; |
261 | #endif | 261 | #endif |
262 | MSize prefix = 0, len, prec, pprec, width, need; | 262 | MSize prefix = 0, len, prec, pprec, width, need; |
263 | 263 | ||
@@ -301,27 +301,27 @@ SBuf *lj_strfmt_putfxint(SBuf *sb, SFormat sf, uint64_t k) | |||
301 | width = STRFMT_WIDTH(sf); | 301 | width = STRFMT_WIDTH(sf); |
302 | pprec = prec + (prefix >> 8); | 302 | pprec = prec + (prefix >> 8); |
303 | need = width > pprec ? width : pprec; | 303 | need = width > pprec ? width : pprec; |
304 | p = lj_buf_more(sb, need); | 304 | w = lj_buf_more(sb, need); |
305 | #ifdef LUA_USE_ASSERT | 305 | #ifdef LUA_USE_ASSERT |
306 | ps = p; | 306 | ws = w; |
307 | #endif | 307 | #endif |
308 | 308 | ||
309 | /* Format number with leading/trailing whitespace and zeros. */ | 309 | /* Format number with leading/trailing whitespace and zeros. */ |
310 | if ((sf & (STRFMT_F_LEFT|STRFMT_F_ZERO)) == 0) | 310 | if ((sf & (STRFMT_F_LEFT|STRFMT_F_ZERO)) == 0) |
311 | while (width-- > pprec) *p++ = ' '; | 311 | while (width-- > pprec) *w++ = ' '; |
312 | if (prefix) { | 312 | if (prefix) { |
313 | if ((char)prefix >= 'X') *p++ = '0'; | 313 | if ((char)prefix >= 'X') *w++ = '0'; |
314 | *p++ = (char)prefix; | 314 | *w++ = (char)prefix; |
315 | } | 315 | } |
316 | if ((sf & (STRFMT_F_LEFT|STRFMT_F_ZERO)) == STRFMT_F_ZERO) | 316 | if ((sf & (STRFMT_F_LEFT|STRFMT_F_ZERO)) == STRFMT_F_ZERO) |
317 | while (width-- > pprec) *p++ = '0'; | 317 | while (width-- > pprec) *w++ = '0'; |
318 | while (prec-- > len) *p++ = '0'; | 318 | while (prec-- > len) *w++ = '0'; |
319 | while (q < buf + sizeof(buf)) *p++ = *q++; /* Add number itself. */ | 319 | while (q < buf + sizeof(buf)) *w++ = *q++; /* Add number itself. */ |
320 | if ((sf & STRFMT_F_LEFT)) | 320 | if ((sf & STRFMT_F_LEFT)) |
321 | while (width-- > pprec) *p++ = ' '; | 321 | while (width-- > pprec) *w++ = ' '; |
322 | 322 | ||
323 | lj_assertX(need == (MSize)(p - ps), "miscalculated format size"); | 323 | lj_assertX(need == (MSize)(w - ws), "miscalculated format size"); |
324 | setsbufP(sb, p); | 324 | sb->w = w; |
325 | return sb; | 325 | return sb; |
326 | } | 326 | } |
327 | 327 | ||