diff options
Diffstat (limited to 'tools/perf')
| -rw-r--r-- | tools/perf/util/trace-event-parse.c | 27 | 
1 files changed, 25 insertions, 2 deletions
| diff --git a/tools/perf/util/trace-event-parse.c b/tools/perf/util/trace-event-parse.c index a05c7144aded..2b75ec2f57e8 100644 --- a/tools/perf/util/trace-event-parse.c +++ b/tools/perf/util/trace-event-parse.c | |||
| @@ -522,7 +522,10 @@ static enum event_type __read_token(char **tok) | |||
| 522 | last_ch = ch; | 522 | last_ch = ch; | 
| 523 | ch = __read_char(); | 523 | ch = __read_char(); | 
| 524 | buf[i++] = ch; | 524 | buf[i++] = ch; | 
| 525 | } while (ch != quote_ch && last_ch != '\\'); | 525 | /* the '\' '\' will cancel itself */ | 
| 526 | if (ch == '\\' && last_ch == '\\') | ||
| 527 | last_ch = 0; | ||
| 528 | } while (ch != quote_ch || last_ch == '\\'); | ||
| 526 | /* remove the last quote */ | 529 | /* remove the last quote */ | 
| 527 | i--; | 530 | i--; | 
| 528 | goto out; | 531 | goto out; | 
| @@ -2325,7 +2328,27 @@ static void pretty_print(void *data, int size, struct event *event) | |||
| 2325 | 2328 | ||
| 2326 | for (; *ptr; ptr++) { | 2329 | for (; *ptr; ptr++) { | 
| 2327 | ls = 0; | 2330 | ls = 0; | 
| 2328 | if (*ptr == '%') { | 2331 | if (*ptr == '\\') { | 
| 2332 | ptr++; | ||
| 2333 | switch (*ptr) { | ||
| 2334 | case 'n': | ||
| 2335 | printf("\n"); | ||
| 2336 | break; | ||
| 2337 | case 't': | ||
| 2338 | printf("\t"); | ||
| 2339 | break; | ||
| 2340 | case 'r': | ||
| 2341 | printf("\r"); | ||
| 2342 | break; | ||
| 2343 | case '\\': | ||
| 2344 | printf("\\"); | ||
| 2345 | break; | ||
| 2346 | default: | ||
| 2347 | printf("%c", *ptr); | ||
| 2348 | break; | ||
| 2349 | } | ||
| 2350 | |||
| 2351 | } else if (*ptr == '%') { | ||
| 2329 | saveptr = ptr; | 2352 | saveptr = ptr; | 
| 2330 | show_func = 0; | 2353 | show_func = 0; | 
| 2331 | cont_process: | 2354 | cont_process: | 
