From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas-Mich Richter Subject: Re: [PATCH 1/3] perf alias: Remove trailing newline when reading sysfs files Date: Thu, 14 Jun 2018 16:10:31 +0200 Message-ID: <3c66953b-fb56-e446-8dff-53fd91007a43@linux.ibm.com> References: <20180614114845.41221-1-tmricht@linux.ibm.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Return-path: In-Reply-To: Content-Language: en-US Sender: linux-kernel-owner@vger.kernel.org To: Paul Clarke , linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, acme@kernel.org, jolsa@redhat.com Cc: brueckner@linux.vnet.ibm.com, schwidefsky@de.ibm.com, heiko.carstens@de.ibm.com List-Id: linux-perf-users.vger.kernel.org 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 >> --- >> 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