Merge "kernel.config: add CONFIG_NFS* testing"
diff --git a/simpleperf/scripts/app_profiler.py b/simpleperf/scripts/app_profiler.py
index ea181f1..25098d3 100644
--- a/simpleperf/scripts/app_profiler.py
+++ b/simpleperf/scripts/app_profiler.py
@@ -121,7 +121,7 @@
         self.adb.set_property('security.perf_harden', '0')
         if self.is_root_device:
             # We can enable kernel symbols
-            self.adb.run(['shell', 'echo', '0', '>/proc/sys/kernel/kptr_restrict'])
+            self.adb.run(['shell', 'echo 0 >/proc/sys/kernel/kptr_restrict'])
 
 
     def _recompile_app(self):
@@ -271,7 +271,7 @@
 
 
     def collect_profiling_data(self):
-        self.run_in_app_dir(['cat', 'perf.data', '>' + self.config['perf_data_path']])
+        self.run_in_app_dir(['cat', 'perf.data'], self.config['perf_data_path'])
         config = copy.copy(self.config)
         config['symfs_dirs'] = []
         if self.config['native_lib_dir']:
@@ -280,13 +280,13 @@
         binary_cache_builder.build_binary_cache()
 
 
-    def run_in_app_dir(self, args):
+    def run_in_app_dir(self, args, stdout_file=None):
         if self.is_root_device:
             cmd = 'cd /data/data/' + self.config['app_package_name'] + ' && ' + (' '.join(args))
-            return self.adb.check_run_and_return_output(['shell', cmd])
+            return self.adb.check_run_and_return_output(['shell', cmd], stdout_file)
         else:
             return self.adb.check_run_and_return_output(
-                ['shell', 'run-as', self.config['app_package_name']] + args)
+                ['shell', 'run-as', self.config['app_package_name']] + args, stdout_file)
 
 
 if __name__ == '__main__':
diff --git a/simpleperf/scripts/utils.py b/simpleperf/scripts/utils.py
index 5474676..a0b3b3b 100644
--- a/simpleperf/scripts/utils.py
+++ b/simpleperf/scripts/utils.py
@@ -104,13 +104,12 @@
         return self.run_and_return_output(adb_args)[0]
 
 
-    def run_and_return_output(self, adb_args):
+    def run_and_return_output(self, adb_args, stdout_file=None):
         adb_args = [self.adb_path] + adb_args
         log_debug('run adb cmd: %s' % adb_args)
-        if adb_args[-1][0] == '>':
-            stdout_file = adb_args[-1][1:]
+        if stdout_file:
             with open(stdout_file, 'wb') as stdout_fh:
-                returncode = subprocess.call(adb_args[:-1], stdout=stdout_fh)
+                returncode = subprocess.call(adb_args, stdout=stdout_fh)
             stdoutdata = ''
         else:
             subproc = subprocess.Popen(adb_args, stdout=subprocess.PIPE)
@@ -123,13 +122,12 @@
         log_debug('run adb cmd: %s  [result %s]' % (adb_args, result))
         return (result, stdoutdata)
 
-
     def check_run(self, adb_args):
         self.check_run_and_return_output(adb_args)
 
 
-    def check_run_and_return_output(self, adb_args):
-        result, stdoutdata = self.run_and_return_output(adb_args)
+    def check_run_and_return_output(self, adb_args, stdout_file=None):
+        result, stdoutdata = self.run_and_return_output(adb_args, stdout_file)
         if not result:
             log_fatal('run "adb %s" failed' % adb_args)
         return stdoutdata