[CRIU] [PATCH 4/5] crtools: chdir to work directory

Ruslan Kuprieiev kupruser at gmail.com
Fri Nov 15 11:04:29 PST 2013


Signed-off-by: Ruslan Kuprieiev <kupruser at gmail.com>
---
 crtools.c | 32 +++++++++++++++++++++-----------
 1 file changed, 21 insertions(+), 11 deletions(-)

diff --git a/crtools.c b/crtools.c
index d8de2ef..a058b46 100644
--- a/crtools.c
+++ b/crtools.c
@@ -78,6 +78,8 @@ int main(int argc, char *argv[])
 	int ret = -1;
 	int opt, idx;
 	int log_level = 0;
+	char *imgs_dir = ".";
+	char *work_dir = NULL;
 
 	BUILD_BUG_ON(PAGE_SIZE != PAGE_IMAGE_SIZE);
 
@@ -163,13 +165,10 @@ int main(int argc, char *argv[])
 			opts.restore_detach = true;
 			break;
 		case 'D':
-			if (chdir(optarg)) {
-				pr_perror("Can't change directory to %s",
-						optarg);
-				return -1;
-			}
+			imgs_dir = optarg;
 			break;
 		case 'W':
+			work_dir = optarg;
 			break;
 		case 'o':
 			opts.output = optarg;
@@ -283,6 +282,9 @@ int main(int argc, char *argv[])
 		}
 	}
 
+	if (work_dir == NULL)
+		work_dir = imgs_dir;
+
 	log_set_loglevel(log_level);
 
 	if (log_init(opts.output))
@@ -291,15 +293,23 @@ int main(int argc, char *argv[])
 	if (opts.img_parent)
 		pr_info("Will do snapshot from %s\n", opts.img_parent);
 
-	ret = open_image_dir(".");
-	if (ret < 0) {
-		pr_perror("Can't open current directory");
-		return -1;
-	}
-
 	if (optind >= argc)
 		goto usage;
 
+	/* We must not open imgs dir, if service is called */
+	if (strcmp(argv[optind], "service")) {
+		ret = open_image_dir(imgs_dir);
+		if (ret < 0) {
+			pr_perror("Can't open imgs directory");
+			return -1;
+		}
+	}
+
+	if (chdir(work_dir)) {
+		pr_perror("Can't change directory to %s", work_dir);
+		return -1;
+	}
+
 	if (!strcmp(argv[optind], "dump")) {
 		if (!tree_id)
 			goto opt_pid_missing;
-- 
1.8.1.2



More information about the CRIU mailing list