On 06/14/2018 03:17 PM, Paul Clarke wrote: > On 06/14/2018 06:48 AM, Thomas Richter wrote: >> Remove a trailing newline when reading sysfs file contents >> such as /sys/devices/cpum_cf/events/TX_NC_TEND. >> This show when verbose option -v is used. >> >> Output before: >> tx_nc_tend -> 'cpum_cf'/'event=0x008d >> '/ >> >> Output after: >> tx_nc_tend -> 'cpum_cf'/'event=0x8d'/ >> >> Signed-off-by: Thomas Richter <tmri...@linux.ibm.com> >> --- >> tools/perf/util/pmu.c | 7 ++++++- >> 1 file changed, 6 insertions(+), 1 deletion(-) >> >> diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c >> index 7878934ebb23..26c79a9c4142 100644 >> --- a/tools/perf/util/pmu.c >> +++ b/tools/perf/util/pmu.c >> @@ -294,7 +294,7 @@ static int __perf_pmu__new_alias(struct list_head *list, >> char *dir, char *name, >> >> static int perf_pmu__new_alias(struct list_head *list, char *dir, char >> *name, FILE *file) >> { >> - char buf[256]; >> + char *cp, buf[256]; >> int ret; >> >> ret = fread(buf, 1, sizeof(buf), file); >> @@ -303,6 +303,11 @@ static int perf_pmu__new_alias(struct list_head *list, >> char *dir, char *name, FI >> >> buf[ret] = 0; >> >> + /* Remove trailing newline from sysfs file */ >> + cp = strrchr(buf, '\n'); >> + if (cp) >> + *cp = '\0'; > > A nit, perhaps, but this will search backwards through the entire string if a > newline is not found, which is the most common case, I presume. Would it be > more efficient to just look at the last character? Something like: > i = strlen(buf); > if (i > 0 && buf[i-1] == '\n') > buf[i-1] = '\0'; > >> + >> return __perf_pmu__new_alias(list, dir, name, NULL, buf, NULL, NULL, >> NULL, >> NULL, NULL, NULL); >> } >> > > PC >
Arnaldo suggested rtrim() which I will use. I agree that your approach is a bit faster... -- Thomas Richter, Dept 3303, IBM s390 Linux Development, Boeblingen, Germany -- Vorsitzende des Aufsichtsrats: Martina Koederitz Geschäftsführung: Dirk Wittkopp Sitz der Gesellschaft: Böblingen / Registergericht: Amtsgericht Stuttgart, HRB 243294