Remove non-Posix use of FTW_ACTIONRETVAL

The musl implementation of nftw doesn't support the glibc extension
FTW_ACTIONRETVAL. Since none of the features of FTW_ACTIONRETVAL are
used here, just use the normal nftw return value.

Downloaded from:
https://github.com/openwrt-mirror/openwrt/blob/f22d5e25660106a48727c7aa5d1a73e4171a7987/package/devel/oprofile/patches/100-musl.patch
after I found a hint for the patch here:
http://patchwork.openembedded.org/patch/112675/

Removed unneeded patch for libop/op_events.c.

Because openwrt removed the oprofile package from their repo last week
https://github.com/openwrt-mirror/openwrt/commit/aaf46a8524e138e1673a398e8d2dd9357405b313#diff-fe14456f94abf436d997e2c01c10f3bd
I decided to put this patch into the buildroot repo instead of adding
_PATCH to oprofile.mk

Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>

--- a/pe_profiling/operf.cpp
+++ b/pe_profiling/operf.cpp
@@ -857,11 +857,14 @@ static int __delete_old_previous_sample_
                                 int tflag  __attribute__((unused)),
                                 struct FTW *ftwbuf __attribute__((unused)))
 {
+	int err;
+
 	if (remove(fpath)) {
+		err = errno;
 		perror("sample data removal error");
-		return FTW_STOP;
+		return err;
 	} else {
-		return FTW_CONTINUE;
+		return 0;
 	}
 }
 
@@ -896,7 +899,7 @@ static void convert_sample_data(void)
 		return;
 
 	if (!operf_options::append) {
-                int flags = FTW_DEPTH | FTW_ACTIONRETVAL;
+                int flags = FTW_DEPTH;
 		errno = 0;
 		if (nftw(previous_sampledir.c_str(), __delete_old_previous_sample_data, 32, flags) !=0 &&
 				errno != ENOENT) {
