factor out NOFORK/NOEXEC code from find. Use it for xargs too.
diff --git a/findutils/find.c b/findutils/find.c
index 7b5a09d..1a1301b 100644
--- a/findutils/find.c
+++ b/findutils/find.c
@@ -238,37 +238,19 @@
 ACTF(exec)
 {
 	int i, rc;
-	char *argv[ap->exec_argc+1];
+	char *argv[ap->exec_argc + 1];
 	for (i = 0; i < ap->exec_argc; i++)
 		argv[i] = subst(ap->exec_argv[i], ap->subst_count[i], fileName);
 	argv[i] = NULL; /* terminate the list */
 
-	if (ENABLE_FEATURE_EXEC_PREFER_APPLETS) {
-		const struct BB_applet *a = find_applet_by_name(argv[0]);
-		if (a) {
-			if (a->nofork) {
-				rc = a->main(ap->exec_argc, argv);
-				goto f;
-			}
-#ifndef BB_NOMMU
-			if (a->noexec) {
-				rc = fork();
-				if (rc) goto w;
-				current_applet = a;
-				run_current_applet_and_exit(ap->exec_argc, argv);
-			}
-#endif
-		}
-	}
-	rc = spawn(argv);
- w:
-	rc = wait4pid(rc);
+	rc = spawn_and_wait(argv);
 	if (rc < 0)
 		bb_perror_msg("%s", argv[0]);
- f:
-	for (i = 0; i < ap->exec_argc; i++)
-		free(argv[i]);
-	return rc == 0; /* return 1 if success */
+
+	i = 0;
+	while (argv[i])
+		free(argv[i++]);
+	return rc == 0; /* return 1 if exitcode 0 */
 }
 #endif