| 1 | |
| 2 | LTTng format string parsing |
| 3 | July 26, 2007 |
| 4 | |
| 5 | "%lu" |
| 6 | "#4b%u" |
| 7 | "#lu%u" (no sign extension) |
| 8 | "#ld%c" (sign extension) |
| 9 | "#lld%p" (sign extension) |
| 10 | |
| 11 | Parsing: |
| 12 | |
| 13 | When # is encountered |
| 14 | Deal with ## case (escaped) |
| 15 | Read length modifier |
| 16 | gcc-like |
| 17 | trace specific : 1, 2, 4, 8, n, b |
| 18 | in both cases, save the output type size (1, 2, 4, 8). |
| 19 | Read conversion specifier |
| 20 | save the output type size if no length modifier is involved (1, 2, 4, 8). |
| 21 | save the signedness. |
| 22 | |
| 23 | (vsnprintf-like part) |
| 24 | When % is encountered |
| 25 | Deal with %% case (escaped) |
| 26 | (deal with field width, precision. Skip them.) |
| 27 | Read length modifier |
| 28 | if output type size is 0, set it to the gcc type size. |
| 29 | Read conversion specifier |
| 30 | if output type size is 0, set it to the gcc type size if no length modifier |
| 31 | is involved. |
| 32 | Perform trace write with conversion. |
| 33 | Reset output type size to 0 |
| 34 | |
| 35 | |
| 36 | |
| 37 | |