Re: [PATCH 01/14] perf tools: Make rm_rf to remove single file

From: Jiri Olsa
Date: Tue Feb 05 2019 - 08:38:59 EST


On Tue, Feb 05, 2019 at 02:33:06PM +0300, Alexey Budankov wrote:
>
> On 03.02.2019 18:30, Jiri Olsa wrote:
> > Let rm_rf remove file if it's provided by path.
> >
> > Link: http://lkml.kernel.org/n/tip-whhp3ej5795l9dc86xfyyp74@xxxxxxxxxxxxxx
> > Signed-off-by: Jiri Olsa <jolsa@xxxxxxxxxx>
> > ---
> > tools/perf/util/util.c | 10 ++++++++--
> > 1 file changed, 8 insertions(+), 2 deletions(-)
> >
> > diff --git a/tools/perf/util/util.c b/tools/perf/util/util.c
> > index 320b0fef249a..58b8d6a8bfbc 100644
> > --- a/tools/perf/util/util.c
> > +++ b/tools/perf/util/util.c
> > @@ -125,8 +125,14 @@ int rm_rf(const char *path)
> > char namebuf[PATH_MAX];
> >
> > dir = opendir(path);
> > - if (dir == NULL)
> > - return 0;
> > + if (dir == NULL) {
> > + /*
> > + * The path does not exist or is not directory,
> > + * so there's no harm to try remove it. This way
> > + * rm_rf will work over single file.
> > + */
>
> This can also happen due to lack of fds or memory.
> Not sure file still has to be deleted in these cases.

ok, will do proper error check

thanks,
jirka

>
> - Alexey
>
> > + return unlink(path);
> > + }
> >
> > while ((d = readdir(dir)) != NULL && !ret) {
> > struct stat statbuf;
> >