+# A unique directory for temporary files
+tmpdir_name = None
+
+def setup_tmpdir():
+ global tmpdir_name
+ tmpdir_name = mkdtemp(".tmp", "mcobex-")
+ os.chdir(tmpdir_name)
+
+def cleanup_tmpdir():
+ os.chdir(os.pardir)
+ shutil.rmtree(tmpdir_name)
+
+
+def _read(fd):
+ out = []
+ while True:
+ s = os.read(fd, 1024)
+ if not s:
+ break
+ out.append(s)
+ return ''.join(out)
+
+
+def _run(*args):
+ """Run the obexftp binary catching errors"""
+
+ out_fd, out_filename = mkstemp(".tmp", "mcobex-", tmpdir_name)
+ err_fd, err_filename = mkstemp(".tmp", "mcobex-", tmpdir_name)
+
+ command = "%s %s %s >%s 2>%s" % (obexftp_prog, obexftp_args, ' '.join(args),
+ out_filename, err_filename)
+
+ logger.debug("Running command %s", command)
+ os.system(command)
+
+ result = _read(out_fd)
+ os.remove(out_filename)
+
+ errors = _read(err_fd)
+ os.remove(err_filename)
+
+ logger.debug(" result: %s", result)
+ logger.debug(" errors: %s", errors)
+ return result, errors
+
+